SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent

By: Doc <nachito94@msn.com>
This commit is contained in:
Bukkit/Spigot 2024-05-04 08:15:58 +10:00
parent 9bbcd799fa
commit a3c30e3ee2
2 changed files with 23 additions and 9 deletions

View file

@ -1,6 +1,7 @@
package org.bukkit.event.entity; package org.bukkit.event.entity;
import java.util.List; import java.util.List;
import org.bukkit.damage.DamageSource;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.event.HandlerList; import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -11,15 +12,17 @@ import org.jetbrains.annotations.NotNull;
*/ */
public class EntityDeathEvent extends EntityEvent { public class EntityDeathEvent extends EntityEvent {
private static final HandlerList handlers = new HandlerList(); private static final HandlerList handlers = new HandlerList();
private final DamageSource damageSource;
private final List<ItemStack> drops; private final List<ItemStack> drops;
private int dropExp = 0; private int dropExp = 0;
public EntityDeathEvent(@NotNull final LivingEntity entity, @NotNull final List<ItemStack> drops) { public EntityDeathEvent(@NotNull final LivingEntity entity, @NotNull DamageSource damageSource, @NotNull final List<ItemStack> drops) {
this(entity, drops, 0); this(entity, damageSource, drops, 0);
} }
public EntityDeathEvent(@NotNull final LivingEntity what, @NotNull final List<ItemStack> drops, final int droppedExp) { public EntityDeathEvent(@NotNull final LivingEntity what, @NotNull DamageSource damageSource, @NotNull final List<ItemStack> drops, final int droppedExp) {
super(what); super(what);
this.damageSource = damageSource;
this.drops = drops; this.drops = drops;
this.dropExp = droppedExp; this.dropExp = droppedExp;
} }
@ -30,6 +33,16 @@ public class EntityDeathEvent extends EntityEvent {
return (LivingEntity) entity; return (LivingEntity) entity;
} }
/**
* Gets the source of damage which caused the death.
*
* @return a DamageSource detailing the source of the damage for the death.
*/
@NotNull
public DamageSource getDamageSource() {
return damageSource;
}
/** /**
* Gets how much EXP should be dropped from this death. * Gets how much EXP should be dropped from this death.
* <p> * <p>

View file

@ -1,6 +1,7 @@
package org.bukkit.event.entity; package org.bukkit.event.entity;
import java.util.List; import java.util.List;
import org.bukkit.damage.DamageSource;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -17,16 +18,16 @@ public class PlayerDeathEvent extends EntityDeathEvent {
private boolean keepLevel = false; private boolean keepLevel = false;
private boolean keepInventory = false; private boolean keepInventory = false;
public PlayerDeathEvent(@NotNull final Player player, @NotNull final List<ItemStack> drops, final int droppedExp, @Nullable final String deathMessage) { public PlayerDeathEvent(@NotNull final Player player, @NotNull DamageSource damageSource, @NotNull final List<ItemStack> drops, final int droppedExp, @Nullable final String deathMessage) {
this(player, drops, droppedExp, 0, deathMessage); this(player, damageSource, drops, droppedExp, 0, deathMessage);
} }
public PlayerDeathEvent(@NotNull final Player player, @NotNull final List<ItemStack> drops, final int droppedExp, final int newExp, @Nullable final String deathMessage) { public PlayerDeathEvent(@NotNull final Player player, @NotNull DamageSource damageSource, @NotNull final List<ItemStack> drops, final int droppedExp, final int newExp, @Nullable final String deathMessage) {
this(player, drops, droppedExp, newExp, 0, 0, deathMessage); this(player, damageSource, drops, droppedExp, newExp, 0, 0, deathMessage);
} }
public PlayerDeathEvent(@NotNull final Player player, @NotNull final List<ItemStack> drops, final int droppedExp, final int newExp, final int newTotalExp, final int newLevel, @Nullable final String deathMessage) { public PlayerDeathEvent(@NotNull final Player player, @NotNull DamageSource damageSource, @NotNull final List<ItemStack> drops, final int droppedExp, final int newExp, final int newTotalExp, final int newLevel, @Nullable final String deathMessage) {
super(player, drops, droppedExp); super(player, damageSource, drops, droppedExp);
this.newExp = newExp; this.newExp = newExp;
this.newTotalExp = newTotalExp; this.newTotalExp = newTotalExp;
this.newLevel = newLevel; this.newLevel = newLevel;