From 5c89ccf4289cecac1af5f7ab031a5b684fddbf84 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Wed, 14 Feb 2024 06:38:57 +1100 Subject: [PATCH] Improve compatibility of new DamageSource API By: md_5 --- paper-api/src/main/java/org/bukkit/entity/Entity.java | 2 ++ .../bukkit/event/entity/EntityDamageByBlockEvent.java | 11 +++++++++++ .../event/entity/EntityDamageByEntityEvent.java | 11 +++++++++++ .../org/bukkit/event/entity/EntityDamageEvent.java | 11 +++++++++++ 4 files changed, 35 insertions(+) diff --git a/paper-api/src/main/java/org/bukkit/entity/Entity.java b/paper-api/src/main/java/org/bukkit/entity/Entity.java index 48f1c34cb3..dcd2b5097f 100644 --- a/paper-api/src/main/java/org/bukkit/entity/Entity.java +++ b/paper-api/src/main/java/org/bukkit/entity/Entity.java @@ -395,7 +395,9 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent * Record the last {@link EntityDamageEvent} inflicted on this entity * * @param event a {@link EntityDamageEvent} + * @deprecated method is for internal use only and will be removed */ + @Deprecated(forRemoval = true) public void setLastDamageCause(@Nullable EntityDamageEvent event); /** diff --git a/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java b/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java index 5ba9f7edf3..467a0d6cab 100644 --- a/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java +++ b/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java @@ -4,6 +4,7 @@ import com.google.common.base.Function; import java.util.Map; import org.bukkit.block.Block; import org.bukkit.damage.DamageSource; +import org.bukkit.damage.DamageType; import org.bukkit.entity.Entity; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,11 +15,21 @@ import org.jetbrains.annotations.Nullable; public class EntityDamageByBlockEvent extends EntityDamageEvent { private final Block damager; + @Deprecated(forRemoval = true) + public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, final double damage) { + this(damager, damagee, cause, (damager != null) ? DamageSource.builder(DamageType.GENERIC).withDamageLocation(damager.getLocation()).build() : DamageSource.builder(DamageType.GENERIC).build(), damage); + } + public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, final double damage) { super(damagee, cause, damageSource, damage); this.damager = damager; } + @Deprecated(forRemoval = true) + public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions) { + this(damager, damagee, cause, (damager != null) ? DamageSource.builder(DamageType.GENERIC).withDamageLocation(damager.getLocation()).build() : DamageSource.builder(DamageType.GENERIC).build(), modifiers, modifierFunctions); + } + public EntityDamageByBlockEvent(@Nullable final Block 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; diff --git a/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java b/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java index 0a43b1ffdb..04449ef55c 100644 --- a/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java +++ b/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageByEntityEvent.java @@ -3,6 +3,7 @@ package org.bukkit.event.entity; import com.google.common.base.Function; import java.util.Map; import org.bukkit.damage.DamageSource; +import org.bukkit.damage.DamageType; import org.bukkit.entity.Entity; import org.jetbrains.annotations.NotNull; @@ -12,11 +13,21 @@ import org.jetbrains.annotations.NotNull; public class EntityDamageByEntityEvent extends EntityDamageEvent { private final Entity damager; + @Deprecated(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); + } + 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; } + @Deprecated(forRemoval = true) + public EntityDamageByEntityEvent(@NotNull final Entity damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions) { + this(damager, damagee, cause, DamageSource.builder(DamageType.GENERIC).withCausingEntity(damager).withDirectEntity(damager).build(), modifiers, modifierFunctions); + } + 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; diff --git a/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java b/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java index 3b20000d9a..446b3ffd5c 100644 --- a/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java +++ b/paper-api/src/main/java/org/bukkit/event/entity/EntityDamageEvent.java @@ -10,6 +10,7 @@ import java.util.Objects; import org.bukkit.Material; import org.bukkit.WorldBorder; import org.bukkit.damage.DamageSource; +import org.bukkit.damage.DamageType; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; @@ -30,10 +31,20 @@ public class EntityDamageEvent extends EntityEvent implements Cancellable { private final DamageCause cause; private final DamageSource damageSource; + @Deprecated(forRemoval = true) + public EntityDamageEvent(@NotNull final Entity damagee, @NotNull final DamageCause cause, final double damage) { + this(damagee, cause, DamageSource.builder(DamageType.GENERIC).build(), damage); + } + public EntityDamageEvent(@NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, final double damage) { this(damagee, cause, damageSource, new EnumMap(ImmutableMap.of(DamageModifier.BASE, damage)), new EnumMap>(ImmutableMap.of(DamageModifier.BASE, ZERO))); } + @Deprecated(forRemoval = true) + public EntityDamageEvent(@NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions) { + this(damagee, cause, DamageSource.builder(DamageType.GENERIC).build(), modifiers, modifierFunctions); + } + public EntityDamageEvent(@NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions) { super(damagee); Preconditions.checkArgument(modifiers.containsKey(DamageModifier.BASE), "BASE DamageModifier missing");