PetCore

PetCore

Cozy companion pets for Paper: adopt from a YAML catalogue, follow/stay/home behaviour, an owner-defined pet home, bonding with tiers & rewards, cozy cosmetics (personalities, titles, emotes), and token gifts. Standalone, EN + NL.

46 downloads

PetCore

Cozy, persistent companion pets — the comfort feature your server has been missing, done cleanly and safely.

PetCore gives every player a companion animal that walks behind them, can be told to stay or to live in a little home they build, and grows a bond over time. There are no runtime dependencies at all: no database, no economy plugin, no WorldGuard, no Bedrock form toolkit. Everything is YAML you can read, and every word a player sees ships in English and Dutch.

🐾 Cozy, never combat. Pets are invulnerable, never deal or take damage, and never target players or mobs. No stat buffs, no combat perks — ever.


🐾 Adopt from a catalogue

A YAML catalogue of adoptable animals — cats, dogs, foxes, allays, sniffers and more — each with a display name, permission gate, locomotion profile, biome affinity and lore. Players hold several up to a permission-driven slot limit and switch between them. Optional per-pet cost runs a console command first, so adoption can charge coins through any economy plugin.

/pet adopt | switch | release | info.

🚶 Three cozy behaviours

  • Follow — walks just behind the owner, using the real Paper pathfinder, and teleports to catch up past a distance.
  • Stay — sits where it was left.
  • Home — lives inside a region the owner outlines, gently wandering within it.

/pet behind | stay | cage | tphere | tpcage.

🏡 A pet home you build yourself

Two corners, /pet savecage, and a particle outline confirms it. Validated by self-contained size rules (a hard 3×3×2 minimum and configurable max width/length/height/chunks/area), an optional allowed-worlds list, and an optional distance-from-owner limit — no land-claim or WorldGuard dependency.

💛 Bonding with tiers

Bond grows from cozy moments — being near you, resting by a campfire, travelling together, a first rename — each on its own cooldown so it can't be farmed. Crossing a tier unlocks titles, emotes and cosmetics, and can grant a one-time reward (items, XP, console commands, chat lines — never a direct economy call). A calm bond bar and action-bar notices keep it gentle.

🎀 Cozy cosmetics

Random personalities, unlockable titles and emotes, cosmetic home styles, seasonal particle cosmetics (that appear only in their months), a live mood, favourite-biome discovery, and keepsakes. All decorative, all in config.

🎁 Gifts

Send another player a cozy pet gift they redeem with a token — applying a small bond bonus and optionally a cosmetic, title or keepsake. An optional module that builds on pets through the service registry.

/petgift <player> <gift> [note] | list | claim <token>.


Entity hygiene is the headline

This plugin spawns and persists mobs, so it's built to be tidy:

  • Every pet is tagged with its owner and id and spawned non-persistent, so the server never writes it to region files — a crash or restart leaves no loose pets.
  • Orphan/duplicate sweeps run on enable, on chunk load, and on a timer; /pet cleanup and /pet debug are there when you want them.
  • Pets despawn when their owner logs off and re-spawn on join; caged pets only materialise when a player is near.
  • No plugin chunk tickets by default — pets never keep chunks loaded unless you opt in.
  • Movement uses the public Mob#getPathfinder() API and Bukkit teleport — no NMS, no reflection, nothing version-locked.

Modular & standalone

Every feature is a module you can switch on or off. pets is the foundation; the optional gifts module depends on it and, if pets are off, logs one line and stays off rather than half-starting. No database, no external plugin dependencies, all data in plain YAML.

Built for Paper 26.2

Adventure components everywhere, registry-based type lookups, pre-spawn entity configuration, the modern pathfinder API. Ships with JUnit tests for the parts that matter: home-bounds containment and the size-validation matrix, PetMode / PetSupportProfile parsing, bond cap-and-cooldown bookkeeping, permission-driven slot resolution, pet-id normalisation, and cosmetic/season parsing.

Languages

English and Dutch out of the box. Every player-facing string is in a language file — add your own by copying one.

No gallery available for this project.