PartyInfoCommand.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package com.gmail.nossr50.commands.party;
  2. import com.gmail.nossr50.config.MainConfig;
  3. import com.gmail.nossr50.datatypes.party.Party;
  4. import com.gmail.nossr50.datatypes.party.PartyFeature;
  5. import com.gmail.nossr50.datatypes.party.ShareMode;
  6. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  7. import com.gmail.nossr50.locale.LocaleLoader;
  8. import com.gmail.nossr50.party.PartyManager;
  9. import com.gmail.nossr50.util.player.UserManager;
  10. import org.bukkit.ChatColor;
  11. import org.bukkit.command.Command;
  12. import org.bukkit.command.CommandExecutor;
  13. import org.bukkit.command.CommandSender;
  14. import org.bukkit.entity.Player;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. public class PartyInfoCommand implements CommandExecutor {
  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 = (Player) sender;
  24. McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player);
  25. Party party = mcMMOPlayer.getParty();
  26. displayPartyHeader(player, party);
  27. displayShareModeInfo(player, party);
  28. displayPartyFeatures(player, party);
  29. displayMemberInfo(player, mcMMOPlayer, party);
  30. return true;
  31. default:
  32. sender.sendMessage(LocaleLoader.getString("Commands.Usage.1", "party", "info"));
  33. return true;
  34. }
  35. }
  36. private void displayPartyHeader(Player player, Party party) {
  37. player.sendMessage(LocaleLoader.getString("Commands.Party.Header"));
  38. StringBuilder status = new StringBuilder();
  39. status.append(LocaleLoader.getString("Commands.Party.Status", party.getName(), LocaleLoader.getString("Party.Status." + (party.isLocked() ? "Locked" : "Unlocked")), party.getLevel()));
  40. /*if (!party.hasReachedLevelCap()) {
  41. status.append(" (").append(party.getXpToLevelPercentage()).append(")");
  42. }*/
  43. player.sendMessage(status.toString());
  44. }
  45. private void displayPartyFeatures(Player player, Party party) {
  46. player.sendMessage(LocaleLoader.getString("Commands.Party.Features.Header"));
  47. List<String> unlockedPartyFeatures = new ArrayList<String>();
  48. List<String> lockedPartyFeatures = new ArrayList<String>();
  49. for (PartyFeature partyFeature : PartyFeature.values()) {
  50. if (!partyFeature.hasPermission(player)) {
  51. continue;
  52. }
  53. if (isUnlockedFeature(party, partyFeature)) {
  54. unlockedPartyFeatures.add(partyFeature.getLocaleString());
  55. }
  56. else {
  57. lockedPartyFeatures.add(partyFeature.getFeatureLockedLocaleString());
  58. }
  59. }
  60. player.sendMessage(LocaleLoader.getString("Commands.Party.UnlockedFeatures", unlockedPartyFeatures.isEmpty() ? "None" : unlockedPartyFeatures));
  61. for (String message : lockedPartyFeatures) {
  62. player.sendMessage(message);
  63. }
  64. }
  65. private boolean isUnlockedFeature(Party party, PartyFeature partyFeature) {
  66. return party.getLevel() >= PartyManager.getPartyFeatureUnlockLevel(partyFeature);
  67. }
  68. private void displayShareModeInfo(Player player, Party party) {
  69. boolean xpShareEnabled = isUnlockedFeature(party, PartyFeature.XP_SHARE);
  70. boolean itemShareEnabled = isUnlockedFeature(party, PartyFeature.ITEM_SHARE);
  71. boolean itemSharingActive = (party.getItemShareMode() != ShareMode.NONE);
  72. if (!xpShareEnabled && !itemShareEnabled) {
  73. return;
  74. }
  75. String expShareInfo = "";
  76. String itemShareInfo = "";
  77. String separator = "";
  78. if (xpShareEnabled) {
  79. expShareInfo = LocaleLoader.getString("Commands.Party.ExpShare", party.getXpShareMode().toString());
  80. }
  81. if (itemShareEnabled) {
  82. itemShareInfo = LocaleLoader.getString("Commands.Party.ItemShare", party.getItemShareMode().toString());
  83. }
  84. if (xpShareEnabled && itemShareEnabled) {
  85. separator = ChatColor.DARK_GRAY + " || ";
  86. }
  87. player.sendMessage(LocaleLoader.getString("Commands.Party.ShareMode") + expShareInfo + separator + itemShareInfo);
  88. if (itemSharingActive) {
  89. player.sendMessage(LocaleLoader.getString("Commands.Party.ItemShareCategories", party.getItemShareCategories()));
  90. }
  91. }
  92. private void displayMemberInfo(Player player, McMMOPlayer mcMMOPlayer, Party party) {
  93. /*
  94. * Only show members of the party that this member can see
  95. */
  96. List<Player> nearMembers = PartyManager.getNearVisibleMembers(mcMMOPlayer);
  97. int membersOnline = party.getVisibleMembers(player).size();
  98. player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header"));
  99. player.sendMessage(LocaleLoader.getString("Commands.Party.MembersNear", nearMembers.size()+1, membersOnline));
  100. player.sendMessage(party.createMembersList(player));
  101. }
  102. }