--- ../src-base/minecraft/net/minecraft/entity/effect/EntityLightningBolt.java
+++ ../src-work/minecraft/net/minecraft/entity/effect/EntityLightningBolt.java
@@ -10,6 +10,8 @@
 import net.minecraft.world.EnumDifficulty;
 import net.minecraft.world.World;
 
+import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
+
 public class EntityLightningBolt extends EntityWeatherEffect
 {
     private int lightningState;
@@ -17,15 +19,25 @@
     private int boltLivingTime;
     private static final String __OBFID = "CL_00001666";
 
+    // CraftBukkit start
+    public boolean isEffect = false;
+
     public EntityLightningBolt(World p_i1703_1_, double p_i1703_2_, double p_i1703_4_, double p_i1703_6_)
     {
+        this(p_i1703_1_, p_i1703_2_, p_i1703_4_, p_i1703_6_, false);
+    }
+
+    public EntityLightningBolt(World p_i1703_1_, double p_i1703_2_, double p_i1703_4_, double p_i1703_6_, boolean isEffect)
+    {
         super(p_i1703_1_);
+        this.isEffect = isEffect;
+        // CraftBukkit end
         this.setLocationAndAngles(p_i1703_2_, p_i1703_4_, p_i1703_6_, 0.0F, 0.0F);
         this.lightningState = 2;
         this.boltVertex = this.rand.nextLong();
         this.boltLivingTime = this.rand.nextInt(3) + 1;
 
-        if (!p_i1703_1_.isRemote && p_i1703_1_.getGameRules().getGameRuleBooleanValue("doFireTick") && (p_i1703_1_.difficultySetting == EnumDifficulty.NORMAL || p_i1703_1_.difficultySetting == EnumDifficulty.HARD) && p_i1703_1_.doChunksNearChunkExist(MathHelper.floor_double(p_i1703_2_), MathHelper.floor_double(p_i1703_4_), MathHelper.floor_double(p_i1703_6_), 10))
+        if (!isEffect && !p_i1703_1_.isRemote && p_i1703_1_.getGameRules().getGameRuleBooleanValue("doFireTick") && (p_i1703_1_.difficultySetting == EnumDifficulty.NORMAL || p_i1703_1_.difficultySetting == EnumDifficulty.HARD) && p_i1703_1_.doChunksNearChunkExist(MathHelper.floor_double(p_i1703_2_), MathHelper.floor_double(p_i1703_4_), MathHelper.floor_double(p_i1703_6_), 10))  // CraftBukkit
         {
             int i = MathHelper.floor_double(p_i1703_2_);
             int j = MathHelper.floor_double(p_i1703_4_);
@@ -33,7 +45,13 @@
 
             if (p_i1703_1_.getBlock(i, j, k).getMaterial() == Material.air && Blocks.fire.canPlaceBlockAt(p_i1703_1_, i, j, k))
             {
-                p_i1703_1_.setBlock(i, j, k, Blocks.fire);
+                // CraftBukkit start
+                if (!CraftEventFactory.callBlockIgniteEvent(p_i1703_1_, i, j, k, this).isCancelled())
+                {
+                    p_i1703_1_.setBlock(i, j, k, Blocks.fire);
+                }
+
+                // CraftBukkit end
             }
 
             for (i = 0; i < 4; ++i)
@@ -44,7 +62,13 @@
 
                 if (p_i1703_1_.getBlock(j, k, l).getMaterial() == Material.air && Blocks.fire.canPlaceBlockAt(p_i1703_1_, j, k, l))
                 {
-                    p_i1703_1_.setBlock(j, k, l, Blocks.fire);
+                    // CraftBukkit start
+                    if (!CraftEventFactory.callBlockIgniteEvent(p_i1703_1_, j, k, l, this).isCancelled())
+                    {
+                        p_i1703_1_.setBlock(j, k, l, Blocks.fire);
+                    }
+
+                    // CraftBukkit end
                 }
             }
         }
@@ -74,7 +98,8 @@
                 this.lightningState = 1;
                 this.boltVertex = this.rand.nextLong();
 
-                if (!this.worldObj.isRemote && this.worldObj.getGameRules().getGameRuleBooleanValue("doFireTick") && this.worldObj.doChunksNearChunkExist(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ), 10))
+                // CraftBukkit
+                if (!isEffect && !this.worldObj.isRemote && this.worldObj.getGameRules().getGameRuleBooleanValue("doFireTick") && this.worldObj.doChunksNearChunkExist(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ), 10))
                 {
                     int i = MathHelper.floor_double(this.posX);
                     int j = MathHelper.floor_double(this.posY);
@@ -82,13 +107,19 @@
 
                     if (this.worldObj.getBlock(i, j, k).getMaterial() == Material.air && Blocks.fire.canPlaceBlockAt(this.worldObj, i, j, k))
                     {
-                        this.worldObj.setBlock(i, j, k, Blocks.fire);
+                        // CraftBukkit start
+                        if (!CraftEventFactory.callBlockIgniteEvent(worldObj, i, j, k, this).isCancelled())
+                        {
+                            this.worldObj.setBlock(i, j, k, Blocks.fire);
+                        }
+
+                        // CraftBukkit end
                     }
                 }
             }
         }
 
-        if (this.lightningState >= 0)
+        if (this.lightningState >= 0 && !this.isEffect)   // CraftBukkit - add !this.isEffect
         {
             if (this.worldObj.isRemote)
             {
