--- a/net/minecraft/world/level/redstone/ExperimentalRedstoneWireEvaluator.java +++ b/net/minecraft/world/level/redstone/ExperimentalRedstoneWireEvaluator.java @@ -15,6 +15,11 @@ import net.minecraft.world.level.block.state.properties.BlockPropertyRedstoneSide; import net.minecraft.world.level.block.state.properties.BlockStateEnum; +// CraftBukkit start +import org.bukkit.craftbukkit.block.CraftBlock; +import org.bukkit.event.block.BlockRedstoneEvent; +// CraftBukkit end + public class ExperimentalRedstoneWireEvaluator extends RedstoneWireEvaluator { private final Deque wiresToTurnOff = new ArrayDeque(); @@ -39,7 +44,16 @@ int j = unpackPower(i); IBlockData iblockdata1 = world.getBlockState(blockposition1); - if (iblockdata1.is(this.wireBlock) && !((Integer) iblockdata1.getValue(BlockRedstoneWire.POWER)).equals(j)) { + // CraftBukkit start + int oldPower = iblockdata.getValue(BlockRedstoneWire.POWER); + if (oldPower != j) { + BlockRedstoneEvent event = new BlockRedstoneEvent(CraftBlock.at(world, blockposition1), oldPower, j); + world.getCraftServer().getPluginManager().callEvent(event); + + j = event.getNewCurrent(); + } + if (iblockdata1.is(this.wireBlock) && oldPower != j) { + // CraftBukkit end int k = 2; if (!flag || !flag1) { @@ -140,6 +154,7 @@ } int k1; + Orientation orientation2; // CraftBukkit - decompile error for (; !this.wiresToTurnOn.isEmpty(); this.propagateChangeToNeighbors(world, blockposition1, k1, orientation2, false)) { blockposition1 = (BlockPosition) this.wiresToTurnOn.removeFirst();