ChestKey is a Minecraft plugin for Paper (1.21.11) for locking and protecting chests using unique keys. It works on Java-based servers using Paper API 1.21 or higher and uses only the official Adventure API for texts. It does not require NMS or Reflection.
Unique keys: Each key is a TRIPWIRE_HOOK with a
random UUID in the PersistentDataContainer, a visible short ID in the
Lore, and a glitter effect.
Lock/unlock chest: Shift-right-click on a (Trapped)Chest with a key links the chest to the key without consuming it. Double chests are treated as a single unit.
Opening: Only players with a key in their main or off-hand can open locked chests. Incorrect or missing keys block opening and display particles/indicators.
Break rules: Locked chests can only be broken with the correct key.
Admins with chestlock.admin.break can break any chest.
Crafting duplication: Mixing a key and an iron ingot produces two keys with identical UUIDs (provided by a Shapeless recipe).
Bypass protection: Hoppers, pistons, and explosions cannot affect locked chests.
Configurable visual effects: Particles and small hint signs
can be turned on/off in config.yml.
mvn package
target/chestlock-1.0-SNAPSHOT.jar) to the
plugins directory of your Paper server.messages.yml and
config.yml will be created in the plugin data folder.messages.yml or config.yml as needed.config.yml currently contains two options:
visual:
particles: true
indicator: true
particles: activates particle effects when opening attempts fail
and after locking.indicator: displays a temporary ‘closed’ sign above the chest.A complete sample configuration is included in the plugin archive.
All texts come from messages.yml and use the
MiniMessage format. You
can customise this file to use translations or your own colours.
Example entries:
chest:
locked: ‘<red>This chest is locked and you do not have the right key.’

ChestKey is a Paper (1.21.11+) Minecraft plugin that lets you lock and protect chests using unique keys. It uses only the official Adventure API (no NMS or reflection).