From fd4f0f4096185b2839418c49256e0fd7e5269434 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Wed, 16 Jan 2013 11:58:14 -0800 Subject: [PATCH] mcrank FFS output is now consistent with SQL --- .../nossr50/commands/mc/McrankCommand.java | 22 ++++++++++++++++++- .../com/gmail/nossr50/util/Leaderboard.java | 8 +++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/commands/mc/McrankCommand.java b/src/main/java/com/gmail/nossr50/commands/mc/McrankCommand.java index bce608cb7..cb9902b78 100644 --- a/src/main/java/com/gmail/nossr50/commands/mc/McrankCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/mc/McrankCommand.java @@ -9,9 +9,11 @@ import org.bukkit.entity.Player; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.SkillType; +import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.runnables.mcRankAsync; import com.gmail.nossr50.util.Leaderboard; import com.gmail.nossr50.util.Misc; +import com.gmail.nossr50.util.Skills; public class McrankCommand implements CommandExecutor { @@ -51,10 +53,28 @@ public class McrankCommand implements CommandExecutor { public void flatfileDisplay(CommandSender sender, String playerName) { for (SkillType skillType : SkillType.values()) { + + int[] rankInts = Leaderboard.getPlayerRank(playerName, skillType); + if (skillType.equals(SkillType.ALL)) continue; // We want the overall ranking to be at the bottom - sender.sendMessage(ChatColor.YELLOW + Misc.getCapitalized(skillType.name()) + ChatColor.GREEN + " - " + ChatColor.GOLD + "Rank " + ChatColor.WHITE + "#" + ChatColor.GREEN + Leaderboard.getPlayerRank(playerName, skillType)); + + if (rankInts[1] == 0) { + sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", new Object[] {Skills.localizeSkillName(skillType), LocaleLoader.getString("Commands.mcrank.Unranked")} )); //Don't bother showing ranking for players without skills + } else { + sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", new Object[] {Skills.localizeSkillName(skillType), String.valueOf(rankInts[0])} )); + } } + + //Show the powerlevel ranking + int[] rankInts = Leaderboard.getPlayerRank(playerName, SkillType.ALL); + + if (rankInts[1] == 0) { + sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", new Object[] {Skills.localizeSkillName(SkillType.ALL), LocaleLoader.getString("Commands.mcrank.Unranked")} )); //Don't bother showing ranking for players without skills + } else { + sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", new Object[] {Skills.localizeSkillName(SkillType.ALL), String.valueOf(rankInts[0])} )); + } + sender.sendMessage(ChatColor.YELLOW + "Overall" + ChatColor.GREEN + " - " + ChatColor.GOLD + "Rank " + ChatColor.WHITE + "#" + ChatColor.GREEN + Leaderboard.getPlayerRank(playerName, SkillType.ALL)); } diff --git a/src/main/java/com/gmail/nossr50/util/Leaderboard.java b/src/main/java/com/gmail/nossr50/util/Leaderboard.java index f0f6a75c8..0a8146cfb 100644 --- a/src/main/java/com/gmail/nossr50/util/Leaderboard.java +++ b/src/main/java/com/gmail/nossr50/util/Leaderboard.java @@ -200,23 +200,23 @@ public class Leaderboard { return info; } - public static int getPlayerRank(String playerName, SkillType skillType) { + public static int[] getPlayerRank(String playerName, SkillType skillType) { int currentPos = 1; List statsList = playerStatHash.get(skillType); if(statsList != null) { for(PlayerStat ps : statsList) { if(ps.name.equalsIgnoreCase(playerName)) { - return currentPos; + return new int[] {currentPos, ps.statVal}; } else { currentPos++; continue; } } - return 0; + return new int[] {0}; } else { - return 0; + return new int[] {0}; } }