@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
    public void handleClickEvent(PlayerInteractEvent event)
    {
        Player player = event.getPlayer();
        if(!event.hasBlock() || (event.getAction() != Action.RIGHT_CLICK_BLOCK) || !player.hasPermission("rcost.use"))
        {
            return;
        }
        ItemStack item = player.getItemInHand();
        if(item == null)
        {
            return;
        }
        ItemMeta itemMeta = item.getItemMeta();
        if((itemMeta == null) || !(itemMeta instanceof Repairable))
        {
            return;
        }
        Repairable meta = (Repairable)itemMeta;
        Block block = event.getClickedBlock();
        int key = Shape.apply(player.getWorld(), block.getX(), block.getY(), block.getZ());
        if(key == -1)
        {
            return;
        }
        if(meta.getRepairCost() == 0)
        {
            Util.sendMessage(player, "Your tool is as new as it can be.", ChatColor.YELLOW);
            return;
        }
        Shape.remove(key, player.getWorld(), block.getX(), block.getY(), block.getZ());
        meta.setRepairCost(0);
        item.setItemMeta(itemMeta);
        player.setItemInHand(item);
        Util.sendMessage(player, randomMessage(), ChatColor.GREEN);
        event.setCancelled(true);
    }