McconvertCommand.java 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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 org.jetbrains.annotations.NotNull;
  15. import java.util.ArrayList;
  16. import java.util.Collections;
  17. import java.util.List;
  18. public class McconvertCommand implements TabExecutor {
  19. private static final List<String> FORMULA_TYPES;
  20. private static final List<String> DATABASE_TYPES;
  21. private static final List<String> SUBCOMMANDS = ImmutableList.of("database", "experience");
  22. private final CommandExecutor databaseConvertCommand = new ConvertDatabaseCommand();
  23. private final CommandExecutor experienceConvertCommand = new ConvertExperienceCommand();
  24. static {
  25. ArrayList<String> formulaTypes = new ArrayList<>();
  26. ArrayList<String> databaseTypes = new ArrayList<>();
  27. for (FormulaType type : FormulaType.values()) {
  28. formulaTypes.add(type.toString());
  29. }
  30. for (DatabaseType type : DatabaseType.values()) {
  31. databaseTypes.add(type.toString());
  32. }
  33. // Custom stuff
  34. databaseTypes.remove(DatabaseType.CUSTOM.toString());
  35. if (mcMMO.getDatabaseManager().getDatabaseType() == DatabaseType.CUSTOM) {
  36. databaseTypes.add(DatabaseManagerFactory.getCustomDatabaseManagerClass().getName());
  37. }
  38. Collections.sort(formulaTypes);
  39. Collections.sort(databaseTypes);
  40. FORMULA_TYPES = ImmutableList.copyOf(formulaTypes);
  41. DATABASE_TYPES = ImmutableList.copyOf(databaseTypes);
  42. }
  43. @Override
  44. public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
  45. if (args.length == 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. }
  53. return false;
  54. }
  55. @Override
  56. public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
  57. switch (args.length) {
  58. case 1:
  59. return StringUtil.copyPartialMatches(args[0], SUBCOMMANDS, new ArrayList<>(SUBCOMMANDS.size()));
  60. case 2:
  61. if (args[0].equalsIgnoreCase("database") || args[0].equalsIgnoreCase("db")) {
  62. return StringUtil.copyPartialMatches(args[0], DATABASE_TYPES, new ArrayList<>(DATABASE_TYPES.size()));
  63. }
  64. if (args[0].equalsIgnoreCase("experience") || args[0].equalsIgnoreCase("xp") || args[0].equalsIgnoreCase("exp")) {
  65. return StringUtil.copyPartialMatches(args[0], FORMULA_TYPES, new ArrayList<>(FORMULA_TYPES.size()));
  66. }
  67. return ImmutableList.of();
  68. default:
  69. return ImmutableList.of();
  70. }
  71. }
  72. }