> For the complete documentation index, see [llms.txt](https://mcpets.gitbook.io/mcpets/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mcpets.gitbook.io/mcpets/tutorials/config-templates/pet-config.md).

# Pet config

{% hint style="info" %}
MCPets 4.0.0 introduced the **in-game editor** to simply implement pets in game, so make sure to check it out using `/mcpets editor`

That will save you some time not diving in configurations anymore!
{% endhint %}

After you have setup your pet in MythicMobs, you may want to implement it in MCPets. That's why you need to create a Pet Config, either [Cosmetic Pet](#cosmetic-pet-config) or [Living Pet](#living-pet-config) depending on the type of pet you need.

Each pet has a unique config that you can create, modify or delete at "*./plugins/MCPets/Pets/anyfolderyouwant/yourpetconfig.yml*".

Make sure each pet has a **unique ID** so you don't run into weird bugs. &#x20;

### ✨ Cosmetic Pet config

Down below you will find the typical **cosmetic** pet config template. It has a lot more features than required (indeed, all of them actually), and it's just meant to explain how you could implement them into your config.

**Cosmetic pets** are meant to be invincible pets, contrary to the **Living pet** that have health, statistics and more.

Do not feel like you need to fill every field here, because a lot of them are optional like the Skins section, the Signals, or else.

```yaml
# The unique ID of your pet
Id: your_pet_id
# The mythicmob attached to the pet
MythicMob: the_mythicmob_attached_to_the_pet
# Custom permission to summon your pet
Permission: permission.to.summon.the.pet.can.be.custom
# Show the mount option or not
# If it's on true make sure your pet has a "mount" bone (refer to ModelEngine)
# (references on https://github.com/Ticxo/Model-Engine-Wiki/wiki/Mechanics/#mountmodel)
Mountable: false
# Says what type of mount controller this pet should have (default to "walking") & (optional)
# (references on https://github.com/Ticxo/Model-Engine-Wiki/wiki/Mechanics/#mountmodel)
MountType: walking
# Says whether the pet should be despawned when the player dismount it
DespawnOnDismount: false
# If the pet is a mount, chose whether or not the player should automatically mount it on spawn (optional)
AutoRide: false
# (Optional) If you want your pet to be rideable only if the owner has a certain permission
MountPermission: mcpets.mount_mypet
# Set the skill to execute on despawn (can be removed)
# | WARNING : this will block the auto-remove from AdvancedPet
# | So please execute a 'remove @self' mechanic at the end of the
# | despawn skill.
DespawnSkill: DespawnSkill_MM
# Minimum distance before the pet start to get back to its owner
Distance: 10
# Minimum distance in which the pet is summoned
SpawnRange: 1
# Minimum distance in which the pet comes back when it's too far
ComingBackRange: 3
# If you would like to pet to be able to carry items, you can chose an inventory size (this is not a mandatory field, you can remove it)
# Put any value, it'll be rounded up to a multiple of 9 in game
InventorySize: 9
# (Optional) Triggers specific skills for when the taming is 
Taming:
  TamingProgressSkill: TamingEffectSkill
  TamingFinishedSkill: TamingEffectSkill
# Icon in the menu
Icon:
  # Set the name of the icon
  Name: Name of the icon
  # Set the Material of the icon (remove this line if you want a custom head)
  Material: STONE
  # Use this if you want a custom head texture (optional)
  # Texture of the icon (base64)
  # Most custom textures can be found on https://minecraft-heads.com/custom-heads
  TextureBase64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTU1Mjc3Mjc3MDlmMDhiYjVmOTFhYWM4NTBmZTZmOTQ0YzViYzM0OGEwODBiM2I1NjNkNDQ5YzcyYjgxYmY4NiJ9fX0=
  # Set the customModelData of the item if you want to use texture pack resources
  CustomModelData: 0
  # Set the lores of the item
  Description:
  - This is a line of description
  - This is another one
# Signals are optional and meant to be used for the Signal Sticks
Signals:
  # List the signals you want to cast to the pet (can be empty)
  # Make sure the pet is actually listening to these signals or nothing will happen
  Values:
  - ATTACK
  - JUMP
  # Setup the Signal Stick item, it uses the same constructor type as the icon
  Item:
    GetFromMenu: true # put false if you want players to get it from another way (like if you added a crafting method, or an NPC that could give it etc...)
    Name: Signal stick name
    Material: STICK
    CustomModelData: 0
    Description:
    - You have a ton to explain here
    - on how to use the stick maybe
# Skins are optional
Skins:
  # Add the skins of the pet if it has various skins (this is not mandatory)
  Skin1: # Create a section
    MythicMob: mythicMobId # reference to the MythicMob you want to swap with
    Permission: skin.permission # Set the permission to access the skin, it can be the same as the pet permission for instance
    Icon: # Set the icon of the skin, just like before almost same syntax
      Material: STONE
      CustomModelData: 0
      DisplayName: "Skin 1"
      Lore:
      - "This is a lore"
      TextureBase64: anybase64youwant # this is not mandatory. Remove the Material field if you wanna use it
  Skin2:
     # Do the same syntax with as many skins as you want. Remember to add your default skin as well !
```

### 💓 Living Pet config

Making living pets is not quite different as making cosmetic pets.

**Living pets** are meant to be killable creatures, with health, experience, modifiers, levels, and more features that make them feel alive.

Using the living pets, you can also create **evolutions** at certain experience stages. These will automatically handle the permission transfer to the evolved pet with some customization options for you.

**Note that you can use all the cosmetic pets features with the living pets (Skins, Signals, etc...)**.

Here are the additional options you can use to create living pets.

```yaml
# The unique ID of your pet
Id: your_pet_id
# The mythicmob attached to the pet
MythicMob: the_mythicmob_attached_to_the_pet
# Custom permission to summon your pet
Permission: permission.to.summon.the.pet.can.be.custom
# ...
# Add other options there from the cosmetic pets if you want to
# You can add every single feature from the cosmetic pets
# ...
# Levels are the way to handle the pet statistics and make it a living pet
Levels:
  # Define a first level, you can call it however you want
  Lvl_Beginner:
    # Chose a display name for the level
    Name: "Beginner"
    # The experience threshold corresponds to the amount of experience required to reach that level.
    # The first level is therefore at 0xp, and higher levels have increasing experience values.
    # NOTE: Levels must have different experience thresholds
    ExperienceThreshold: 0
    # The Maximum amount of HP of the pet at that level
    MaxHealth: 200
    # The regeneration of HP in heart per second
    Regeneration: 0.1
    # Says how much reduced damaged the pet should be taking 
    # It's a division factor to the damages (1 = +0% resistance, 2 = +100%)
    ResistanceModifier: 1
    # Same goes for damage modifiers : how much more damages the pet should inflict
    # It's a multiplication factor (1 = +0%, 0.5 = -50%)
    DamageModifier: 1
    # The power modifier is an additional placeholder to use in skills to affect the power of skills.
    Power: 1
    # Handles the cooldowns of the pet
    Cooldowns:
      # How long before the pet can be summoned after dying once ? (in seconds)
      Respawn: 15
      # How long before the pet can be summoned after being revoked ? (in seconds)
      Revoke: 0
    # OPTIONAL: Add inventory slots to the inventory if the pet has some
    # Note that it will always round up to a multiple of 9
    InventoryExtension: 0
  # Here you get the second level...
  Lvl_Intermediate:
    Name: "Intermediate"
    ExperienceThreshold: 100
    MaxHealth: 300
    Regeneration: 0.2
    ResistanceModifier: 2
    DamageModifier: 2
    Power: 2
    Cooldowns:
      Respawn: 7
      Revoke: 0
    InventoryExtension: 0
    # OPTIONAL : Handles the announcements when the pet level up
    Announcement:
      # What should it say ?
      # Use "\n" to go in subtitle for the TITLE announcement type
      Text: "Level up !"
      # Message type can be TITLE, CHAT, ACTIONBAR
      Type: CHAT
      # OPTIONAL : Should it play a skill ?
      Skill: Nocsy_YokibirdBaby_Interact_Happy
  Lvl_Adult:
    Name: "Adult"
    MaxHealth: 400
    Regeneration: 0.5
    ResistanceModifier: 2
    DamageModifier: 2
    Power: 2
    ExperienceThreshold: 200
    # OPTIONAL : Handles the evolution system
    # After reaching that level, the pet will evolve into this secondary pet which corresponds to another file
    Evolution:
      # The Pet Id so we can retrieve the evolution
      PetId: Nocsy_Yokibird-Orange-Living
      # How long should we wait in ticks before it evolves (so we can play a skill maybe) ?
      # If you use that feature make sure that your evolution animation,
      # make sure that your animation does last the said value (cumulation of "delay" mechanics)
      DelayBeforeEvolution: 0
      # Should it remove the permission of owning the current stage and then evolve ?
      RemoveAccess: true
    Announcement:
      Text: "Evolving !\nGet ready..."
      Type: TITLE
      Skill: Nocsy_YokibirdBaby_Interact_Happy
```
