mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
Add critical damage API
This commit is contained in:
parent
5c9be07722
commit
4bfca492a5
1 changed files with 27 additions and 0 deletions
|
@ -5,6 +5,7 @@ import java.util.Map;
|
||||||
import org.bukkit.damage.DamageSource;
|
import org.bukkit.damage.DamageSource;
|
||||||
import org.bukkit.damage.DamageType;
|
import org.bukkit.damage.DamageType;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.jetbrains.annotations.ApiStatus;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,15 +13,18 @@ import org.jetbrains.annotations.NotNull;
|
||||||
*/
|
*/
|
||||||
public class EntityDamageByEntityEvent extends EntityDamageEvent {
|
public class EntityDamageByEntityEvent extends EntityDamageEvent {
|
||||||
private final Entity damager;
|
private final Entity damager;
|
||||||
|
private final boolean critical; // Paper
|
||||||
|
|
||||||
@Deprecated(since = "1.20.4", forRemoval = true)
|
@Deprecated(since = "1.20.4", forRemoval = true)
|
||||||
public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, final double damage) {
|
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);
|
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) {
|
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);
|
super(damagee, cause, damageSource, damage);
|
||||||
this.damager = damager;
|
this.damager = damager;
|
||||||
|
this.critical = false; // Paper - add critical damage API
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(since = "1.20.4", forRemoval = true)
|
@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);
|
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) {
|
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);
|
super(damagee, cause, damageSource, modifiers, modifierFunctions);
|
||||||
this.damager = damager;
|
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.
|
* Returns the entity that damaged the defender.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue