XPBarCommand.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. package com.gmail.nossr50.commands.player;
  2. import com.neetgames.mcmmo.player.OnlineMMOPlayer;
  3. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  4. import com.gmail.nossr50.util.experience.MMOExperienceBarManager;
  5. import com.gmail.nossr50.util.player.NotificationManager;
  6. import com.gmail.nossr50.util.skills.SkillUtils;
  7. import com.gmail.nossr50.util.text.StringUtils;
  8. import com.google.common.collect.ImmutableList;
  9. import org.bukkit.command.Command;
  10. import org.bukkit.command.CommandSender;
  11. import org.bukkit.command.TabExecutor;
  12. import org.bukkit.entity.Player;
  13. import org.bukkit.util.StringUtil;
  14. import org.jetbrains.annotations.NotNull;
  15. import org.jetbrains.annotations.Nullable;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. public class XPBarCommand implements TabExecutor {
  19. @Override
  20. public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
  21. if(sender instanceof Player) {
  22. OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().getPlayer((Player) sender);
  23. if(mmoPlayer == null) {
  24. NotificationManager.sendPlayerInformationChatOnlyPrefixed(Misc.adaptPlayer(mmoPlayer), "Profile.PendingLoad");
  25. return false;
  26. }
  27. if(args.length == 0) {
  28. return false;
  29. } else if(args.length < 2) {
  30. String option = args[0];
  31. if(option.equalsIgnoreCase(SkillBossBarSetting.RESET.toString())) {
  32. mmoPlayer.getExperienceBarManager().xpBarSettingToggle(SkillBossBarSetting.RESET, null);
  33. return true;
  34. } else if(option.equalsIgnoreCase(SkillBossBarSetting.DISABLE.toString())) {
  35. mmoPlayer.getExperienceBarManager().disableAllBars();
  36. return true;
  37. } else {
  38. return false;
  39. }
  40. //Per skill Settings path
  41. } else if (args.length == 2) {
  42. String skillName = args[1];
  43. if(SkillUtils.isSkill(skillName)) {
  44. PrimarySkillType targetSkill = PrimarySkillType.getSkill(skillName);
  45. //Target setting
  46. String option = args[0].toLowerCase();
  47. SkillBossBarSetting settingTarget = getSettingTarget(option);
  48. if(settingTarget != null && settingTarget != SkillBossBarSetting.RESET) {
  49. //Change setting
  50. mmoPlayer.getExperienceBarManager().xpBarSettingToggle(settingTarget, targetSkill);
  51. return true;
  52. } else {
  53. return false;
  54. }
  55. } else {
  56. return false;
  57. }
  58. } else {
  59. return false;
  60. }
  61. } else {
  62. return false;
  63. }
  64. }
  65. private @Nullable SkillBossBarSetting getSettingTarget(String string) {
  66. switch (string.toLowerCase()) {
  67. case "hide":
  68. return SkillBossBarSetting.HIDE;
  69. case "show":
  70. return SkillBossBarSetting.SHOW;
  71. case "reset":
  72. return SkillBossBarSetting.RESET;
  73. case "disable":
  74. return SkillBossBarSetting.DISABLE;
  75. }
  76. return null;
  77. }
  78. @Override
  79. public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, String[] args) {
  80. switch (args.length) {
  81. case 1:
  82. List<String> options = new ArrayList<>();
  83. for(SkillBossBarSetting settingTarget : SkillBossBarSetting.values()) {
  84. options.add(StringUtils.getCapitalized(settingTarget.toString()));
  85. }
  86. return StringUtil.copyPartialMatches(args[0], options, new ArrayList<>(SkillBossBarSetting.values().length));
  87. case 2:
  88. if(!args[0].equalsIgnoreCase(SkillBossBarSetting.RESET.toString()))
  89. return StringUtil.copyPartialMatches(args[1], PrimarySkillType.SKILL_NAMES, new ArrayList<>(PrimarySkillType.SKILL_NAMES.size()));
  90. default:
  91. return ImmutableList.of();
  92. }
  93. }
  94. }