Program: 33989
Project: 33989
Buggy source:
/** 
 * Makes an island using schematic. No permission checks are made. They have to be decided before this method is called.
 * @param player
 * @param schematic
 */
public void newIsland(final Player player,final Schematic schematic){
  final UUID playerUUID=player.getUniqueId();
  boolean firstTime=false;
  if (!plugin.getPlayers().hasIsland(playerUUID)) {
    firstTime=true;
  }
  Location next=getNextIsland(player.getUniqueId());
  plugin.getPlayers().setHasIsland(playerUUID,true);
  plugin.getPlayers().clearHomeLocations(playerUUID);
  plugin.getPlayers().setIslandLocation(playerUUID,next);
  if (schematic.isPlayerSpawn()) {
    plugin.getPlayers().setHomeLocation(playerUUID,schematic.getPlayerSpawn(next),1);
  }
  plugin.setNewIsland(true);
  if (schematic != null) {
    if (Settings.createNether && schematic.isInNether() && Settings.newNether&& ASkyBlock.getNetherWorld() != null) {
      if (!schematic.getPartnerName().isEmpty() && schematics.containsKey(schematic.getPartnerName())) {
        pastePartner(schematics.get(schematic.getPartnerName()),next,player);
      }
      next=next.toVector().toLocation(ASkyBlock.getNetherWorld());
      plugin.getPlayers().setIslandLocation(playerUUID,next);
      schematic.pasteSchematic(next,player,true);
    }
 else {
      schematic.pasteSchematic(next,player,true);
      if (Settings.createNether && Settings.newNether && ASkyBlock.getNetherWorld() != null) {
        final Location netherLoc=next.toVector().toLocation(ASkyBlock.getNetherWorld());
        if (schematic.getPartnerName().isEmpty()) {
          pastePartner(schematic,netherLoc,player);
        }
 else {
          if (schematics.containsKey(schematic.getPartnerName())) {
            pastePartner(schematics.get(schematic.getPartnerName()),netherLoc,player);
          }
 else {
            plugin.getLogger().severe("String_Node_Str" + schematic.getPartnerName() + "String_Node_Str");
          }
        }
      }
    }
    plugin.getPlayers().setStartIslandRating(playerUUID,schematic.getRating());
  }
  plugin.setNewIsland(false);
  Island myIsland=plugin.getGrid().addIsland(next.getBlockX(),next.getBlockZ(),playerUUID);
  plugin.getPlayers().save(playerUUID);
  plugin.resetPlayer(player);
  if (Settings.resetMoney) {
    resetMoney(player);
  }
  if (!firstTime) {
    setResetWaitTime(player);
  }
  int range=Settings.island_protectionRange;
  for (int i=0; i <= Settings.islandDistance; i++) {
    if (VaultHelper.checkPerm(player,Settings.PERMPREFIX + "String_Node_Str" + i)) {
      range=i;
    }
  }
  if (range % 2 != 0) {
    range--;
    plugin.getLogger().warning("String_Node_Str" + range + "String_Node_Str"+ player.getName());
  }
  if (range > (Settings.islandDistance - 16) && !plugin.getConfig().getBoolean("String_Node_Str",false)) {
    range=Settings.islandDistance - 16;
    plugin.getLogger().warning("String_Node_Str" + (Settings.islandDistance - 16) + "String_Node_Str"+ range);
  }
  myIsland.setProtectionSize(range);
  if (!Bukkit.getServer().getVersion().contains("String_Node_Str")) {
    if (!plugin.myLocale(player.getUniqueId()).islandSubTitle.isEmpty()) {
      plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(),"String_Node_Str" + player.getName() + "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandSubTitle+ "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandSubTitleColor+ "String_Node_Str");
    }
    if (!plugin.myLocale(player.getUniqueId()).islandTitle.isEmpty()) {
      plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(),"String_Node_Str" + player.getName() + "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandTitle+ "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandTitleColor+ "String_Node_Str");
    }
    if (!plugin.myLocale(player.getUniqueId()).islandDonate.isEmpty() && !plugin.myLocale(player.getUniqueId()).islandURL.isEmpty()) {
      plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(),"String_Node_Str" + player.getName() + "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandDonate+ "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandDonateColor+ "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandURL+ "String_Node_Str");
    }
  }
  if (firstTime) {
    if (!player.hasPermission(Settings.PERMPREFIX + "String_Node_Str")) {
      runCommands(Settings.startCommands,player);
    }
  }
  plugin.getGrid().saveGrid();
  final IslandNewEvent event=new IslandNewEvent(player,schematic,myIsland);
  plugin.getServer().getPluginManager().callEvent(event);
}

Fixed version (ground truth):
/** 
 * Makes an island using schematic. No permission checks are made. They have to be decided before this method is called.
 * @param player
 * @param schematic
 */
public void newIsland(final Player player,final Schematic schematic){
  final UUID playerUUID=player.getUniqueId();
  boolean firstTime=false;
  if (!plugin.getPlayers().hasIsland(playerUUID)) {
    firstTime=true;
  }
  Location next=getNextIsland(player.getUniqueId());
  plugin.getPlayers().setHasIsland(playerUUID,true);
  plugin.getPlayers().clearHomeLocations(playerUUID);
  plugin.getPlayers().setIslandLocation(playerUUID,next);
  if (schematic.isPlayerSpawn()) {
    plugin.getPlayers().setHomeLocation(playerUUID,schematic.getPlayerSpawn(next),1);
  }
  plugin.setNewIsland(true);
  if (schematic != null) {
    if (Settings.createNether && schematic.isInNether() && Settings.newNether&& ASkyBlock.getNetherWorld() != null) {
      if (!schematic.getPartnerName().isEmpty() && schematics.containsKey(schematic.getPartnerName())) {
        pastePartner(schematics.get(schematic.getPartnerName()),next,player);
      }
      next=next.toVector().toLocation(ASkyBlock.getNetherWorld());
      plugin.getPlayers().setIslandLocation(playerUUID,next);
      schematic.pasteSchematic(next,player,true);
    }
 else {
      schematic.pasteSchematic(next,player,true);
      if (Settings.createNether && Settings.newNether && ASkyBlock.getNetherWorld() != null) {
        final Location netherLoc=next.toVector().toLocation(ASkyBlock.getNetherWorld());
        if (schematic.getPartnerName().isEmpty()) {
          pastePartner(schematic,netherLoc,player);
        }
 else {
          if (schematics.containsKey(schematic.getPartnerName())) {
            pastePartner(schematics.get(schematic.getPartnerName()),netherLoc,player);
          }
 else {
            plugin.getLogger().severe("String_Node_Str" + schematic.getPartnerName() + "String_Node_Str");
          }
        }
      }
    }
    plugin.getPlayers().setStartIslandRating(playerUUID,schematic.getRating());
  }
  plugin.setNewIsland(false);
  Island myIsland=plugin.getGrid().addIsland(next.getBlockX(),next.getBlockZ(),playerUUID);
  plugin.getPlayers().save(playerUUID);
  plugin.resetPlayer(player);
  if (Settings.resetMoney) {
    resetMoney(player);
  }
  if (!firstTime) {
    setResetWaitTime(player);
  }
  int range=Settings.island_protectionRange;
  for (  PermissionAttachmentInfo perms : player.getEffectivePermissions()) {
    if (perms.getPermission().startsWith(Settings.PERMPREFIX + "String_Node_Str")) {
      range=Math.max(range,Integer.valueOf(perms.getPermission().split(Settings.PERMPREFIX + "String_Node_Str")[1]));
    }
  }
  if (range % 2 != 0) {
    range--;
    plugin.getLogger().warning("String_Node_Str" + range + "String_Node_Str"+ player.getName());
  }
  if (range > (Settings.islandDistance - 16) && !plugin.getConfig().getBoolean("String_Node_Str",false)) {
    range=Settings.islandDistance - 16;
    plugin.getLogger().warning("String_Node_Str" + (Settings.islandDistance - 16) + "String_Node_Str"+ range);
  }
  myIsland.setProtectionSize(range);
  if (!Bukkit.getServer().getVersion().contains("String_Node_Str")) {
    if (!plugin.myLocale(player.getUniqueId()).islandSubTitle.isEmpty()) {
      plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(),"String_Node_Str" + player.getName() + "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandSubTitle+ "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandSubTitleColor+ "String_Node_Str");
    }
    if (!plugin.myLocale(player.getUniqueId()).islandTitle.isEmpty()) {
      plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(),"String_Node_Str" + player.getName() + "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandTitle+ "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandTitleColor+ "String_Node_Str");
    }
    if (!plugin.myLocale(player.getUniqueId()).islandDonate.isEmpty() && !plugin.myLocale(player.getUniqueId()).islandURL.isEmpty()) {
      plugin.getServer().dispatchCommand(plugin.getServer().getConsoleSender(),"String_Node_Str" + player.getName() + "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandDonate+ "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandDonateColor+ "String_Node_Str"+ plugin.myLocale(player.getUniqueId()).islandURL+ "String_Node_Str");
    }
  }
  if (firstTime) {
    if (!player.hasPermission(Settings.PERMPREFIX + "String_Node_Str")) {
      runCommands(Settings.startCommands,player);
    }
  }
  plugin.getGrid().saveGrid();
  final IslandNewEvent event=new IslandNewEvent(player,schematic,myIsland);
  plugin.getServer().getPluginManager().callEvent(event);
}