McrankCommand.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.gmail.nossr50.commands.player;
  2. import org.bukkit.Bukkit;
  3. import org.bukkit.command.Command;
  4. import org.bukkit.command.CommandExecutor;
  5. import org.bukkit.command.CommandSender;
  6. import org.bukkit.entity.Player;
  7. import com.gmail.nossr50.commands.CommandHelper;
  8. import com.gmail.nossr50.config.Config;
  9. import com.gmail.nossr50.locale.LocaleLoader;
  10. import com.gmail.nossr50.runnables.McRankAsync;
  11. import com.gmail.nossr50.skills.utilities.SkillTools;
  12. import com.gmail.nossr50.skills.utilities.SkillType;
  13. import com.gmail.nossr50.util.Leaderboard;
  14. public class McrankCommand implements CommandExecutor {
  15. @Override
  16. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  17. //TODO: Better input handling, add usage string
  18. if (!Config.getInstance().getUseMySQL()) {
  19. Leaderboard.updateLeaderboards(); //Make sure the information is up to date
  20. }
  21. if (CommandHelper.noConsoleUsage(sender)) {
  22. return true;
  23. }
  24. Player player = (Player) sender;
  25. String playerName;
  26. switch (args.length) {
  27. case 0:
  28. playerName = player.getName();
  29. break;
  30. case 1:
  31. playerName = args[0];
  32. break;
  33. default:
  34. return false;
  35. }
  36. if (Config.getInstance().getUseMySQL()) {
  37. sqlDisplay(sender, playerName);
  38. }
  39. else {
  40. flatfileDisplay(sender, playerName);
  41. }
  42. return true;
  43. }
  44. public void flatfileDisplay(CommandSender sender, String playerName) {
  45. sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Heading"));
  46. sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Player", new Object[] {playerName}));
  47. for (SkillType skillType : SkillType.values()) {
  48. int[] rankInts = Leaderboard.getPlayerRank(playerName, skillType);
  49. if (skillType.isChildSkill()) {
  50. continue;
  51. }
  52. if (skillType.equals(SkillType.ALL)) {
  53. continue; // We want the overall ranking to be at the bottom
  54. }
  55. if (rankInts[1] == 0) {
  56. sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", new Object[] {SkillTools.localizeSkillName(skillType), LocaleLoader.getString("Commands.mcrank.Unranked")} )); //Don't bother showing ranking for players without skills
  57. }
  58. else {
  59. sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", new Object[] {SkillTools.localizeSkillName(skillType), String.valueOf(rankInts[0])} ));
  60. }
  61. }
  62. //Show the powerlevel ranking
  63. int[] rankInts = Leaderboard.getPlayerRank(playerName, SkillType.ALL);
  64. if (rankInts[1] == 0) {
  65. sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Overalll", new Object[] {LocaleLoader.getString("Commands.mcrank.Unranked")} )); //Don't bother showing ranking for players without skills
  66. }
  67. else {
  68. sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Overall", new Object[] {String.valueOf(rankInts[0])} ));
  69. }
  70. }
  71. private void sqlDisplay(CommandSender sender, String playerName) {
  72. Bukkit.getScheduler().runTaskAsynchronously(Bukkit.getPluginManager().getPlugin("mcMMO"), new McRankAsync(playerName, sender));
  73. }
  74. }