- Added a new shield parry mechanic. Raising the shield to block a projectile shortly before it lands parries it and sends it flying towards the shooter.
- Added Bash shield enchantment. Allows performing a shield bash by pressing the action key while blocking with a shield, knocking enemies away and dealing minor damage.
- Added Netherite Shield. Functionally identical to the normal shield, but has increased durability and fire resistance.
- Fixed a bug causing language file patches to not work.
- [NeoForge only] Moved language file patches to client only to prevent server log spam.
- Added support for Minecraft 1.21.8+.
- Switched config API to Fzzy Config. Your configuration will be reset.
- Significantly reduced the durability of the netherite bow and netherite crossbow.
- Added an option to normalize the max and min enchantment costs for protection enchantments. When enabled, all protection enchantments obtained from the enchanting table will have similar levels for the same enchanting power. Disabled by default.
- Fixed a bug where Critical Counter wouldn't work alongside certain mods when shielded damage was too low.
- Fixed a bug where the axe would forget which entity it's stuck on under specific circumstances.
- Added support for Minecraft 1.21.7+.
- Fixed a bug where the axe would forget which entity it's stuck on under specific circumstances.
- Fixed a bug where Critical Counter wouldn't work alongside certain mods when shielded damage was too low.
- Fixed json errors appearing in the game log.
- Switched config API to Fzzy Config.
- Significantly reduced the durability of the netherite bow and netherite crossbow.
- Added an option to normalize the max and min enchantment costs for protection enchantments. When enabled, all protection enchantments obtained from the enchanting table will have similar levels for the same enchanting power. Disabled by default.
- Fixed Magic Protection and Elemental Protection not reducing damage taken as expected.
- Thrown axe data is now properly saved to and loaded from the world file in order to prevent any and all issues that could possibly arise when reloading worlds that have active thrown axes in them.




