MCPets

Player-owned modeled pets and mounts built on MythicMobs and ModelEngine: a summon GUI, following AI, mounts, renaming, pet inventories, skins, and a full living pet system with health, experience, levels, taming and evolutions.

πŸ“Œ Scope note

MCPets is a third-party plugin β€” not published by MythicCraft β€” documented on its own GitBook. It is the only plugin in this section that hard-requires two others: MythicMobs for the mob and its skills, and ModelEngine for the model. Syntax here targets the 4.1.x line.

Requirements by version

MCPets' dependency floor moves with its major version β€” the most important version fact about this plugin:

MCPets versionModelEngineMythicMobsAlso
4.1.0+r4+5.0.0+LuckPerms β€” required for some features such as evolutions
2.0.1 – 4.0.4r3+5.0.0+LuckPerms
≤ 2.0.0r2+5.0.0+β€”

WorldGuard is additionally required if you use the WorldGuard flags.

⚠ Version differences
  • MCPets 4.0.0 introduced the in-game editor (/mcpets editor), which builds pet configs through a GUI instead of hand-written YAML.
  • ModelEngine r2.3.0 stopped providing name tags automatically. From that release you must add your own name-tag bone; MCPets standardises on a bone named tag_name. Centre its pivot wherever you want the name to appear β€” it can be parented and animated like any other bone.

The three-plugin pipeline

A pet only works if each layer below it already works. Debug in this order β€” MCPets' own docs are emphatic about it:

  1. ModelEngine β€” drop the .bbmodel into plugins/ModelEngine/blueprints/, run /meg reload, then zip the generated pack from ModelEngine/resource pack/ and apply it client-side.
  2. MythicMobs β€” create the mob that will be the pet, with whatever skills it needs. Verify it standalone: /mm e get <mobName> gives you a spawn egg. The mob and its model must be fully working before MCPets enters the picture.
  3. MCPets β€” add a pet config in plugins/MCPets/Pets/ pointing at that mob, then /mcpets reload.
πŸ’‘ Best practice

Pet configs may be organised into arbitrary sub-folders β€” plugins/MCPets/Pets/<anyfolder>/<pet>.yml. Give every pet a unique Id; duplicate ids produce hard-to-trace misbehaviour.

Cosmetic pet config

Cosmetic pets are invincible β€” no health, no statistics. Most fields are optional; the minimum is an Id and a MythicMob.

plugins/MCPets/Pets/example.yml

# 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

# Mounting: requires a "mount" bone in the ModelEngine model
Mountable: false
MountType: walking
DespawnOnDismount: false
AutoRide: false
MountPermission: mcpets.mount_mypet

# Skill executed on despawn. WARNING: this blocks the auto-remove,
# so end the skill with a 'remove @self' mechanic.
DespawnSkill: DespawnSkill_MM

# Distance before the pet starts returning to its owner
Distance: 10
# Distance within which the pet is summoned
SpawnRange: 1
# Distance within which the pet comes back when too far
ComingBackRange: 3

# Optional carry inventory; rounded up to a multiple of 9
InventorySize: 9

Icon:
  Name: Name of the icon
  Material: STONE
  CustomModelData: 0
  Description:
  - This is a line of description

Signals:
  Values:
  - ATTACK
  - JUMP
  Item:
    GetFromMenu: true
    Name: Signal stick name
    Material: STICK
    CustomModelData: 0

Skins:
  Skin1:
    MythicMob: mythicMobId
    Permission: skin.permission
    Icon:
      Material: STONE
      CustomModelData: 0

The icon may instead use a custom head by supplying TextureBase64 in place of Material.

Living pet config

Living pets are killable and carry health, resistances, experience and levels. Every cosmetic feature still applies β€” skins, signals, inventories β€” living pets simply add a Levels block. Experience thresholds drive progression, and at chosen stages a pet can evolve, with permission transfer to the evolved pet handled automatically.

plugins/MCPets/Pets/living_example.yml

Id: your_pet_id
MythicMob: the_mythicmob_attached_to_the_pet
Permission: permission.to.summon.the.pet.can.be.custom
# ... any cosmetic-pet options may also be used ...

Levels:
  Lvl_Beginner:
    Name: "Beginner"
    # XP needed to reach this level. The first level is 0.
    # Levels MUST have different thresholds.
    ExperienceThreshold: 0
    MaxHealth: 200
    # HP regenerated per second, in hearts
    Regeneration: 0.1
    # Division factor on incoming damage (1 = +0%, 2 = +100% resistance)
    ResistanceModifier: 1
    # Multiplication factor on outgoing damage (1 = +0%, 0.5 = -50%)
    DamageModifier: 1
    # Extra placeholder usable in skills to scale skill power
    Power: 1
    Cooldowns:
      # Seconds before the pet can be summoned after dying
      Respawn: 15
      # Seconds before it can be summoned after being revoked
      Revoke: 0
    # Extra inventory slots; rounds up to a multiple of 9
    InventoryExtension: 0

  Lvl_Intermediate:
    Name: "Intermediate"
    ExperienceThreshold: 100
    MaxHealth: 300
    Regeneration: 0.2

Living pets additionally unlock modifiers, taming (with TamingProgressSkill / TamingFinishedSkill hooks) and pet food, configured in petFood.yml with vanilla or custom items for both taming and healing.

Signals & the signal stick

Signals are how a player gives their pet orders. They ride on MythicMobs' signal mechanic, so the behaviour lives in the mob file and MCPets just exposes it:

  1. In the MythicMob, add a skill with the trigger ~onSignal:YOUR_SIGNAL_TAG.
  2. List YOUR_SIGNAL_TAG under the pet's Signals.Values.
  3. Players cycle and cast signals with the signal stick item.

plugins/MythicMobs/Mobs/pet.yml β€” receiving a signal

MyPetMob:
  Type: WOLF
  Display: 'Companion'
  Health: 40
  Skills:
  - skill{s=PetPounce} ~onSignal:ATTACK
  - jump ~onSignal:JUMP

Mounts

Mountable pets need a mount bone in the ModelEngine model (see bone tags), then Mountable: true in the pet config. MountType selects the mount controller β€” walking by default. AutoRide mounts the owner on spawn, DespawnOnDismount removes the pet when they get off, and MountPermission gates riding behind a permission node.

MythicMobs additions

With MCPets installed, these become available inside any Mythic skill.

Mechanics

MechanicPurposeUsageRequires
GivePetGrants the targeted player permission to use a pet.givePet{id=#}Target is a player
SetPetTurns the caster into a pet owned by the targeted player.setPet{id=#;permCheck=true/false}Target is a player
SetLivingPetTurns the caster into a living pet, taming progress 0% by default.setLivingPet{id=#;followOnTame=true/false;tamingProgress=#}No target
PetFollowToggles the pet's following AI.petFollow{follow=true/false}Target is a pet
PetNameRenames the pet, optionally persisting to the owner's profile.petName{name="#";save=true/false}Target is a pet
PetDamageDamages the target, with or without the damage modifier.petDamage{damage=#;applyStats=true/false}Target is damageable
PetExperienceAdds experience to the pet.petExperience{exp=#}Target is a pet
PetDespawnDespawns the casting pet.petDespawn{}Caster is a pet
EvolvePetEvolves the pet; force skips the permission check.evolvePet{evolutionId=#;force=#}Caster is a pet
DropPetInventoryDrops the pet's inventory at its location.dropPetInventory{}Caster is a pet
DropPetItemDrops a pet item; chance is 0–1 (0.1 = 10%).dropPetItem{petItem=#;chance=#}Caster is an entity
PetBuffApplies a buff to the pet.petBuff{type=#;operator=#;power=#;duration=#}Target is a pet
⚠ Gotcha β€” DespawnSkill blocks auto-remove

Setting DespawnSkill disables MCPets' automatic removal of the pet entity. Your despawn skill must therefore end with a remove @self mechanic, or you will leave orphaned mobs in the world.

Targeters

TargeterResolves to
@PetOwnerThe pet's owner. Caster must be a pet.
@PetFromOwnerThe caster's pet. Caster must be a player.

Conditions

ConditionTestsUsage
petExperienceThe pet's current experience.petExperience{exp=#}
petTamingThe pet's taming progress.petTaming{taming=#}

Placeholders

PlaceholderResolves to
<pet.id>The pet id.
<pet.owner.uuid>Owner's UUID.
<pet.owner.name>Owner's name.
<pet.hp>Pet health.
<pet.power>Pet power.
<pet.damagemodifier>Damage modifier.
<pet.resistancemodifier>Resistance modifier.
<pet.experience>Pet experience.
<pet.tamingprogress>Taming progress.
<pet.level.name>Current level's display name.
<pet.level.index>Current level index.

MCPets also exposes PlaceholderAPI placeholders for use outside Mythic skills.

Plugin config

Selected options from plugins/MCPets/config.yml:

plugins/MCPets/config.yml

# Interaction menu behaviour
EnableClickBackToMenu: true
ActivateBackMenuIcon: true
DismountOnDamaged: true
DisableInventoryWhileHoldingSignalStick: true

# Living-pet respawn behaviour
PercentHealthOnRespawn: 0.2
DefaultRespawnCooldown: 0
# If true, ANY pet is blocked while one cooldown is running
GlobalRespawnCooldown: false
AutoRespawn: false

# Database autosave interval, seconds
AutoSaveDelay: 3600

Experience:
  BarSize: 40
  Symbol: '|'

Taming:
  # CHAT, TITLE or ACTION BAR
  AnnouncementType: CHAT
  BarSize: 40
  Symbol: '|'

# Worlds where pets may not spawn
BlackListedWorlds:
- world_dungeons

# Use flat-file storage instead of MySQL
DisableMySQL: true
MySQL:
  Prefix: myprefix
  User: user
  Password: password
  Host: ip
  Port: 0
  Database: db_name
πŸ’‘ Tip

BlackListedWorlds is the clean way to keep pets out of instanced content β€” listing your MythicDungeons worlds there stops pets following players into dungeon instances.

Commands

CommandDoes
/mcpetsOpens the pet selection GUI.
/mcpets editor 4.0.0Opens the in-game pet editor for creating and editing pets.
/mcpets reloadReloads pets and config.
/mcpets debugEnables the debugger β€” the documented first step for diagnosing a broken pet.

Gotchas & common issues

MCPets' documentation carries an unusually large troubleshooting section; these are the failures worth knowing before you hit them:

Sources