Durability Overhaul 2.0.1 (1.21.1 Fabric)
Curse Maven Snippet
What's new
Changelog
2.0.0 for Minecraft 1.21.1
First release for 1.21.1, on NeoForge and Fabric, carrying all of the fixes below.
The port is more than a recompile — 1.21 changed a great deal underneath this mod:
- The broken flag moved from item NBT to a proper data component, which also removes the class of stacking bug described under #9 entirely rather than merely avoiding it.
- Durable is now a datapack enchantment.
Enchantmentbecame a record in 1.21 and can no longer be subclassed, so the enchantment is defined in data and read by the mod's own code. - Attribute penalties are applied through the new modifier callback rather than by rewriting a map, and armour scaling is matched by modifier id — which sidesteps the new wolf-armour slot.
- Broken bows, crossbows and tridents now refuse the use outright, because two of the three places the old version hooked no longer exist.
Existing worlds: items broken under 1.20.1 carry the old NBT flag, which 1.21.1 does not read. They will appear repaired and behave normally. No items are lost.
2.0.0
The first release since 1.11.0, focused on the crashes and compatibility problems that had accumulated in the issue tracker, plus a proper in-game settings screen.
Crashes
Anvils no longer crash the world when they take damage. The injector that adds the broken anvil stage set a return value without being marked cancellable, which threw a
CancellationExceptionevery time an anvil was chipped by use or landed from a fall. (#7, #18)Fixed a crash when the last anvil stage breaks. Vanilla signals "destroy this block" by returning
nullfromAnvilBlock.damage; the mod's replacement passed thatnullstraight tosetBlock. The null is now handled, and the broken anvil is properly destroyed rather than surviving forever.Items broken inside a dispenser are no longer destroyed. Flint and steel and shears are the two items vanilla breaks through a dispenser rather than through a player, and that path reacted to the break by deleting the stack outright — the one thing this mod exists to prevent.
Broken items no longer accumulate damage forever. Because vanilla writes the damage value before the mod sees it, every further hit on an already-broken item pushed the number higher, which slowly distorted the wear penalty and the cost of repairing it.
Compatibility
- Removed the last of the aggressive mixins.
EnchantmentTableBlock.animateTickwas being overwritten with a verbatim copy of the vanilla method, claiming the method against every other mod for no behavioural gain.AnvilMenu.mayPickupis now an injector rather than an overwrite. (#4) - Stopped overwriting the enchanting table menu.
EnchantmentMenu.slotsChangedwas being replaced with a verbatim copy of the vanilla method, which on Forge also deleted theEnchantmentLevelSetEventhook other enchanting mods rely on. The enchanting change itself was never in that method. - Fixed the "Reference map could not be read" warning present in every crash log. Both loaders shipped an empty mixin config that declared a refmap which was never generated.
- Durability bars belonging to other items are left alone. Bundles, and modded items that show a charge bar, were having their bar overwritten and rendered empty.
- Broken crossbows no longer replay the reload animation on every right-click.
- The Forge build no longer reports its version as
1.0.0—mods.tomlhad the version hardcoded instead of using the value the build already supplied. - Removed a stray
MANIFEST.MFthat was being packaged at the root of the jar.
Fixes
- Mending no longer repairs items. The check ran after vanilla had already performed the repair, so only the experience accounting was reverted. Setting the durability multiplier to 0 now correctly restores vanilla Mending. (#6)
- Broken tools are actually broken. A missing early return let the wear penalty overwrite the broken-tool mining speed, so a broken diamond pickaxe still mined at close to full speed. (#8)
- Broken tools no longer destroy the block they fail to mine. The block is now left standing instead of being replaced with air along with all its drops. (#8)
- Items can be renamed in an anvil again. Undamaged and non-damageable items were rejected before the rename step was ever reached. (#16)
- Anvil and enchanter repair now consumes the block of iron or amethyst. It was never taken from the inventory, making repairs free and unlimited. (#15)
- Fixed item stacks becoming permanently unstackable. Several checks read the broken flag with
getOrCreateTag(), which attaches empty NBT to any stack it touches; once tagged, a stack could never merge with an untouched copy again, and the damage persisted in the save. (#9) - Broken items keep partial repair progress. Previously a repair that did not complete in a single operation produced no result at all, wasting the material.
- The anvil no longer swallows a second item that contributes nothing. Renaming while a fully worn twin sat in the second slot produced a result anyway, and taking it destroyed that item for free.
- The anvil repair sound no longer plays twice for the player performing the repair.
- Added the missing
Durableenchantment description, so Enchantment Descriptions shows it. (#10) - Added a Simplified Chinese translation. (#13, thanks to Sigmenzzz)
Settings
- Added an in-game settings screen with every option, reachable from the Config button in Forge's mod list or from a keybind (unbound by default — set it under Controls).
- New options: durability tooltip toggle, durability bar toggle, anvil damage chance, broken tool mining speed, whether broken tools break blocks, and whether broken ranged weapons jam. (#11)
- The crafting-grid repair and anvil repair options are now actually consulted; both were previously ignored.
This mod has no additional files

