PartyInfoCommand.java 5.3 KB

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