Skip to content

Releases: otectus/locks-reforged

Locks Reforged 1.7.0

Choose a tag to compare

@otectus otectus released this 07 Jul 22:14

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

Choose a tag to compare

@otectus otectus released this 07 Apr 22:21

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 NullPointerException crash in StructureTemplateMixin when the lockable handler capability is missing during structure copy or paste operations.
  • Fixed Lock.fromBuf creating an all-zero pin combo on the client instead of generating a proper dummy combo from the lock's ID seed.
  • Fixed KeyRingInventory.extractItem using getMaxStackSize() instead of getCount() as the extraction limit, violating the IItemHandler contract.
  • Fixed Transform.fromDirectionAndFace returning null for unmapped direction/face combinations, which could cause NullPointerException in lock state calculations. Now falls back to NORTH_MID.
  • Fixed LockItem.isOpen() calling getOrCreateTag() 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 like some_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 Tags config list now log a warning instead of being silently skipped.