--- ../work/decompile-8eb82bde//net/minecraft/server/BlockDiodeAbstract.java 2014-11-28 17:43:42.889707440 +0000 +++ src/main/java/net/minecraft/server/BlockDiodeAbstract.java 2014-11-28 17:38:22.000000000 +0000 @@ -2,6 +2,8 @@ import java.util.Random; +import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit + public abstract class BlockDiodeAbstract extends BlockDirectional { protected final boolean M; @@ -31,8 +33,18 @@ boolean flag = this.e(world, blockposition, iblockdata); if (this.M && !flag) { + // CraftBukkit start + if (CraftEventFactory.callRedstoneChange(world, blockposition.getX(), blockposition.getY(), blockposition.getZ(), 15, 0).getNewCurrent() != 0) { + return; + } + // CraftBukkit end world.setTypeAndData(blockposition, this.k(iblockdata), 2); } else if (!this.M) { + // CraftBukkit start + if (CraftEventFactory.callRedstoneChange(world, blockposition.getX(), blockposition.getY(), blockposition.getZ(), 0, 15).getNewCurrent() != 15) { + return; + } + // CraftBukkit end world.setTypeAndData(blockposition, this.e(iblockdata), 2); if (!flag) { world.a(blockposition, this.e(iblockdata).getBlock(), this.m(iblockdata), -1);