MctopCommand.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. package com.gmail.nossr50.commands.mc;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import org.bukkit.ChatColor;
  5. import org.bukkit.command.Command;
  6. import org.bukkit.command.CommandExecutor;
  7. import org.bukkit.command.CommandSender;
  8. import com.gmail.nossr50.mcMMO;
  9. import com.gmail.nossr50.config.LoadProperties;
  10. import com.gmail.nossr50.datatypes.SkillType;
  11. import com.gmail.nossr50.locale.mcLocale;
  12. import com.gmail.nossr50.util.Leaderboard;
  13. import com.gmail.nossr50.util.Skills;
  14. import com.gmail.nossr50.util.m;
  15. public class MctopCommand implements CommandExecutor {
  16. @Override
  17. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  18. if (LoadProperties.useMySQL == false) {
  19. /*
  20. * POWER LEVEL INFO RETRIEVAL
  21. */
  22. if (args.length == 0) {
  23. int p = 1;
  24. String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p);
  25. sender.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
  26. int n = 1 * p; // Position
  27. for (String x : info) {
  28. if (x != null) {
  29. String digit = String.valueOf(n);
  30. if (n < 10)
  31. digit = "0" + String.valueOf(n);
  32. String[] splitx = x.split(":");
  33. // Format: 1. Playername - skill value
  34. sender.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
  35. n++;
  36. }
  37. }
  38. }
  39. if (args.length >= 1 && m.isInt(args[0])) {
  40. int p = 1;
  41. // Grab page value if specified
  42. if (args.length >= 1) {
  43. if (m.isInt(args[0])) {
  44. p = Integer.valueOf(args[0]);
  45. }
  46. }
  47. int pt = p;
  48. if (p > 1) {
  49. pt -= 1;
  50. pt += (pt * 10);
  51. pt = 10;
  52. }
  53. String[] info = Leaderboard.retrieveInfo(SkillType.ALL.toString(), p);
  54. sender.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
  55. int n = 1 * pt; // Position
  56. for (String x : info) {
  57. if (x != null) {
  58. String digit = String.valueOf(n);
  59. if (n < 10)
  60. digit = "0" + String.valueOf(n);
  61. String[] splitx = x.split(":");
  62. // Format: 1. Playername - skill value
  63. sender.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
  64. n++;
  65. }
  66. }
  67. }
  68. /*
  69. * SKILL SPECIFIED INFO RETRIEVAL
  70. */
  71. if (args.length >= 1 && Skills.isSkill(args[0])) {
  72. int p = 1;
  73. // Grab page value if specified
  74. if (args.length >= 2) {
  75. if (m.isInt(args[1])) {
  76. p = Integer.valueOf(args[1]);
  77. }
  78. }
  79. int pt = p;
  80. if (p > 1) {
  81. pt -= 1;
  82. pt += (pt * 10);
  83. pt = 10;
  84. }
  85. String firstLetter = args[0].substring(0, 1); // Get first letter
  86. String remainder = args[0].substring(1); // Get remainder of word.
  87. String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
  88. String[] info = Leaderboard.retrieveInfo(args[0].toUpperCase(), p);
  89. sender.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] { capitalized }));
  90. int n = 1 * pt; // Position
  91. for (String x : info) {
  92. if (x != null) {
  93. String digit = String.valueOf(n);
  94. if (n < 10)
  95. digit = "0" + String.valueOf(n);
  96. String[] splitx = x.split(":");
  97. // Format: 1. Playername - skill value
  98. sender.sendMessage(digit + ". " + ChatColor.GREEN + splitx[1] + " - " + ChatColor.WHITE + splitx[0]);
  99. n++;
  100. }
  101. }
  102. }
  103. } else {
  104. /*
  105. * MYSQL LEADERBOARDS
  106. */
  107. String powerlevel = "taming+mining+woodcutting+repair+unarmed+herbalism+excavation+archery+swords+axes+acrobatics+fishing";
  108. if (args.length >= 1 && Skills.isSkill(args[0])) {
  109. /*
  110. * Create a nice consistent capitalized leaderboard name
  111. */
  112. String lowercase = args[0].toLowerCase(); // For the query
  113. String firstLetter = args[0].substring(0, 1); // Get first letter
  114. String remainder = args[0].substring(1); // Get remainder of word.
  115. String capitalized = firstLetter.toUpperCase() + remainder.toLowerCase();
  116. sender.sendMessage(mcLocale.getString("mcPlayerListener.SkillLeaderboard", new Object[] { capitalized }));
  117. if (args.length >= 2 && m.isInt(args[1])) {
  118. int n = 1; // For the page number
  119. int n2 = Integer.valueOf(args[1]);
  120. if (n2 > 1) {
  121. // Figure out the 'page' here
  122. n = 10;
  123. n = n * (n2 - 1);
  124. }
  125. // If a page number is specified
  126. HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.read("SELECT " + lowercase + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + lowercase + " > 0 ORDER BY `" + LoadProperties.MySQLtablePrefix + "skills`.`" + lowercase + "` DESC ");
  127. for (int i = n; i <= n + 10; i++) {
  128. if (i > userslist.size() || mcMMO.database.read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
  129. break;
  130. HashMap<Integer, ArrayList<String>> username = mcMMO.database.read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
  131. sender.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
  132. }
  133. return true;
  134. }
  135. // If no page number is specified
  136. HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.read("SELECT " + lowercase + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + lowercase + " > 0 ORDER BY `" + LoadProperties.MySQLtablePrefix + "skills`.`" + lowercase + "` DESC ");
  137. for (int i = 1; i <= 10; i++) { // i<=userslist.size()
  138. if (i > userslist.size() || mcMMO.database.read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
  139. break;
  140. HashMap<Integer, ArrayList<String>> username = mcMMO.database.read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
  141. sender.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
  142. }
  143. return true;
  144. }
  145. if (args.length >= 0) {
  146. sender.sendMessage(mcLocale.getString("mcPlayerListener.PowerLevelLeaderboard"));
  147. if (args.length >= 1 && m.isInt(args[0])) {
  148. int n = 1; // For the page number
  149. int n2 = Integer.valueOf(args[0]);
  150. if (n2 > 1) {
  151. // Figure out the 'page' here
  152. n = 10;
  153. n = n * (n2 - 1);
  154. }
  155. // If a page number is specified
  156. HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.read("SELECT " + powerlevel + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + powerlevel + " > 0 ORDER BY " + powerlevel + " DESC ");
  157. for (int i = n; i <= n + 10; i++) {
  158. if (i > userslist.size() || mcMMO.database.read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
  159. break;
  160. HashMap<Integer, ArrayList<String>> username = mcMMO.database.read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
  161. sender.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
  162. }
  163. return true;
  164. }
  165. HashMap<Integer, ArrayList<String>> userslist = mcMMO.database.read("SELECT " + powerlevel + ", user_id FROM " + LoadProperties.MySQLtablePrefix + "skills WHERE " + powerlevel + " > 0 ORDER BY " + powerlevel + " DESC ");
  166. for (int i = 1; i <= 10; i++) {
  167. if (i > userslist.size() || mcMMO.database.read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'") == null)
  168. break;
  169. HashMap<Integer, ArrayList<String>> username = mcMMO.database.read("SELECT user FROM " + LoadProperties.MySQLtablePrefix + "users WHERE id = '" + Integer.valueOf(userslist.get(i).get(1)) + "'");
  170. sender.sendMessage(String.valueOf(i) + ". " + ChatColor.GREEN + userslist.get(i).get(0) + " - " + ChatColor.WHITE + username.get(1).get(0));
  171. // System.out.println(username.get(1).get(0));
  172. // System.out.println("Mining : " + userslist.get(i).get(0) + ", User id : " + userslist.get(i).get(1));
  173. }
  174. }
  175. }
  176. return true;
  177. }
  178. }