diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 2911d601fd..399c403011 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -401,11 +401,7 @@ public static EntityDamageEvent handleEntityDamageEvent(Entity entity, DamageSou if (source instanceof EntityDamageSourceIndirect) { damager = ((EntityDamageSourceIndirect) source).getProximateDamageSource(); - if (damager.getBukkitEntity() instanceof ThrownPotion) { - cause = DamageCause.MAGIC; - } else if (damager.getBukkitEntity() instanceof Projectile) { - cause = DamageCause.PROJECTILE; - } + cause = checkMagicOrProjectile(damager, cause); } else if ("thorns".equals(source.translationIndex)) { cause = DamageCause.THORNS; } @@ -419,6 +415,28 @@ public static EntityDamageEvent handleEntityDamageEvent(Entity entity, DamageSou return event; } + DamageCause cause = setCause(source); + + if (cause != null) { + return callEntityDamageEvent(null, entity, cause, damage); + } + + // If an event was called earlier, we return null. + // EG: Cactus, Lava, EntityEnderPearl "fall", FallingSand + return null; + } + + private static DamageCause checkMagicOrProjectile(Entity damager, + DamageCause cause) { + if (damager.getBukkitEntity() instanceof ThrownPotion) { + cause = DamageCause.MAGIC; + } else if (damager.getBukkitEntity() instanceof Projectile) { + cause = DamageCause.PROJECTILE; + } + return cause; + } + + private static DamageCause setCause(DamageSource source) { DamageCause cause = null; if (source == DamageSource.FIRE) { cause = DamageCause.FIRE; @@ -439,14 +457,7 @@ public static EntityDamageEvent handleEntityDamageEvent(Entity entity, DamageSou } else if (source == DamageSource.MAGIC) { cause = DamageCause.MAGIC; } - - if (cause != null) { - return callEntityDamageEvent(null, entity, cause, damage); - } - - // If an event was called earlier, we return null. - // EG: Cactus, Lava, EntityEnderPearl "fall", FallingSand - return null; + return cause; } // Non-Living Entities such as EntityEnderCrystal need to call this