@EventHandler(priority = EventPriority.LOWEST) public void onInventoryOpenEvent(InventoryOpenEvent event) { if (event.isCancelled() || event.getInventory() == null || event.getInventory().getHolder() == null) return; final Player player = (Player) event.getPlayer(); final InventoryHolder h = event.getInventory().getHolder(); if (h instanceof Chest || h instanceof DoubleChest || h instanceof Furnace || h instanceof Dispenser) { if (player.getWorld() != plugin.getIslandWorld()) return; if (player.isOp()) return; if (player.hasPermission("islandworld.bypass.island")) return; Location loc = player.getLocation(); if (event.getInventory().getHolder() instanceof Chest) { final Chest chest = (Chest) event.getInventory().getHolder(); loc = chest.getLocation(); } else if (event.getInventory().getHolder() instanceof Furnace) { final Furnace fur = (Furnace) event.getInventory().getHolder(); loc = fur.getLocation(); } else if (event.getInventory().getHolder() instanceof DoubleChest) { final DoubleChest chest = (DoubleChest) event.getInventory().getHolder(); loc = chest.getLocation(); } else if (event.getInventory().getHolder() instanceof Dispenser) { final Dispenser disp = (Dispenser) event.getInventory().getHolder(); loc = disp.getLocation(); } if (!(plugin.canBuildOnLocation(player, loc))) event.setCancelled(true); } plugin.debug( "Event :" + event.getEventName() + ", class: " + h.getClass() + ", cancelled:" + event.isCancelled()); }