McconvertCommand.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package com.gmail.nossr50.commands;
  2. import com.gmail.nossr50.commands.database.ConvertDatabaseCommand;
  3. import com.gmail.nossr50.commands.experience.ConvertExperienceCommand;
  4. import com.gmail.nossr50.database.DatabaseManagerFactory;
  5. import com.gmail.nossr50.datatypes.database.DatabaseType;
  6. import com.gmail.nossr50.datatypes.experience.FormulaType;
  7. import com.gmail.nossr50.mcMMO;
  8. import com.google.common.collect.ImmutableList;
  9. import org.bukkit.command.Command;
  10. import org.bukkit.command.CommandExecutor;
  11. import org.bukkit.command.CommandSender;
  12. import org.bukkit.command.TabExecutor;
  13. import org.bukkit.util.StringUtil;
  14. import java.util.ArrayList;
  15. import java.util.Collections;
  16. import java.util.List;
  17. public class McconvertCommand implements TabExecutor {
  18. private static final List<String> FORMULA_TYPES;
  19. private static final List<String> DATABASE_TYPES;
  20. private static final List<String> SUBCOMMANDS = ImmutableList.of("database", "experience");
  21. static {
  22. ArrayList<String> formulaTypes = new ArrayList<>();
  23. ArrayList<String> databaseTypes = new ArrayList<>();
  24. for (FormulaType type : FormulaType.values()) {
  25. formulaTypes.add(type.toString());
  26. }
  27. for (DatabaseType type : DatabaseType.values()) {
  28. databaseTypes.add(type.toString());
  29. }
  30. // Custom stuff
  31. databaseTypes.remove(DatabaseType.CUSTOM.toString());
  32. if (mcMMO.getDatabaseManager().getDatabaseType() == DatabaseType.CUSTOM) {
  33. databaseTypes.add(DatabaseManagerFactory.getCustomDatabaseManagerClass().getName());
  34. }
  35. Collections.sort(formulaTypes);
  36. Collections.sort(databaseTypes);
  37. FORMULA_TYPES = ImmutableList.copyOf(formulaTypes);
  38. DATABASE_TYPES = ImmutableList.copyOf(databaseTypes);
  39. }
  40. private CommandExecutor databaseConvertCommand = new ConvertDatabaseCommand();
  41. private CommandExecutor experienceConvertCommand = new ConvertExperienceCommand();
  42. @Override
  43. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  44. switch (args.length) {
  45. case 2:
  46. if (args[0].equalsIgnoreCase("database") || args[0].equalsIgnoreCase("db")) {
  47. return databaseConvertCommand.onCommand(sender, command, label, args);
  48. } else if (args[0].equalsIgnoreCase("experience") || args[0].equalsIgnoreCase("xp") || args[1].equalsIgnoreCase("exp")) {
  49. return experienceConvertCommand.onCommand(sender, command, label, args);
  50. }
  51. return false;
  52. default:
  53. return false;
  54. }
  55. }
  56. @Override
  57. public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
  58. switch (args.length) {
  59. case 1:
  60. return StringUtil.copyPartialMatches(args[0], SUBCOMMANDS, new ArrayList<>(SUBCOMMANDS.size()));
  61. case 2:
  62. if (args[1].equalsIgnoreCase("database") || args[1].equalsIgnoreCase("db")) {
  63. return StringUtil.copyPartialMatches(args[0], DATABASE_TYPES, new ArrayList<>(DATABASE_TYPES.size()));
  64. }
  65. if (args[1].equalsIgnoreCase("experience") || args[1].equalsIgnoreCase("xp") || args[1].equalsIgnoreCase("exp")) {
  66. return StringUtil.copyPartialMatches(args[0], FORMULA_TYPES, new ArrayList<>(FORMULA_TYPES.size()));
  67. }
  68. return ImmutableList.of();
  69. default:
  70. return ImmutableList.of();
  71. }
  72. }
  73. }