PartyCommand.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.gmail.nossr50.party.commands;
  2. import org.bukkit.ChatColor;
  3. import org.bukkit.OfflinePlayer;
  4. import org.bukkit.command.Command;
  5. import org.bukkit.command.CommandExecutor;
  6. import org.bukkit.command.CommandSender;
  7. import org.bukkit.entity.Player;
  8. import com.gmail.nossr50.commands.CommandHelper;
  9. import com.gmail.nossr50.config.Config;
  10. import com.gmail.nossr50.datatypes.McMMOPlayer;
  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.Permissions;
  15. import com.gmail.nossr50.util.Users;
  16. public class PartyCommand implements CommandExecutor {
  17. private McMMOPlayer mcMMOPlayer;
  18. private Player player;
  19. private CommandExecutor partyJoinCommand = new PartyJoinCommand();
  20. private CommandExecutor partyAcceptCommand = new PartyAcceptCommand();
  21. private CommandExecutor partyCreateCommand = new PartyCreateCommand();
  22. private CommandExecutor partyQuitCommand = new PartyQuitCommand();
  23. private CommandExecutor partyExpShareCommand = new PartyExpShareCommand();
  24. private CommandExecutor partyItemShareCommand = new PartyItemShareCommand();
  25. private CommandExecutor partyInviteCommand = new PartyInviteCommand();
  26. private CommandExecutor partyKickCommand = new PartyKickCommand();
  27. private CommandExecutor partyDisbandCommand = new PartyDisbandCommand();
  28. private CommandExecutor partyChangeOwnerCommand = new PartyChangeOwnerCommand();
  29. private CommandExecutor partyLockCommand = new PartyLockCommand();
  30. private CommandExecutor partyChangePasswordCommand = new PartyChangePasswordCommand();
  31. private CommandExecutor partyRenameCommand = new PartyRenameCommand();
  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 || args[0].equalsIgnoreCase("info")) {
  44. return party();
  45. }
  46. if (args[0].equalsIgnoreCase("join")) {
  47. return partyJoinCommand.onCommand(sender, command, label, args);
  48. }
  49. else if (args[0].equalsIgnoreCase("accept")) {
  50. return partyAcceptCommand.onCommand(sender, command, label, args);
  51. }
  52. else if (args[0].equalsIgnoreCase("create")) {
  53. return partyCreateCommand.onCommand(sender, command, label, args);
  54. }
  55. else if (args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("help")) {
  56. return printHelp();
  57. }
  58. if (!mcMMOPlayer.inParty()) {
  59. sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
  60. return true;
  61. }
  62. if (args[0].equalsIgnoreCase("quit") || args[0].equalsIgnoreCase("q") || args[0].equalsIgnoreCase("leave")) {
  63. return partyQuitCommand.onCommand(sender, command, label, args);
  64. }
  65. else if (args[0].equalsIgnoreCase("expshare") || args[0].equalsIgnoreCase("xpshare") || args[0].equalsIgnoreCase("sharexp") || args[0].equalsIgnoreCase("shareexp")) {
  66. return partyExpShareCommand.onCommand(sender, command, label, args);
  67. }
  68. else if (args[0].equalsIgnoreCase("itemshare") || args[0].equalsIgnoreCase("shareitem") || args[0].equalsIgnoreCase("shareitems")) {
  69. return partyItemShareCommand.onCommand(sender, command, label, args);
  70. }
  71. else if (args[0].equalsIgnoreCase("invite")) {
  72. return partyInviteCommand.onCommand(sender, command, label, args);
  73. }
  74. if (!mcMMOPlayer.getParty().getLeader().equals(player.getName())) {
  75. sender.sendMessage(LocaleLoader.getString("Party.NotOwner"));
  76. return true;
  77. }
  78. if (args[0].equalsIgnoreCase("kick")) {
  79. return partyKickCommand.onCommand(sender, command, label, args);
  80. }
  81. else if (args[0].equalsIgnoreCase("disband")) {
  82. return partyDisbandCommand.onCommand(sender, command, label, args);
  83. }
  84. else if (args[0].equalsIgnoreCase("owner")) {
  85. return partyChangeOwnerCommand.onCommand(sender, command, label, args);
  86. }
  87. else if (args[0].equalsIgnoreCase("lock") || args[0].equalsIgnoreCase("unlock")) {
  88. return partyLockCommand.onCommand(sender, command, label, args);
  89. }
  90. else if (args[0].equalsIgnoreCase("password")) {
  91. return partyChangePasswordCommand.onCommand(sender, command, label, args);
  92. }
  93. else if (args[0].equalsIgnoreCase("rename")) {
  94. return partyRenameCommand.onCommand(sender, command, label, args);
  95. }
  96. else {
  97. return printUsage();
  98. }
  99. }
  100. private boolean printUsage() {
  101. player.sendMessage(LocaleLoader.getString("Party.Help.0"));
  102. player.sendMessage(LocaleLoader.getString("Party.Help.1"));
  103. player.sendMessage(LocaleLoader.getString("Party.Help.2"));
  104. return true;
  105. }
  106. private boolean party() {
  107. if (mcMMOPlayer.inParty()) {
  108. Party party = mcMMOPlayer.getParty();
  109. String leader = party.getLeader();
  110. StringBuilder tempList = new StringBuilder();
  111. int membersNear = PartyManager.getNearMembers(player, party, Config.getInstance().getPartyShareRange()).size();
  112. int membersOnline = party.getOnlineMembers().size() - 1;
  113. String ItemShare = "";
  114. String ExpShare = "";
  115. String Split = "";
  116. for (OfflinePlayer otherMember : party.getMembers()) {
  117. if (leader.equals(otherMember.getName())) {
  118. tempList.append(ChatColor.GOLD);
  119. }
  120. else if (otherMember.isOnline()) {
  121. tempList.append(ChatColor.WHITE);
  122. }
  123. else {
  124. tempList.append(ChatColor.GRAY);
  125. }
  126. tempList.append(otherMember.getName()).append(" ");
  127. }
  128. String status = LocaleLoader.getString("Party.Status.Locked");
  129. if (!party.isLocked()) {
  130. status = LocaleLoader.getString("Party.Status.Unlocked");
  131. }
  132. player.sendMessage(LocaleLoader.getString("Commands.Party.Header"));
  133. player.sendMessage(LocaleLoader.getString("Commands.Party.Status", party.getName(), status));
  134. boolean xpShareEnabled = Config.getInstance().getExpShareEnabled();
  135. boolean itemShareEnabled = Config.getInstance().getItemShareEnabled();
  136. if (xpShareEnabled) {
  137. ExpShare = LocaleLoader.getString("Commands.Party.ExpShare", party.getXpShareMode().toString());
  138. }
  139. if (itemShareEnabled) {
  140. ItemShare = LocaleLoader.getString("Commands.Party.ItemShare", party.getItemShareMode().toString());
  141. }
  142. if (xpShareEnabled && itemShareEnabled) {
  143. Split = ChatColor.DARK_GRAY + " || ";
  144. }
  145. if (xpShareEnabled || itemShareEnabled) {
  146. player.sendMessage(LocaleLoader.getString("Commands.Party.ShareMode") + ExpShare + Split + ItemShare);
  147. }
  148. player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header"));
  149. player.sendMessage(LocaleLoader.getString("Commands.Party.MembersNear", membersNear, membersOnline));
  150. player.sendMessage(LocaleLoader.getString("Commands.Party.Members", tempList));
  151. }
  152. else {
  153. return printUsage();
  154. }
  155. return true;
  156. }
  157. private boolean printHelp() {
  158. player.sendMessage(LocaleLoader.getString("Party.Help.3"));
  159. player.sendMessage(LocaleLoader.getString("Party.Help.1"));
  160. player.sendMessage(LocaleLoader.getString("Party.Help.4"));
  161. player.sendMessage(LocaleLoader.getString("Party.Help.5"));
  162. player.sendMessage(LocaleLoader.getString("Party.Help.6"));
  163. player.sendMessage(LocaleLoader.getString("Party.Help.7"));
  164. player.sendMessage(LocaleLoader.getString("Party.Help.8"));
  165. return true;
  166. }
  167. }