@EventHandler(priority = EventPriority.HIGH) public void onRightClickDoor(PlayerInteractEvent event) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { Block block = event.getClickedBlock(); if (block.getType() == Material.IRON_DOOR_BLOCK) { if (block.getRelative(BlockFace.DOWN).getType() == Material.IRON_DOOR_BLOCK) block = block.getRelative(BlockFace.DOWN); if (EnderPortals.getFileHandler().isPortalDoor(block)) { BlockState state = block.getState(); Openable door = (Openable) state.getData(); door.setOpen(!door.isOpen()); state.update(); } } } }
private boolean setBlockOpen(Block block, boolean open) { MaterialData materialData = BlockData.get(block); if (!(materialData instanceof Openable)) { return false; } Openable openable = (Openable) materialData; if (openable.isOpen() == open) { return false; } // Change the state openable.setOpen(open); BlockData.set(block, materialData); return true; }
@Override public void setOpen(boolean open, SoundCondition playSound) { MaterialData materialData = BlockData.get(protecionBlock); if (!(materialData instanceof Openable)) { return; } Openable openable = (Openable) materialData; if (openable.isOpen() == open) { return; } openable.setOpen(open); BlockData.set(protecionBlock, materialData); if (playSound == SoundCondition.ALWAYS) { Sound sound = OpenBlockSound.get(materialData.getItemType(), open); protecionBlock.getWorld().playSound(protecionBlock.getLocation(), sound, 1f, 0.7f); } }
@Override public void run(String playerID) throws QuestRuntimeException { Block block = loc.getLocation(playerID).getBlock(); BlockState state = block.getState(); MaterialData data = state.getData(); if (data instanceof Openable) { Openable openable = (Openable) data; switch (type) { case ON: openable.setOpen(true); break; case OFF: openable.setOpen(false); break; case TOGGLE: openable.setOpen(!openable.isOpen()); break; } state.setData((MaterialData) openable); state.update(); } }
public void onPlayerInteract(PlayerInteractEvent e) { if (e.isCancelled()) return; KingdomFactionsPlayer p = PlayerModule.getInstance().getPlayer(e.getPlayer()); if(p.getSettingsProfile().hasAdminMode()) return; if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { if (e.getClickedBlock() == null) return; Block clickedBlock = e.getClickedBlock(); if (clickedBlock.getType().equals(Material.CHEST) || clickedBlock.getType().equals(Material.TRAPPED_CHEST) || clickedBlock.getType().equals(Material.BEACON)) { e.setCancelled(!ProtectionModule.getInstance().tryInfluence(p, 500)); return; } if (clickedBlock.getType().equals(Material.BURNING_FURNACE) || clickedBlock.getType().equals(Material.FURNACE) || clickedBlock.getType().equals(Material.DISPENSER) || clickedBlock.getType().equals(Material.HOPPER) || clickedBlock.getType().equals(Material.DROPPER)) { e.setCancelled(!ProtectionModule.getInstance().tryInfluence(p, 150)); return; } MaterialData data = clickedBlock.getState() != null ? clickedBlock.getState().getData() : null; if (data instanceof Openable) { if (clickedBlock.getType() == Material.IRON_TRAPDOOR || clickedBlock.getType() == Material.IRON_DOOR) return; e.setCancelled(!ProtectionModule.getInstance().tryInfluence(p, 150)); return; } } }
private static void toggleDoor(Block b){ if (b.getRelative(BlockFace.DOWN).getType().equals(b.getType())){ b = b.getRelative(BlockFace.DOWN); } BlockState state = b.getState(); Openable op = (Openable) state.getData(); op.setOpen(!op.isOpen()); state.setData((MaterialData)op); state.update(); }
@Override public boolean canBeOpened() { for (Block block : blocks) { if (Openable.class.isAssignableFrom(block.getType().getData())) { return true; } // Only try first block, as all blocks should be of the same type return false; } return false; }
@Override public boolean isOpen() { for (Block block : blocks) { MaterialData materialData = BlockData.get(block); if (materialData instanceof Openable) { return ((Openable) materialData).isOpen(); } } return false; }
@Override public boolean isOpen() { MaterialData materialData = BlockData.get(protecionBlock); if (materialData instanceof Openable) { return ((Openable) materialData).isOpen(); } return false; }
public static boolean isOpenable(Block b){ return b.getState().getData() instanceof Openable; }
@Override public boolean canBeOpened() { return Openable.class.isAssignableFrom(protecionBlock.getType().getData()); }