@EventHandler(priority = EventPriority.MONITOR)
    public void onBlockBreakEvent(BlockBreakEvent event) {
        if (event.isCancelled()) {
            logDebug("TH: Block break cancel detected.");
            return;
        }
        logDebug("TH: No cancel detected.");
        org.bukkit.block.Block block = event.getBlock();
        if (event.getPlayer() instanceof Player) {
            if (event.getPlayer().getGameMode().equals(GameMode.CREATIVE)) {
                return;
            }
        }
        if (block.getType() == Material.SKULL) {
            org.bukkit.block.Skull skull = (org.bukkit.block.Skull) block.getState();
            if (skull.getSkullType().equals(SkullType.PLAYER)) {
                if (skull.hasOwner()) {
                    String pName = skull.getOwner();
                    if (pName == null) {
                        return;
                    }
                    if (CUSTOM_SKINS.containsValue(pName)) {
                        Location loc = block.getLocation().clone();
                        event.setCancelled(true);
                        block.setType(Material.AIR);
                        ItemStack item = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3);
                        ItemMeta itemMeta = item.getItemMeta();
                        ((SkullMeta) itemMeta).setOwner(pName);
                        itemMeta.setDisplayName(ChatColor.GREEN + getCustomSkullName(getCustomSkullType(pName)) + " Head");
                        item.setItemMeta(itemMeta);

                        World world = loc.getWorld();
                        world.dropItemNaturally(loc, item);
                    }

                }
            }
        }
    }