--- a/net/minecraft/server/EntityPig.java +++ b/net/minecraft/server/EntityPig.java @@ -4,6 +4,8 @@ import java.util.Set; import javax.annotation.Nullable; +import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit + public class EntityPig extends EntityAnimal { private static final DataWatcherObject<Boolean> bx = DataWatcher.a(EntityPig.class, DataWatcherRegistry.h); @@ -124,13 +126,14 @@ } public void die(DamageSource damagesource) { - super.die(damagesource); + // super.die(damagesource); // CraftBukkit - Moved to end if (!this.world.isClientSide) { if (this.hasSaddle()) { this.a(Items.SADDLE, 1); } } + super.die(damagesource); // CraftBukkit - Moved from above } @Nullable @@ -155,6 +158,12 @@ if (!this.world.isClientSide && !this.dead) { EntityPigZombie entitypigzombie = new EntityPigZombie(this.world); + // CraftBukkit start + if (CraftEventFactory.callPigZapEvent(this, entitylightning, entitypigzombie).isCancelled()) { + return; + } + // CraftBukkit end + entitypigzombie.setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.GOLDEN_SWORD)); entitypigzombie.setPositionRotation(this.locX, this.locY, this.locZ, this.yaw, this.pitch); entitypigzombie.setNoAI(this.isNoAI()); @@ -163,7 +172,8 @@ entitypigzombie.setCustomNameVisible(this.getCustomNameVisible()); } - this.world.addEntity(entitypigzombie); + // CraftBukkit - added a reason for spawning this creature + this.world.addEntity(entitypigzombie, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); this.die(); } }