Make shields only block some of the damage taken, instead of all of the damage taken!
Warning: This pack tends to break. A lot. Notice: This pack is incompatible with Forge/NeoForge despite being listed as supported in the versions. This isn't the pack's fault, it's Forge's/NeoForge's, because Minecraft's statistics system which the pack uses to determine shield logic is broken in NeoForge/Forge.
Questions? Post them in my discord as they are more likely to get seen there. Find it on the sidebar. Any non-urgent issue should be posted in the github repository.
If you downloaded 1.0.0 or 1.0.1 of the mod, please update to 1.0.2 as version 1.0.0 doesn't work at all and 1.0.1 doesn't work on 1.20.3-1.20.6.
Shields will still block all knockback, and the death message isn't correct if you die from the non-blocked damage when you block a hit, but when making this I had to decide whether to use the minecraft:generic damage type which would make shields block all knockback and have the incorrect death message, or to use the minecraft:mob_attack damage type, which would give a better death message, but I would need to figure out how to bypass the shield, which the only method I can think of would cause knockback to be COMPLETELY REVERSED so that you'd get knocked toward the attacker instead of away from it, because I'd need to cause the damage to come from behind the player, and I decided on the former because the knockback part is a dealbreaker.
Configuration is stored in the "ShieldNerfSettings" scoreboard objective.
I permit the use of this datapack/mod in your modpacks. You can include it in modpacks without the need to ask me about it. However, notifying me if it is being included in your modpack would be nice.
When 1.21.5 fully releases, this datapack will become obsolete due to the addition of the blocks_attacks item component added in 25w04a, which is more customizable and works much better than this pack. Therefore I will not be supporting versions 1.21.5 and newer. I will instead make a new datapack that modifies the default behavior of shields using the blocks_attacks component instead.
Make shields only protect some of the damage!