@Override public void onBlockRedstoneChange(BlockRedstoneEvent event) { if (BlockUtil.isSign(event.getBlock())) { SignActionEvent info = new SignActionEvent(event.getBlock()); SignAction.executeAll(info, SignActionType.REDSTONE_CHANGE); boolean powered = poweredBlocks.contains(event.getBlock()); if (!powered && event.getNewCurrent() > 0) { poweredBlocks.add(event.getBlock()); SignAction.executeAll(info, SignActionType.REDSTONE_ON); } else if (powered && event.getNewCurrent() == 0) { poweredBlocks.remove(event.getBlock()); SignAction.executeAll(info, SignActionType.REDSTONE_OFF); } } }
public void updateRedstonePower(final Block signblock) { final SignActionEvent info = new SignActionEvent(signblock); SignAction.executeAll(info, SignActionType.REDSTONE_CHANGE); // Do not proceed if the sign disallows on/off changes if (info.isPowerAlwaysOn() || ignoredSigns.remove(signblock)) { return; } // Update power level setRedstonePower(info, isPowered(info)); }
public void setRedstonePower(SignActionEvent info, boolean newPowerState) { // Change in redstone power? if (!LogicUtil.addOrRemove(poweredBlocks, info.getBlock(), newPowerState)) { return; } // Execute event SignAction.executeAll( info, info.isPowerInverted() != newPowerState ? SignActionType.REDSTONE_ON : SignActionType.REDSTONE_OFF); }