A Minecraft plugin that provides comprehensive chest locking, protection, and management features with GriefDefender & Vault integration.
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.
Folia: Support for Folia is still developmental—it may have rough edges or issues not seen on single-region Paper. Use Paper when you can; try Folia when you need regionized scheduling and report problems so they can be fixed.
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.
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.
/chest lock/chest shop: right-click to lock or unlock (same rules as /chest lock / /chest unlock), left-click to inspect (same rules as /chest inspect)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: 5
# 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
# lock_tool.enabled — right-click toggle lock; left-click inspect (see config.yml in JAR)
lock_tool:
enabled: true
reinforcement:
enabled: true
resistance_increase: 0.05
max_reinforcements: 8
attempts_per_degradation: 5
# griefdefender.block_lockpick_in_trusted_foreign_claim — optional: block lockpicking
# for trusted non–claim-owners in that claim (default false). See full config.yml.
# ... world_blacklist, sound_effects, bypass_permission, griefdefender,
# economy, performance — see full config.yml in plugins/Locktight/
messages.yml)Customize all plugin messages, colors, and formatting.
gui.yml)Configure shop slot layout, shop_rows (1–6 rows of 9 slots, default 5), 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).
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. Optionally, griefdefender.block_lockpick_in_trusted_foreign_claim (default false) prevents lockpicking inside a claim by players who have GriefDefender trust there but are not the claim owner—useful so co-trusted players in one base cannot pick each other’s locks; claim group trust is included. Claim owners are not restricted by this setting.
/chest adminlock): Unpickable, never expire; only players with locktight.adminlock can open or break them./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).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.
config.ymlgriefdefender.block_lockpick_in_trusted_foreign_claim — when enabled, trusted non–owners cannot lockpick in that claim (see GriefDefender above)./chest itemset (locktight.itemset) saves the item in your main hand as the template for a tier, reinforcement, or locktool. Shop icons and purchased items use that stack’s material/model/components; display name and lore still come from gui.yml. Tags on the item ensure lockpick/reinforcement/lock-tool logic does not depend on display names. /chest itemset clear <tier> removes a template. /chest reload reloads item_templates.yml.GriefDefender integration respects claim ownership and configurable trust levels so the right players can lock chests in their areas.
Wilderness locking and lockpicking support raiding-oriented gameplay.
Configure wilderness locking, claims, and shop/economy to match your mix of security and risk.
folia-supported: true in plugin metadata)| 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/lock-tool 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 |
| 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|locktool> |
Save held item as shop template | locktight.itemset |
/chest itemset clear <tier|reinforcement|locktool> |
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 |
locktight.use for own chests; locktight.bypass for any (inspection rules as implemented).locktight.use; bypass for non–owner-lock chests per plugin rules. Owner locks: owner only for delete. Admin locks: locktight.adminlock (or locktight.*).locktight.bypass for non–owner-lock containers.locktight.adminlock / locktight.* as implemented.locktight.bypass and locktight.adminlock do not grant access. Use /chest trust on that chest; trustall / trustgroupall skip owner locks./chest itemset already covers custom visuals and PDC-based detection for the existing tiers)./chest itemset, item_templates.yml, locktight.itemset)/chest itemset locktool): right-click lock/unlock, left-click inspectshop_rows in gui.yml)griefdefender.block_lockpick_in_trusted_foreign_claim)All suggestions welcome!