Program: 34113
Project: 34113
Buggy source:
/** 
 * Class dedicated to deleting islands
 * @param plugin
 * @param loc
 */
public DeleteIslandChunk(ASkyBlock plugin,final Location loc){
  if (loc == null)   return;
  World world=loc.getWorld();
  int range=Settings.island_protectionRange / 2 * +1;
  this.plugin=plugin;
  int minx=(loc.getBlockX() - range);
  int minz=(loc.getBlockZ() - range);
  int maxx=(loc.getBlockX() + range);
  int maxz=(loc.getBlockZ() + range);
  int islandSpacing=Settings.islandDistance - Settings.island_protectionRange;
  int minxX=(loc.getBlockX() - range - islandSpacing);
  int minzZ=(loc.getBlockZ() - range - islandSpacing);
  int maxxX=(loc.getBlockX() + range + islandSpacing);
  int maxzZ=(loc.getBlockZ() + range + islandSpacing);
  final Chunk minChunk=loc.getWorld().getChunkAt(new Location(world,minx,0,minz));
  final Chunk maxChunk=loc.getWorld().getChunkAt(new Location(world,maxx,0,maxz));
  for (int x=minChunk.getX(); x <= maxChunk.getX(); x++) {
    for (int z=minChunk.getZ(); z <= maxChunk.getZ(); z++) {
      boolean regen=true;
      if (loc.getWorld().getChunkAt(x,z).getBlock(0,0,0).getX() < minxX) {
        regen=false;
      }
      if (loc.getWorld().getChunkAt(x,z).getBlock(0,0,0).getZ() < minzZ) {
        regen=false;
      }
      if (loc.getWorld().getChunkAt(x,z).getBlock(15,0,15).getX() > maxxX) {
        regen=false;
      }
      if (loc.getWorld().getChunkAt(x,z).getBlock(15,0,15).getZ() > maxzZ) {
        regen=false;
      }
      if (regen) {
        loc.getWorld().regenerateChunk(x,z);
      }
    }
  }
  plugin.getServer().getScheduler().runTask(plugin,new Runnable(){
    @Override public void run(){
      for (int x=minChunk.getX(); x <= maxChunk.getX(); x++) {
        for (int z=minChunk.getZ(); z <= maxChunk.getZ(); z++) {
          loc.getWorld().refreshChunk(x,z);
        }
      }
    }
  }
);
}

Fixed version (ground truth):
/** 
 * Class dedicated to deleting islands
 * @param plugin
 * @param loc
 */
public DeleteIslandChunk(ASkyBlock plugin,final Location loc){
  if (loc == null)   return;
  World world=loc.getWorld();
  int range=Settings.island_protectionRange / 2 * +1;
  this.plugin=plugin;
  int minx=(loc.getBlockX() - range);
  int minz=(loc.getBlockZ() - range);
  int maxx=(loc.getBlockX() + range);
  int maxz=(loc.getBlockZ() + range);
  int islandSpacing=Settings.islandDistance - Settings.island_protectionRange;
  int minxX=(loc.getBlockX() - range - islandSpacing);
  int minzZ=(loc.getBlockZ() - range - islandSpacing);
  int maxxX=(loc.getBlockX() + range + islandSpacing);
  int maxzZ=(loc.getBlockZ() + range + islandSpacing);
  final Chunk minChunk=loc.getWorld().getChunkAt(new Location(world,minx,0,minz));
  final Chunk maxChunk=loc.getWorld().getChunkAt(new Location(world,maxx,0,maxz));
  for (int x=minChunk.getX(); x <= maxChunk.getX(); x++) {
    for (int z=minChunk.getZ(); z <= maxChunk.getZ(); z++) {
      boolean regen=true;
      if (loc.getWorld().getChunkAt(x,z).getBlock(0,0,0).getX() < minxX) {
        regen=false;
      }
      if (loc.getWorld().getChunkAt(x,z).getBlock(0,0,0).getZ() < minzZ) {
        regen=false;
      }
      if (loc.getWorld().getChunkAt(x,z).getBlock(15,0,15).getX() > maxxX) {
        regen=false;
      }
      if (loc.getWorld().getChunkAt(x,z).getBlock(15,0,15).getZ() > maxzZ) {
        regen=false;
      }
      if (regen) {
        loc.getWorld().regenerateChunk(x,z);
      }
    }
  }
  String checkName=loc.getBlockX() + "String_Node_Str" + loc.getBlockZ()+ "String_Node_Str";
  final File islandFile=new File(plugin.getDataFolder() + File.separator + "String_Node_Str"+ File.separator+ checkName);
  if (islandFile.exists()) {
    if (!islandFile.delete()) {
      plugin.getLogger().severe("String_Node_Str" + checkName + "String_Node_Str");
    }
  }
  plugin.getServer().getScheduler().runTask(plugin,new Runnable(){
    @Override public void run(){
      for (int x=minChunk.getX(); x <= maxChunk.getX(); x++) {
        for (int z=minChunk.getZ(); z <= maxChunk.getZ(); z++) {
          loc.getWorld().refreshChunk(x,z);
        }
      }
    }
  }
);
}