@EventHandler(priority = EventPriority.NORMAL) public void onPlayerInteract(PlayerInteractEvent event) { if (event.isCancelled()) return; if (event.getAction() == org.bukkit.event.block.Action.LEFT_CLICK_BLOCK || event.getAction() == org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK) { PlayerEvent playerEvent; if (SignUtil.isSign(event.getClickedBlock())) { playerEvent = new PlayerEvent( SignUtil.getSign(event.getClickedBlock()), event.getAction() == Action.LEFT_CLICK_BLOCK ? PlayerEvent.Action.LEFT_CLICK : PlayerEvent.Action.RIGHT_CLICK, event.getPlayer(), event); } else { playerEvent = new PlayerEvent( event.getClickedBlock(), event.getAction() == Action.LEFT_CLICK_BLOCK ? PlayerEvent.Action.LEFT_CLICK : PlayerEvent.Action.RIGHT_CLICK, event.getPlayer(), event); } mechanicsHandler.callPlayerEvent(playerEvent); } }
@EventHandler(priority = EventPriority.NORMAL) public void onBlockBreak(BlockBreakEvent event) { if (event.isCancelled()) return; PlayerEvent playerEvent; if (SignUtil.isSign(event.getBlock())) { playerEvent = new PlayerEvent( SignUtil.getSign(event.getBlock()), PlayerEvent.Action.BREAK, event.getPlayer(), event); } else { playerEvent = new PlayerEvent(event.getBlock(), PlayerEvent.Action.BREAK, event.getPlayer(), event); } mechanicsHandler.callPlayerEvent(playerEvent); event.setCancelled(playerEvent.isCancelled()); }
@Override public void onPlayerRightClickSign(PlayerEvent event) { String activator = event.getMechanicIdentifier(); BlockFace direction = activator.equals("[Lift Up]") ? BlockFace.UP : (activator.equals("[Lift Down]") ? BlockFace.DOWN : null); int maxSearchHeight = config.getMaxSearchHeight(); if (direction == BlockFace.DOWN || direction == BlockFace.UP) { Block block; for (int dy = 1; dy < maxSearchHeight; dy++) { block = event.getBlock().getRelative(0, (direction == BlockFace.UP ? dy : -dy), 0); if (SignUtil.isSign(block)) { String id = SignUtil.getMechanicsIdentifier(SignUtil.getSign(block)); if (id.equals("[Lift]") || id.equals("[Lift Up]") || id.equals("[Lift Down]")) { movePlayer(block, event.getPlayer()); } } } } }
@EventHandler(priority = EventPriority.NORMAL) public void onBlockRedstoneChange(BlockRedstoneEvent event) { if (event.getNewCurrent() == event.getOldCurrent() || event.getNewCurrent() > 0 && event.getOldCurrent() > 0) return; RedstoneEvent redstoneEvent = new RedstoneEvent( (event.getNewCurrent() > 0) ? RedstoneEvent.State.ON : RedstoneEvent.State.OFF, event); for (BlockFace blockFace : blockFaces) { Block block = event.getBlock().getRelative(blockFace); redstoneEvent.setData( SignUtil.isSign(event.getBlock().getRelative(blockFace)) ? Event.Type.SIGN : Event.Type.BLOCK, event.getBlock(), blockFace.getOppositeFace()); mechanicsHandler.callRedstoneEvent(redstoneEvent); } }