PartyCommand.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package com.gmail.nossr50.commands.party;
  2. import java.util.List;
  3. import org.bukkit.ChatColor;
  4. import org.bukkit.Server;
  5. import org.bukkit.command.Command;
  6. import org.bukkit.command.CommandExecutor;
  7. import org.bukkit.command.CommandSender;
  8. import org.bukkit.entity.Player;
  9. import com.gmail.nossr50.mcMMO;
  10. import com.gmail.nossr50.commands.CommandHelper;
  11. import com.gmail.nossr50.datatypes.PlayerProfile;
  12. import com.gmail.nossr50.events.party.McMMOPartyChangeEvent;
  13. import com.gmail.nossr50.events.party.McMMOPartyChangeEvent.EventReason;
  14. import com.gmail.nossr50.locale.LocaleLoader;
  15. import com.gmail.nossr50.party.Party;
  16. import com.gmail.nossr50.party.PartyManager;
  17. import com.gmail.nossr50.util.Users;
  18. public class PartyCommand implements CommandExecutor {
  19. private final mcMMO plugin;
  20. public PartyCommand (mcMMO plugin) {
  21. this.plugin = plugin;
  22. }
  23. @Override
  24. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  25. if (CommandHelper.noConsoleUsage(sender)) {
  26. return true;
  27. }
  28. if (CommandHelper.noCommandPermissions(sender, "mcmmo.commands.party")) {
  29. return true;
  30. }
  31. Player player = (Player) sender;
  32. String playerName = player.getName();
  33. PlayerProfile playerProfile = Users.getProfile(player);
  34. PartyManager partyManagerInstance = PartyManager.getInstance();
  35. Party party = playerProfile.getParty();
  36. switch (args.length) {
  37. case 0:
  38. if (party == null) {
  39. player.sendMessage(LocaleLoader.getString("Party.Help.0"));
  40. player.sendMessage(LocaleLoader.getString("Party.Help.1"));
  41. player.sendMessage(LocaleLoader.getString("Party.Help.2"));
  42. }
  43. else {
  44. Server server = plugin.getServer();
  45. String leader = party.getLeader();
  46. StringBuffer tempList = new StringBuffer();
  47. for (String otherPlayerName : party.getMembers()) {
  48. if (leader.equals(otherPlayerName)) {
  49. tempList.append(ChatColor.GOLD);
  50. }
  51. else if (server.getPlayer(otherPlayerName) != null) {
  52. tempList.append(ChatColor.WHITE);
  53. }
  54. else {
  55. tempList.append(ChatColor.GRAY);
  56. }
  57. tempList.append(otherPlayerName + " ");
  58. }
  59. player.sendMessage(LocaleLoader.getString("Commands.Party.InParty", new Object[] {party.getName()}));
  60. player.sendMessage(LocaleLoader.getString("Commands.Party.Members", new Object[] {tempList}));
  61. }
  62. return true;
  63. case 1:
  64. if (args[0].equalsIgnoreCase("q")) {
  65. if (party != null) {
  66. McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, party.getName(), null, EventReason.LEFT_PARTY);
  67. plugin.getServer().getPluginManager().callEvent(event);
  68. if (event.isCancelled()) {
  69. return true;
  70. }
  71. partyManagerInstance.removeFromParty(playerName, party);
  72. player.sendMessage(LocaleLoader.getString("Commands.Party.Leave"));
  73. }
  74. else {
  75. player.sendMessage("Commands.Party.None");
  76. }
  77. }
  78. else if (args[0].equals("?")) {
  79. player.sendMessage(LocaleLoader.getString("Party.Help.3"));
  80. player.sendMessage(LocaleLoader.getString("Party.Help.1"));
  81. player.sendMessage(LocaleLoader.getString("Party.Help.4"));
  82. player.sendMessage(LocaleLoader.getString("Party.Help.5"));
  83. player.sendMessage(LocaleLoader.getString("Party.Help.6"));
  84. player.sendMessage(LocaleLoader.getString("Party.Help.7"));
  85. }
  86. else if (args[0].equalsIgnoreCase("lock")) {
  87. if (party != null) {
  88. if (party.getLeader().equals(playerName)) {
  89. if (party.isLocked()) {
  90. player.sendMessage(LocaleLoader.getString("Party.IsLocked"));
  91. }
  92. else {
  93. party.setLocked(true);
  94. player.sendMessage(LocaleLoader.getString("Party.Locked"));
  95. }
  96. }
  97. else {
  98. player.sendMessage(LocaleLoader.getString("Party.NotOwner"));
  99. }
  100. }
  101. else {
  102. player.sendMessage("Commands.Party.None");
  103. }
  104. }
  105. else if (args[0].equalsIgnoreCase("unlock")) {
  106. if (party != null) {
  107. if (party.getLeader().equals(playerName)) {
  108. if (!party.isLocked()) {
  109. player.sendMessage(LocaleLoader.getString("Party.IsntLocked"));
  110. }
  111. else {
  112. party.setLocked(false);
  113. player.sendMessage(LocaleLoader.getString("Party.Unlocked"));
  114. }
  115. }
  116. else {
  117. player.sendMessage(LocaleLoader.getString("Party.NotOwner"));
  118. }
  119. }
  120. else {
  121. player.sendMessage("Commands.Party.None");
  122. }
  123. }
  124. else {
  125. if (party != null) {
  126. McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, party.getName(), args[0], EventReason.CHANGED_PARTIES);
  127. plugin.getServer().getPluginManager().callEvent(event);
  128. if (event.isCancelled()) {
  129. return true;
  130. }
  131. partyManagerInstance.removeFromParty(playerName, party);
  132. }
  133. else {
  134. McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, null, args[0], EventReason.JOINED_PARTY);
  135. plugin.getServer().getPluginManager().callEvent(event);
  136. if (event.isCancelled()) {
  137. return true;
  138. }
  139. }
  140. partyManagerInstance.joinParty(player, playerProfile, args[0], null);
  141. }
  142. return true;
  143. case 2:
  144. if (playerProfile.inParty()) {
  145. if (args[0].equalsIgnoreCase("password")) {
  146. if (party.getLeader().equals(playerName)) {
  147. party.setLocked(true);
  148. party.setPassword(args[1]);
  149. player.sendMessage(LocaleLoader.getString("Party.PasswordSet", new Object[] {args[1]}));
  150. }
  151. else {
  152. player.sendMessage(LocaleLoader.getString("Party.NotOwner"));
  153. }
  154. }
  155. else if (args[0].equalsIgnoreCase("kick")) {
  156. if (party.getLeader().equals(playerName)) {
  157. List<String> members = party.getMembers();
  158. if (!members.contains(args[1])) {
  159. player.sendMessage(LocaleLoader.getString("Party.NotInYourParty", new Object[] {args[1]}));
  160. return true;
  161. }
  162. else {
  163. String partyName = party.getName();
  164. McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, partyName, null, EventReason.KICKED_FROM_PARTY);
  165. plugin.getServer().getPluginManager().callEvent(event);
  166. if (event.isCancelled()) {
  167. return true;
  168. }
  169. partyManagerInstance.removeFromParty(args[1], party);
  170. }
  171. }
  172. else {
  173. player.sendMessage(LocaleLoader.getString("Party.NotOwner"));
  174. }
  175. }
  176. else if (args[0].equalsIgnoreCase("owner")) {
  177. if (party.getLeader().equals(playerName)) {
  178. List<String> members = party.getMembers();
  179. if (!members.contains(args[1])) {
  180. player.sendMessage(LocaleLoader.getString("Party.NotInYourParty", new Object[] {args[1]}));
  181. return true;
  182. }
  183. else {
  184. partyManagerInstance.setPartyLeader(args[1], party);
  185. }
  186. }
  187. }
  188. else {
  189. McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, party.getName(), args[0], EventReason.CHANGED_PARTIES);
  190. plugin.getServer().getPluginManager().callEvent(event);
  191. if (event.isCancelled()) {
  192. return true;
  193. }
  194. partyManagerInstance.removeFromParty(playerName, party);
  195. partyManagerInstance.joinParty(player, playerProfile, args[0], args[1]);
  196. }
  197. }
  198. else {
  199. McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, null, args[0], EventReason.JOINED_PARTY);
  200. plugin.getServer().getPluginManager().callEvent(event);
  201. if (event.isCancelled()) {
  202. return true;
  203. }
  204. partyManagerInstance.joinParty(player, playerProfile, args[0], args[1]);
  205. }
  206. return true;
  207. default:
  208. player.sendMessage(LocaleLoader.getString("Party.Help.0"));
  209. player.sendMessage(LocaleLoader.getString("Party.Help.1"));
  210. player.sendMessage(LocaleLoader.getString("Party.Help.2"));
  211. return true;
  212. }
  213. }
  214. }