private static void recoverExplosionEvent(EntityExplodeEvent event) {
        final int HealDelay = Main.getInstance().getConfig().getInt("variable.HealDelay");
        final int FullHealTime = Main.getInstance().getConfig().getInt("variable.FullHealTime");
        final boolean AllowTNTChainReaction = Main.getInstance().getConfig()
                .getBoolean("variable.AllowTNTChainReaction");
        for (final Block block: event.blockList()) {
            final Material mat = block.getType();
            final Location loc = block.getLocation();
            final String world = loc.getWorld().getName();

            int healTime;
            if (mat == Material.CARPET || mat == Material.SIGN_POST || mat == Material.WALL_SIGN) {
                healTime = FullHealTime + HealDelay + new Random().nextInt(FullHealTime) + HealDelay;
            } else {
                healTime = new Random().nextInt(FullHealTime) + HealDelay;
            }

            Main.getInstance().getServer().getScheduler().scheduleSyncDelayedTask(Main.getInstance(), new Runnable() {
                @Override
                public void run() {
                    Main.getInstance().getServer().getWorld(world).getBlockAt(loc).setType(mat);
                }
            }, healTime);
            if (AllowTNTChainReaction) {
                if (block.getType() != Material.TNT) {
                    block.setType(Material.AIR);
                }
            } else {
                block.setType(Material.AIR);
            }
        }
    }