/** Load all informations from player who exists in folder players and who have a island. */
  public void loadPlayerFiles() {
    for (String f : new File(this.directoryPlayers.getAbsolutePath()).list()) {
      if (new File(this.directoryPlayers, f).isFile()) {

        PlayerInfo pi = null;
        try {
          pi = this.loadPlayerInfo(f.replace(".yml", ""));
        } catch (Exception e) {
          e.printStackTrace();
          continue;
        }

        if (pi != null) {
          // add player, if missing
          String playerName = pi.getPlayerName();

          Player playerOnline = this.getServer().getPlayer(playerName);
          if (playerOnline == null) continue;
          /*if (playerOnline == null || !playerOnline.isOnline() || pi.getIslandLocation() == null || !playerOnline.getWorld().getName().equalsIgnoreCase(settings.getWorldName())) {
          	continue;
          }*/

          settings.addPlayer(playerName, pi);
        }
      }
    }
  }
  /**
   * Comparing part of a player name with all players
   *
   * @param partName
   * @return
   */
  public String getFullPlayerName(PlayerInfo pi, String partName) {
    int amount = 0;
    String pName = "";
    for (Player p : this.getServer().getOnlinePlayers()) {
      if (p.getName().toLowerCase().startsWith(partName.toLowerCase())) {
        amount++;
        pName = p.getName();
      }
    }
    if (amount == 1) return pName;
    else if (amount > 1) return "0";

    for (IslandInfo ii : pi.getBuiltPermissionList().values()) {
      if (ii.getIslandOwner().toLowerCase().startsWith(partName.toLowerCase())) {
        if (ii.containsFriend(pi.getPlayerName())) {
          amount++;
          pName = ii.getIslandOwner();
        }
      }
    }

    if (amount == 1) return pName;
    else if (amount > 1) return "0";
    return "-1";
  }
  public void savePlayerInfo(PlayerInfo pi) {
    YamlConfiguration yamlPlayerInfo = new YamlConfiguration();
    File filePlayerInfo = new File(this.directoryPlayers, pi.getPlayerName() + ".yml");

    // island info
    if (pi.getIslandInfo() != null) {
      yamlPlayerInfo.set(
          EnumPlayerConfig.ISLAND_NUMBER.getPath(), pi.getIslandInfo().getIslandNumber());
    }

    yamlPlayerInfo.set(EnumPlayerConfig.IS_PLAYING.getPath(), pi.isPlaying());
    yamlPlayerInfo.set(EnumPlayerConfig.IS_DEAD.getPath(), pi.isDead());
    yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_FOOD.getPath(), "" + pi.getIslandFood());
    yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_HEALTH.getPath(), "" + pi.getIslandHealth());
    yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_EXP.getPath(), "" + pi.getIslandExp());
    yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_LEVEL.getPath(), "" + pi.getIslandLevel());
    yamlPlayerInfo.set(
        EnumPlayerConfig.ISLAND_INVENTORY.getPath(),
        ItemParser.getListFromItemStackArray(pi.getIslandInventory()));
    yamlPlayerInfo.set(
        EnumPlayerConfig.ISLAND_ARMOR.getPath(),
        ItemParser.getListFromItemStackArray(pi.getIslandArmor()));
    yamlPlayerInfo.set(
        EnumPlayerConfig.OLD_LOCATION.getPath(),
        LocationParser.getStringFromLocation(pi.getOldLocation()));
    yamlPlayerInfo.set(EnumPlayerConfig.OLD_FOOD.getPath(), "" + pi.getOldFood());
    yamlPlayerInfo.set(EnumPlayerConfig.OLD_HEALTH.getPath(), "" + pi.getOldHealth());
    yamlPlayerInfo.set(EnumPlayerConfig.OLD_EXP.getPath(), "" + pi.getOldExp());
    yamlPlayerInfo.set(EnumPlayerConfig.OLD_LEVEL.getPath(), "" + pi.getOldLevel());
    yamlPlayerInfo.set(
        EnumPlayerConfig.OLD_INVENTORY.getPath(),
        ItemParser.getListFromItemStackArray(pi.getOldInventory()));
    yamlPlayerInfo.set(
        EnumPlayerConfig.OLD_ARMOR.getPath(),
        ItemParser.getListFromItemStackArray(pi.getOldArmor()));
    yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_BUILTLIST.getPath(), pi.getBuildListNumbers());

    try {
      yamlPlayerInfo.save(filePlayerInfo);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }