소스 검색

Use an enum to handle our subcommands.

GJ 12 년 전
부모
커밋
6acfba1315

+ 48 - 34
src/main/java/com/gmail/nossr50/party/commands/PartyCommand.java

@@ -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);
+
+        PartySubcommand subcommand = PartySubcommand.getSubcommand(args[0]);
+
+        if (subcommand == null) {
+            return printUsage();
         }
-        else if (args[0].equalsIgnoreCase("accept")) {
+
+        switch (subcommand) {
+        case JOIN:
+            return partyJoinCommand.onCommand(sender, command, label, args);
+        case ACCEPT:
             return partyAcceptCommand.onCommand(sender, command, label, args);
-        }
-        else if (args[0].equalsIgnoreCase("create")) {
+        case CREATE:
             return partyCreateCommand.onCommand(sender, command, label, args);
-        }
-        else if (args[0].equalsIgnoreCase("?") || args[0].equalsIgnoreCase("help")) {
+        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;
     }

+ 0 - 11
src/main/java/com/gmail/nossr50/party/commands/PartyInfoCommand.java

@@ -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();
 

+ 43 - 0
src/main/java/com/gmail/nossr50/party/commands/PartySubcommand.java

@@ -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;
+    }
+}