Whenever you move your camera, the actual functional crosshair location lags behind where it shows visually by 1/20th of a second. This applies to sword swinging, block breaking, and anything else that you click on to interact with. This is mostly what causes the perceived hit registration issues in PvP since 1.8.
Video demonstration: https://youtu.be/HTw87opulQg
Code analysis by @unknown in this comment.
Related issues
Comments


Please link to this comment in the description
The following is based on a decompiled version of Minecraft 1.10 using MCP 9.30.
Calling the method net.minecraft.entity.Entity.rayTrace(double, float)
not with the partial ticks but with 1f
instead, makes the game use the current head position and look. This might solve this problem.
Easily reproducible by spinning around, looking at the ground, pausing the game and observing cursor position vs block outline position.