Releases: otectus/locks-reforged
Release list
Locks Reforged 1.7.0
Lock pick enchantments — counterplay for the picker
Five lock-pick-side enchantments in a new LOCK_PICK category, complementing the seven lock-side enchantments. Design: locks define resistance, lock picks define technique. Each is config-gated (enable toggle + tunable values under Enchantments → Lock Pick) and, when disabled, restores the exact prior behavior.
| Enchantment | Max | Effect |
|---|---|---|
| Finesse | III | Reduces break chance after a wrong pin (counters Sturdy). Never affects Complexity. Incompatible with Last Catch |
| Attunement | II | +effective pick strength vs Complex locks (counters Complexity) |
| Grounded | III | −Shocking damage while holding the pick, either hand (counters Shocking) |
| Quiet Hand | I | Quiets the failed-pin sound |
| Last Catch | I | ~20% chance to prevent a break. Incompatible with Finesse |
Data-driven enchantability: lock picks are now enchantable at the enchanting table, with per-pick enchantability from a new optional enchantment_value field in data/locks/lockpick_types/*.json (wood 5, copper 7, iron 10, steel 12, gold 22, diamond 10, netherite 15). Picks with no entry default to 0 (not table-enchantable).
Config: new enable toggles + a [Enchantments.Lock Pick] tuning subsection (per-level strength/reduction, save chance, volume). Also fixed a misleading Enable Sturdy comment.
Requires Minecraft 1.20.1 · Forge 47.2.0+ · Java 17. Fully additive — no changes to existing enchantments or behavior. See CHANGELOG.md for details.
Locks Reforged 1.5.2
Bug Fixes
- Fixed keys, master keys, key rings, Awareness enchantment, and curio key rings being unable to re-lock unlocked lockables. The toggle logic only ran when at least one lockable was locked; unlocking all lockables at a position made re-locking impossible in all game modes.
- Fixed
NullPointerExceptioncrash inStructureTemplateMixinwhen the lockable handler capability is missing during structure copy or paste operations. - Fixed
Lock.fromBufcreating an all-zero pin combo on the client instead of generating a proper dummy combo from the lock's ID seed. - Fixed
KeyRingInventory.extractItemusinggetMaxStackSize()instead ofgetCount()as the extraction limit, violating theIItemHandlercontract. - Fixed
Transform.fromDirectionAndFacereturning null for unmapped direction/face combinations, which could causeNullPointerExceptionin lock state calculations. Now falls back toNORTH_MID. - Fixed
LockItem.isOpen()callinggetOrCreateTag()on read, which unnecessarily created empty NBT tags on items without existing data.
Loot-Scaled Lock Generation
- Chests whose loot value falls below all configured tier thresholds no longer receive a lock when loot-scaled locks are enabled. Previously, these low-value chests always received a wood lock despite the config description stating otherwise.
New Config
- Added Loot Table Injection Patterns server config option. Controls which loot tables receive lock pick and key loot injection. Default:
minecraft:chests/. Add entries likesome_mod:chests/to inject into modded dungeon chests.
Security
- Added additional server-side validation to lock picking packets: the server now re-checks that the lock is still locked and the player still holds a valid pick before processing each pin attempt.
Misc
- Invalid entries in the
Lockable Tagsconfig list now log a warning instead of being silently skipped.