1.8.9 - Hit Delay Fix
To avoid playing the hurt animation twice (once local, once when SPacketEntityStatus arrives), add a check:
Analysis and Implementation of the Hit Delay Fix for Minecraft 1.8.9 hit delay fix 1.8.9
No client-side call to performHurtAnimation() when sendUseEntity is invoked. 4. Solution Overview Implementation method: Override or mix into NetHandlerPlayClient and the player attack logic to immediately call performHurtAnimation() on the target entity right after sending CPacketUseEntity . To avoid playing the hurt animation twice (once
In NetHandlerPlayClient#handleEntityStatus : once when SPacketEntityStatus arrives)
@Mixin(EntityPlayerSP.class) public abstract class MixinEntityPlayerSP @Inject(method = "sendUseEntity", at = @At("HEAD")) private void onSendAttackPacket(Entity entity, int action, float x, float y, float z, CallbackInfo ci) if (action == 0) // 0 = ATTACK if (entity != null) // Trigger hit visual client-side entity.performHurtAnimation(); // Play hurt sound locally entity.worldObj.playSound(entity.posX, entity.posY, entity.posZ, entity.getHurtSound(), entity.getSoundCategory(), 1.0f, 1.0f, false);