PartyInfoCommand.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.gmail.nossr50.commands.party;
  2. import org.bukkit.ChatColor;
  3. import org.bukkit.command.Command;
  4. import org.bukkit.command.CommandExecutor;
  5. import org.bukkit.command.CommandSender;
  6. import org.bukkit.entity.Player;
  7. import com.gmail.nossr50.mcMMO;
  8. import com.gmail.nossr50.config.Config;
  9. import com.gmail.nossr50.datatypes.party.Party;
  10. import com.gmail.nossr50.datatypes.party.ShareMode;
  11. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  12. import com.gmail.nossr50.locale.LocaleLoader;
  13. import com.gmail.nossr50.party.PartyManager;
  14. import com.gmail.nossr50.util.player.UserManager;
  15. public class PartyInfoCommand implements CommandExecutor {
  16. private Player player;
  17. private Party playerParty;
  18. @Override
  19. public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  20. switch (args.length) {
  21. case 0:
  22. case 1:
  23. player = (Player) sender;
  24. McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
  25. playerParty = mcMMOPlayer.getParty();
  26. displayPartyHeader();
  27. displayShareModeInfo();
  28. displayMemberInfo();
  29. return true;
  30. default:
  31. sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "info"));
  32. return true;
  33. }
  34. }
  35. private String createMembersList() {
  36. StringBuilder memberList = new StringBuilder();
  37. for (String memberName : playerParty.getMembers()) {
  38. Player member = mcMMO.p.getServer().getPlayerExact(memberName);
  39. if (playerParty.getLeader().equalsIgnoreCase(memberName)) {
  40. memberList.append(ChatColor.GOLD);
  41. }
  42. else if (member != null) {
  43. memberList.append(ChatColor.WHITE);
  44. }
  45. else {
  46. memberList.append(ChatColor.GRAY);
  47. }
  48. memberList.append(memberName).append(" ");
  49. }
  50. return memberList.toString();
  51. }
  52. private void displayShareModeInfo() {
  53. boolean xpShareEnabled = Config.getInstance().getExpShareEnabled();
  54. boolean itemShareEnabled = Config.getInstance().getItemShareEnabled();
  55. boolean itemSharingActive = (playerParty.getItemShareMode() != ShareMode.NONE);
  56. if (!xpShareEnabled && !itemShareEnabled) {
  57. return;
  58. }
  59. String expShareInfo = "";
  60. String itemShareInfo = "";
  61. String separator = "";
  62. if (xpShareEnabled) {
  63. expShareInfo = LocaleLoader.getString("Commands.Party.ExpShare", playerParty.getXpShareMode().toString());
  64. }
  65. if (itemShareEnabled) {
  66. itemShareInfo = LocaleLoader.getString("Commands.Party.ItemShare", playerParty.getItemShareMode().toString());
  67. }
  68. if (xpShareEnabled && itemShareEnabled) {
  69. separator = ChatColor.DARK_GRAY + " || ";
  70. }
  71. player.sendMessage(LocaleLoader.getString("Commands.Party.ShareMode") + expShareInfo + separator + itemShareInfo);
  72. if (itemSharingActive) {
  73. player.sendMessage(LocaleLoader.getString("Commands.Party.ItemShareCategories", playerParty.getItemShareCategories()));
  74. }
  75. }
  76. private void displayPartyHeader() {
  77. player.sendMessage(LocaleLoader.getString("Commands.Party.Header"));
  78. if (playerParty.isLocked()) {
  79. player.sendMessage(LocaleLoader.getString("Commands.Party.Status", playerParty.getName(), LocaleLoader.getString("Party.Status.Locked")));
  80. }
  81. else {
  82. player.sendMessage(LocaleLoader.getString("Commands.Party.Status", playerParty.getName(), LocaleLoader.getString("Party.Status.Unlocked")));
  83. }
  84. }
  85. private void displayMemberInfo() {
  86. int membersNear = PartyManager.getNearMembers(player, playerParty, Config.getInstance().getPartyShareRange()).size();
  87. int membersOnline = playerParty.getOnlineMembers().size() - 1;
  88. player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header"));
  89. player.sendMessage(LocaleLoader.getString("Commands.Party.MembersNear", membersNear, membersOnline));
  90. player.sendMessage(createMembersList());
  91. }
  92. }