PCommand.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.gmail.nossr50.party.commands;
  2. import org.bukkit.command.Command;
  3. import org.bukkit.command.CommandExecutor;
  4. import org.bukkit.command.CommandSender;
  5. import org.bukkit.entity.Player;
  6. import com.gmail.nossr50.mcMMO;
  7. import com.gmail.nossr50.commands.CommandHelper;
  8. import com.gmail.nossr50.datatypes.PlayerProfile;
  9. import com.gmail.nossr50.events.chat.McMMOPartyChatEvent;
  10. import com.gmail.nossr50.locale.LocaleLoader;
  11. import com.gmail.nossr50.party.Party;
  12. import com.gmail.nossr50.party.PartyManager;
  13. import com.gmail.nossr50.util.Users;
  14. public class PCommand implements CommandExecutor {
  15. private final mcMMO plugin;
  16. public PCommand (mcMMO plugin) {
  17. this.plugin = plugin;
  18. }
  19. @Override
  20. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  21. PlayerProfile profile;
  22. String usage = LocaleLoader.getString("Commands.Usage.2", new Object[] {"p", "<" + LocaleLoader.getString("Commands.Usage.PartyName") + ">", "<" + LocaleLoader.getString("Commands.Usage.Message") + ">"});
  23. if (CommandHelper.noCommandPermissions(sender, "mcmmo.commands.party")) {
  24. return true;
  25. }
  26. switch (args.length) {
  27. case 0:
  28. if (sender instanceof Player) {
  29. profile = Users.getProfile((Player) sender);
  30. if (profile.getAdminChatMode()) {
  31. profile.toggleAdminChat();
  32. }
  33. profile.togglePartyChat();
  34. if (profile.getPartyChatMode()) {
  35. sender.sendMessage(LocaleLoader.getString("Commands.Party.Chat.On"));
  36. }
  37. else {
  38. sender.sendMessage(LocaleLoader.getString("Commands.Party.Chat.Off"));
  39. }
  40. }
  41. else {
  42. sender.sendMessage(usage);
  43. }
  44. return true;
  45. default:
  46. if (sender instanceof Player) {
  47. Player player = (Player) sender;
  48. Party party = Users.getProfile(player).getParty();
  49. if (party == null) {
  50. player.sendMessage(LocaleLoader.getString("Commands.Party.None"));
  51. return true;
  52. }
  53. StringBuilder builder = new StringBuilder();
  54. builder.append(args[0]);
  55. for (int i = 1; i < args.length; i++) {
  56. builder.append(" ");
  57. builder.append(args[i]);
  58. }
  59. String message = builder.toString();
  60. McMMOPartyChatEvent chatEvent = new McMMOPartyChatEvent(plugin, player.getName(), party.getName(), message);
  61. plugin.getServer().getPluginManager().callEvent(chatEvent);
  62. if (chatEvent.isCancelled()) {
  63. return true;
  64. }
  65. message = chatEvent.getMessage();
  66. String prefix = LocaleLoader.getString("Commands.Party.Chat.Prefix", new Object[] {player.getName()} );
  67. plugin.getLogger().info("[P](" + party.getName() + ")" + "<" + player.getName() + "> " + message);
  68. for (Player member : party.getOnlineMembers()) {
  69. member.sendMessage(prefix + message);
  70. }
  71. }
  72. else {
  73. if (args.length < 2) {
  74. sender.sendMessage(usage);
  75. return true;
  76. }
  77. if (!PartyManager.isParty(args[0])) {
  78. sender.sendMessage(LocaleLoader.getString("Party.InvalidName"));
  79. return true;
  80. }
  81. StringBuilder builder = new StringBuilder();
  82. builder.append(args[1]);
  83. for (int i = 2; i < args.length; i++) {
  84. builder.append(" ");
  85. builder.append(args[i]);
  86. }
  87. String message = builder.toString();
  88. McMMOPartyChatEvent chatEvent = new McMMOPartyChatEvent(plugin, "Console", args[0], message);
  89. plugin.getServer().getPluginManager().callEvent(chatEvent);
  90. if (chatEvent.isCancelled()) {
  91. return true;
  92. }
  93. message = chatEvent.getMessage();
  94. String prefix = LocaleLoader.getString("Commands.Party.Chat.Prefix", new Object[] {LocaleLoader.getString("Commands.Chat.Console")} );
  95. plugin.getLogger().info("[P](" + args[0] + ")" + "<*Console*> " + message);
  96. for (Player member : PartyManager.getOnlineMembers(args[0])) {
  97. member.sendMessage(prefix + message);
  98. }
  99. }
  100. return true;
  101. }
  102. }
  103. }