Skip to content

Commit

Permalink
Fixing recursion errors by switching from an unnecessary btree to a s…
Browse files Browse the repository at this point in the history
…imple ArrayList.
  • Loading branch information
Glitchfinder committed Jan 1, 2013
1 parent 0e853d4 commit d333347
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 146 deletions.
7 changes: 7 additions & 0 deletions src/main/java/com/gmail/nossr50/datatypes/PlayerStat.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,11 @@
public class PlayerStat {
public String name;
public int statVal = 0;

public PlayerStat() {};

public PlayerStat(String name, int value) {
this.name = name;
this.statVal = value;
}
}
50 changes: 0 additions & 50 deletions src/main/java/com/gmail/nossr50/datatypes/Tree.java

This file was deleted.

50 changes: 0 additions & 50 deletions src/main/java/com/gmail/nossr50/datatypes/TreeNode.java

This file was deleted.

6 changes: 3 additions & 3 deletions src/main/java/com/gmail/nossr50/skills/repair/Repair.java
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ protected static void addEnchants(Player player, ItemStack is) {
is.removeEnchantment(x);
}
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Lost"));
clearEnchantTag(is, player);
clearEnchantTag(is);
return;
}

Expand Down Expand Up @@ -143,7 +143,7 @@ protected static void addEnchants(Player player, ItemStack is) {

if (newEnchants.isEmpty()) {
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Fail"));
clearEnchantTag(is, player);
clearEnchantTag(is);
}
else if (downgraded || newEnchants.size() < enchants.size()) {
player.sendMessage(LocaleLoader.getString("Repair.Arcane.Downgrade"));
Expand All @@ -153,7 +153,7 @@ else if (downgraded || newEnchants.size() < enchants.size()) {
}
}

private static void clearEnchantTag(ItemStack is, Player player) {
private static void clearEnchantTag(ItemStack is) {
Object o;
Class c;
Field f;
Expand Down
111 changes: 68 additions & 43 deletions src/main/java/com/gmail/nossr50/util/Leaderboard.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;
import com.gmail.nossr50.datatypes.PlayerStat;
import com.gmail.nossr50.datatypes.SkillType;
import com.gmail.nossr50.datatypes.Tree;

public class Leaderboard {
private static mcMMO plugin = mcMMO.p;
Expand All @@ -22,22 +24,22 @@ public class Leaderboard {
* Create the leaderboards.
*/
public static void makeLeaderboards() {
//Make Trees
Tree Mining = new Tree();
Tree WoodCutting = new Tree();
Tree Herbalism = new Tree();
Tree Excavation = new Tree();
Tree Acrobatics = new Tree();
Tree Repair = new Tree();
Tree Swords = new Tree();
Tree Axes = new Tree();
Tree Archery = new Tree();
Tree Unarmed = new Tree();
Tree Taming = new Tree();
Tree Fishing = new Tree();
Tree PowerLevel = new Tree();

//Add Data To Trees
//Make Lists
List<PlayerStat> Mining = new ArrayList<PlayerStat>();
List<PlayerStat> WoodCutting = new ArrayList<PlayerStat>();
List<PlayerStat> Herbalism = new ArrayList<PlayerStat>();
List<PlayerStat> Excavation = new ArrayList<PlayerStat>();
List<PlayerStat> Acrobatics = new ArrayList<PlayerStat>();
List<PlayerStat> Repair = new ArrayList<PlayerStat>();
List<PlayerStat> Swords = new ArrayList<PlayerStat>();
List<PlayerStat> Axes = new ArrayList<PlayerStat>();
List<PlayerStat> Archery = new ArrayList<PlayerStat>();
List<PlayerStat> Unarmed = new ArrayList<PlayerStat>();
List<PlayerStat> Taming = new ArrayList<PlayerStat>();
List<PlayerStat> Fishing = new ArrayList<PlayerStat>();
List<PlayerStat> PowerLevel = new ArrayList<PlayerStat>();

//Add Data To Lists
try {
FileReader file = new FileReader(location);
BufferedReader in = new BufferedReader(file);
Expand All @@ -58,87 +60,104 @@ public static void makeLeaderboards() {
}

if (character.length > 1 && Misc.isInt(character[1])) {
Mining.add(p, Integer.valueOf(character[1]));
Mining.add(new PlayerStat(p, Integer.valueOf(character[1])));
powerLevel += Integer.valueOf(character[1]);
}

if (character.length > 5 && Misc.isInt(character[5])) {
WoodCutting.add(p, Integer.valueOf(character[5]));
WoodCutting.add(new PlayerStat(p, Integer.valueOf(character[5])));
powerLevel += Integer.valueOf(character[5]);
}

if (character.length > 7 && Misc.isInt(character[7])) {
Repair.add(p, Integer.valueOf(character[7]));
Repair.add(new PlayerStat(p, Integer.valueOf(character[7])));
powerLevel += Integer.valueOf(character[7]);
}

if (character.length > 8 && Misc.isInt(character[8])) {
Unarmed.add(p, Integer.valueOf(character[8]));
Unarmed.add(new PlayerStat(p, Integer.valueOf(character[8])));
powerLevel += Integer.valueOf(character[8]);
}

if (character.length > 9 && Misc.isInt(character[9])) {
Herbalism.add(p, Integer.valueOf(character[9]));
Herbalism.add(new PlayerStat(p, Integer.valueOf(character[9])));
powerLevel += Integer.valueOf(character[9]);
}

if (character.length > 10 && Misc.isInt(character[10])) {
Excavation.add(p, Integer.valueOf(character[10]));
Excavation.add(new PlayerStat(p, Integer.valueOf(character[10])));
powerLevel += Integer.valueOf(character[10]);
}

if (character.length > 11 && Misc.isInt(character[11])) {
Archery.add(p, Integer.valueOf(character[11]));
Archery.add(new PlayerStat(p, Integer.valueOf(character[11])));
powerLevel += Integer.valueOf(character[11]);
}

if (character.length > 12 && Misc.isInt(character[12])) {
Swords.add(p, Integer.valueOf(character[12]));
Swords.add(new PlayerStat(p, Integer.valueOf(character[12])));
powerLevel += Integer.valueOf(character[12]);
}

if (character.length > 13 && Misc.isInt(character[13])) {
Axes.add(p, Integer.valueOf(character[13]));
Axes.add(new PlayerStat(p, Integer.valueOf(character[13])));
powerLevel += Integer.valueOf(character[13]);
}

if (character.length > 14 && Misc.isInt(character[14])) {
Acrobatics.add(p, Integer.valueOf(character[14]));
Acrobatics.add(new PlayerStat(p, Integer.valueOf(character[14])));
powerLevel += Integer.valueOf(character[14]);
}

if (character.length > 24 && Misc.isInt(character[24])) {
Taming.add(p, Integer.valueOf(character[24]));
Taming.add(new PlayerStat(p, Integer.valueOf(character[24])));
powerLevel += Integer.valueOf(character[24]);
}

if (character.length > 34 && Misc.isInt(character[34])) {
Fishing.add(p, Integer.valueOf(character[34]));
Fishing.add(new PlayerStat(p, Integer.valueOf(character[34])));
powerLevel += Integer.valueOf(character[34]);
}

PowerLevel.add(p, powerLevel);
PowerLevel.add(new PlayerStat(p, powerLevel));
}
in.close();
}
catch (Exception e) {
plugin.getLogger().severe(("Exception while reading " + location + " (Are you sure you formatted it correctly?)" + e.toString()));
}

//Sort the leader boards
SkillComparator c = new SkillComparator();
Collections.sort(Mining, c);
Collections.sort(WoodCutting, c);
Collections.sort(Repair, c);
Collections.sort(Unarmed, c);
Collections.sort(Herbalism, c);
Collections.sort(Excavation, c);
Collections.sort(Archery, c);
Collections.sort(Swords, c);
Collections.sort(Axes, c);
Collections.sort(Acrobatics, c);
Collections.sort(Taming, c);
Collections.sort(Fishing, c);
Collections.sort(PowerLevel, c);

//Write the leader board files
leaderWrite(Mining.inOrder(), SkillType.MINING);
leaderWrite(WoodCutting.inOrder(), SkillType.WOODCUTTING);
leaderWrite(Repair.inOrder(), SkillType.REPAIR);
leaderWrite(Unarmed.inOrder(), SkillType.UNARMED);
leaderWrite(Herbalism.inOrder(), SkillType.HERBALISM);
leaderWrite(Excavation.inOrder(), SkillType.EXCAVATION);
leaderWrite(Archery.inOrder(), SkillType.ARCHERY);
leaderWrite(Swords.inOrder(), SkillType.SWORDS);
leaderWrite(Axes.inOrder(), SkillType.AXES);
leaderWrite(Acrobatics.inOrder(), SkillType.ACROBATICS);
leaderWrite(Taming.inOrder(), SkillType.TAMING);
leaderWrite(Fishing.inOrder(), SkillType.FISHING);
leaderWrite(PowerLevel.inOrder(), SkillType.ALL);
PlayerStat[] a = new PlayerStat[1];
leaderWrite(Mining.toArray(a), SkillType.MINING);
leaderWrite(WoodCutting.toArray(a), SkillType.WOODCUTTING);
leaderWrite(Repair.toArray(a), SkillType.REPAIR);
leaderWrite(Unarmed.toArray(a), SkillType.UNARMED);
leaderWrite(Herbalism.toArray(a), SkillType.HERBALISM);
leaderWrite(Excavation.toArray(a), SkillType.EXCAVATION);
leaderWrite(Archery.toArray(a), SkillType.ARCHERY);
leaderWrite(Swords.toArray(a), SkillType.SWORDS);
leaderWrite(Axes.toArray(a), SkillType.AXES);
leaderWrite(Acrobatics.toArray(a), SkillType.ACROBATICS);
leaderWrite(Taming.toArray(a), SkillType.TAMING);
leaderWrite(Fishing.toArray(a), SkillType.FISHING);
leaderWrite(PowerLevel.toArray(a), SkillType.ALL);
}

/**
Expand Down Expand Up @@ -298,4 +317,10 @@ public static void updateLeaderboard(PlayerStat ps, SkillType skillType) {
plugin.getLogger().severe("Exception while writing to " + theLocation + " (Are you sure you formatted it correctly?)" + e.toString());
}
}
private static class SkillComparator implements Comparator<PlayerStat> {
@Override
public int compare(PlayerStat o1, PlayerStat o2) {
return (o2.statVal - o1.statVal);
}
}
}

0 comments on commit d333347

Please sign in to comment.