This is going to seem unbelievably basic, but I've been having problems with it, and I can't even find a thread for it. It could be that I'm using the event wrong or something, I don't really know. It seems that EntityDamageEvent and EntityDamageByEntityEvent event both fire regardless of whether the player actually takes damage - that is, EntityDamageByEntityEvent fires whenever you click a player, even if they're in that red cooldown state where they can temporarily not be damaged. Is there any way I could check when they're actually taking damage, or at the very least check if they're in that cooldown state? I've tried using event.getDamage() and checking if it's 0, but it seems that doesn't work either - it still thinks the damage is non-0 until it actually tries applying the damage to the player (i.e. after the event fires). What should I be using, ProtocolLib and packets to check when the client is being sent an indication that damage has been dealt (PacketType.Play.Server.NAMED_SOUND_EFFECT or something)? Surely there must be an easier solution, right?