You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
4.9 KiB
100 lines
4.9 KiB
--- ../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) |
|
{
|
|
|