diff --git a/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java b/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java index 38daa5f6c1..9d5496c162 100644 --- a/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java +++ b/src/main/java/net/minecraft/server/EntityDamageSourceIndirect.java @@ -17,6 +17,10 @@ public class EntityDamageSourceIndirect extends EntityDamageSource { // CraftBukkit start String source = (this.n == null) ? "Herobrine" : this.n.ad(); return LocaleI18n.a("death." + this.m, new Object[] { entityhuman.name, source}); + } + + public Entity getProximateDamageSource() { + return super.getEntity(); // CraftBukkit end } -} \ No newline at end of file +} diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java index 29297677bf..24221ada66 100644 --- a/src/main/java/net/minecraft/server/EntityHuman.java +++ b/src/main/java/net/minecraft/server/EntityHuman.java @@ -587,7 +587,9 @@ public abstract class EntityHuman extends EntityLiving { // also damage the player in this way. For example, EntitySlime. // We handle projectiles in their individual classes! - if (!(entity.getBukkitEntity() instanceof Projectile)) { + boolean isProjectile = damagesource instanceof EntityDamageSourceIndirect && ((EntityDamageSourceIndirect) damagesource).getProximateDamageSource().getBukkitEntity() instanceof Projectile; + + if (!isProjectile) { org.bukkit.entity.Entity damager = ((Entity) entity1).getBukkitEntity(); org.bukkit.entity.Entity damagee = this.getBukkitEntity();