--- ../src-base/minecraft/net/minecraft/block/BlockRedstoneTorch.java +++ ../src-work/minecraft/net/minecraft/block/BlockRedstoneTorch.java @@ -13,6 +13,10 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import org.bukkit.event.block.BlockRedstoneEvent; // CraftBukkit + +import net.minecraftforge.cauldron.configuration.CauldronConfig; + public class BlockRedstoneTorch extends BlockTorch { private boolean field_150113_a; @@ -115,8 +119,12 @@ return l == 5 && p_150110_1_.getIndirectPowerOutput(p_150110_2_, p_150110_3_ - 1, p_150110_4_, 0) ? true : (l == 3 && p_150110_1_.getIndirectPowerOutput(p_150110_2_, p_150110_3_, p_150110_4_ - 1, 2) ? true : (l == 4 && p_150110_1_.getIndirectPowerOutput(p_150110_2_, p_150110_3_, p_150110_4_ + 1, 3) ? true : (l == 1 && p_150110_1_.getIndirectPowerOutput(p_150110_2_ - 1, p_150110_3_, p_150110_4_, 4) ? true : l == 2 && p_150110_1_.getIndirectPowerOutput(p_150110_2_ + 1, p_150110_3_, p_150110_4_, 5)))); } + private long last = 0L; + public void updateTick(World p_149674_1_, int p_149674_2_, int p_149674_3_, int p_149674_4_, Random p_149674_5_) { + if (System.currentTimeMillis() - last <= CauldronConfig.instance.redstoneTorchL.getValue()) { return; } + last = System.currentTimeMillis(); boolean flag = this.func_150110_m(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_); List list = (List)field_150112_b.get(p_149674_1_); @@ -125,10 +133,30 @@ list.remove(0); } + // CraftBukkit start + org.bukkit.plugin.PluginManager manager = p_149674_1_.getServer().getPluginManager(); + org.bukkit.block.Block block = p_149674_1_.getWorld().getBlockAt(p_149674_2_, p_149674_3_, p_149674_4_); + int oldCurrent = this.field_150113_a ? 15 : 0; + BlockRedstoneEvent event = new BlockRedstoneEvent(block, oldCurrent, oldCurrent); + // CraftBukkit end + if (this.field_150113_a) { if (flag) { + // CraftBukkit start + if (oldCurrent != 0) + { + event.setNewCurrent(0); + manager.callEvent(event); + + if (event.getNewCurrent() != 0) + { + return; + } + } + + // CraftBukkit end p_149674_1_.setBlock(p_149674_2_, p_149674_3_, p_149674_4_, Blocks.unlit_redstone_torch, p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_), 3); if (this.func_150111_a(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, true)) @@ -147,6 +175,19 @@ } else if (!flag && !this.func_150111_a(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, false)) { + // CraftBukkit start + if (oldCurrent != 15) + { + event.setNewCurrent(15); + manager.callEvent(event); + + if (event.getNewCurrent() != 15) + { + return; + } + } + + // CraftBukkit end p_149674_1_.setBlock(p_149674_2_, p_149674_3_, p_149674_4_, Blocks.redstone_torch, p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_), 3); } } @@ -241,4 +282,4 @@ this.field_150844_d = p_i45422_4_; } } -} +}