Skip to main content

Pets

A pet is a textured player head carrying a level (1–100 by default) and a set of abilities that grow with it. Pets come in two types:

  • PASSIVE — the abilities are always on while the head sits anywhere in your hotbar.
  • ACTIVEright-click while holding the head to fire the pet's ability, on its own cooldown. Many actives open a timed armed window during which the pet's other abilities are live; when it closes, the universal ** PET ABILITY: ENDED ** line fires. Dying or logging out ends a window early.

:::warning A stacked head is inert A pet head with an amount greater than one earns no experience and grants no abilities. Keep pets as single items. :::

Pet heads cannot be placed as blocks or worn in the helmet slot — a pet works from your hotbar or not at all.

Levels and brackets

A pet's levels: map is sparse: each key is a level floor, and the highest floor at or below the head's stored level is the live bracket. It supplies that pet's cooldown, armed-window duration, and ability strength, so a level-up is a step change rather than a smooth curve.

display: "Shield"
color: "{#bebebe}"
type: ACTIVE # ACTIVE = right-click | PASSIVE = always-on while in the hotbar
head: "eyJ0ZXh0dXJlcyI6…" # the player-head texture, base64
descriptor: "&eA stalwart guardian forged for those who refuse to fall."
description:
- "{#bebebe}* Temporarily reduces all incoming damage"
levels:
1: # live at levels 1–24
cooldown: 1800
duration: 60
abilities:
- { trigger: DEFENSE, effects: [ { DAMAGE_MOD: { side: defense, mode: add, amount: 15 } } ] }
25: { cooldown: 1800, duration: 100, abilities: [] }
50: { cooldown: 1800, duration: 60, abilities: [] }
100: { cooldown: 1800, duration: 100, abilities: [] }

On an ACTIVE pet, an ability with no trigger: is the implicit right-click. Any other trigger makes it an armed ability, live only for duration ticks after a successful activation.

content/pets/shield.yml in the shipped pack is the commented authoring template for the family.

Earning levels

Every knob is universal and lives in the pets: block of config.yml, read live on /se reload:

pets:
max-level: 100
exp-per-level: 100
exp-per-mob-kill: 5
exp-per-xp-point: 1.0
passive-levels-per-hour: 0.5 # every pet in the main inventory, per hour of ONLINE time
passive-hotbar-levels-per-hour: 1.0 # a PASSIVE-type pet held in the hotbar earns this instead
  • 100 exp is one level, capped at max-level; accrual parks there rather than overflowing.
  • +5 exp per mob kill, and +1 exp per vanilla XP point you pick up.
  • A successful ACTIVE right-click earns a random 12–20 exp on top.
  • Idle accrual runs on online time — 0.5 levels an hour for a pet anywhere in your inventory, 1.0 for a PASSIVE pet held in the hotbar.
  • Fractional progress is carried exactly on the item, so moving a pet between slots never loses any.

The pet's name carries a live [Lvl. N] suffix and its lore shows a ten-slot experience bar, both re-rendered as the level and the bar tenths change.

The shared pet item — items/pet.yml

There is no per-pet item file. ACTIVE and PASSIVE pets each own a whole lore template rather than splicing conditionals into one:

type: pet
name: "{COLOR}&l{NAME} Pet &7[Lvl. &f&n{LEVEL}&r&7]&r"
lore-active:
- "{DESCRIPTOR}"
- ""
- "{COLOR}&lACTIVE PET ABILITY"
- "{DESCRIPTION}"
- ""
- "&eLevel: &r&f&n{LEVEL}&r&7 / {MAX_LEVEL}"
- "&eExperience: &r&f[{EXP_BAR}&f]"
- ""
- "&eCooldown: &r&f&n{TIME_FORMATTED}"
- "&7Right Click while holding to apply."
lore-passive:
- "{DESCRIPTOR}"
- ""
- "{COLOR}&lPASSIVE PET ABILITY"
- "{DESCRIPTION}"
- ""
- "&eLevel: &r&f&n{LEVEL}&r&7 / {MAX_LEVEL}"
- "&eExperience: &r&f[{EXP_BAR}&f]"
- ""
- "&7Hold in hotbar to apply."
TokenRenders
{COLOR}the pet's colour codes
{NAME}the pet's display name
{DESCRIPTOR}the pet's flavour line(s) — dropped when un-authored
{DESCRIPTION}the pet's ability description, one lore line per authored line
{LEVEL} / {MAX_LEVEL}the stored level against the universal cap
{EXP} / {EXP_NEXT}raw experience toward the next level
{EXP_BAR}the ten-slot progress meter, one slot per 10%
{TIME_FORMATTED}the live bracket's right-click cooldown, humanised

Pet Food — items/pet-food.yml

Drag a Pet Food onto a pet head to raise its level. The granted amount is baked onto each minted food, so an already-minted food keeps its printed value across config re-tunes. A pet already at max-level rejects the drop before the food is consumed.

type: pet-food
material: GOLDEN_CARROT
shiny: true
name: "&e&lPet Food [&r&a&n+{AMOUNT}&r&e&l]"
lore:
- "&eBoosts the level of your pet by {AMOUNT} levels, increasing the strength of their abilities."
- "&7Drag n' Drop on an item to apply."
levels: 10 # levels granted per food
sound: "entity.player.levelup"
particles:
- HAPPY_VILLAGER

Feedback and gates

Activation, expiry, cooldown, and failure all send a universal chat line, configured once in the pets: block and shared by every pet — message-on-activate, message-on-end, message-on-cooldown, message-on-fail. An empty template is silent.

Two rules keep actives from being spammed:

  • After any successful pet activation, a shared two-second gate blocks every other pet active. The Mole's recall is exempt so you can always come home.
  • Cage-style pets pre-check the volume they are about to fill and refuse outright — without burning the cooldown — when there is no room.

The family is gated by features.pets in config.yml, read live on /se reload; set it to false and pet heads become inert.

The shipped pets

PetTypeWhat it does
AnubisACTIVEtemporary chance to strip Holy White Scrolls from enemy gear
BatACTIVEa bat swarm clouds your last attacker's vision
CageACTIVEtemporarily cages you and your enemy in iron bars
CatACTIVEtemporary Regeneration
ChickenPASSIVEpermanent Speed
CowACTIVEcleanses your active enchant debuffs
CreeperACTIVEsummons a charged creeper — no terrain grief
EagleACTIVEmore damage while below your opponent
EndermanACTIVEmuch more damage to mobs
FishPASSIVEpassive income
GrimACTIVEtrades your overhealth for double damage
GolemACTIVEtemporary absorption hearts
KrakenPASSIVEdrowning immunity and faster swimming
LionACTIVElaunches enemies away from you
MoleACTIVEsneak-dig a temporary home, re-activate within 50 blocks to return
NightmareACTIVEa rideable skeleton horse at double speed
OwlACTIVEreveals hidden players and locks out their Invisibility
SheepPASSIVEfall damage −25/50/75%, immune at level 100
ShieldACTIVEtemporarily reduces all incoming damage
SilverfishPASSIVEpermanent Haste
SpiderACTIVEcobweb-traps you and your enemy

:::note Two pets with prerequisites The Fish's income needs an economy plugin and is capped per deposit by pets.max-percent-money-cap; it is a no-op on 1.8.9. The Kraken's swim-speed half only applies on 1.21+. The Mole's return trip is countered by Teleblock. :::

Minting & giving

/se give pet <player> <key> [level] # give a pet head, optionally at a starting level
/se give petfood <player> [amount]
/se menu # the operator mint console
/se menu pets # the Pets browser — operators drill into a level picker to mint
/pets # the same browser for players (browse only)

Layout for the browser lives in menus/pets.yml.