McconvertCommand.java 3.5 KB

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