Is critical hit?

Hello guys,

I’d like to know when an entity is damaged wether or not the hit is a critical hit. For that I’m listening to the DamageEntityEvent.

First I thought of using DamageModifierTypes but I didn’t see any critical related modifier type. Then I saw there’s this CriticalHitData interface but I don’t understand how it works (what would be its associated data holder ?).

Any ideas ?

TL;DR How to know if a DamageEntityEvent is a critical hit or not ?

You’d want to query from the DamageSource if it is an EntityDamageSource and if the entity is an Arrow entity, you can query for the arrow.get(Keys.CRITICAL_HIT) since it will return a boolean.

I see… thanks !

So how could I get a critical hit a player did with a sword ? (It’s possible with a sword isn’t it ?)

If the damager is above the damagee and in the air, the hit is critical.

Not necessarily, according to the minecraft wiki:

In melee, a critical hit occurs when a player attacks a mob while falling

(Emphasis not mine)

See here

That’s a bit tricky but if it works, why not…

But aren’t there any DamageModifier for critical hits ?

There’s a new way to find out if a player critically attacked an entity with the new AttackEntityEvent, as it will include a DamageModifier with a DamageModifierTypes.CRITICAL_HIT if the player in fact critically hit the target entity.

Note that the flow of events is as follows: InteractEntityEvent.Primary -> AttackEntityEvent -> DamageEntityEvent. The reasoning for the separation is that attacking only evaluates the outgoing damage to the target entity, whereas damaging is evaluating the incoming damage.

1 Like

Interesting ! Thank you for the info !