PerPlayerKit

PerPlayerKit

PerPlayerKit lets players create their own custom kits (personal kits) for practicing PvP.

5 179 downloads
11 followers

PerPlayerKit

Every player builds their very own PvP kits

Documentation · Discord · Source

The PerPlayerKit main menu

Most kit plugins hand everyone the same loadout. PerPlayerKit gives every player nine kit slots and nine enderchest slots of their own, built from a kit room you stock with the items you approve. Players arrange their kit once, then load it with /k1 mid-warmup and get straight back to fighting.

It is the kit system behind many crystal, pot, UHC, and sword practice servers, and it runs on Paper or Spigot 1.19+.


Why servers pick it

  • Players own their kits. Nine kits and nine enderchest kits per player by default, up to 99. Saved to a database, so they survive restarts and follow the player across your network.
  • You keep control. The kit room is the only source of items. Optional item filtering caps enchantment levels, potion levels and durations, and blocks unbreakable items, custom attributes, and illegal NBT.
  • Playable in one command. /perplayerkit autosetup fills the kit room and nine public kits with a ready-made crystal, mace, netherite, pot, UHC, sword, axe, FFA, and cart setup.
  • Built for fights. Rekit on respawn, rekit the killer after every kill, and /rg to restock pearls, crystals, and potions from the loaded kit without opening a menu.
  • No lock-in. Free, open source under AGPL-3.0, with an importer for KitsX and export/import of all kit data between servers.

Features

Kits and enderchest kits

Players open /kit, take items from the kit room, arrange a full inventory including armor and off-hand, and close the editor to save. /k1 through /k9 load kits instantly. /ec1 through /ec9 do the same for enderchest kits. Swap slots, delete slots, and optionally heal, feed, saturate, or clear effects on every load.

The kit editor

Public kits

Server-wide preset kits anyone can load from /publickit. Declare them in config, hold the inventory you want, and run /savepublickit <id>.

The public kits menu

Automatic rekit

Give the last loaded kit back on respawn, with a configurable delay. Turn on rekit-on-kill to regear the killer instantly after every kill. Either trigger can instead pick a public kit by world, or by WorldGuard region, so the Nether arena hands out crystal kits and the sword arena hands out sword kits.

Regear

/rg and /regear restock whitelisted items from the player's loaded kit. Run them as instant commands or hand out a regear shulker box. Damage timers, cooldowns, and an elytra check stop it being abused mid-combo.

Sharing and transfers

  • /sharekit <slot> <player> sends a kit. They click [ACCEPT] in chat.
  • /sharekit <slot> prints a share code anyone can redeem with /copykit for 15 minutes.
  • /transferkits <player> copies every kit to a new account.

Item filtering and anti-exploit

Off by default, on in one block of config. Limit kits to kit room items only, cap enchantment levels per enchantment, reject over-levelled or incompatible enchantments, cap potion effect level and duration, and block unbreakable items and custom attribute modifiers. Rules apply on load, on save, on import, and on regear, and per-material overrides let Protection V through on chestplates while everything else stays at vanilla limits. Shulkers and bundles are checked recursively.

Staff tools

/inspectkit <player> and /inspectec <player> open any player's kits. /purgeitem deletes every copy of an item from every stored kit, across all 99 slots, when something slips through.

Storage

SQLite out of the box. MySQL, MariaDB, PostgreSQL, or Redis for networks that share kits between servers. Switch later with /perplayerkit migrate <from> <to>. Export and import kit rooms, public kits, or player data as portable .ppk files.

Everything else

  • Menu accent color and filler glass are configurable, and titles accept MiniMessage.
  • Every message lives in a language file. Fourteen languages ship bundled: English, Chinese, Spanish, Portuguese, French, Ukrainian, Danish, Italian, Polish, Romanian, Dutch, German, Swedish, and Finnish.
  • Per-world and per-region rules for every feature, with optional WorldGuard support.
  • PlaceholderAPI placeholders in messages.
  • Sounds, join messages, and scheduled broadcasts.
  • A small Java API for listing public kits and applying one to a player.

Get started

  1. Install it. Drop the jar in plugins/, restart, pick a database if you are not happy with SQLite.
  2. Stock the kit room. Or run /perplayerkit autosetup and skip straight to playing.
  3. Give out permissions. perplayerkit.use for players, perplayerkit.staff for moderators, perplayerkit.admin for you.

About five minutes. Requires Paper or Spigot 1.19+ and Java 17+.


Documentation

Everything is at perplayerkit.com.

Player commands Every command a player can run
Admin commands Kit room, public kits, purge, export, migrate
Permissions Every node, plus LuckPerms recipes
config.yml reference Every setting and what it does
Storage and databases SQLite, MySQL, PostgreSQL, Redis
Upgrading What to check before updating
Troubleshooting Fixes for the problems people hit most
FAQ Short answers to common questions
Java API For plugin developers

Support

Ask in the Discord. Report bugs on the issue tracker.

Dev builds of every commit are on Jenkins. They are compiled, not tested. Back up your kit data before running one on a live server.

Open source

PerPlayerKit is licensed under the AGPL-3.0. The code is on GitHub.