Add critical damage API

This commit is contained in:
dodison 2021-07-26 17:35:20 +02:00
parent 5c9be07722
commit 4bfca492a5

View file

@ -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<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> 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<DamageModifier, Double> modifiers, @NotNull final Map<DamageModifier, ? extends Function<? super Double, Double>> 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 <a href="https://minecraft.wiki/wiki/Damage#Critical_hit">https://minecraft.wiki/wiki/Damage#Critical_hit</a>
*/
public boolean isCritical() {
return this.critical;
}
// Paper end
/**
* Returns the entity that damaged the defender.
*