MmoInfoCommand.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  3. import com.gmail.nossr50.datatypes.skills.SubSkillType;
  4. import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
  5. import com.gmail.nossr50.listeners.InteractionManager;
  6. import com.gmail.nossr50.mcMMO;
  7. import com.gmail.nossr50.util.Permissions;
  8. import com.gmail.nossr50.util.TextComponentFactory;
  9. import com.google.common.collect.ImmutableList;
  10. import org.bukkit.command.Command;
  11. import org.bukkit.command.CommandSender;
  12. import org.bukkit.command.TabExecutor;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.util.StringUtil;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. /**
  18. * This is the command that retrieves data about skills from in-game sources
  19. */
  20. public class MmoInfoCommand implements TabExecutor {
  21. private final mcMMO pluginRef;
  22. public MmoInfoCommand(mcMMO pluginRef) {
  23. this.pluginRef = pluginRef;
  24. }
  25. @Override
  26. public boolean onCommand(CommandSender commandSender, Command command, String s, String[] args) {
  27. /*
  28. * Only allow players to use this command
  29. */
  30. if (commandSender instanceof Player) {
  31. if (args.length < 1)
  32. return false;
  33. Player player = (Player) commandSender;
  34. if (Permissions.mmoinfo(player)) {
  35. if (args == null || args[0] == null)
  36. return false;
  37. if (args[0].equalsIgnoreCase("???")) {
  38. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.Header"));
  39. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.SubSkillHeader", "???"));
  40. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.DetailsHeader"));
  41. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.Mystery"));
  42. return true;
  43. } else if (InteractionManager.getAbstractByName(args[0]) != null || PrimarySkillType.SUBSKILL_NAMES.contains(args[0])) {
  44. displayInfo(player, args[0]);
  45. return true;
  46. }
  47. //Not a real skill
  48. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.NoMatch"));
  49. return true;
  50. }
  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], PrimarySkillType.SUBSKILL_NAMES, new ArrayList<>(PrimarySkillType.SUBSKILL_NAMES.size()));
  59. default:
  60. return ImmutableList.of();
  61. }
  62. }
  63. private void displayInfo(Player player, String subSkillName) {
  64. //Check to see if the skill exists in the new system
  65. AbstractSubSkill abstractSubSkill = InteractionManager.getAbstractByName(subSkillName);
  66. if (abstractSubSkill != null) {
  67. /* New System Skills are programmable */
  68. abstractSubSkill.printInfo(player);
  69. //pluginRef.getTextComponentFactory().sendPlayerUrlHeader(player);
  70. } else {
  71. /*
  72. * Skill is only in the old system
  73. */
  74. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.Header"));
  75. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.SubSkillHeader", subSkillName));
  76. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.DetailsHeader"));
  77. player.sendMessage(pluginRef.getLocaleManager().getString("Commands.MmoInfo.OldSkill"));
  78. }
  79. for (SubSkillType subSkillType : SubSkillType.values()) {
  80. if (subSkillType.getNiceNameNoSpaces(subSkillType).equalsIgnoreCase(subSkillName))
  81. subSkillName = subSkillType.getWikiName(subSkillType.toString());
  82. }
  83. //Send Player Wiki Link
  84. pluginRef.getTextComponentFactory().sendPlayerSubSkillWikiLink(player, subSkillName);
  85. }
  86. }