From 00efc8c464d5af5b2d3d36be839ba0533af34484 Mon Sep 17 00:00:00 2001 From: feildmaster Date: Sun, 1 Jul 2012 05:04:06 -0500 Subject: 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. --- src/main/java/net/minecraft/server/EntitySnowman.java | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/main/java/net/minecraft/server/EntitySnowman.java') diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java index 457cb03b..518f2532 100644 --- a/src/main/java/net/minecraft/server/EntitySnowman.java +++ b/src/main/java/net/minecraft/server/EntitySnowman.java @@ -33,24 +33,30 @@ public class EntitySnowman extends EntityGolem { public void e() { super.e(); if (this.aT()) { + // CraftBukkit start EntityDamageEvent event = new EntityDamageEvent(this.getBukkitEntity(), EntityDamageEvent.DamageCause.DROWNING, 1); this.world.getServer().getPluginManager().callEvent(event); if (!event.isCancelled()) { + event.getEntity().setLastDamageCause(event); this.damageEntity(DamageSource.DROWN, event.getDamage()); } + // CraftBukkit end } int i = MathHelper.floor(this.locX); int j = MathHelper.floor(this.locZ); if (this.world.getBiome(i, j).i() > 1.0F) { + // CraftBukkit start EntityDamageEvent event = new EntityDamageEvent(this.getBukkitEntity(), EntityDamageEvent.DamageCause.MELTING, 1); this.world.getServer().getPluginManager().callEvent(event); if (!event.isCancelled()) { + event.getEntity().setLastDamageCause(event); this.damageEntity(DamageSource.BURN, event.getDamage()); } + // CraftBukkit end } for (i = 0; i < 4; ++i) { -- cgit v1.2.3