## 1.4.0
### Netherite Lock & Lock Pick
- Added **Netherite Lock** — the strongest lock tier with 14 pins, 200 explosion resistance, and 8 enchantability. Crafted at a smithing table from a Diamond Lock + Netherite Ingot + Netherite Upgrade Template.
- Added **Netherite Lock Pick** — strength 0.95, making it nearly unbreakable. Crafted at a smithing table from a Diamond Lock Pick + Netherite Ingot + Netherite Upgrade Template.
- Both netherite items are **fire-resistant** and survive in lava, like vanilla netherite gear.
- Added **Netherite Lockpick Unbreakable** server config option (off by default). When enabled, netherite lock picks never break during lock picking.
- Netherite lock picks are sold by level 5 toolsmith villagers (16 emeralds). Enchanted netherite locks are offered by wandering traders (40 emeralds).
- Added to loot-scaled lock generation with a value threshold of 60.0 (the highest tier).
### Awareness Enchantment
- Added **Awareness** enchantment (max level I, very rare). When an Awareness-enchanted lock is placed, it remembers who placed it. That player can open and re-lock it with a bare hand — no key needed.
- Works with overlapping locks: each lock independently tracks its owner, so multiple players' Awareness locks at the same position each work correctly.
- Configurable via **Enable Awareness** toggle in the server config (on by default).
- Shows "Aware (Owner-Bound)" tooltip on locks that have an owner.
### New Config
- Added **Netherite Lock** stat overrides (Length, Enchantment Value, Resistance) in the common config.
- Added **Netherite Lockpick Strength** override in the common config.
- Added **Netherite Lockpick Unbreakable** toggle in the server config.
- Added **Enable Awareness** enchantment toggle in the server config.
### Bug Fixes
- Fixed world loading hang in modpacks caused by synchronous loot table pre-computation blocking the server thread. Loot values are now computed asynchronously on a background thread. Chests generated before pre-computation finishes gracefully fall back to no lock.
- Fixed lockpicking GUI rendering corruption (textures smeared/repeated vertically) when using rendering optimization mods like **ImmediatelyFast** or **Embeddium**. Migrated all lockpicking screen rendering from raw Tesselator calls to `GuiGraphics.blit()`, which optimization mods handle correctly.
- Fixed potential `IndexOutOfBoundsException` crash in lock generation if the "Generated Lock Chances" config list was shorter than the "Generated Locks" list (e.g. from manual config editing). Now uses safe bounds checking with a warning log.
- Fixed potential crash in random lock generation if the weighted lock map was empty (e.g. all weights set to 0).
- Major Texture Fix.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }