--- a/net/minecraft/world/entity/EntityLightning.java +++ b/net/minecraft/world/entity/EntityLightning.java @@ -29,6 +29,11 @@ import net.minecraft.world.phys.AxisAlignedBB; import net.minecraft.world.phys.Vec3D; +// CraftBukkit start +import org.bukkit.craftbukkit.event.CraftEventFactory; +import org.bukkit.event.entity.EntityRemoveEvent; +// CraftBukkit end + public class EntityLightning extends Entity { private static final int START_LIFE = 2; @@ -112,7 +117,7 @@ } } - this.discard(); + this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause } else if (this.life < -this.random.nextInt(10)) { --this.flashes; this.life = 1; @@ -121,7 +126,7 @@ } } - if (this.life >= 0) { + if (this.life >= 0 && !this.visualOnly) { // CraftBukkit - add !this.visualOnly if (!(this.level() instanceof WorldServer)) { this.level().setSkyFlashTime(2); } else if (!this.visualOnly) { @@ -158,8 +163,12 @@ IBlockData iblockdata = BlockFireAbstract.getState(this.level(), blockposition); if (this.level().getBlockState(blockposition).isAir() && iblockdata.canSurvive(this.level(), blockposition)) { - this.level().setBlockAndUpdate(blockposition, iblockdata); - ++this.blocksSetOnFire; + // CraftBukkit start - add "!visualOnly" + if (!visualOnly && !CraftEventFactory.callBlockIgniteEvent(this.level(), blockposition, this).isCancelled()) { + this.level().setBlockAndUpdate(blockposition, iblockdata); + ++this.blocksSetOnFire; + } + // CraftBukkit end } for (int j = 0; j < i; ++j) { @@ -167,8 +176,12 @@ iblockdata = BlockFireAbstract.getState(this.level(), blockposition1); if (this.level().getBlockState(blockposition1).isAir() && iblockdata.canSurvive(this.level(), blockposition1)) { - this.level().setBlockAndUpdate(blockposition1, iblockdata); - ++this.blocksSetOnFire; + // CraftBukkit start - add "!visualOnly" + if (!visualOnly && !CraftEventFactory.callBlockIgniteEvent(this.level(), blockposition1, this).isCancelled()) { + this.level().setBlockAndUpdate(blockposition1, iblockdata); + ++this.blocksSetOnFire; + } + // CraftBukkit end } }