XprateCommand.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.gmail.nossr50.commands;
  2. import com.gmail.nossr50.config.AdvancedConfig;
  3. import com.gmail.nossr50.locale.LocaleLoader;
  4. import com.gmail.nossr50.mcMMO;
  5. import com.gmail.nossr50.util.Permissions;
  6. import com.gmail.nossr50.util.StringUtils;
  7. import com.gmail.nossr50.util.commands.CommandUtils;
  8. import com.gmail.nossr50.util.player.NotificationManager;
  9. import com.google.common.collect.ImmutableList;
  10. import org.bukkit.ChatColor;
  11. import org.bukkit.command.Command;
  12. import org.bukkit.command.CommandSender;
  13. import org.bukkit.command.TabExecutor;
  14. import org.bukkit.util.StringUtil;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. public class XprateCommand implements TabExecutor {
  18. private final double ORIGINAL_XP_RATE = mcMMO.getDynamicSettingsManager().getExperienceManager().getGlobalXpMult();
  19. @Override
  20. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  21. switch (args.length) {
  22. case 1:
  23. if (!args[0].equalsIgnoreCase("reset") && !args[0].equalsIgnoreCase("clear")) {
  24. return false;
  25. }
  26. if (!Permissions.xprateReset(sender)) {
  27. sender.sendMessage(command.getPermissionMessage());
  28. return true;
  29. }
  30. if (mcMMO.p.isXPEventEnabled()) {
  31. if (AdvancedConfig.getInstance().useTitlesForXPEvent()) {
  32. NotificationManager.broadcastTitle(mcMMO.p.getServer(),
  33. LocaleLoader.getString("Commands.Event.Stop"),
  34. LocaleLoader.getString("Commands.Event.Stop.Subtitle"),
  35. 10, 10 * 20, 20);
  36. }
  37. mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Stop"));
  38. mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Stop.Subtitle"));
  39. mcMMO.p.toggleXpEventEnabled();
  40. }
  41. mcMMO.getDynamicSettingsManager().getExperienceManager().resetGlobalXpMult();
  42. return true;
  43. case 2:
  44. if (CommandUtils.isInvalidInteger(sender, args[0])) {
  45. return true;
  46. }
  47. if (!Permissions.xprateSet(sender)) {
  48. sender.sendMessage(command.getPermissionMessage());
  49. return true;
  50. }
  51. if (CommandUtils.shouldDisableToggle(args[1])) {
  52. mcMMO.p.setXPEventEnabled(false);
  53. } else if (CommandUtils.shouldEnableToggle(args[1])) {
  54. mcMMO.p.setXPEventEnabled(true);
  55. } else {
  56. return false;
  57. }
  58. int newXpRate = Integer.parseInt(args[0]);
  59. if (newXpRate < 0) {
  60. sender.sendMessage(ChatColor.RED + LocaleLoader.getString("Commands.NegativeNumberWarn"));
  61. return true;
  62. }
  63. mcMMO.getDynamicSettingsManager().getExperienceManager().setGlobalXpMult(newXpRate);
  64. if (mcMMO.p.isXPEventEnabled()) {
  65. if (AdvancedConfig.getInstance().useTitlesForXPEvent()) {
  66. NotificationManager.broadcastTitle(mcMMO.p.getServer(),
  67. LocaleLoader.getString("Commands.Event.Start"),
  68. LocaleLoader.getString("Commands.Event.XP", newXpRate),
  69. 10, 10 * 20, 20);
  70. }
  71. mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Start"));
  72. mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.XP", newXpRate));
  73. } else {
  74. sender.sendMessage(LocaleLoader.getString("Commands.xprate.modified", newXpRate));
  75. }
  76. return true;
  77. default:
  78. return false;
  79. }
  80. }
  81. @Override
  82. public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
  83. switch (args.length) {
  84. case 1:
  85. if (StringUtils.isInt(args[0])) {
  86. return ImmutableList.of();
  87. }
  88. return StringUtil.copyPartialMatches(args[0], CommandUtils.RESET_OPTIONS, new ArrayList<>(CommandUtils.RESET_OPTIONS.size()));
  89. case 2:
  90. return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
  91. default:
  92. return ImmutableList.of();
  93. }
  94. }
  95. }