XprateCommand.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.gmail.nossr50.commands;
  2. import com.gmail.nossr50.config.AdvancedConfig;
  3. import com.gmail.nossr50.config.Config;
  4. import com.gmail.nossr50.config.experience.ExperienceConfig;
  5. import com.gmail.nossr50.locale.LocaleLoader;
  6. import com.gmail.nossr50.mcMMO;
  7. import com.gmail.nossr50.util.Permissions;
  8. import com.gmail.nossr50.util.StringUtils;
  9. import com.gmail.nossr50.util.commands.CommandUtils;
  10. import com.gmail.nossr50.util.player.NotificationManager;
  11. import com.google.common.collect.ImmutableList;
  12. import org.bukkit.Bukkit;
  13. import org.bukkit.ChatColor;
  14. import org.bukkit.command.Command;
  15. import org.bukkit.command.CommandSender;
  16. import org.bukkit.command.TabExecutor;
  17. import org.bukkit.entity.Player;
  18. import org.bukkit.util.StringUtil;
  19. import java.security.Permission;
  20. import java.util.ArrayList;
  21. import java.util.List;
  22. public class XprateCommand implements TabExecutor {
  23. private final double ORIGINAL_XP_RATE = ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier();
  24. @Override
  25. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  26. switch (args.length) {
  27. case 1:
  28. if (!args[0].equalsIgnoreCase("reset") && !args[0].equalsIgnoreCase("clear")) {
  29. return false;
  30. }
  31. if (!Permissions.xprateReset(sender)) {
  32. sender.sendMessage(command.getPermissionMessage());
  33. return true;
  34. }
  35. if (mcMMO.p.isXPEventEnabled()) {
  36. if(AdvancedConfig.getInstance().useTitlesForXPEvent())
  37. {
  38. NotificationManager.broadcastTitle(mcMMO.p.getServer(),
  39. LocaleLoader.getString("Commands.Event.Stop"),
  40. LocaleLoader.getString("Commands.Event.Stop.Subtitle"),
  41. 10, 10*20, 20);
  42. }
  43. if(Config.getInstance().broadcastEventMessages())
  44. {
  45. mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Stop"));
  46. mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Stop.Subtitle"));
  47. }
  48. for(Player player : Bukkit.getServer().getOnlinePlayers())
  49. {
  50. if(player.isOp() || Permissions.adminChat(player))
  51. {
  52. String senderName = LocaleLoader.getString("Server.ConsoleName");
  53. if(sender instanceof Player)
  54. {
  55. senderName = ((Player) sender).getDisplayName();
  56. }
  57. sender.sendMessage(LocaleLoader.getString("XPRate.AdminDetails.End", senderName));
  58. }
  59. }
  60. sender.sendMessage(LocaleLoader.getString("XPRate.End"));
  61. mcMMO.p.toggleXpEventEnabled();
  62. }
  63. ExperienceConfig.getInstance().setExperienceGainsGlobalMultiplier(ORIGINAL_XP_RATE);
  64. return true;
  65. case 2:
  66. if (CommandUtils.isInvalidInteger(sender, args[0])) {
  67. return true;
  68. }
  69. if (!Permissions.xprateSet(sender)) {
  70. sender.sendMessage(command.getPermissionMessage());
  71. return true;
  72. }
  73. if (CommandUtils.shouldDisableToggle(args[1])) {
  74. mcMMO.p.setXPEventEnabled(false);
  75. }
  76. else if (CommandUtils.shouldEnableToggle(args[1])) {
  77. mcMMO.p.setXPEventEnabled(true);
  78. }
  79. else {
  80. return false;
  81. }
  82. int newXpRate = Integer.parseInt(args[0]);
  83. if(newXpRate < 0)
  84. {
  85. sender.sendMessage(ChatColor.RED+LocaleLoader.getString("Commands.NegativeNumberWarn"));
  86. return true;
  87. }
  88. ExperienceConfig.getInstance().setExperienceGainsGlobalMultiplier(newXpRate);
  89. if(AdvancedConfig.getInstance().useTitlesForXPEvent())
  90. {
  91. NotificationManager.broadcastTitle(mcMMO.p.getServer(),
  92. LocaleLoader.getString("Commands.Event.Start"),
  93. LocaleLoader.getString("Commands.Event.XP", newXpRate),
  94. 10, 10*20, 20);
  95. }
  96. if(Config.getInstance().broadcastEventMessages())
  97. {
  98. mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.Start"));
  99. mcMMO.p.getServer().broadcastMessage(LocaleLoader.getString("Commands.Event.XP", newXpRate));
  100. }
  101. for(Player player : Bukkit.getServer().getOnlinePlayers())
  102. {
  103. if(player.isOp() || Permissions.adminChat(player))
  104. {
  105. String senderName = LocaleLoader.getString("Server.ConsoleName");
  106. if(sender instanceof Player)
  107. {
  108. senderName = ((Player) sender).getDisplayName();
  109. }
  110. sender.sendMessage(LocaleLoader.getString("XPRate.AdminDetails.Start", senderName, newXpRate));
  111. }
  112. }
  113. sender.sendMessage(LocaleLoader.getString("XPRate.Modified", newXpRate));
  114. return true;
  115. default:
  116. return false;
  117. }
  118. }
  119. @Override
  120. public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
  121. switch (args.length) {
  122. case 1:
  123. if (StringUtils.isInt(args[0])) {
  124. return ImmutableList.of();
  125. }
  126. return StringUtil.copyPartialMatches(args[0], CommandUtils.RESET_OPTIONS, new ArrayList<String>(CommandUtils.RESET_OPTIONS.size()));
  127. case 2:
  128. return StringUtil.copyPartialMatches(args[1], CommandUtils.TRUE_FALSE_OPTIONS, new ArrayList<String>(CommandUtils.TRUE_FALSE_OPTIONS.size()));
  129. default:
  130. return ImmutableList.of();
  131. }
  132. }
  133. }