From 87d5b5e3742ea6c0884c1d04358e6ec32fbb5846 Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Sun, 1 Jul 2012 05:04:06 -0500 Subject: [PATCH] Apply setLastDamageCause after processing events and the event has not been canceled. Fixes BUKKIT-1881 This allows previous causes to be available during the event, as well as making the damage cause a valid one. If EntityDamageEvent is canceled, then it's not the last DamageCause. Also prevents setting DamageCause involuntarily through construction. By: feildmaster --- .../org/bukkit/craftbukkit/event/CraftEventFactory.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 6134d1185..370980ed4 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -360,7 +360,12 @@ public class CraftEventFactory { } else { event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, damage); } - Bukkit.getPluginManager().callEvent(event); + + callEvent(event); + + if (!event.isCancelled()) { + event.getEntity().setLastDamageCause(event); + } return event; }