
ChestKey
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).
ChestKey
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.
Features
-
Unique keys: Each key is a
TRIPWIRE_HOOKwith a random UUID in thePersistentDataContainer, 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.breakcan 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.
Installation
- Build the project with Maven:
mvn package
- Copy the generated JAR (
target/chestlock-1.0-SNAPSHOT.jar) to thepluginsdirectory of your Paper server. - Start the server. When starting for the first time,
messages.ymlandconfig.ymlwill be created in the plugin data folder. - Customise
messages.ymlorconfig.ymlas needed.
Configuration
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.
Messages
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.’
