PartyCommand.java 5.8 KB

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