PartyJoinCommand.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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.datatypes.party.Party;
  8. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  9. import com.gmail.nossr50.locale.LocaleLoader;
  10. import com.gmail.nossr50.party.PartyManager;
  11. import com.gmail.nossr50.util.commands.CommandUtils;
  12. import com.gmail.nossr50.util.player.UserManager;
  13. public class PartyJoinCommand implements CommandExecutor {
  14. private McMMOPlayer mcMMOTarget;
  15. private Player target;
  16. private Party targetParty;
  17. private McMMOPlayer mcMMOPlayer;
  18. private Player player;
  19. private Party playerParty;
  20. @Override
  21. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  22. switch (args.length) {
  23. case 2:
  24. case 3:
  25. // Verify target exists and is in a different party than the player
  26. if (!canJoinParty(sender, args[1])) {
  27. return true;
  28. }
  29. mcMMOPlayer = UserManager.getPlayer((Player) sender);
  30. player = mcMMOPlayer.getPlayer();
  31. String password = getPassword(args);
  32. // Make sure party passwords match
  33. if (!mcMMO.getPartyManager().checkPartyPassword(player, targetParty, password)) {
  34. return true;
  35. }
  36. // Changing parties
  37. if (!mcMMO.getPartyManager().changeOrJoinParty(mcMMOPlayer, targetParty.getName())) {
  38. return true;
  39. }
  40. mcMMO.getPartyManager().joinParty(player, targetParty, password);
  41. return true;
  42. default:
  43. sender.sendMessage(LocaleLoader.getString("Commands.Usage.3", "party", "join", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">", "[" + LocaleLoader.getString("Commands.Usage.Password") + "]"));
  44. return true;
  45. }
  46. }
  47. private String getPassword(String[] args) {
  48. if (args.length == 3) {
  49. return args[2];
  50. }
  51. return null;
  52. }
  53. private boolean canJoinParty(CommandSender sender, String targetName) {
  54. mcMMOTarget = UserManager.getPlayer(targetName);
  55. if (!CommandUtils.checkPlayerExistence(sender, targetName, mcMMOTarget)) {
  56. return false;
  57. }
  58. target = mcMMOTarget.getPlayer();
  59. if (!mcMMOTarget.inParty()) {
  60. sender.sendMessage(LocaleLoader.getString("Party.PlayerNotInParty", targetName));
  61. return false;
  62. }
  63. mcMMOPlayer = UserManager.getPlayer(sender.getName());
  64. player = mcMMOPlayer.getPlayer();
  65. playerParty = mcMMOPlayer.getParty();
  66. targetParty = mcMMOTarget.getParty();
  67. if (player.equals(target) || (mcMMOPlayer.inParty() && playerParty.equals(targetParty))) {
  68. sender.sendMessage(LocaleLoader.getString("Party.Join.Self"));
  69. return false;
  70. }
  71. return true;
  72. }
  73. }