Add new party command /party rename

This commit is contained in:
TfT_02
2013-01-26 19:31:17 +01:00
parent 00c84e775f
commit 473b9e8bbe
23 changed files with 110 additions and 2 deletions

View File

@ -86,6 +86,21 @@ public class PartyManager {
}
}
/**
* Notify party members when the party leader changed the party name.
*
* @param newPartyName The new name of the party
* @param party The concerned party
*/
public void informPartyMembersNameChange(String newPartyName, Party party) {
String leader = party.getLeader();
for (Player member : party.getOnlineMembers()) {
if (!member.getName().equals(leader)) {
member.sendMessage(LocaleLoader.getString("Party.InformedOnNameChange", new Object[] {leader, newPartyName}));
}
}
}
/**
* Get a list of all players in this player's party.
*

View File

@ -47,6 +47,8 @@ public class PartyCommand implements CommandExecutor {
return accept(sender, args);
else if(args[0].equalsIgnoreCase("create"))
return create(sender, args);
else if(args[0].equalsIgnoreCase("info"))
return party(sender);
else if(args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("help"))
return help(sender, args);
if (playerProfile.inParty()) {
@ -70,6 +72,8 @@ public class PartyCommand implements CommandExecutor {
return unlock(sender, args);
else if(args[0].equalsIgnoreCase("password"))
return password(sender, args);
else if(args[0].equalsIgnoreCase("rename"))
return rename(sender, args);
else
return usage(sender);
} else {
@ -239,7 +243,7 @@ public class PartyCommand implements CommandExecutor {
String password = null;
if(args.length > 2) password = args[2];
Party newParty = partyManagerInstance.getParty(args[1]);
Party newParty = partyManagerInstance.getParty(partyname);
// Check to see if the party exists, and if it does cancel creating a new party
if (newParty != null) {
player.sendMessage(LocaleLoader.getString("Commands.Party.AlreadyExists", new Object[] {partyname}));
@ -247,7 +251,8 @@ public class PartyCommand implements CommandExecutor {
}
if (playerProfile.inParty()) {
McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, playerProfile.getPlayerName(), partyname, EventReason.CHANGED_PARTIES);
String oldPartyName = party.getName();
McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(player, oldPartyName, partyname, EventReason.CHANGED_PARTIES);
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
@ -545,4 +550,51 @@ public class PartyCommand implements CommandExecutor {
player.sendMessage(LocaleLoader.getString("Party.NotOwner"));
return true;
}
/**
* Rename the current party
*/
private boolean rename(CommandSender sender, String[] args) {
if (CommandHelper.noCommandPermissions(sender, "mcmmo.commands.party.rename"))
return true;
Player player = (Player) sender;
String playerName = player.getName();
PlayerProfile playerProfile = Users.getProfile(player);
PartyManager partyManagerInstance = PartyManager.getInstance();
Party party = playerProfile.getParty();
if (party.getLeader().equals(playerName)) {
if(args.length < 2) {
player.sendMessage(LocaleLoader.getString("Commands.Usage.2", new Object[] {"party", "rename", "<" + LocaleLoader.getString("Commands.Usage.PartyName") + ">"}));
return true;
} else {
String newPartyName = args[1];
if (!party.getName().equals(newPartyName)) {//This is to prevent party leaders from spamming other players with the rename message
Party newParty = partyManagerInstance.getParty(newPartyName);
// Check to see if the party exists, and if it does cancel renaming the party
if (newParty != null) {
player.sendMessage(LocaleLoader.getString("Commands.Party.AlreadyExists", new Object[] {newPartyName}));
return true;
}
for (Player onlineMembers : party.getOnlineMembers()) {
McMMOPartyChangeEvent event = new McMMOPartyChangeEvent(onlineMembers, party.getName(), newPartyName, EventReason.CHANGED_PARTIES);
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return true;
}
}
partyManagerInstance.informPartyMembersNameChange(newPartyName, party);
party.setName(newPartyName);
}
player.sendMessage(LocaleLoader.getString("Commands.Party.Rename", new Object[] {newPartyName}));
}
}
else
player.sendMessage(LocaleLoader.getString("Party.NotOwner"));
return true;
}
}