From 5a48d5c5f84d24a2cedfbfeb221784f1a33d4236 Mon Sep 17 00:00:00 2001 From: GJ Date: Tue, 12 Feb 2013 10:42:42 -0500 Subject: [PATCH] Convert /party info to a subcommand --- .../nossr50/party/commands/PartyCommand.java | 71 +----------- .../party/commands/PartyInfoCommand.java | 108 ++++++++++++++++++ .../resources/locale/locale_en_US.properties | 4 +- 3 files changed, 113 insertions(+), 70 deletions(-) create mode 100644 src/main/java/com/gmail/nossr50/party/commands/PartyInfoCommand.java diff --git a/src/main/java/com/gmail/nossr50/party/commands/PartyCommand.java b/src/main/java/com/gmail/nossr50/party/commands/PartyCommand.java index 29df41f96..f83202691 100644 --- a/src/main/java/com/gmail/nossr50/party/commands/PartyCommand.java +++ b/src/main/java/com/gmail/nossr50/party/commands/PartyCommand.java @@ -33,6 +33,7 @@ public class PartyCommand implements CommandExecutor { private CommandExecutor partyLockCommand = new PartyLockCommand(); private CommandExecutor partyChangePasswordCommand = new PartyChangePasswordCommand(); private CommandExecutor partyRenameCommand = new PartyRenameCommand(); + private CommandExecutor partyInfoCommand = new PartyInfoCommand(); @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { @@ -49,10 +50,9 @@ public class PartyCommand implements CommandExecutor { mcMMOPlayer = Users.getPlayer(player); if (args.length < 1 || args[0].equalsIgnoreCase("info")) { - return party(); + return partyInfoCommand.onCommand(sender, command, label, args); } - - if (args[0].equalsIgnoreCase("join")) { + else if (args[0].equalsIgnoreCase("join")) { return partyJoinCommand.onCommand(sender, command, label, args); } else if (args[0].equalsIgnoreCase("accept")) { @@ -118,71 +118,6 @@ public class PartyCommand implements CommandExecutor { return true; } - private boolean party() { - if (mcMMOPlayer.inParty()) { - Party party = mcMMOPlayer.getParty(); - String leader = party.getLeader(); - StringBuilder tempList = new StringBuilder(); - - int membersNear = PartyManager.getNearMembers(player, party, Config.getInstance().getPartyShareRange()).size(); - int membersOnline = party.getOnlineMembers().size() - 1; - - String ItemShare = ""; - String ExpShare = ""; - String Split = ""; - - for (OfflinePlayer otherMember : party.getMembers()) { - if (leader.equals(otherMember.getName())) { - tempList.append(ChatColor.GOLD); - } - else if (otherMember.isOnline()) { - tempList.append(ChatColor.WHITE); - } - else { - tempList.append(ChatColor.GRAY); - } - - tempList.append(otherMember.getName()).append(" "); - } - - String status = LocaleLoader.getString("Party.Status.Locked"); - if (!party.isLocked()) { - status = LocaleLoader.getString("Party.Status.Unlocked"); - } - - player.sendMessage(LocaleLoader.getString("Commands.Party.Header")); - player.sendMessage(LocaleLoader.getString("Commands.Party.Status", party.getName(), status)); - - boolean xpShareEnabled = Config.getInstance().getExpShareEnabled(); - boolean itemShareEnabled = Config.getInstance().getItemShareEnabled(); - - if (xpShareEnabled) { - ExpShare = LocaleLoader.getString("Commands.Party.ExpShare", party.getXpShareMode().toString()); - } - - if (itemShareEnabled) { - ItemShare = LocaleLoader.getString("Commands.Party.ItemShare", party.getItemShareMode().toString()); - } - - if (xpShareEnabled && itemShareEnabled) { - Split = ChatColor.DARK_GRAY + " || "; - } - - if (xpShareEnabled || itemShareEnabled) { - player.sendMessage(LocaleLoader.getString("Commands.Party.ShareMode") + ExpShare + Split + ItemShare); - } - - player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header")); - player.sendMessage(LocaleLoader.getString("Commands.Party.MembersNear", membersNear, membersOnline)); - player.sendMessage(LocaleLoader.getString("Commands.Party.Members", tempList)); - } - else { - return printUsage(); - } - - return true; - } - private boolean printHelp() { player.sendMessage(LocaleLoader.getString("Party.Help.3")); player.sendMessage(LocaleLoader.getString("Party.Help.1")); diff --git a/src/main/java/com/gmail/nossr50/party/commands/PartyInfoCommand.java b/src/main/java/com/gmail/nossr50/party/commands/PartyInfoCommand.java new file mode 100644 index 000000000..0c4490b9b --- /dev/null +++ b/src/main/java/com/gmail/nossr50/party/commands/PartyInfoCommand.java @@ -0,0 +1,108 @@ +package com.gmail.nossr50.party.commands; + +import org.bukkit.ChatColor; +import org.bukkit.OfflinePlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.datatypes.McMMOPlayer; +import com.gmail.nossr50.locale.LocaleLoader; +import com.gmail.nossr50.party.Party; +import com.gmail.nossr50.party.PartyManager; +import com.gmail.nossr50.util.Users; + +public class PartyInfoCommand implements CommandExecutor { + private Player player; + private Party playerParty; + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + player = (Player) sender; + McMMOPlayer mcMMOPlayer = Users.getPlayer(player); + + if (!mcMMOPlayer.inParty()) { + sendUsageStrings(sender); + } + + playerParty = mcMMOPlayer.getParty(); + + displayPartyHeader(); + displayShareModeInfo(); + displayMemberInfo(); + return true; + } + + private void sendUsageStrings(CommandSender sender) { + sender.sendMessage(LocaleLoader.getString("Party.Help.0", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">", "[" + LocaleLoader.getString("Commands.Usage.Password") + "]")); + sender.sendMessage(LocaleLoader.getString("Party.Help.1", "<" + LocaleLoader.getString("Commands.Usage.PartyName") + ">", "[" + LocaleLoader.getString("Commands.Usage.Password") + "]")); + sender.sendMessage(LocaleLoader.getString("Party.Help.2")); + } + + private String createMembersList() { + StringBuilder memberList = new StringBuilder(); + + for (OfflinePlayer member : playerParty.getMembers()) { + if (playerParty.getLeader().equals(member.getName())) { + memberList.append(ChatColor.GOLD).append(member.getName()).append(" "); + } + else if (member.isOnline()) { + memberList.append(ChatColor.WHITE).append(member.getName()).append(" "); + } + else { + memberList.append(ChatColor.GRAY).append(member.getName()).append(" "); + } + } + + return memberList.toString(); + } + + private void displayShareModeInfo() { + boolean xpShareEnabled = Config.getInstance().getExpShareEnabled(); + boolean itemShareEnabled = Config.getInstance().getItemShareEnabled(); + + if (!xpShareEnabled && !itemShareEnabled) { + return; + } + + String expShareInfo = ""; + String itemShareInfo = ""; + String separator = ""; + + if (xpShareEnabled) { + expShareInfo = LocaleLoader.getString("Commands.Party.ExpShare", playerParty.getXpShareMode().toString()); + } + + if (itemShareEnabled) { + itemShareInfo = LocaleLoader.getString("Commands.Party.ItemShare", playerParty.getItemShareMode().toString()); + } + + if (xpShareEnabled && itemShareEnabled) { + separator = ChatColor.DARK_GRAY + " || "; + } + + player.sendMessage(LocaleLoader.getString("Commands.Party.ShareMode") + expShareInfo + separator + itemShareInfo); + } + + private void displayPartyHeader() { + player.sendMessage(LocaleLoader.getString("Commands.Party.Header")); + + if (playerParty.isLocked()) { + player.sendMessage(LocaleLoader.getString("Commands.Party.Status", playerParty.getName(), LocaleLoader.getString("Party.Status.Locked"))); + } + else { + player.sendMessage(LocaleLoader.getString("Commands.Party.Status", playerParty.getName(), LocaleLoader.getString("Party.Status.Unlocked"))); + } + } + + private void displayMemberInfo() { + int membersNear = PartyManager.getNearMembers(player, playerParty, Config.getInstance().getPartyShareRange()).size(); + int membersOnline = playerParty.getOnlineMembers().size() - 1; + + player.sendMessage(LocaleLoader.getString("Commands.Party.Members.Header")); + player.sendMessage(LocaleLoader.getString("Commands.Party.MembersNear", membersNear, membersOnline)); + player.sendMessage(LocaleLoader.getString("Commands.Party.Members", createMembersList())); + } +} diff --git a/src/main/resources/locale/locale_en_US.properties b/src/main/resources/locale/locale_en_US.properties index c8cf6e036..6c41eabbb 100644 --- a/src/main/resources/locale/locale_en_US.properties +++ b/src/main/resources/locale/locale_en_US.properties @@ -495,7 +495,7 @@ Commands.Usage.3=[[RED]]Proper usage is /{0} {1} {2} {3} Commands.Usage.Level=level Commands.Usage.Message=message Commands.Usage.Page=page -Commands.Usage.PartyName=party-name +Commands.Usage.PartyName=name Commands.Usage.Password=password Commands.Usage.Player=player Commands.Usage.Rate=rate @@ -507,7 +507,7 @@ mcMMO.NoSkillNote=[[DARK_GRAY]]If you don't have access to a skill it will not b ##party Party.Forbidden=[mcMMO] Parties not permitted on this world (See Permissions) -Party.Help.0=[[RED]]Proper usage is [[DARK_AQUA]]/party join [password]. +Party.Help.0=[[RED]]Proper usage is [[DARK_AQUA]]/party join {0} {1}. Party.Help.1=[[RED]]To create a party, use [[DARK_AQUA]]/party create [password] Party.Help.2=[[RED]]Consult [[DARK_AQUA]]/party ? [[RED]]for more information Party.Help.3=[[RED]]Use [[DARK_AQUA]]/party join [[RED]]to join or [[DARK_AQUA]]/party quit [[RED]]to quit