Pets
A pet is a real vanilla mob that follows its owner around. Pets are purely cosmetic: they cannot be hurt, cannot hurt anyone, cannot change blocks, cannot be interacted with, and never outlive their owner's session.
Which mobs can be pets
Every mob is a pet. The list is built from the server's own entity types rather than written by hand, so a mob added in a future Minecraft version turns up as a pet with no update to EdenEffects. A type is offered if it is a mob, the server can spawn it, and it is not one of the exclusions below.
Pets appear in the menu in alphabetical order, each with its spawn egg as the icon (a name tag for the rare mob without one), under the mob's vanilla name taken from the game's own translation, so players see it in their client's language.
Each pet is gated by edeneffects.pet.<id>, where the ID is the entity type in lower case: edeneffects.pet.wolf, edeneffects.pet.axolotl, edeneffects.pet.zombie. edeneffects.pet.* grants them all.
Mobs left out
These are excluded because what they do cannot be made harmless or presentable:
| Mob | Why not |
|---|---|
| Ender dragon | The client never scales its model (MC-267372), so it would always be a 16-block wall. |
| Warden | Pulses darkness on nearby players every few seconds. |
| Elder guardian | Applies mining fatigue to nearby players. |
| Giant | Twelve blocks tall, with no AI to follow anyone. |
| Shulker | Cannot move, and teleports away on its own. |
| Wandering trader | Despawns itself on a timer. |
| Trader llama | Despawns itself on a timer. |
| Pufferfish | Poisons players who touch it. |
| Copper golem | Moves items between chests and turns itself into a block. |
Hostile mobs are fine as pets: everything that makes them dangerous is cancelled. They are also marked to survive Peaceful difficulty, which would otherwise delete a hostile pet the tick it spawned.
How pets move
Pets are real mobs with all of their AI goals removed. That keeps vanilla pathfinding, so a pet walks up stairs and through doorways, but stops it chasing, attacking, or wandering off.
- Within 4 blocks of its owner, a pet idles. It turns to look at whatever its owner is looking at, and now and then wanders a couple of blocks.
- Further than that, it paths back to a spot just behind its owner.
- More than 24 blocks away, for example after a teleport or a failed path, it snaps straight to its owner.
Both distances stretch for large pets, so a giant pet trails behind its owner instead of pathing into them.
Fliers and water mobs
Ghasts, happy ghasts, phantoms, vexes, bats, and every water mob (fish, squid, dolphins, guardians, nautiluses) are flown rather than walked. A flier's movement comes from its own move control, which ignores the pathfinder, and a water mob would flop about on land, so their AI is switched off and EdenEffects moves them directly.
They circle their owner: one lap every 14 seconds, just clear of them, bobbing gently and facing the way they fly. The circle moves with the owner, chasing its point by a fraction of the remaining distance each tick, so it stays smooth when they stand still and keeps up when they sprint or fly.
Phantoms are also set not to burn in daylight, and the wither's boss bar is cleared.
Editing a pet
Owners right-click their pet, or choose Pet settings in the menu, to open a native Paper dialog:
| Field | Stored as | Description |
|---|---|---|
| Name | custom_name | Up to 48 characters. Empty uses the mob's own name. |
| Size (%) | scale | A slider in steps of 5%. |
| Visible to others | visible_to_others | When off, only the owner can see the pet. |
| Glowing | glowing | Gives the pet a glowing outline. |
Saving writes to MySQL and syncs to every server, like any other change. Settings belong to the player, not the pet, so switching from a wolf to a fox keeps the name, size, and toggles.
The name is player input shown above an entity, so it is cleaned with StoneLib's UntrustedText before it is stored.
The editor needs Paper's Dialog API. On a Paper build without it, EdenEffects logs Paper's Dialog API is missing on this build; pet editing is disabled, and right-clicking a pet replies "The pet editor is unavailable on this server."
Size
Pet size uses the vanilla SCALE attribute, clamped to a range set in pets.scale.
| Player | Range (defaults) |
|---|---|
| Everyone | pets.scale.min to pets.scale.max: 40% to 160% |
With edeneffects.bypass.pet-scale | pets.scale.bypass.min to pets.scale.bypass.max: 6.25% to 1600% |
The slider rounds the ends of the range inward to the nearest 5%, so the default bypass slider runs from 10% to 1600%. The Pet settings button shows each player the range they are allowed.
The clamp is applied every time the pet spawns, using the owner's current permissions, rather than when the size is saved. If a player loses the bypass node, their pet snaps back into the normal range, but their stored size is left alone and returns if the node is granted again.
The bypass is not part of edeneffects.pet.*, so a rank with every pet does not get giant pets by accident. It is included in edeneffects.*.
Safeguards
Removing a mob's goals does not remove everything it does. Brain-driven AI (piglins, hoglins, goats, frogs, villagers) and behaviour in a mob's own tick (the wither breaking blocks, a chicken laying eggs) run regardless. So every pet carries the scoreboard tag edeneffects-pet, and these are cancelled for any tagged entity. This is what allows every mob to be offered as a pet rather than a hand-picked safe list.
Pets can't hurt anyone or anything
- Targeting is cancelled, so a brain-driven hostile never picks a player at all.
- Damage a pet deals is cancelled, including damage from its projectiles, and pets cannot launch projectiles.
- Explosions are cancelled, and a creeper's or sulfur cube's fuse is stopped before it goes off rather than after.
Pets can't be hurt
Every damage event on a pet is cancelled, which covers creative-mode hits, the void, fall damage, drowning, poison, and suffocation as well as normal attacks. Pets also never catch fire, so an invulnerable pet never trails flames around the hub.
Pets are put on a scoreboard team, edeneffects_pets, with collision set to NEVER. A player's own movement is worked out by their client, which ignores the server's collidable flag but respects team collision, so this is what stops a pet nudging a player off a ledge. The team only ever holds pets and is emptied on start, so other plugins' teams are untouched.
Pets can't change the world
- Breaking and changing blocks is cancelled: the wither's tick, a ravager through leaves, a rabbit eating carrots.
- Placing blocks is cancelled, such as a snow golem's trail of snow.
- Dropping items is cancelled: chicken eggs, sniffer seeds, armadillo scutes, a panda's sneeze.
- Picking items up is cancelled, which allays, foxes, piglins, and dolphins do without a goal.
- Enderman teleports are cancelled, so one does not vanish in the rain. Only the enderman's own teleport: EdenEffects moving a pet still works.
Pets can't turn into something else
A piglin becoming a zombified piglin, a zombie becoming a drowned, a tadpole becoming a frog: all cancelled. The new entity would be untagged, which would leave a real mob loose in the world.
Pets can't be interacted with
No player can ride, shear, leash, trade with, bucket, dye, or feed a pet, whether or not it is theirs. Right-clicking your own pet opens its editor instead. Pets are also silent.
Pets never outlive their owner
- A pet is removed when its owner logs out, changes to a world where pets are off, vanishes, or goes into spectator mode.
- Every pet is removed when the server stops cleanly.
- Pets are spawned as non-persistent, so the server should never save one.
- In case a crash saves one anyway, any entity tagged
edeneffects-petthat EdenEffects is not driving is removed on start, whenever a chunk's entities load, and on shutdown. A pet left over from a crash disappears as soon as its chunk loads.
If you ever need to clear stray pets by hand:
/kill @e[tag=edeneffects-pet]
Online players' pets respawn the next time their cosmetics are applied, such as when they change world or rejoin.