McrankCommand.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.gmail.nossr50.commands.mc;
  2. import org.bukkit.Bukkit;
  3. import org.bukkit.ChatColor;
  4. import org.bukkit.command.Command;
  5. import org.bukkit.command.CommandExecutor;
  6. import org.bukkit.command.CommandSender;
  7. import org.bukkit.entity.Player;
  8. import com.gmail.nossr50.config.Config;
  9. import com.gmail.nossr50.datatypes.SkillType;
  10. import com.gmail.nossr50.locale.LocaleLoader;
  11. import com.gmail.nossr50.runnables.mcRankAsync;
  12. import com.gmail.nossr50.util.Leaderboard;
  13. import com.gmail.nossr50.util.Skills;
  14. public class McrankCommand implements CommandExecutor {
  15. @Override
  16. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  17. if(!Config.getInstance().getUseMySQL())
  18. Leaderboard.updateLeaderboards(); //Make sure the information is up to date
  19. if(sender instanceof Player) {
  20. Player player = (Player) sender;
  21. String playerName;
  22. switch(args.length){
  23. case 0:
  24. playerName = player.getName();
  25. break;
  26. case 1:
  27. playerName = args[0];
  28. break;
  29. default:
  30. return false;
  31. }
  32. if(Config.getInstance().getUseMySQL()) {
  33. sqlDisplay(sender, playerName);
  34. } else {
  35. flatfileDisplay(sender, playerName);
  36. }
  37. } else {
  38. sender.sendMessage("Command currently not supported for console.");
  39. }
  40. return true;
  41. }
  42. public void flatfileDisplay(CommandSender sender, String playerName) {
  43. sender.sendMessage(ChatColor.GOLD + "-=PERSONAL RANKINGS=-");
  44. sender.sendMessage(ChatColor.RED+"TARGET: "+ChatColor.WHITE+playerName);
  45. for (SkillType skillType : SkillType.values()) {
  46. int[] rankInts = Leaderboard.getPlayerRank(playerName, skillType);
  47. if (skillType.equals(SkillType.ALL))
  48. continue; // We want the overall ranking to be at the bottom
  49. if (rankInts[1] == 0) {
  50. 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
  51. } else {
  52. sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", new Object[] {Skills.localizeSkillName(skillType), String.valueOf(rankInts[0])} ));
  53. }
  54. }
  55. //Show the powerlevel ranking
  56. int[] rankInts = Leaderboard.getPlayerRank(playerName, SkillType.ALL);
  57. if (rankInts[1] == 0) {
  58. 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
  59. } else {
  60. sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Skill", new Object[] {Skills.localizeSkillName(SkillType.ALL), String.valueOf(rankInts[0])} ));
  61. }
  62. sender.sendMessage(ChatColor.YELLOW + "Overall" + ChatColor.GREEN + " - " + ChatColor.GOLD + "Rank " + ChatColor.WHITE + "#" + ChatColor.GREEN + Leaderboard.getPlayerRank(playerName, SkillType.ALL));
  63. }
  64. private void sqlDisplay(CommandSender sender, String playerName) {
  65. Bukkit.getScheduler().runTaskAsynchronously(Bukkit.getPluginManager().getPlugin("mcMMO"), new mcRankAsync(playerName, sender));
  66. }
  67. }