The bug
If you use a shield, it will not block for a fraction of a second, so it doesn't protect you instantly.
How to reproduce
On survival mode, spawn a skeleton
When it shoots you, block with the shield
→ ❌ You will not stop the arrow and it will deal damage to you
Linked issues
is duplicated by 25
Attachments
Comments 63
Still applies to version 1.9.4. Does anyone know if this is actually a bug or it's intended purpose?
It happens even when you block before the arrow shoots, I always hit the skeleton when his bow is empty, and have to pull up shield as soon as he charges another arrow, if I'm too late the arrow ignores the shield.
In 25w04a shields now have a component which determines how long it takes for the shield to start blocking, and the default is 0, however, that doesn't seem to actually work and shields still have the delay.
This should probably now be marked as intended as despite the tag existing, a spawned item with a set delay of 0 works.
/give @p diamond_sword[minecraft:blocks_attacks={block_delay_seconds:0}]
This item can block damage and reflect noticeably faster than a vanilla shield, which means the shield should have a specified value of 0.25 in the block delay seconds property. Assuming this item works properly and can be verified, that would mean that the way shields work is considered intentional.
Shields are intended to have a block delay of 0.25 seconds, as can be seen now in the default components of the item:
"minecraft:shield": {
"components": {
"minecraft:attribute_modifiers": [],
"minecraft:banner_patterns": [],
"minecraft:blocks_attacks": {
"block_delay_seconds": 0.25,
"block_sound": "minecraft:item.shield.block",
"bypassed_by": "#minecraft:bypasses_shield",
"disabled_sound": "minecraft:item.shield.break",
"item_damage": {
"base": 1.0,
"factor": 1.0,
"threshold": 3.0
}
},
...
This seems like it should be marked as intended.
I want to confirm that this issue has also happened to me in version 1.21.4
Among the many fights I've had against skeletons, pillagers and piglins or even blazes, I've noticed for a while now that even though my reaction time is sufficient to stop a projectile with my shield, I still get hit because there seems to be a delay in the shield's functioning
As the user called Migrated mentioned above, the only case where the shield works is when you use it preemptively and wait for the skeleton to fire. But, again, running up to a skeleton and waiting until the last moment to block isn't possible, as the instant effective block doesn't work
Let's take the following example: I'm in the forest cutting down a tree, when suddenly I hear a skeleton behind me about to shoot me. When I quickly turn around and use my shield, I can clearly see that the arrow hasn't hit me yet, but upon impact I take damage as if I hadn't used the shield. This may be a little annoying and inconvenient
To conclude, I just want to say that in my opinion, protecting yourself with the shield is very good and it does its job, but I feel that the reaction to projectile attacks still needs to be improved
This is most likely intentional now as the new minecraft:blocks_attacks component has a block_delay_seconds field.
Also, MC-279799 exists.
[^[1] invisible delay before shield actually starts blocking (1) (1).mp4]
[media][media][media][media][^[2] invisible delay before shield actually starts blocking.mp4]