From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: dodison Date: Mon, 26 Jul 2021 17:35:20 +0200 Subject: [PATCH] Add critical damage API diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java index ca6f0fa51f7f0133dabb912508b6f4d2eeea0927..341f99550d077c60306e8a246a254b768ebbeb48 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java @@ -5,6 +5,7 @@ import java.util.Map; import org.bukkit.damage.DamageSource; import org.bukkit.damage.DamageType; import org.bukkit.entity.Entity; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; /** @@ -12,15 +13,18 @@ import org.jetbrains.annotations.NotNull; */ public class EntityDamageByEntityEvent extends EntityDamageEvent { private final Entity damager; + private final boolean critical; // Paper @Deprecated(since = "1.20.4", forRemoval = true) public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, final double damage) { this(damager, damagee, cause, DamageSource.builder(DamageType.GENERIC).withCausingEntity(damager).withDirectEntity(damager).build(), damage); } + @Deprecated public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, final double damage) { super(damagee, cause, damageSource, damage); this.damager = damager; + this.critical = false; // Paper - add critical damage API } @Deprecated(since = "1.20.4", forRemoval = true) @@ -28,11 +32,34 @@ public class EntityDamageByEntityEvent extends EntityDamageEvent { this(damager, damagee, cause, DamageSource.builder(DamageType.GENERIC).withCausingEntity(damager).withDirectEntity(damager).build(), modifiers, modifierFunctions); } + @Deprecated public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions) { super(damagee, cause, damageSource, modifiers, modifierFunctions); this.damager = damager; + // Paper start + this.critical = false; } + @ApiStatus.Internal + public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions, boolean critical) { + super(damagee, cause, damageSource, modifiers, modifierFunctions); + this.damager = damager; + this.critical = critical; + } + + /** + * Shows this damage instance was critical. + * The damage instance can be critical if the attacking player met the respective conditions. + * Furthermore, arrows may also cause a critical damage event if the arrow {@link org.bukkit.entity.AbstractArrow#isCritical()}. + * + * @return if the hit was critical. + * @see https://minecraft.wiki/wiki/Damage#Critical_hit + */ + public boolean isCritical() { + return this.critical; + } + // Paper end + /** * Returns the entity that damaged the defender. *