PartyInfoCommand.java 4.2 KB

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