LeaderboardsCommandDisplayTask.java 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package com.gmail.nossr50.runnables.commands;
  2. import com.gmail.nossr50.core.MetadataConstants;
  3. import com.gmail.nossr50.datatypes.database.PlayerStat;
  4. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  5. import com.gmail.nossr50.mcMMO;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.command.CommandSender;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.scheduler.BukkitRunnable;
  10. import java.util.List;
  11. /**
  12. * Display the results of {@link LeaderboardsCommandAsyncTask} to the sender.
  13. */
  14. public class LeaderboardsCommandDisplayTask extends BukkitRunnable {
  15. private final mcMMO pluginRef;
  16. private final List<PlayerStat> userStats;
  17. private final CommandSender sender;
  18. private final PrimarySkillType skill;
  19. private final int page;
  20. private final boolean useBoard, useChat;
  21. LeaderboardsCommandDisplayTask(mcMMO pluginRef, List<PlayerStat> userStats, int page, PrimarySkillType skill, CommandSender sender, boolean useBoard, boolean useChat) {
  22. this.pluginRef = pluginRef;
  23. this.userStats = userStats;
  24. this.page = page;
  25. this.skill = skill;
  26. this.sender = sender;
  27. this.useBoard = useBoard;
  28. this.useChat = useChat;
  29. }
  30. @Override
  31. public void run() {
  32. if (useBoard && pluginRef.getScoreboardSettings().getScoreboardsEnabled()) {
  33. displayBoard();
  34. }
  35. if (useChat) {
  36. displayChat();
  37. }
  38. if (sender instanceof Player) {
  39. ((Player) sender).removeMetadata(MetadataConstants.DATABASE_PROCESSING_COMMAND_METAKEY, pluginRef);
  40. }
  41. if (sender instanceof Player)
  42. sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.mctop.Tip"));
  43. }
  44. private void displayChat() {
  45. if (skill == null) {
  46. if (sender instanceof Player) {
  47. sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.PowerLevel.Leaderboard"));
  48. } else {
  49. sender.sendMessage(ChatColor.stripColor(pluginRef.getLocaleManager().getString("Commands.PowerLevel.Leaderboard")));
  50. }
  51. } else {
  52. if (sender instanceof Player) {
  53. sender.sendMessage(pluginRef.getLocaleManager().getString("Commands.Skill.Leaderboard", skill.getName()));
  54. } else {
  55. sender.sendMessage(ChatColor.stripColor(pluginRef.getLocaleManager().getString("Commands.Skill.Leaderboard", skill.getName())));
  56. }
  57. }
  58. int place = (page * 10) - 9;
  59. for (PlayerStat stat : userStats) {
  60. // Format:
  61. // 01. Playername - skill value
  62. // 12. Playername - skill value
  63. if (sender instanceof Player) {
  64. sender.sendMessage(String.format("%2d. %s%s - %s%s", place, ChatColor.GREEN, stat.name, ChatColor.WHITE, stat.statVal));
  65. } else {
  66. sender.sendMessage(String.format("%2d. %s - %s", place, stat.name, stat.statVal));
  67. }
  68. place++;
  69. }
  70. }
  71. private void displayBoard() {
  72. if (skill == null) {
  73. pluginRef.getScoreboardManager().showTopPowerScoreboard((Player) sender, page, userStats);
  74. } else {
  75. pluginRef.getScoreboardManager().showTopScoreboard((Player) sender, skill, page, userStats);
  76. }
  77. }
  78. }