Exemple #1
0
 public void generateTopTen(final CommandSender sender) {
   List<IslandLevel> topTen = new ArrayList<>();
   final File folder = directoryIslands;
   final String[] listOfFiles = folder.list(FileUtil.createIslandFilenameFilter());
   for (String file : listOfFiles) {
     String islandName = FileUtil.getBasename(file);
     try {
       boolean wasLoaded = islands.containsKey(islandName);
       IslandInfo islandInfo = getIslandInfo(islandName);
       double level = islandInfo != null ? islandInfo.getLevel() : 0;
       if (islandInfo != null && level > 10) {
         IslandLevel islandLevel = createIslandLevel(islandInfo, level);
         topTen.add(islandLevel);
       }
       if (!wasLoaded) {
         islands.remove(islandName);
       }
     } catch (Exception e) {
       plugin.getLogger().log(Level.WARNING, "Error during rank generation", e);
     }
   }
   Collections.sort(topTen);
   synchronized (ranks) {
     lastGenerate = System.currentTimeMillis();
     ranks.clear();
     ranks.addAll(topTen);
   }
   plugin.fireChangeEvent(sender, uSkyBlockEvent.Cause.RANK_UPDATED);
 }
  /**
   * 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 String getOwner(int islandNumber) {
    IslandInfo ii = this.settings.getIslandInfo(islandNumber);

    if (ii == null) {
      return "";
    }
    return ii.getIslandOwner();
  }
Exemple #4
0
 public void renamePlayer(String islandName, PlayerNameChangedEvent e) {
   IslandInfo islandInfo = getIslandInfo(islandName);
   if (islandInfo != null) {
     islandInfo.renamePlayer(e.getPlayer(), e.getOldName());
     if (!islandInfo.hasOnlineMembers()) {
       removeIslandFromMemory(islandInfo.getName());
     }
   }
 }
Exemple #5
0
 private IslandLevel createIslandLevel(IslandInfo islandInfo, double level) {
   String partyLeader = islandInfo.getLeader();
   String partyLeaderName = PlayerUtil.getPlayerDisplayName(partyLeader);
   List<String> memberList = new ArrayList<>(islandInfo.getMembers());
   memberList.remove(partyLeader);
   List<String> names = new ArrayList<>();
   for (String name : memberList) {
     String displayName = PlayerUtil.getPlayerDisplayName(name);
     if (displayName != null) {
       names.add(displayName);
     }
   }
   return new IslandLevel(islandInfo.getName(), partyLeaderName, names, level);
 }
  public void saveIslandInfo(IslandInfo ii) {
    YamlConfiguration yamlIslandInfo = new YamlConfiguration();
    File filePlayerInfo = new File(this.directoryIslands, ii.getIslandNumber() + ".yml");

    yamlIslandInfo.set(EnumIslandConfig.ISLAND_OWNER.getPath(), ii.getIslandOwner());
    yamlIslandInfo.set(
        EnumIslandConfig.ISLAND_LOCATION.getPath(),
        LocationParser.getStringFromLocation(ii.getIslandLocation()));
    yamlIslandInfo.set(
        EnumIslandConfig.HOME_LOCATION.getPath(),
        LocationParser.getStringFromLocation(ii.getHomeLocation()));

    yamlIslandInfo.set(EnumIslandConfig.FRIENDS.getPath(), ii.getFriends());
    try {
      yamlIslandInfo.save(filePlayerInfo);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public Location getSafeHomeLocation(IslandInfo ii) {
    // a) check original location
    Location home = ii.getHomeLocation();

    if (this.isSafeLocation(home)) {
      return home;
    }

    // b) check if a suitable y exists on this x and z
    for (int y = home.getBlockY(); y > 0; y--) {
      Location n = new Location(home.getWorld(), home.getBlockX(), y, home.getBlockZ());
      if (this.isSafeLocation(n)) {
        return n;
      }
    }
    for (int y = home.getBlockY(); y < 255; y++) {
      Location n = new Location(home.getWorld(), home.getBlockX(), y, home.getBlockZ());
      if (this.isSafeLocation(n)) {
        return n;
      }
    }

    // c) check island Location
    Location island = ii.getIslandLocation();
    if (this.isSafeLocation(island)) {
      return island;
    }

    for (int y = island.getBlockY(); y > 0; y--) {
      Location n = new Location(island.getWorld(), island.getBlockX(), y, island.getBlockZ());
      if (this.isSafeLocation(n)) {
        return n;
      }
    }
    for (int y = island.getBlockY(); y < 255; y++) {
      Location n = new Location(island.getWorld(), island.getBlockX(), y, island.getBlockZ());
      if (this.isSafeLocation(n)) {
        return n;
      }
    }
    return null;
  }
  public void loadIslandFiles() {
    ArrayList<String> playersInSkb = new ArrayList<String>();
    for (Player player : this.skyBlockWorld.getPlayers()) {
      playersInSkb.add(player.getName());
    }

    for (String f : new File(this.directoryIslands.getAbsolutePath()).list()) {
      if (new File(this.directoryIslands, f).isFile()) {

        IslandInfo ii = null;
        try {
          ii = this.loadIslandInfo(f);
        } catch (Exception e) {
          e.printStackTrace();
          continue;
        }
        if (ii != null) {
          if (ii.isFreeBuild()) {
            settings.addIslandInfo(ii);
            continue;
          }

          // check if a player for this island (owner or friend is online)
          boolean foundPlayer = false;
          if (playersInSkb.contains(ii.getIslandOwner())) {
            foundPlayer = true;
          } else {
            for (String friend : ii.getFriends()) {
              if (playersInSkb.contains(friend)) {
                foundPlayer = true;
                break;
              }
            }
          }
          if (foundPlayer) settings.addIslandInfo(ii);
        }
      }
    }
  }
Exemple #9
0
 public synchronized IslandInfo createIsland(String location, String player) {
   IslandInfo info = getIslandInfo(location);
   info.clearIslandConfig(player);
   return info;
 }
  @SuppressWarnings("unchecked")
  public PlayerInfo loadPlayerInfo(String playerName) {
    YamlConfiguration yamlPlayerInfo = new YamlConfiguration();
    File filePlayerInfo = new File(this.directoryPlayers, playerName + ".yml");
    if (!filePlayerInfo.exists()) {
      return null;
    }

    try {
      yamlPlayerInfo.load(filePlayerInfo);
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }

    PlayerInfo pi = new PlayerInfo(playerName);

    // Find own Island
    int ownsIslandNr = -1;
    if (yamlPlayerInfo.contains(EnumPlayerConfig.ISLAND_NUMBER.getPath())) {
      ownsIslandNr = yamlPlayerInfo.getInt(EnumPlayerConfig.ISLAND_NUMBER.getPath());
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_NUMBER.getPath(), ownsIslandNr);
    }
    pi.setIslandInfo(settings.getIslandInfo(ownsIslandNr));

    // Check consistency
    if (pi.getHasIsland() && !pi.getIslandInfo().isIslandOwner(playerName)) {
      pi.setIslandInfo(null);
    }

    // Find Buildpermissions
    // buildPermissions = new HashMap<Integer, IslandInfo>();

    ArrayList<Integer> builtlist = new ArrayList<Integer>();
    if (yamlPlayerInfo.contains(EnumPlayerConfig.ISLAND_BUILTLIST.getPath())) {
      builtlist =
          (ArrayList<Integer>) yamlPlayerInfo.getList(EnumPlayerConfig.ISLAND_BUILTLIST.getPath());
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_BUILTLIST.getPath(), builtlist);
    }
    // Go through buildlist with Islandnr to get IslandInfos
    for (int islandnr : builtlist) {
      IslandInfo friend = settings.getIslandInfo(islandnr);
      if (friend != null && friend.containsFriend(playerName)) {
        pi.addBuildPermission(islandnr, friend);
      }
    }

    boolean isPlaying = false;
    if (yamlPlayerInfo.contains(EnumPlayerConfig.IS_PLAYING.getPath())) {
      isPlaying =
          Boolean.parseBoolean(
              yamlPlayerInfo.get(EnumPlayerConfig.IS_PLAYING.getPath()).toString());
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.IS_PLAYING.getPath(), false);
    }
    pi.setIsPlaying(isPlaying);

    boolean isDead = false;
    if (yamlPlayerInfo.contains(EnumPlayerConfig.IS_DEAD.getPath())) {
      isDead =
          Boolean.parseBoolean(yamlPlayerInfo.get(EnumPlayerConfig.IS_DEAD.getPath()).toString());
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.IS_DEAD.getPath(), false);
    }
    pi.setDead(isDead);

    int islandFood = 20;
    try {
      if (yamlPlayerInfo.contains(EnumPlayerConfig.ISLAND_FOOD.getPath())) {
        islandFood =
            Integer.parseInt(yamlPlayerInfo.get(EnumPlayerConfig.ISLAND_FOOD.getPath()).toString());
      } else {
        yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_FOOD.getPath(), 20);
      }
    } catch (Exception e) {
    }
    pi.setIslandFood(islandFood);

    int islandHealth = 20;
    try {
      if (yamlPlayerInfo.contains(EnumPlayerConfig.ISLAND_HEALTH.getPath())) {
        islandHealth =
            Integer.parseInt(
                yamlPlayerInfo.get(EnumPlayerConfig.ISLAND_HEALTH.getPath()).toString());
      } else {
        yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_HEALTH.getPath(), 20);
      }
    } catch (Exception e) {
    }
    pi.setIslandHealth(islandHealth);

    int islandExp = 0;
    try {
      if (yamlPlayerInfo.contains(EnumPlayerConfig.ISLAND_EXP.getPath())) {
        islandExp =
            Integer.parseInt(yamlPlayerInfo.get(EnumPlayerConfig.ISLAND_EXP.getPath()).toString());
      } else {
        yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_EXP.getPath(), 0);
      }
    } catch (Exception e) {
    }
    pi.setIslandExp(islandExp);

    int islandLevel = 0;
    try {
      if (yamlPlayerInfo.contains(EnumPlayerConfig.ISLAND_LEVEL.getPath())) {
        islandLevel =
            Integer.parseInt(
                yamlPlayerInfo.get(EnumPlayerConfig.ISLAND_LEVEL.getPath()).toString());
      } else {
        yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_LEVEL.getPath(), 0);
      }
    } catch (Exception e) {
    }
    pi.setIslandLevel(islandLevel);

    ItemStack[] islandInventory = new ItemStack[36];
    if (yamlPlayerInfo.contains(EnumPlayerConfig.ISLAND_INVENTORY.getPath())) {
      ArrayList<String> listIslandInventory =
          (ArrayList<String>) yamlPlayerInfo.get(EnumPlayerConfig.ISLAND_INVENTORY.getPath());
      islandInventory = ItemParser.getItemStackArrayFromList(listIslandInventory, 36);
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_INVENTORY.getPath(), new ArrayList<String>());
    }
    pi.setIslandInventory(islandInventory);

    ItemStack[] islandArmor = new ItemStack[4];
    if (yamlPlayerInfo.contains(EnumPlayerConfig.ISLAND_ARMOR.getPath())) {
      ArrayList<String> listIslandArmor =
          (ArrayList<String>) yamlPlayerInfo.get(EnumPlayerConfig.ISLAND_ARMOR.getPath());
      islandArmor = ItemParser.getItemStackArrayFromList(listIslandArmor, 4);
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.ISLAND_ARMOR.getPath(), new ArrayList<String>());
    }
    pi.setIslandArmor(islandArmor);

    Location oldLocation = null;
    if (yamlPlayerInfo.contains(EnumPlayerConfig.OLD_LOCATION.getPath())) {
      oldLocation =
          LocationParser.parseStringToLocation(
              yamlPlayerInfo.get(EnumPlayerConfig.OLD_LOCATION.getPath()).toString());
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.OLD_LOCATION.getPath(), "");
    }
    pi.setOldLocation(oldLocation);

    int oldFood = 20;
    try {
      if (yamlPlayerInfo.contains(EnumPlayerConfig.OLD_FOOD.getPath())) {
        oldFood =
            Integer.parseInt(yamlPlayerInfo.get(EnumPlayerConfig.OLD_FOOD.getPath()).toString());
      } else {
        yamlPlayerInfo.set(EnumPlayerConfig.OLD_FOOD.getPath(), 20);
      }
    } catch (Exception e) {
    }
    pi.setOldFood(oldFood);

    int oldHealth = 20;
    try {
      if (yamlPlayerInfo.contains(EnumPlayerConfig.OLD_HEALTH.getPath())) {
        oldHealth =
            Integer.parseInt(yamlPlayerInfo.get(EnumPlayerConfig.OLD_HEALTH.getPath()).toString());
      } else {
        yamlPlayerInfo.set(EnumPlayerConfig.OLD_HEALTH.getPath(), 20);
      }
    } catch (Exception e) {
    }
    pi.setOldHealth(oldHealth);

    int oldExp = 0;
    try {
      if (yamlPlayerInfo.contains(EnumPlayerConfig.OLD_EXP.getPath())) {
        oldExp =
            Integer.parseInt(yamlPlayerInfo.get(EnumPlayerConfig.OLD_EXP.getPath()).toString());
      } else {
        yamlPlayerInfo.set(EnumPlayerConfig.OLD_EXP.getPath(), 0);
      }
    } catch (Exception e) {
    }
    pi.setOldExp(oldExp);

    int oldLevel = 0;
    try {
      if (yamlPlayerInfo.contains(EnumPlayerConfig.OLD_LEVEL.getPath())) {
        oldLevel =
            Integer.parseInt(yamlPlayerInfo.get(EnumPlayerConfig.OLD_LEVEL.getPath()).toString());
      } else {
        yamlPlayerInfo.set(EnumPlayerConfig.OLD_LEVEL.getPath(), 0);
      }
    } catch (Exception e) {
    }
    pi.setOldLevel(oldLevel);

    ItemStack[] oldInventory = new ItemStack[36];
    if (yamlPlayerInfo.contains(EnumPlayerConfig.OLD_INVENTORY.getPath())) {
      ArrayList<String> listOldInventory =
          (ArrayList<String>) yamlPlayerInfo.get(EnumPlayerConfig.OLD_INVENTORY.getPath());
      oldInventory = ItemParser.getItemStackArrayFromList(listOldInventory, 36);
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.OLD_INVENTORY.getPath(), new ArrayList<String>());
    }
    pi.setOldInventory(oldInventory);

    ItemStack[] oldArmor = new ItemStack[4];
    if (yamlPlayerInfo.contains(EnumPlayerConfig.OLD_ARMOR.getPath())) {
      ArrayList<String> listOldArmor =
          (ArrayList<String>) yamlPlayerInfo.get(EnumPlayerConfig.OLD_ARMOR.getPath());
      oldArmor = ItemParser.getItemStackArrayFromList(listOldArmor, 4);
    } else {
      yamlPlayerInfo.set(EnumPlayerConfig.OLD_ARMOR.getPath(), new ArrayList<String>());
    }
    pi.setOldArmor(oldArmor);

    try {
      yamlPlayerInfo.save(filePlayerInfo);
    } catch (IOException e) {
      e.printStackTrace();
      return null;
    }
    return pi;
  }
  @SuppressWarnings("unchecked")
  public IslandInfo loadIslandInfo(String island) {
    YamlConfiguration yamlIslandInfo = new YamlConfiguration();
    File fileIslandInfo = new File(this.directoryIslands, island);
    if (!fileIslandInfo.exists()) {
      return null;
    }
    try {
      yamlIslandInfo.load(fileIslandInfo);
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }

    int islandNumber = Integer.parseInt(fileIslandInfo.getName().replace(".yml", ""));
    IslandInfo ii = new IslandInfo(islandNumber);

    String islandOwner = "";
    if (yamlIslandInfo.contains(EnumIslandConfig.ISLAND_OWNER.getPath())) {
      islandOwner = yamlIslandInfo.get(EnumIslandConfig.ISLAND_OWNER.getPath()).toString();
    } else {
      yamlIslandInfo.set(EnumIslandConfig.ISLAND_OWNER.getPath(), false);
    }
    ii.setIslandOwner(islandOwner);

    Location islandLocation = null;
    if (yamlIslandInfo.contains(EnumIslandConfig.ISLAND_LOCATION.getPath())) {
      islandLocation =
          LocationParser.parseStringToLocation(
              yamlIslandInfo.get(EnumIslandConfig.ISLAND_LOCATION.getPath()).toString());
    } else {
      yamlIslandInfo.set(
          EnumIslandConfig.ISLAND_LOCATION.getPath(),
          LocationParser.getStringFromLocation(ii.getIslandLocation()));
    }
    ii.setIslandLocation(islandLocation);

    Location homeLocation = null;
    if (yamlIslandInfo.contains(EnumIslandConfig.HOME_LOCATION.getPath())) {
      islandLocation =
          LocationParser.parseStringToLocation(
              yamlIslandInfo.get(EnumIslandConfig.HOME_LOCATION.getPath()).toString());
    } else {
      yamlIslandInfo.set(
          EnumIslandConfig.HOME_LOCATION.getPath(),
          LocationParser.getStringFromLocation(ii.getHomeLocation()));
    }
    ii.setHomeLocation(homeLocation);

    ArrayList<String> friends = new ArrayList<String>();
    if (yamlIslandInfo.contains(EnumIslandConfig.FRIENDS.getPath())) {
      friends = (ArrayList<String>) yamlIslandInfo.get(EnumIslandConfig.FRIENDS.getPath());
    } else {
      yamlIslandInfo.set(EnumIslandConfig.FRIENDS.getPath(), ii.getFriends());
    }

    ii.setFriends(friends);

    boolean freeBuild = false;
    if (yamlIslandInfo.contains(EnumIslandConfig.FREE_BUILD.getPath())) {
      freeBuild =
          Boolean.parseBoolean(
              yamlIslandInfo.get(EnumIslandConfig.FREE_BUILD.getPath()).toString());
    } else {
      yamlIslandInfo.set(EnumIslandConfig.FREE_BUILD.getPath(), ii.isFreeBuild());
    }
    ii.setFreeBuild(freeBuild);

    try {
      yamlIslandInfo.save(fileIslandInfo);
    } catch (IOException e) {
      e.printStackTrace();
      return null;
    }

    return ii;
  }