PCommand.java 4.7 KB

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