--- ../src-base/minecraft/net/minecraft/block/BlockRedstoneDiode.java +++ ../src-work/minecraft/net/minecraft/block/BlockRedstoneDiode.java @@ -13,16 +13,19 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit + public abstract class BlockRedstoneDiode extends BlockDirectional { protected final boolean isRepeaterPowered; private static final String __OBFID = "CL_00000226"; - +private boolean limit; protected BlockRedstoneDiode(boolean p_i45400_1_) { super(Material.circuits); this.isRepeaterPowered = p_i45400_1_; this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); +if(this.getClass().getSimpleName().toLowerCase().contains("redstonerepeater"))limit = true; } public boolean renderAsNormalBlock() @@ -39,27 +42,45 @@ { return !World.doesBlockHaveSolidTopSurface(p_149718_1_, p_149718_2_, p_149718_3_ - 1, p_149718_4_) ? false : super.canBlockStay(p_149718_1_, p_149718_2_, p_149718_3_, p_149718_4_); } - +boolean state = false; +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_) { int l = p_149674_1_.getBlockMetadata(p_149674_2_, p_149674_3_, p_149674_4_); - if (!this.func_149910_g(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, l)) + if (!this.func_149910_g((IBlockAccess) p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, l)) // CraftBukkit - Cast world to IBlockAccess to call the right method. { boolean flag = this.isGettingInput(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, l); if (this.isRepeaterPowered && !flag) { + // CraftBukkit start + if (CraftEventFactory.callRedstoneChange(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, 15, 0).getNewCurrent() != 0) + { + return; + } +if(limit && System.currentTimeMillis() - last <= 150)return; + + // CraftBukkit end p_149674_1_.setBlock(p_149674_2_, p_149674_3_, p_149674_4_, this.getBlockUnpowered(), l, 2); +last = System.currentTimeMillis(); } else if (!this.isRepeaterPowered) { + // CraftBukkit start + if (CraftEventFactory.callRedstoneChange(p_149674_1_, p_149674_2_, p_149674_3_, p_149674_4_, 0, 15).getNewCurrent() != 15) + { + return; + } +if(limit && System.currentTimeMillis() - last <= 150)return; + // CraftBukkit end p_149674_1_.setBlock(p_149674_2_, p_149674_3_, p_149674_4_, this.getBlockPowered(), l, 2); if (!flag) { p_149674_1_.scheduleBlockUpdateWithPriority(p_149674_2_, p_149674_3_, p_149674_4_, this.getBlockPowered(), this.func_149899_k(l), -1); } +last = System.currentTimeMillis(); } } } @@ -315,4 +336,4 @@ { return this.func_149907_e(p_149667_1_); } -} +}