@EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        if (!ChunkyManager.getChunkyWorld(event.getPlayer().getWorld().getName()).isEnabled()) return;

        if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) || event.getAction().equals(Action.LEFT_CLICK_BLOCK)) {
            if (event.getItem() != null && MinecraftTools.isUsable(event.getItem().getTypeId())) {
                ChunkyPlayer chunkyPlayer = ChunkyManager.getChunkyPlayer(event.getPlayer());
                ChunkyChunk chunkyChunk = ChunkyManager.getChunkyChunk(event.getClickedBlock().getLocation());

                AccessLevel permType = PermissionChain.hasPerm(chunkyChunk, chunkyPlayer, ChunkyPermissions.ITEM_USE);
                boolean isCancelled = permType.causedDenial();

                ChunkyPlayerItemUseEvent chunkyEvent = new ChunkyPlayerItemUseEvent(chunkyPlayer, chunkyChunk, event.getItem(), permType);
                chunkyEvent.setCancelled(isCancelled);
                Chunky.getModuleManager().callEvent(chunkyEvent);

                event.setCancelled(chunkyEvent.isCancelled());
            }
            if (MinecraftTools.isSwitchable(event.getClickedBlock().getTypeId())) {
                ChunkyPlayer chunkyPlayer = ChunkyManager.getChunkyPlayer(event.getPlayer());
                ChunkyChunk chunkyChunk = ChunkyManager.getChunkyChunk(event.getClickedBlock().getLocation());

                AccessLevel permType = PermissionChain.hasPerm(chunkyChunk, chunkyPlayer, ChunkyPermissions.SWITCH);
                boolean isCancelled = permType.causedDenial();

                ChunkyPlayerSwitchEvent chunkyEvent = new ChunkyPlayerSwitchEvent(chunkyPlayer, chunkyChunk, event.getClickedBlock(), permType);
                chunkyEvent.setCancelled(isCancelled);
                Chunky.getModuleManager().callEvent(chunkyEvent);

                event.setCancelled(chunkyEvent.isCancelled());
            }
        }

    }