PartyCommand.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package com.gmail.nossr50.commands.party;
  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.chat.PartyChatCommand;
  8. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  9. import com.gmail.nossr50.locale.LocaleLoader;
  10. import com.gmail.nossr50.util.Permissions;
  11. import com.gmail.nossr50.util.commands.CommandUtils;
  12. import com.gmail.nossr50.util.player.UserManager;
  13. public class PartyCommand implements CommandExecutor {
  14. private McMMOPlayer mcMMOPlayer;
  15. private Player player;
  16. private CommandExecutor partyJoinCommand = new PartyJoinCommand();
  17. private CommandExecutor partyAcceptCommand = new PartyAcceptCommand();
  18. private CommandExecutor partyCreateCommand = new PartyCreateCommand();
  19. private CommandExecutor partyQuitCommand = new PartyQuitCommand();
  20. private CommandExecutor partyExpShareCommand = new PartyExpShareCommand();
  21. private CommandExecutor partyItemShareCommand = new PartyItemShareCommand();
  22. private CommandExecutor partyInviteCommand = new PartyInviteCommand();
  23. private CommandExecutor partyKickCommand = new PartyKickCommand();
  24. private CommandExecutor partyDisbandCommand = new PartyDisbandCommand();
  25. private CommandExecutor partyChangeOwnerCommand = new PartyChangeOwnerCommand();
  26. private CommandExecutor partyLockCommand = new PartyLockCommand();
  27. private CommandExecutor partyChangePasswordCommand = new PartyChangePasswordCommand();
  28. private CommandExecutor partyRenameCommand = new PartyRenameCommand();
  29. private CommandExecutor partyInfoCommand = new PartyInfoCommand();
  30. private CommandExecutor partyHelpCommand = new PartyHelpCommand();
  31. private CommandExecutor partyTeleportCommand = mcMMO.p.getCommand("ptp").getExecutor();
  32. private CommandExecutor partyChatCommand = new PartyChatCommand();
  33. @Override
  34. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  35. if (CommandUtils.noConsoleUsage(sender)) {
  36. return true;
  37. }
  38. if (!Permissions.party(sender)) {
  39. sender.sendMessage(command.getPermissionMessage());
  40. return true;
  41. }
  42. mcMMOPlayer = UserManager.getPlayer(sender.getName());
  43. player = mcMMOPlayer.getPlayer();
  44. if (args.length < 1) {
  45. if (!mcMMOPlayer.inParty()) {
  46. sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
  47. return printUsage();
  48. }
  49. return partyInfoCommand.onCommand(sender, command, label, args);
  50. }
  51. PartySubcommandType subcommand = PartySubcommandType.getSubcommand(args[0]);
  52. if (subcommand == null) {
  53. return printUsage();
  54. }
  55. // Can't use this for lock/unlock since they're handled by the same command
  56. if (subcommand != PartySubcommandType.LOCK && subcommand != PartySubcommandType.UNLOCK && !Permissions.partySubcommand(sender, subcommand)) {
  57. sender.sendMessage(command.getPermissionMessage());
  58. return true;
  59. }
  60. switch (subcommand) {
  61. case JOIN:
  62. return partyJoinCommand.onCommand(sender, command, label, args);
  63. case ACCEPT:
  64. return partyAcceptCommand.onCommand(sender, command, label, args);
  65. case CREATE:
  66. return partyCreateCommand.onCommand(sender, command, label, args);
  67. case HELP:
  68. return partyHelpCommand.onCommand(sender, command, label, args);
  69. default:
  70. break;
  71. }
  72. // Party member commands
  73. if (!mcMMOPlayer.inParty()) {
  74. sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
  75. return printUsage();
  76. }
  77. switch (subcommand) {
  78. case INFO:
  79. return partyInfoCommand.onCommand(sender, command, label, args);
  80. case QUIT:
  81. return partyQuitCommand.onCommand(sender, command, label, args);
  82. case INVITE:
  83. return partyInviteCommand.onCommand(sender, command, label, args);
  84. case TELEPORT:
  85. return partyTeleportCommand.onCommand(sender, command, label, extractArgs(args));
  86. case CHAT:
  87. return partyChatCommand.onCommand(sender, command, label, extractArgs(args));
  88. default:
  89. break;
  90. }
  91. // Party leader commands
  92. if (!mcMMOPlayer.getParty().getLeader().equalsIgnoreCase(player.getName())) {
  93. sender.sendMessage(LocaleLoader.getString("Party.NotOwner"));
  94. return true;
  95. }
  96. switch (subcommand) {
  97. case EXPSHARE:
  98. return partyExpShareCommand.onCommand(sender, command, label, args);
  99. case ITEMSHARE:
  100. return partyItemShareCommand.onCommand(sender, command, label, args);
  101. case KICK:
  102. return partyKickCommand.onCommand(sender, command, label, args);
  103. case DISBAND:
  104. return partyDisbandCommand.onCommand(sender, command, label, args);
  105. case OWNER:
  106. return partyChangeOwnerCommand.onCommand(sender, command, label, args);
  107. case LOCK:
  108. case UNLOCK:
  109. return partyLockCommand.onCommand(sender, command, label, args);
  110. case PASSWORD:
  111. return partyChangePasswordCommand.onCommand(sender, command, label, args);
  112. case RENAME:
  113. return partyRenameCommand.onCommand(sender, command, label, args);
  114. default:
  115. break;
  116. }
  117. return true;
  118. }
  119. private boolean printUsage() {
  120. player.sendMessage(LocaleLoader.getString("Party.Help.0", "/party join"));
  121. player.sendMessage(LocaleLoader.getString("Party.Help.1", "/party create"));
  122. player.sendMessage(LocaleLoader.getString("Party.Help.2", "/party ?"));
  123. return true;
  124. }
  125. private String[] extractArgs(String[] args) {
  126. String[] newArgs = new String[args.length - 1];
  127. for (int i = 1; i < args.length; i++) {
  128. newArgs[i - 1] = args[i];
  129. }
  130. return newArgs;
  131. }
  132. }