Locktight - Advanced Chest Protection & Security System
Locktight transforms chest security from a simple protection mechanism into an engaging, strategic gameplay element that enhances both security-focused and raid-style server experiences.
THIS PLUGIN IS STILL IN DEVELOPMENT, IT IS AVAILABLE CURRENTLY IN BETA VERSION TO HELP DEVELOPMENT THROUGH COMMUNITY FEEDBACK, DO NOT EXPECT IT TO BE PERFECT OR FREE OF BUGS. IF YOU RUN INTO ISSUES, BE SURE YOU ARE RUNNING THE LATEST BUILD FIRST, THEN REPORT THE ISSUE IN #PLUGIN-HELP IN THE DISCORD.
NOTE: IF EXPERIENCING PERFORMANCE ISSUES BECAUSE OF LOCKTIGHT, USE LATEST RELEASE. VERSIONS ALPHA 1.0.4 - 1.0.9 HAD KNOWN PERFORMANCE ISSUES DUE TO HOPPER HEAVY TASKS. Be wary of hopper heavy bases, due to the logic that prevents hoppers stealing from locked chests. Tests show new logic as of A1.1.0 to be 94% more efficient in terms of server thread usage. Please report any issues in the provided Discord channel for support.
Platform: Locktight is built for Paper (and Folia) using the Paper API. Plain Spigot is not supported. Use a current Paper (or Folia) build for your Minecraft version.
Overview
Locktight is a comprehensive chest protection plugin designed to provide an additional layer of security for chests within land claims while maintaining flexibility for various server types. Perfect for both claim-based and raid-style servers, Locktight offers sophisticated chest locking mechanisms, configurable trust systems, and an engaging lockpicking gameplay element.
How to Use
- Simply look at the chest you wish to lock and execute
/chest lock - Purchase lockpicks and lock reinforcements with
/chest shop - AS OF 1.0.6, CHESTS CAN BE AUTO LOCKED ON PLACEMENT (CONFIGURABLE) — DEFAULT VALUE CHANGED TO FALSE IN 1.1.4
- Lock any lockable container: chests, double chests, barrels, all shulker box colors, and copper chests (1.21). Lock, unlock, delete, and trust work from either side of a double chest.
⚙️ Configuration
Main Configuration (config.yml)
The file shipped with the plugin is authoritative. Below is the current layout (values match the default config.yml in the JAR; yours may differ after edits).
# Full banner header is in the JAR’s config.yml — Paper & Folia, by MightyFinger77
# config_version — used for migrations. Do not change unless you know the drill.
config_version: 4
# General Settings
general:
auto_lock_on_place: false # EXPERIMENTAL — enable at your own risk
check_updates: true
close_gui_after_purchase: false
chest_lock_expiration_days: 28
chest_lock_cleanup_interval_hours: 6
debug_enabled: false
hopper_debug: false
lockpicking:
enabled: true
temporary_access_seconds: 30
success_rates:
weak: 0.005
medium: 0.05
advanced: 0.1
professional: 0.3
mythical: 1.0
alerts:
enabled: true
default_enabled: true
allow_lockpicking_offline_players: true
reinforcement:
enabled: true
resistance_increase: 0.05
max_reinforcements: 8
attempts_per_degradation: 5
# ... world_blacklist, sound_effects, bypass_permission, griefdefender,
# economy, performance — see full config.yml in plugins/Locktight/
Messages (messages.yml)
Customize all plugin messages, colors, and formatting.
GUI Configuration (gui.yml)
Configure shop slot layout, display names, lore (including {weak_rate} placeholders), prices, optional integer custom model data, and the item: subsection used for purchased stack name/lore/rates.
For full custom items (resource packs, ItemsAdder/Nexo-style components, non-default materials), admins use /chest itemset; visuals come from the held item, while name and lore still follow gui.yml. Templates are stored in plugins/Locktight/item_templates.yml with a file header field templates_version (separate from Paper’s per-item schema_version inside serialized stacks).
Key Features
🛡️ Enhanced Claim Security
Locktight integrates seamlessly with GriefDefender to provide a second layer of protection beyond standard claim trusts. Players with claim access cannot automatically open locked chests unless explicitly trusted through the /chest trust command. This ensures that even trusted players must be specifically authorized for individual chest access.
🔐 Intelligent Chest Locking
- Multiple container types: Lock chests (single and double), barrels, shulker boxes (all colors), and copper chests (1.21). All copper chest variants are supported; locks are stored by block location so they persist when copper chests oxidize or change state. Double chests are treated as one lock; lock, unlock, delete, and trust work from either side.
- Owner-only access: Locked chests are secure from unauthorized access
- Indestructible protection: Locked chests cannot be broken by hand or destroyed by explosions (per plugin rules)
- Admin locks (
/chest adminlock): Unpickable, never expire; only players withlocktight.adminlockcan open or break them. - Owner locks (
/chest olock): Only the owner or players trusted on that chest can access. Bypass and adminlock do not grant access. Unpickable, never expire. Trust must be set per chest (bulk trust skips owner locks). - Claim integration: Respects claim boundaries and trust levels
- Configurable permissions: Server owners can define which trust levels (CONTAINER, BUILDER, MANAGER) can lock chests within claims
🎯 Advanced Trust Management
Per-chest trust (/chest trust / untrust), bulk trust (/chest trustall / untrustall with optional radius), group trust with LuckPerms (/chest trustgroup / trustgroupall and untrust variants), and clear trusts (cleartrusts, cleartrustsgroups, cleartrustsboth). Owner locks are excluded from bulk/radius trust and must be trusted individually.
🎮 Engaging Lockpicking System
- Multiple tiers: Weak, Medium, Advanced, Professional, and Mythical lockpicks
- Configurable success rates: Balance gameplay and security in
config.yml - In-game shop: Purchase lockpicks with Vault
- Reinforcement system: Owners reinforce chests to reduce lockpick success rates
- Custom item templates:
/chest itemset(locktight.itemset) saves the item in your main hand as the template for a tier or reinforcement. Shop icons and purchased items use that stack’s material/model/components; display name and lore still come fromgui.yml. Tags on the item ensure lockpick/reinforcement logic does not depend on display names./chest itemset clear <tier>removes a template./chest reloadreloadsitem_templates.yml.
⚙️ Flexible Configuration
- Claim-based servers: Extra security inside GriefDefender claims
- Raid servers: Wilderness locking and lockpicking
- Hybrid servers: Mix protection and raiding
Server Types
🏰 Claim-Based Protection Servers
GriefDefender integration respects claim ownership and configurable trust levels so the right players can lock chests in their areas.
⚔️ Raid-Style Servers
Wilderness locking and lockpicking support raiding-oriented gameplay.
🔄 Hybrid Servers
Configure wilderness locking, claims, and shop/economy to match your mix of security and risk.
Technical Features
- SQLite (bundled driver): Chest locks, trust, reinforcements, and related data
- Vault: Economy for the shop
- GriefDefender API: Claim-aware locking (soft dependency)
- LuckPerms (optional): Group-based trust
- Paper / Folia: Supported; uses safe scheduling on Folia (
folia-supported: truein plugin metadata) - Configurable expiration: Automatic cleanup of abandoned locks (admin and owner locks never expire)
- Lockable containers: Chests (including double), barrels, all shulker colors, copper chest variants where the server version supports them
Benefits
- Enhanced security beyond claim trusts alone
- Balanced gameplay between defense and raiding
- Player engagement via lockpicking and reinforcements
- Flexible deployment across server styles
- Custom shop visuals without losing YAML-driven rates and lore
🔑 Permissions & Commands
All permission nodes
| Permission | Description | Default |
|---|---|---|
locktight.use | Lock, unlock, trust, inspect own chests, delete own chests | true |
locktight.shop | Access the lockpick shop | true |
locktight.lockpick | Use lockpicks on chests | op |
locktight.lockpickget | Get lockpick items via command | op |
locktight.lockpickget.other | Give lockpick items to other players | op |
locktight.itemset | Save custom lockpick/reinforcement templates (/chest itemset) | op |
locktight.reload | Reload plugin configuration | op |
locktight.cleanup | Manually trigger chest lock expiration cleanup | op |
locktight.adminlock | Create unpickable admin locks | op |
locktight.ownerlock | Create owner locks (bypass/adminlock do not apply) | op |
locktight.bypass | Bypass chest locks (except owner locks) and inspect/delete per rules | op |
locktight.update | Manually check for plugin updates | op |
locktight.* | Wildcard for all plugin features | op |
All commands
| Command | Description | Permission |
|---|---|---|
/chest lock | Lock the container you’re looking at | locktight.use |
/chest unlock | Unlock your locked container | locktight.use |
/chest trust <player> | Trust a player on this chest | locktight.use |
/chest untrust <player|all> | Untrust a player (or all) on this chest | locktight.use |
/chest trustall <player> [radius] | Trust on all (or radius) of your chests; skips owner locks | locktight.use |
/chest untrustall <player> [radius] | Untrust from all (or radius); skips owner locks | locktight.use |
/chest trustgroup <group> | Trust a LuckPerms group on this chest | locktight.use |
/chest trustgroupall <group> | Trust a group on all your chests; skips owner locks | locktight.use |
/chest untrustgroup / untrustgroupall | Remove group trust | locktight.use |
/chest cleartrusts / cleartrustsgroups / cleartrustsboth | Clear trusts on this chest | locktight.use |
/chest delete | Delete chest data (either side of double chest) | locktight.use / locktight.bypass (rules apply) |
/chest inspect | Inspect container | locktight.use / locktight.bypass |
/chest shop | Open lockpick shop | locktight.shop |
/chest reload | Reload configuration (including item_templates.yml) | locktight.reload |
/chest cleanup | Clean expired locks | locktight.cleanup |
/chest lockpick [tier] | Use lockpick on container | locktight.lockpick |
/chest lockpickget [tier] [qty] [player] | Get lockpick/reinforcement items | locktight.lockpickget |
/chest itemset <tier|reinforcement> | Save held item as shop template | locktight.itemset |
/chest itemset clear <tier|reinforcement> | Remove saved template | locktight.itemset |
/chest adminlock | Set admin lock | locktight.adminlock |
/chest olock | Set owner lock | locktight.ownerlock |
/chest autolock | Toggle auto-lock on place | locktight.use |
/chest alerts | Toggle lockpick alerts | locktight.use |
/chest help [subcommand] | Help | — |
/chest bypass | Toggle bypass mode | locktight.bypass |
/chest update | Check for updates | locktight.update |
Permission logic notes
- Inspect:
locktight.usefor own chests;locktight.bypassfor any (inspection rules as implemented). - Delete: Own chests with
locktight.use; bypass for non–owner-lock chests per plugin rules. Owner locks: owner only for delete. Admin locks:locktight.adminlock(orlocktight.*). - Open / break (normal locks): Owner/trusted;
locktight.bypassfor non–owner-lock containers. - Admin locks: Unpickable; open/break/delete for
locktight.adminlock/locktight.*as implemented. - Owner locks: Only owner or chest-trusted players;
locktight.bypassandlocktight.adminlockdo not grant access. Use/chest truston that chest;trustall/trustgroupallskip owner locks.
📋 TODO / future improvements
Planned features
- Fully modular tiers: Allow adding arbitrary new lockpick tiers purely from config without code changes (today, tiers are wired to specific shop keys and config paths;
/chest itemsetalready covers custom visuals and PDC-based detection for the existing tiers). - Lockable doors (doors, trapdoors, etc.)
- Lockable redstone blocks (buttons, levers, pressure plates)
- Lockable ender chests
- More lockable variants (e.g. boat/chest minecart storage) where feasible
Implemented (no longer TODO)
- Lockable barrels
- Lockable shulker boxes (all colors)
- Lockable copper chests (1.21) and persistence across oxidation/wax
- Double chest from either side (lock, unlock, delete, trust, inspect)
- Paper & Folia support with region-safe scheduling
- Custom shop item templates (
/chest itemset,item_templates.yml,locktight.itemset)
All suggestions welcome!

