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.
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 version | ModelEngine | MythicMobs | Also |
|---|---|---|---|
| 4.1.0+ | r4+ | 5.0.0+ | LuckPerms β required for some features such as evolutions |
| 2.0.1 β 4.0.4 | r3+ | 5.0.0+ | LuckPerms |
| ≤ 2.0.0 | r2+ | 5.0.0+ | β |
WorldGuard is additionally required if you use the WorldGuard flags.
- 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:
- ModelEngine β drop the
.bbmodelintoplugins/ModelEngine/blueprints/, run/meg reload, then zip the generated pack fromModelEngine/resource pack/and apply it client-side. - 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. - MCPets β add a pet config in
plugins/MCPets/Pets/pointing at that mob, then/mcpets reload.
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:
- In the MythicMob, add a skill with the trigger
~onSignal:YOUR_SIGNAL_TAG. - List
YOUR_SIGNAL_TAGunder the pet'sSignals.Values. - 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
| Mechanic | Purpose | Usage | Requires |
|---|---|---|---|
GivePet | Grants the targeted player permission to use a pet. | givePet{id=#} | Target is a player |
SetPet | Turns the caster into a pet owned by the targeted player. | setPet{id=#;permCheck=true/false} | Target is a player |
SetLivingPet | Turns the caster into a living pet, taming progress 0% by default. | setLivingPet{id=#;followOnTame=true/false;tamingProgress=#} | No target |
PetFollow | Toggles the pet's following AI. | petFollow{follow=true/false} | Target is a pet |
PetName | Renames the pet, optionally persisting to the owner's profile. | petName{name="#";save=true/false} | Target is a pet |
PetDamage | Damages the target, with or without the damage modifier. | petDamage{damage=#;applyStats=true/false} | Target is damageable |
PetExperience | Adds experience to the pet. | petExperience{exp=#} | Target is a pet |
PetDespawn | Despawns the casting pet. | petDespawn{} | Caster is a pet |
EvolvePet | Evolves the pet; force skips the permission check. | evolvePet{evolutionId=#;force=#} | Caster is a pet |
DropPetInventory | Drops the pet's inventory at its location. | dropPetInventory{} | Caster is a pet |
DropPetItem | Drops a pet item; chance is 0β1 (0.1 = 10%). | dropPetItem{petItem=#;chance=#} | Caster is an entity |
PetBuff | Applies a buff to the pet. | petBuff{type=#;operator=#;power=#;duration=#} | Target is a pet |
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
| Targeter | Resolves to |
|---|---|
@PetOwner | The pet's owner. Caster must be a pet. |
@PetFromOwner | The caster's pet. Caster must be a player. |
Conditions
| Condition | Tests | Usage |
|---|---|---|
petExperience | The pet's current experience. | petExperience{exp=#} |
petTaming | The pet's taming progress. | petTaming{taming=#} |
Placeholders
| Placeholder | Resolves 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
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
| Command | Does |
|---|---|
/mcpets | Opens the pet selection GUI. |
/mcpets editor 4.0.0 | Opens the in-game pet editor for creating and editing pets. |
/mcpets reload | Reloads pets and config. |
/mcpets debug | Enables 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:
- Debug in pipeline order. Run
/mcpets debug; if the error mentionsMYTHICMOBS, the problem is in the mob, not in MCPets. - Floating horse armor / no model β the ModelEngine model or the resource pack is not applied. Fix at the ModelEngine layer.
- Purple/black textures β a texture or atlas problem in the resource pack; there is a dedicated atlas-issues page, plus a 1.21.4 resource-pack changes page and a guide to merging custom-item packs on 1.21.3 and prior.
- Pet can't be named β the model is missing the
tag_namebone (required since ModelEngine r2.3.0). - Pet can't be mounted β the model is missing the
mountbone, orMountableis false. - Pet removed or revoked on spawn β usually a protection plugin. For WorldGuard, pets need the region configured to permit them; MCPets provides WorldGuard flags for exactly this.
- Anchor mobs left behind after restart or chunk unload β a documented failure mode with its own page.
- No pet experience β experience is a living pet feature; a cosmetic pet will never gain any.
- Pets missing from a category β category configuration, covered on its own troubleshooting page.