Use an enum to handle our subcommands.

This commit is contained in:
GJ 2013-02-12 11:23:32 -05:00
parent ab731302e0
commit 6acfba1315
3 changed files with 95 additions and 49 deletions

View File

@ -44,71 +44,85 @@ public class PartyCommand implements CommandExecutor {
player = (Player) sender;
mcMMOPlayer = Users.getPlayer(player);
if (args.length < 1 || args[0].equalsIgnoreCase("info")) {
if (args.length < 1) {
if (!mcMMOPlayer.inParty()) {
sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
return printUsage();
}
return partyInfoCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("join")) {
return partyJoinCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("accept")) {
return partyAcceptCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("create")) {
return partyCreateCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("help")) {
return printHelp();
PartySubcommand subcommand = PartySubcommand.getSubcommand(args[0]);
if (subcommand == null) {
return printUsage();
}
switch (subcommand) {
case JOIN:
return partyJoinCommand.onCommand(sender, command, label, args);
case ACCEPT:
return partyAcceptCommand.onCommand(sender, command, label, args);
case CREATE:
return partyCreateCommand.onCommand(sender, command, label, args);
case HELP:
return printHelp();
default:
break;
}
// Party member commands
if (!mcMMOPlayer.inParty()) {
sender.sendMessage(LocaleLoader.getString("Commands.Party.None"));
return true;
return printUsage();
}
if (args[0].equalsIgnoreCase("quit") || args[0].equalsIgnoreCase("q") || args[0].equalsIgnoreCase("leave")) {
switch (subcommand) {
case INFO:
return partyInfoCommand.onCommand(sender, command, label, args);
case QUIT:
return partyQuitCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("expshare") || args[0].equalsIgnoreCase("xpshare") || args[0].equalsIgnoreCase("sharexp") || args[0].equalsIgnoreCase("shareexp")) {
return partyExpShareCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("itemshare") || args[0].equalsIgnoreCase("shareitem") || args[0].equalsIgnoreCase("shareitems")) {
return partyItemShareCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("invite")) {
case INVITE:
return partyInviteCommand.onCommand(sender, command, label, args);
default:
break;
}
// Party leader commands
if (!mcMMOPlayer.getParty().getLeader().equals(player.getName())) {
sender.sendMessage(LocaleLoader.getString("Party.NotOwner"));
return true;
}
if (args[0].equalsIgnoreCase("kick")) {
switch (subcommand) {
case EXPSHARE:
return partyExpShareCommand.onCommand(sender, command, label, args);
case ITEMSHARE:
return partyItemShareCommand.onCommand(sender, command, label, args);
case KICK:
return partyKickCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("disband")) {
case DISBAND:
return partyDisbandCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("owner")) {
case OWNER:
return partyChangeOwnerCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("lock") || args[0].equalsIgnoreCase("unlock")) {
case LOCK:
case UNLOCK:
return partyLockCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("password")) {
case PASSWORD:
return partyChangePasswordCommand.onCommand(sender, command, label, args);
}
else if (args[0].equalsIgnoreCase("rename")) {
case RENAME:
return partyRenameCommand.onCommand(sender, command, label, args);
default:
break;
}
else {
return printUsage();
}
return true;
}
private boolean printUsage() {
player.sendMessage(LocaleLoader.getString("Party.Help.0"));
player.sendMessage(LocaleLoader.getString("Party.Help.1"));
player.sendMessage(LocaleLoader.getString("Party.Help.0", "<" + LocaleLoader.getString("Commands.Usage.Player") + ">", "[" + LocaleLoader.getString("Commands.Usage.Password") + "]"));
player.sendMessage(LocaleLoader.getString("Party.Help.1", "<" + LocaleLoader.getString("Commands.Usage.PartyName") + ">", "[" + LocaleLoader.getString("Commands.Usage.Password") + "]"));
player.sendMessage(LocaleLoader.getString("Party.Help.2"));
return true;
}

View File

@ -22,11 +22,6 @@ public class PartyInfoCommand implements CommandExecutor {
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();
@ -35,12 +30,6 @@ public class PartyInfoCommand implements CommandExecutor {
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();

View File

@ -0,0 +1,43 @@
package com.gmail.nossr50.party.commands;
public enum PartySubcommand {
JOIN,
ACCEPT,
CREATE,
HELP,
INFO,
QUIT,
EXPSHARE,
ITEMSHARE,
INVITE,
KICK,
DISBAND,
OWNER,
LOCK,
UNLOCK,
PASSWORD,
RENAME;
public static PartySubcommand getSubcommand(String commandName) {
for (PartySubcommand command : values()) {
if (command.name().equalsIgnoreCase(commandName)) {
return command;
}
}
if (commandName.equalsIgnoreCase("?")) {
return HELP;
}
else if (commandName.equalsIgnoreCase("q") || commandName.equalsIgnoreCase("leave")) {
return QUIT;
}
else if (commandName.equalsIgnoreCase("xpshare") || commandName.equalsIgnoreCase("shareexp") || commandName.equalsIgnoreCase("sharexp")) {
return EXPSHARE;
}
else if (commandName.equalsIgnoreCase("shareitem") || commandName.equalsIgnoreCase("shareitems")) {
return ITEMSHARE;
}
return null;
}
}