Skip to main content
Dan's Plugins Community
HomeNewsGuidesLeaderboardAboutRoad MapCommissionsDev PortalAccount
All plugins
Wild Pets icon

Wild Pets

0

24 servers
Latest: v1.11.0
3,575 downloads on GitHub
Tested on Minecraft 1.18–1.20
4.9 · 8 reviews on SpigotMC
4,748 downloads on SpigotMC

First released July 25, 2021 · Last updated October 12, 2026

Downloads from this site

159 total

2 latest (v1.11.0)

Allows players to tame any entity and keep them as a pet.

mobs
survival
DownloadUser guideSourceSpigotMC
Rendered in 3D from a test server’s real world, as a spectator camera player saw it while bot players used the plugin; the chat lines are recreated from the server’s real output.

Usage

Last reported in use 3 hours ago

423 server starts in the last 30 days

Server starts per day

Versions in use, by share of server starts

  • 1.9.0

    62% · 262 starts

  • 1.10.0

    37% · 155 starts

  • 2.0.0-SNAPSHOT-8-8-2026

    1% · 6 starts

Usage reported by trace — how it works. CI and test servers are excluded.

Usage of every plugin


Verified before release

Version 1.11.0 was started on real servers running Minecraft 1.19.4, 1.21.11, 26.2 and 26.3 before it was published. The jar you download is the exact one that passed. How releases work

Versions

All releases on GitHub
Development build
Pre-release
October 12, 2026· 4 downloads

Automated build of main at 99958b5ed1cf51bfd5f7e54fa4173ff63cfe1405.

This is not a release. It is unreleased, unreviewed code that has not been through any release check, and a broken build can stop a server from starting. Do not run it on a server you care about without a backup.

Install it with Dan's Plugin Manager:

/dpm get wildpets --experimental

Return to published releases with /dpm get wildpets --stable.

WildPets-1.11.1-SNAPSHOT.jar (133.2 KB)

1.11.0

For a server on v1.10.0, this is a drop-in upgrade. It adds support for Minecraft 26.3 and fixes a bug where a leftover lock, unlock, tame or access-check request could fire on a later right-click. Usage reporting now sends one more thing: a random server ID, kept in plugins/trace/config.yml. It is not tied to any person, account or IP address. Your existing config and pet data carry over unchanged.

Changes

Compatibility

  • Added support for Minecraft 26.3 (#339).

Fixes

  • Only one right-click action can be waiting at a time. If you start taming, locking, unlocking, checking access or selecting, any earlier unfinished action is cancelled, so your next right-click does what you last asked. Before this, a lock or unlock you hadn't finished could fire when you meant to tame a pet, or the other way round (issue #330).

Usage reporting

  • Each usage event now includes a random server ID so servers can be counted instead of events (#336). The first time reporting runs, the ID is added to plugins/trace/config.yml as a server-id: line with a comment explaining it. Delete that line to get a new ID. If reporting is turned off, no ID is created, read or sent.
  • The startup message and the comments in config.yml now mention the server ID. They also point to https://danielstephenson.dev/usage-reporting for details (#338, #340).
  • You can still turn reporting off the same ways as before: usage-reporting.enabled: false in this plugin's config.yml, enabled: false in plugins/trace/config.yml for every plugin, or the environment variable TRACE_USAGE_REPORTING=off (or DO_NOT_TRACK=1).

Version

v1.10.0 → 1.11.0 — MINOR. Mechanical floor from comparing the two jars: MINOR. Judgment: I kept the floor at minor. The mechanical evidence shows new data on disk: when usage reporting is on, a random server-id line is now added to plugins/trace/config.yml. It also shows support for a new Minecraft version. Right-click modes now cancel each other, which fixes a bug (issue #330). No command arguments, permissions, config key meanings or pet data formats changed, so nothing existing should break and a major bump isn't justified.

  • minor: storage path changed: src/main/java/dansplugins/wildpets/data/EphemeralData.java

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • dansplugins.wildpets.trace.TraceClient: added public java.lang.String installId();
  • dansplugins.wildpets.trace.TraceClient: added public static java.lang.String installIdFromFile(java.io.File);
  • dansplugins.wildpets.trace.TraceClient$Builder: added public dansplugins.wildpets.trace.TraceClient$Builder installId(java.lang.String);
  • dansplugins.wildpets.trace.TraceClient$Builder: added public dansplugins.wildpets.trace.TraceClient$Builder installIdFile(java.io.File);

</details>

Verification

Verified on a real Spigot server before publication; this release carries the exact jar that was verified.

  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.19.4 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.21.11 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.2 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.3 (11 assertions passed).
  • save-compatibility gate run: data written by v1.10.0 was loaded by this release across two restarts with nothing lost (16 assertions passed).

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

1.10.0

For a server running v1.9.0, this is a drop-in upgrade. The main fix is to pet records. Before this release, the plugin did not load the saved records back into memory at startup, and the records it saved could be missing changes made since the last restart. Saved records are now loaded and kept across restarts, so details such as the name of a pet that has since died stay available. This release also fixes some smaller bugs, makes the Sniffer default work on newer Minecraft versions, and adds two optional usage-reporting features. Saved data formats, commands, permissions and config keys are unchanged.

Changes

Pet data

  • Pet records saved in petRecords.json are now loaded at startup and saved from the same store the plugin uses while running. They used to be thrown away on load, and changes made during a session could fail to persist. (#325)

Bug fixes

  • Unlocking mode (/wp unlock) is now cleared when a player leaves, like the other pet action modes. Before, a player who quit mid-unlock was still in unlocking mode when they rejoined. (#324)
  • Removed a duplicate Endermite entry from the default entity settings. (#324)
  • The Sniffer's default taming item (short grass) is now looked up by name, so it works on Minecraft versions from 1.20.3 onward, where the item is named SHORT_GRASS, as well as on older ones. (#327)

Usage reporting

  • Every usage-reporting event now includes the plugin version, not just the startup event. (#329)
  • The shared plugins/trace/config.yml file now supports an optional tags: block. Its tags are added to every event that participating plugins report. For example, you can set ci: "true" on a test server so its events are not counted as a real installation. Newly created files include a commented-out example, and existing files are not changed. (#328)

Version

v1.9.0 → 1.10.0 — MINOR. Mechanical floor from comparing the two jars: MINOR. Judgment: There is no breaking change here, so this stays at the minor floor. The pets.json and petRecords.json formats are unchanged, and no command arguments, permissions or config key meanings change. The behaviour changes are bug fixes: pet records saved to disk are now loaded back, unlocking mode is cleared on quit, a duplicate Endermite default is removed, and the Sniffer taming item is looked up by name. The other changes add new optional behaviour: usage events now carry the plugin version, and the shared plugins/trace/config.yml can hold an optional tags block. Existing servers don't need to do anything for either.

  • minor: storage path changed: src/main/java/dansplugins/wildpets/data/EphemeralData.java
  • minor: storage path changed: src/main/java/dansplugins/wildpets/pet/record/PetRecordRepository.java
  • minor: storage path changed: src/main/java/dansplugins/wildpets/storage/StorageService.java

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • public class added: dansplugins.wildpets.utils.RenamedConstants
  • dansplugins.wildpets.pet.record.PetRecordRepository: added public boolean addExistingPetRecord(dansplugins.wildpets.pet.record.PetRecord);
  • dansplugins.wildpets.pet.record.PetRecordRepository: added public void clearAll();
  • dansplugins.wildpets.trace.TraceClient: removed/changed public static dansplugins.wildpets.trace.TraceClient$Builder builder(java.lang.String, java.lang.String);
  • dansplugins.wildpets.trace.TraceClient: added public static dansplugins.wildpets.trace.TraceClient$Builder builder(java.lang.String, java.lang.String, java.lang.String);
  • dansplugins.wildpets.trace.TraceClient: added public static final java.lang.String VERSION;

</details>

Verification

Verified on a real Spigot server before publication; this release carries the exact jar that was verified.

  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.19.4 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 1.21.11 (11 assertions passed).
  • boot gate run: booted twice on a fresh Spigot server running Minecraft 26.2 (11 assertions passed).
  • save-compatibility gate run: data written by v1.9.0 was loaded by this release across two restarts with nothing lost (16 assertions passed).

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

1.9.0

A server on v1.8.0 can drop in this build with no data migration: pet and pet-record files load unchanged. Two things change on first start: the three usage-reporting.* keys are added to config.yml and reporting is on by default (the plugin sends its name, version and command names to https://trace.danielstephenson.dev, nothing about players or the server), and a new plugins/trace/config.yml is created as a server-wide switch. Players gain /wp trade, tamed pets no longer despawn when far away or after chunk reloads, and every command's chat output is restyled.

Changes

New features

  • /wp trade <playerName> transfers your selected pet to another online player, respecting the recipient's pet limit; guarded by the new wp.trade permission (#298)
  • Usage reporting: one event at startup and one per command, sent off the main thread, with usage-reporting.enabled in config.yml, a server-wide plugins/trace/config.yml switch, and TRACE_USAGE_REPORTING=off / DO_NOT_TRACK=1 environment opt-outs; the console states on startup whether reporting is on and why (#318, #320)

Fixes

  • Pets no longer disappear: tamed entities are marked setRemoveWhenFarAway(false) and persistence flags are re-applied when their chunk loads and after startup (#299)
  • Duplicate pet records are no longer created for the same entity, and pet entity lookups are indexed by UUID instead of scanning every list (#314)

Command output

  • All command, interaction and event messages use the box-drawing style shared with Activity Tracker; /wp config list is now one aligned key per line (#301)
  • /wp help now lists checkaccess, stats and trade (#308, #298)

Upgrade notes

  • Usage reporting is enabled by default. To turn it off for this plugin set usage-reporting.enabled: false in plugins/WildPets/config.yml; to turn it off for every trace-reporting plugin set enabled: false in plugins/trace/config.yml.
  • Grant wp.trade to players who should be able to trade pets, or deny it to those who should not.

Version

v1.8.0 → 1.9.0 — MINOR. Mechanical floor from comparing the two jars: MINOR. Judgment: Nothing in the diff breaks an existing v1.8.0 server on upgrade: the pets/records on-disk format is unchanged (load path now routes through addExistingPet and dedupes records, but reads the same data), the new usage-reporting config keys are additive and are written into an existing config.yml at startup, and no existing command's arguments or semantics change (output is restyled and /wp now returns true instead of falling through to Bukkit's usage line). The Ponder removal swaps Pet's Lockable/Savable interfaces for local copies and narrows getAccessList() to List, but the mechanical check already saw that signature change and Wild-Pets is not consumed as a library by other plugins in practice. The substantive new behaviour is /wp trade with the wp.trade permission, usage reporting that is on by default and writes plugins/trace/config.yml, and the pet-persistence fix, all of which are minor.

  • minor: permission added: wp.trade
  • minor: default config key added: usage-reporting.enabled
  • minor: default config key added: usage-reporting.endpoint
  • minor: default config key added: usage-reporting.key
  • minor: storage path changed: src/main/java/dansplugins/wildpets/data/Lockable.java
  • minor: storage path changed: src/main/java/dansplugins/wildpets/data/Savable.java
  • minor: storage path changed: src/main/java/dansplugins/wildpets/pet/Pet.java
  • minor: storage path changed: src/main/java/dansplugins/wildpets/pet/list/PetListRepository.java
  • minor: storage path changed: src/main/java/dansplugins/wildpets/pet/record/PetRecord.java
  • minor: storage path changed: src/main/java/dansplugins/wildpets/pet/record/PetRecordRepository.java
  • minor: storage path changed: src/main/java/dansplugins/wildpets/storage/StorageService.java

<details><summary>Java API changes (informational — nothing depends on this plugin)</summary>

  • public class added: dansplugins.wildpets.commands.AbstractPluginCommand
  • public class added: dansplugins.wildpets.commands.ArgumentParser
  • public class added: dansplugins.wildpets.commands.CommandService
  • public class added: dansplugins.wildpets.commands.PermissionChecker
  • public class added: dansplugins.wildpets.commands.TradeCommand
  • public class added: dansplugins.wildpets.data.Lockable
  • public class added: dansplugins.wildpets.data.Savable
  • public class added: dansplugins.wildpets.helpers.UUIDChecker
  • public class added: dansplugins.wildpets.listeners.ChunkLoadHandler
  • public class added: dansplugins.wildpets.listeners.EventHandlerRegistry
  • public class added: dansplugins.wildpets.trace.TraceClient
  • public class added: dansplugins.wildpets.trace.TraceClient$Builder
  • public class added: dansplugins.wildpets.utils.MessageFormat
  • dansplugins.wildpets.config.ConfigService: added public boolean isUsageReportingEnabled();
  • dansplugins.wildpets.config.ConfigService: added public java.lang.String getUsageReportingEndpoint();
  • dansplugins.wildpets.config.ConfigService: added public java.lang.String getUsageReportingKey();
  • dansplugins.wildpets.config.ConfigService: added public void saveUsageReportingDefaultsIfNotPresent();
  • dansplugins.wildpets.pet.Pet: removed/changed public java.util.ArrayList<java.util.UUID> getAccessList();
  • dansplugins.wildpets.pet.Pet: added public java.util.List<java.util.UUID> getAccessList();
  • dansplugins.wildpets.pet.Pet: added public static void applyPersistenceFlags(org.bukkit.entity.Entity, boolean);
  • dansplugins.wildpets.pet.Pet: added public void ensurePersistence();
  • dansplugins.wildpets.pet.Pet: added public void ensurePersistence(org.bukkit.entity.Entity);
  • dansplugins.wildpets.pet.Pet: added public void transferOwnershipTo(java.util.UUID, java.util.UUID);
  • dansplugins.wildpets.pet.list.PetList: added public boolean removePetForTransfer(dansplugins.wildpets.pet.Pet);
  • dansplugins.wildpets.pet.list.PetList: added public dansplugins.wildpets.pet.list.PetList(dansplugins.wildpets.config.ConfigService, java.util.UUID, dansplugins.wildpets.helpers.ServerProvider);
  • dansplugins.wildpets.pet.list.PetListRepository: removed/changed public void createPetListForPlayer(java.util.UUID);
  • dansplugins.wildpets.pet.list.PetListRepository: added public boolean hasNoTrackedPets();
  • dansplugins.wildpets.pet.list.PetListRepository: added public boolean transferPet(dansplugins.wildpets.pet.Pet, java.util.UUID);
  • dansplugins.wildpets.pet.list.PetListRepository: added public dansplugins.wildpets.pet.list.PetList createPetListForPlayer(java.util.UUID);
  • dansplugins.wildpets.pet.list.PetListRepository: added public dansplugins.wildpets.pet.list.PetListRepository(dansplugins.wildpets.config.ConfigService, dansplugins.wildpets.helpers.ServerProvider);
  • dansplugins.wildpets.pet.list.PetListRepository: added public void addExistingPet(dansplugins.wildpets.pet.Pet);
  • dansplugins.wildpets.pet.list.PetListRepository: added public void clearAll();
  • dansplugins.wildpets.pet.record.PetRecord: added public int hashCode();
  • dansplugins.wildpets.pet.record.PetRecordRepository: added public dansplugins.wildpets.pet.record.PetRecord getOrCreatePetRecord(dansplugins.wildpets.pet.Pet) throws dansplugins.wildpets.exceptions.PetRecordNotFoundException;

</details>

Verification

Booted twice on a real Spigot server before publication — boot gate run (10 assertions passed). This release carries the exact jar that was verified.

Install with Dan's Plugin Manager: /dpm get <plugin>. How stable releases are made: Release channels.


drafted by Claude on behalf of Daniel Stephenson

Snapshot release marking Wild-Pets's move to an AI-first development approach.

Day-to-day feature work, grooming, review and maintenance now run through AI agents working directly against this repository, with the maintainers setting direction and approving what lands. The version bump marks that change in how the project is built — it is not a compatibility break. Behaviour, configuration and stored data are unchanged, and existing installations can upgrade in place.

This is a dated snapshot, not a finished release. It follows the precedent set by Medieval Factions' 6.0.0-SNAPSHOT-7-25-2026: the AI-first line has not yet been verified in live operation, and the snapshot designation stays until it has.

Version changes

  • pom.xml: 1.8.0 → 2.0.0-SNAPSHOT-8-8-2026

Opened as https://github.com/Dans-Plugins/Wild-Pets/pull/306.


Drafted by Claude on behalf of Daniel Stephenson.

This release introduces a new Stay Mode for pets, allowing players to restrict pet movement using AI-based behavior control. In addition to gameplay improvements, the test Minecraft server setup has been refined with refactored scripts, updated Docker support, and improved environment configuration.

Testing documentation has also been updated to improve clarity and maintainability for contributors. We are also pleased to welcome a new contributor in this release.

Highlights

  • Added Stay Mode for pet movement control using AI-based restrictions
  • Improved Minecraft server setup with refactored scripts and updated Docker configuration
  • Updated and expanded testing documentation
  • New contributor: @Babakinha

Full Changelog

https://github.com/Dans-Plugins/Wild-Pets/compare/v1.7.0...v1.8.0

What's Changed

Full Changelog: https://github.com/Dans-Plugins/Wild-Pets/compare/v1.6.0...v1.7.0

What's Changed

Full Changelog: https://github.com/Dans-Plugins/Wild-Pets/compare/1.5.1...v1.6.0

What's Changed

Full Changelog: https://github.com/Dans-Plugins/Wild-Pets/compare/1.4.2...1.5.0

Full Changelog: https://github.com/Dans-Plugins/Wild-Pets/compare/1.4.1...1.4.2

The stay command has been removed because the implementation was shown to be causing lag.

What's Changed

  • MIT License
  • Updated Ponder to v1.0

Full Changelog: https://github.com/Dans-Plugins/Wild-Pets/compare/v1.3.2...1.4

Changes in Wild Pets v1.3.2

  • Parents of pets will now only be shown if they exist.
  • Added 3 new config options.

Changes in Wild Pets v1.3.1

  • Added a null check.
  • Made it so that the parents of born pets are tracked regardless of their pet status.
  • Updated Ponder and made sure that its debug messages weren't showing in the console.

Changes in Wild Pets v1.3

  • Fixed a bug where the "petLimit" config option was being set to the wrong type when using the in-game /wp config set command.
  • Made it so that the parents and children of pets will now be tracked.
  • Made it so that the children of pets are also pets.

Changes in Wild Pets v1.2.1

  • Made pets invulnerable by cancelling the EntityDamageEvent if the entity is a pet.
  • Improved the Interaction Handler so locking functioned better.

Changes in Wild Pets v1.2

  • Utilized Ponder for most of the plugin's core functionality.
  • Made it so that the ephemeral data of players is deleted when they log out.

Changes in Wild Pets v1.1.1

  • Fixed players not being able to mount their pets because they didn't have access to them.

Changes in Wild Pets v1.1

  • Added the /wp stats command.
  • Made pets lockable.
  • Prevented players from mounting pets if they didn't have access.

First Release

This is the first release version of Wild Pets.

Changes in Wild Pets v1.0

  • Added the /wp follow command, allowing players to command their selected pet to follow them.
  • Prevented players from taming non-mob entities.
  • Prevented pets from taking damage from blocks.
  • Added a config option to cancel taming after a failed attempt.
  • The last known location of a pet will now be saved and used if a pet can no longer be found.
  • Abstracted the debug flag out to a config option.
  • Created the /mf config command, allowing players to view and set config options.
  • Added a config option for the right click cooldown time for viewing pet info.
  • Added the "secondsBetweenStayTeleports" config option.
  • Added a config option to allow players to right click to select pets by default.
  • Prevented players from naming their pets "cancel".
  • Allowed those with permission to view other players' lists of pets.
  • Created a fix for the teleporting task not getting scheduled upon loading the plugin files when the pet is staying.
  • Made some improvements to the Config Manager
  • If the maximum number of attempts is reached when attempting to schedule the teleporting task for a pet, their movement status will be set to "Wandering".
  • An hourly autosave is now scheduled when the server starts.
  • Added a config option for the character limit for names of pets.

Naming has been improved. New pets will be given a unique name upon being tamed and players can no longer give multiple pets the same name. Further, version mismatch handling has been implemented and bStats has been integrated.

This is the first version that will be beta tested by the Kingdom Community.

NoMoreCreepers

Prevents creepers from spawning.

Bookshelves You Can Use

Turns bookshelves into usable storage: right-click one to open a small inventory.

FoodSpoilage

Makes food items turn into rotten flesh after a certain period of time.

Something wrong, or something missing?

Bugs go to the plugin's issue tracker, where they can actually be fixed and tracked. Ideas for new behaviour go to the Dev Portal, where the community can upvote them.

v0.15.2
Source CodeReport a BugKnowledge BaseFree Server Hosting

More by Daniel Stephenson → danielstephenson.dev · Play his games in your browser