mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-23 05:36:46 +01:00
Optimized a few things with our FFS leaderboards.
This commit is contained in:
parent
1313e3fe4b
commit
3a26194a71
@ -60,79 +60,79 @@ public final class LeaderboardManager {
|
|||||||
ArrayList<String> players = new ArrayList<String>();
|
ArrayList<String> players = new ArrayList<String>();
|
||||||
|
|
||||||
while ((line = in.readLine()) != null) {
|
while ((line = in.readLine()) != null) {
|
||||||
String[] character = line.split(":");
|
String[] data = line.split(":");
|
||||||
|
|
||||||
String p = character[0];
|
String playerName = data[0];
|
||||||
int powerLevel = 0;
|
int powerLevel = 0;
|
||||||
|
|
||||||
// Prevent the same player from being added multiple times (I'd like to note that this shouldn't happen...)
|
// Prevent the same player from being added multiple times (I'd like to note that this shouldn't happen...)
|
||||||
if (players.contains(p)) {
|
if (players.contains(playerName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
players.add(p);
|
players.add(playerName);
|
||||||
|
|
||||||
if (character.length > 1 && StringUtils.isInt(character[1])) {
|
if (data.length > 1 && StringUtils.isInt(data[1])) {
|
||||||
mining.add(new PlayerStat(p, Integer.parseInt(character[1])));
|
mining.add(new PlayerStat(playerName, Integer.parseInt(data[1])));
|
||||||
powerLevel += Integer.parseInt(character[1]);
|
powerLevel += Integer.parseInt(data[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 5 && StringUtils.isInt(character[5])) {
|
if (data.length > 5 && StringUtils.isInt(data[5])) {
|
||||||
woodcutting.add(new PlayerStat(p, Integer.parseInt(character[5])));
|
woodcutting.add(new PlayerStat(playerName, Integer.parseInt(data[5])));
|
||||||
powerLevel += Integer.parseInt(character[5]);
|
powerLevel += Integer.parseInt(data[5]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 7 && StringUtils.isInt(character[7])) {
|
if (data.length > 7 && StringUtils.isInt(data[7])) {
|
||||||
repair.add(new PlayerStat(p, Integer.parseInt(character[7])));
|
repair.add(new PlayerStat(playerName, Integer.parseInt(data[7])));
|
||||||
powerLevel += Integer.parseInt(character[7]);
|
powerLevel += Integer.parseInt(data[7]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 8 && StringUtils.isInt(character[8])) {
|
if (data.length > 8 && StringUtils.isInt(data[8])) {
|
||||||
unarmed.add(new PlayerStat(p, Integer.parseInt(character[8])));
|
unarmed.add(new PlayerStat(playerName, Integer.parseInt(data[8])));
|
||||||
powerLevel += Integer.parseInt(character[8]);
|
powerLevel += Integer.parseInt(data[8]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 9 && StringUtils.isInt(character[9])) {
|
if (data.length > 9 && StringUtils.isInt(data[9])) {
|
||||||
herbalism.add(new PlayerStat(p, Integer.parseInt(character[9])));
|
herbalism.add(new PlayerStat(playerName, Integer.parseInt(data[9])));
|
||||||
powerLevel += Integer.parseInt(character[9]);
|
powerLevel += Integer.parseInt(data[9]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 10 && StringUtils.isInt(character[10])) {
|
if (data.length > 10 && StringUtils.isInt(data[10])) {
|
||||||
excavation.add(new PlayerStat(p, Integer.parseInt(character[10])));
|
excavation.add(new PlayerStat(playerName, Integer.parseInt(data[10])));
|
||||||
powerLevel += Integer.parseInt(character[10]);
|
powerLevel += Integer.parseInt(data[10]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 11 && StringUtils.isInt(character[11])) {
|
if (data.length > 11 && StringUtils.isInt(data[11])) {
|
||||||
archery.add(new PlayerStat(p, Integer.parseInt(character[11])));
|
archery.add(new PlayerStat(playerName, Integer.parseInt(data[11])));
|
||||||
powerLevel += Integer.parseInt(character[11]);
|
powerLevel += Integer.parseInt(data[11]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 12 && StringUtils.isInt(character[12])) {
|
if (data.length > 12 && StringUtils.isInt(data[12])) {
|
||||||
swords.add(new PlayerStat(p, Integer.parseInt(character[12])));
|
swords.add(new PlayerStat(playerName, Integer.parseInt(data[12])));
|
||||||
powerLevel += Integer.parseInt(character[12]);
|
powerLevel += Integer.parseInt(data[12]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 13 && StringUtils.isInt(character[13])) {
|
if (data.length > 13 && StringUtils.isInt(data[13])) {
|
||||||
axes.add(new PlayerStat(p, Integer.parseInt(character[13])));
|
axes.add(new PlayerStat(playerName, Integer.parseInt(data[13])));
|
||||||
powerLevel += Integer.parseInt(character[13]);
|
powerLevel += Integer.parseInt(data[13]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 14 && StringUtils.isInt(character[14])) {
|
if (data.length > 14 && StringUtils.isInt(data[14])) {
|
||||||
acrobatics.add(new PlayerStat(p, Integer.parseInt(character[14])));
|
acrobatics.add(new PlayerStat(playerName, Integer.parseInt(data[14])));
|
||||||
powerLevel += Integer.parseInt(character[14]);
|
powerLevel += Integer.parseInt(data[14]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 24 && StringUtils.isInt(character[24])) {
|
if (data.length > 24 && StringUtils.isInt(data[24])) {
|
||||||
taming.add(new PlayerStat(p, Integer.parseInt(character[24])));
|
taming.add(new PlayerStat(playerName, Integer.parseInt(data[24])));
|
||||||
powerLevel += Integer.parseInt(character[24]);
|
powerLevel += Integer.parseInt(data[24]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character.length > 34 && StringUtils.isInt(character[34])) {
|
if (data.length > 34 && StringUtils.isInt(data[34])) {
|
||||||
fishing.add(new PlayerStat(p, Integer.parseInt(character[34])));
|
fishing.add(new PlayerStat(playerName, Integer.parseInt(data[34])));
|
||||||
powerLevel += Integer.parseInt(character[34]);
|
powerLevel += Integer.parseInt(data[34]);
|
||||||
}
|
}
|
||||||
|
|
||||||
powerLevels.add(new PlayerStat(p, powerLevel));
|
powerLevels.add(new PlayerStat(playerName, powerLevel));
|
||||||
}
|
}
|
||||||
in.close();
|
in.close();
|
||||||
}
|
}
|
||||||
@ -188,72 +188,22 @@ public final class LeaderboardManager {
|
|||||||
statsList = playerStatHash.get(SkillType.getSkill(skillType));
|
statsList = playerStatHash.get(SkillType.getSkill(skillType));
|
||||||
}
|
}
|
||||||
|
|
||||||
int destination;
|
int destination = (pageNumber - 1) * 10;
|
||||||
|
|
||||||
// How many lines to skip through
|
for (int i = 0; i < 10; i++) {
|
||||||
if (pageNumber == 1) {
|
PlayerStat ps = statsList.get(destination + i);
|
||||||
destination = 0;
|
info[i] = ps.name + ":" + ps.statVal;
|
||||||
}
|
|
||||||
else {
|
|
||||||
destination = (pageNumber * 10) - 9;
|
|
||||||
}
|
|
||||||
|
|
||||||
int currentPos = 0;
|
|
||||||
|
|
||||||
for (PlayerStat ps : statsList) {
|
|
||||||
if (currentPos == 10) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (destination > 1) {
|
|
||||||
destination--;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
info[currentPos] = ps.name + ":" + ps.statVal;
|
|
||||||
currentPos++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[] getPlayerRank(String playerName) {
|
public static int[] getPlayerRank(String playerName) {
|
||||||
int currentPos = 1;
|
return getPlayerRank(playerName, powerLevels);
|
||||||
|
|
||||||
if (powerLevels != null) {
|
|
||||||
for (PlayerStat stat : powerLevels) {
|
|
||||||
if (stat.name.equalsIgnoreCase(playerName)) {
|
|
||||||
return new int[] {currentPos, stat.statVal};
|
|
||||||
}
|
|
||||||
|
|
||||||
currentPos++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new int[] {0, 0};
|
|
||||||
}
|
|
||||||
|
|
||||||
return new int[] {0, 0};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[] getPlayerRank(String playerName, SkillType skillType) {
|
public static int[] getPlayerRank(String playerName, SkillType skillType) {
|
||||||
int currentPos = 1;
|
return getPlayerRank(playerName, playerStatHash.get(skillType));
|
||||||
List<PlayerStat> statsList = playerStatHash.get(skillType);
|
|
||||||
|
|
||||||
if (statsList != null) {
|
|
||||||
for (PlayerStat stat : statsList) {
|
|
||||||
if (stat.name.equalsIgnoreCase(playerName)) {
|
|
||||||
return new int[] {currentPos, stat.statVal};
|
|
||||||
}
|
|
||||||
|
|
||||||
currentPos++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
return new int[] {0, 0};
|
|
||||||
}
|
|
||||||
|
|
||||||
return new int[] {0, 0};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean removeFlatFileUser(String playerName) {
|
public static boolean removeFlatFileUser(String playerName) {
|
||||||
@ -315,8 +265,9 @@ public final class LeaderboardManager {
|
|||||||
mcMMO.p.getLogger().info("Purging powerless users...");
|
mcMMO.p.getLogger().info("Purging powerless users...");
|
||||||
|
|
||||||
int purgedUsers = 0;
|
int purgedUsers = 0;
|
||||||
|
|
||||||
for (PlayerStat stat : powerLevels) {
|
for (PlayerStat stat : powerLevels) {
|
||||||
if (stat.statVal == 0 && removeFlatFileUser(stat.name) && !mcMMO.p.getServer().getOfflinePlayer(stat.name).isOnline()) {
|
if (stat.statVal == 0 && !mcMMO.p.getServer().getOfflinePlayer(stat.name).isOnline() && removeFlatFileUser(stat.name)) {
|
||||||
purgedUsers++;
|
purgedUsers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -394,6 +345,24 @@ public final class LeaderboardManager {
|
|||||||
return removedPlayers;
|
return removedPlayers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int[] getPlayerRank(String playerName, List<PlayerStat> statsList) {
|
||||||
|
int currentPos = 1;
|
||||||
|
|
||||||
|
if (statsList == null) {
|
||||||
|
return new int[] {0, 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
for (PlayerStat stat : statsList) {
|
||||||
|
if (stat.name.equalsIgnoreCase(playerName)) {
|
||||||
|
return new int[] {currentPos, stat.statVal};
|
||||||
|
}
|
||||||
|
|
||||||
|
currentPos++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new int[] {0, 0};
|
||||||
|
}
|
||||||
|
|
||||||
private static class SkillComparator implements Comparator<PlayerStat> {
|
private static class SkillComparator implements Comparator<PlayerStat> {
|
||||||
@Override
|
@Override
|
||||||
public int compare(PlayerStat o1, PlayerStat o2) {
|
public int compare(PlayerStat o1, PlayerStat o2) {
|
||||||
|
Loading…
Reference in New Issue
Block a user