From eb04693c3ff6350e48a824e7e937104fb71baad1 Mon Sep 17 00:00:00 2001 From: garbagemule Date: Tue, 20 Aug 2013 16:36:28 +0200 Subject: [PATCH] Tidy up commands. - The execute() method has had its docs redefined to reflect how the CommandHandler now handles the return value of the method. That is, if the method returns false, the CommandHandler prints the usage message and description of the command to the command sender. - Commands now only return false when they should, according to the updated docs of the execute() method. - Most commands have been tidied up a bit, i.e. they've had some unnecessary code removed in the advent of the new usage printing of the CommandHandler. - Some commands have had their patterns altered slightly. - The order of command registration now matters. That is, the order commands are registered in will be the order in which the help screen will display the command usages and descriptions. - The help screen now shows ordered commands, and separates the types into user, admin and setup sections for a better overview. --- .../MobArena/commands/Command.java | 17 ++- .../MobArena/commands/CommandHandler.java | 110 +++++++++++------- .../commands/admin/DisableCommand.java | 4 +- .../commands/admin/EnableCommand.java | 4 +- .../MobArena/commands/admin/ForceCommand.java | 25 ++-- .../MobArena/commands/admin/KickCommand.java | 19 +-- .../commands/admin/RestoreCommand.java | 21 ++-- .../commands/setup/AddArenaCommand.java | 20 ++-- .../commands/setup/AddClassPermCommand.java | 26 ++--- .../commands/setup/AddContainerCommand.java | 22 ++-- .../commands/setup/AddSpawnpointCommand.java | 17 +-- .../commands/setup/AutoDegenerateCommand.java | 17 +-- .../commands/setup/AutoGenerateCommand.java | 20 ++-- .../commands/setup/CheckDataCommand.java | 4 +- .../commands/setup/CheckSpawnsCommand.java | 14 +-- .../commands/setup/ClassChestCommand.java | 8 +- .../commands/setup/ConfigCommand.java | 21 ++-- .../commands/setup/EditArenaCommand.java | 12 +- .../setup/ExpandLobbyRegionCommand.java | 33 ++---- .../commands/setup/ExpandRegionCommand.java | 35 ++---- .../commands/setup/ListClassPermsCommand.java | 14 +-- .../commands/setup/ProtectCommand.java | 10 +- .../commands/setup/RemoveArenaCommand.java | 16 +-- .../commands/setup/RemoveClassCommand.java | 16 +-- .../setup/RemoveClassPermCommand.java | 26 ++--- .../setup/RemoveContainerCommand.java | 17 +-- .../setup/RemoveLeaderboardCommand.java | 35 +++--- .../setup/RemoveSpawnpointCommand.java | 17 +-- .../commands/setup/SetArenaCommand.java | 16 +-- .../commands/setup/SetClassCommand.java | 17 +-- .../commands/setup/SetLobbyRegionCommand.java | 2 +- .../commands/setup/SetRegionCommand.java | 17 +-- .../commands/setup/SetWarpCommand.java | 28 ++--- .../setup/ShowLobbyRegionCommand.java | 17 +-- .../commands/setup/ShowRegionCommand.java | 17 +-- .../commands/setup/ShowSpawnsCommand.java | 13 +-- .../commands/setup/SpawnpointsCommand.java | 4 +- .../MobArena/commands/user/JoinCommand.java | 10 +- .../MobArena/commands/user/LeaveCommand.java | 4 +- .../commands/user/NotReadyCommand.java | 9 +- .../commands/user/PlayerListCommand.java | 5 +- .../MobArena/commands/user/SpecCommand.java | 8 +- 42 files changed, 308 insertions(+), 459 deletions(-) diff --git a/src/com/garbagemule/MobArena/commands/Command.java b/src/com/garbagemule/MobArena/commands/Command.java index 9851e53..99d8e1b 100644 --- a/src/com/garbagemule/MobArena/commands/Command.java +++ b/src/com/garbagemule/MobArena/commands/Command.java @@ -8,13 +8,22 @@ public interface Command { /** * Execute the command using the given arguments. - * If any arguments are provided, the first argument is -NOT- the - * same as the command name, i.e. the CommandHandler must strip the - * array of this element. + *

+ * If the method returns false, the command handler will print the usage + * message (usage + description) for the command, and as such, if the + * execution was successful in any way, the method should return true. + * Note that "successful in any way" means if the execution managed to + * complete in the sense that it itself prints a message to the sender, + * or otherwise executed properly, not if the intent of the command + * wasn't fulfilled. Typically, this means that false is only returned + * if the command was executed with a set of arguments that did not + * match the usage message. + * * @param am an ArenaMaster instance * @param sender the sender * @param args array of arguments - * @return true, if the command was successful + * @return true, if the command succeeded in any way, false if the + * command handler should print the usage message to the sender */ public boolean execute(ArenaMaster am, CommandSender sender, String... args); } diff --git a/src/com/garbagemule/MobArena/commands/CommandHandler.java b/src/com/garbagemule/MobArena/commands/CommandHandler.java index 7c2ce20..ed95365 100644 --- a/src/com/garbagemule/MobArena/commands/CommandHandler.java +++ b/src/com/garbagemule/MobArena/commands/CommandHandler.java @@ -1,10 +1,6 @@ package com.garbagemule.MobArena.commands; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; import org.bukkit.ChatColor; @@ -56,7 +52,7 @@ public class CommandHandler implements CommandExecutor if (matches.size() > 1) { Messenger.tell(sender, Msg.MISC_MULTIPLE_MATCHES); for (Command cmd : matches) { - showUsage(cmd, sender); + showUsage(cmd, sender, false); } return true; } @@ -79,13 +75,15 @@ public class CommandHandler implements CommandExecutor // Check if the last argument is a ?, in which case, display usage and description if (last.equals("?") || last.equals("help")) { - showUsage(command, sender); + showUsage(command, sender, true); return true; } // Otherwise, execute the command! String[] params = trimFirstArg(args); - command.execute(am, sender, params); + if (!command.execute(am, sender, params)) { + showUsage(command, sender, true); + } return true; } @@ -113,11 +111,11 @@ public class CommandHandler implements CommandExecutor * @param cmd a Command * @param sender a CommandSender */ - private void showUsage(Command cmd, CommandSender sender) { + private void showUsage(Command cmd, CommandSender sender, boolean prefix) { CommandInfo info = cmd.getClass().getAnnotation(CommandInfo.class); if (!plugin.has(sender, info.permission())) return; - sender.sendMessage(info.usage() + " " + ChatColor.YELLOW + info.desc()); + sender.sendMessage((prefix ? "Usage: " : "") + info.usage() + " " + ChatColor.YELLOW + info.desc()); } /** @@ -135,10 +133,33 @@ public class CommandHandler implements CommandExecutor * @param sender a player or the console */ private void showHelp(CommandSender sender) { - Messenger.tell(sender, "Available MobArena commands:"); - + StringBuilder user = new StringBuilder(); + StringBuilder admin = new StringBuilder(); + StringBuilder setup = new StringBuilder(); + for (Command cmd : commands.values()) { - showUsage(cmd, sender); + CommandInfo info = cmd.getClass().getAnnotation(CommandInfo.class); + if (!plugin.has(sender, info.permission())) continue; + + StringBuilder buffy; + if (info.permission().startsWith("mobarena.admin")) { + buffy = admin; + } else if (info.permission().startsWith("mobarena.setup")) { + buffy = setup; + } else { + buffy = user; + } + buffy.append("\n") + .append(ChatColor.RESET).append(info.usage()).append(" ") + .append(ChatColor.YELLOW).append(info.desc()); + } + + if (admin.length() == 0 && setup.length() == 0) { + Messenger.tell(sender, "Available commands: " + user.toString()); + } else { + Messenger.tell(sender, "User commands: " + user.toString()); + if (admin.length() > 0) Messenger.tell(sender, "Admin commands: " + admin.toString()); + if (setup.length() > 0) Messenger.tell(sender, "Setup commands: " + setup.toString()); } } @@ -148,57 +169,64 @@ public class CommandHandler implements CommandExecutor * method, but this is neater, albeit more manual work. */ private void registerCommands() { - commands = new HashMap(); + commands = new LinkedHashMap(); // mobarena.use - register(ArenaListCommand.class); register(JoinCommand.class); register(LeaveCommand.class); - register(NotReadyCommand.class); register(SpecCommand.class); + register(ArenaListCommand.class); register(PlayerListCommand.class); - + register(NotReadyCommand.class); + // mobarena.admin - register(DisableCommand.class); register(EnableCommand.class); + register(DisableCommand.class); register(ForceCommand.class); register(KickCommand.class); register(RestoreCommand.class); // mobarena.setup - register(AddArenaCommand.class); - register(AddClassPermCommand.class); - register(AddContainerCommand.class); - register(AddSpawnpointCommand.class); - register(ArenaCommand.class); - register(CheckDataCommand.class); - register(CheckSpawnsCommand.class); register(ConfigCommand.class); - register(ContainersCommand.class); - register(EditArenaCommand.class); - register(ExpandLobbyRegionCommand.class); - register(ExpandRegionCommand.class); - register(ListClassesCommand.class); - register(ListClassPermsCommand.class); - register(ProtectCommand.class); + + register(AddArenaCommand.class); register(RemoveArenaCommand.class); - register(RemoveClassCommand.class); - register(RemoveClassPermCommand.class); - register(RemoveContainerCommand.class); - register(RemoveLeaderboardCommand.class); - register(RemoveSpawnpointCommand.class); + register(EditArenaCommand.class); + + register(ArenaCommand.class); register(SetArenaCommand.class); - register(SetClassCommand.class); - register(SetLobbyRegionCommand.class); - register(SetRegionCommand.class); + register(SetWarpCommand.class); + register(SetRegionCommand.class); + register(SetLobbyRegionCommand.class); + register(ExpandRegionCommand.class); + register(ExpandLobbyRegionCommand.class); register(ShowRegionCommand.class); register(ShowLobbyRegionCommand.class); + register(CheckDataCommand.class); + register(ShowSpawnsCommand.class); register(SpawnpointsCommand.class); + register(AddSpawnpointCommand.class); + register(RemoveSpawnpointCommand.class); + register(CheckSpawnsCommand.class); + + register(ContainersCommand.class); + register(AddContainerCommand.class); + register(RemoveContainerCommand.class); + + register(ListClassesCommand.class); + register(SetClassCommand.class); + register(RemoveClassCommand.class); + register(ClassChestCommand.class); + register(ListClassPermsCommand.class); + register(AddClassPermCommand.class); + register(RemoveClassPermCommand.class); + + register(ProtectCommand.class); + register(RemoveLeaderboardCommand.class); register(AutoGenerateCommand.class); register(AutoDegenerateCommand.class); - register(ClassChestCommand.class); } /** diff --git a/src/com/garbagemule/MobArena/commands/admin/DisableCommand.java b/src/com/garbagemule/MobArena/commands/admin/DisableCommand.java index 7fc6d70..83ca268 100644 --- a/src/com/garbagemule/MobArena/commands/admin/DisableCommand.java +++ b/src/com/garbagemule/MobArena/commands/admin/DisableCommand.java @@ -33,9 +33,8 @@ public class DisableCommand implements Command Arena arena = am.getArenaWithName(arg1); if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } - disable(arena, sender); return true; } @@ -43,7 +42,6 @@ public class DisableCommand implements Command am.setEnabled(false); am.saveConfig(); Messenger.tell(sender, "MobArena " + ChatColor.RED + "disabled"); - return true; } diff --git a/src/com/garbagemule/MobArena/commands/admin/EnableCommand.java b/src/com/garbagemule/MobArena/commands/admin/EnableCommand.java index 5849aef..9c16e79 100644 --- a/src/com/garbagemule/MobArena/commands/admin/EnableCommand.java +++ b/src/com/garbagemule/MobArena/commands/admin/EnableCommand.java @@ -33,9 +33,8 @@ public class EnableCommand implements Command Arena arena = am.getArenaWithName(arg1); if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } - enable(arena, sender); return true; } @@ -43,7 +42,6 @@ public class EnableCommand implements Command am.setEnabled(true); am.saveConfig(); Messenger.tell(sender, "MobArena " + ChatColor.GREEN + "enabled"); - return true; } diff --git a/src/com/garbagemule/MobArena/commands/admin/ForceCommand.java b/src/com/garbagemule/MobArena/commands/admin/ForceCommand.java index ed1ffed..bbd438d 100644 --- a/src/com/garbagemule/MobArena/commands/admin/ForceCommand.java +++ b/src/com/garbagemule/MobArena/commands/admin/ForceCommand.java @@ -18,6 +18,9 @@ public class ForceCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { + // Require at least one argument + if (args.length < 1) return false; + // Grab the argument, if any. String arg1 = (args.length > 0 ? args[0] : ""); String arg2 = (args.length > 1 ? args[1] : ""); @@ -28,7 +31,6 @@ public class ForceCommand implements Command for (Arena arena : am.getArenas()) { arena.forceEnd(); } - Messenger.tell(sender, Msg.FORCE_END_ENDED); am.resetArenaMap(); return true; @@ -38,53 +40,46 @@ public class ForceCommand implements Command Arena arena = am.getArenaWithName(arg2); if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } if (arena.getAllPlayers().isEmpty()) { Messenger.tell(sender, Msg.FORCE_END_EMPTY); - return false; + return true; } // And end it! arena.forceEnd(); Messenger.tell(sender, Msg.FORCE_END_ENDED); - return true; } if (arg1.equals("start")) { // Require argument. - if (arg2.equals("")) { - Messenger.tell(sender, "Usage: /ma force start "); - return false; - } + if (arg2.equals("")) return false; // Grab the arena. Arena arena = am.getArenaWithName(arg2); if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } if (arena.isRunning()) { Messenger.tell(sender, Msg.FORCE_START_RUNNING); - return false; + return true; } if (arena.getReadyPlayersInLobby().isEmpty()) { Messenger.tell(sender, Msg.FORCE_START_NOT_READY); - return false; + return true; } // And start it! arena.forceStart(); Messenger.tell(sender, Msg.FORCE_START_STARTED); - return true; } - - Messenger.tell(sender, "Usage: /ma force start|end ()"); - return true; + return false; } } diff --git a/src/com/garbagemule/MobArena/commands/admin/KickCommand.java b/src/com/garbagemule/MobArena/commands/admin/KickCommand.java index eb498d3..6fe799b 100644 --- a/src/com/garbagemule/MobArena/commands/admin/KickCommand.java +++ b/src/com/garbagemule/MobArena/commands/admin/KickCommand.java @@ -19,28 +19,21 @@ public class KickCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + // Require a player name + if (args.length != 1) return false; - // Require an argument - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma kick "); - return false; - } - - Arena arena = am.getArenaWithPlayer(arg1); + Arena arena = am.getArenaWithPlayer(args[0]); if (arena == null) { Messenger.tell(sender, "That player is not in an arena."); - return false; + return true; } // Grab the Player object. - Player bp = am.getPlugin().getServer().getPlayer(arg1); + Player bp = am.getPlugin().getServer().getPlayer(args[0]); // Force leave. arena.playerLeave(bp); - - Messenger.tell(sender, "Player '" + arg1 + "' was kicked from arena '" + arena.configName() + "'."); + Messenger.tell(sender, "Player '" + args[0] + "' was kicked from arena '" + arena.configName() + "'."); Messenger.tell(bp, "You were kicked by " + sender.getName() + "."); return true; } diff --git a/src/com/garbagemule/MobArena/commands/admin/RestoreCommand.java b/src/com/garbagemule/MobArena/commands/admin/RestoreCommand.java index cca6c9e..3298809 100644 --- a/src/com/garbagemule/MobArena/commands/admin/RestoreCommand.java +++ b/src/com/garbagemule/MobArena/commands/admin/RestoreCommand.java @@ -18,26 +18,19 @@ public class RestoreCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + // Require a player name + if (args.length != 1) return false; - // Require an argument - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma restore "); - return false; - } - - if (am.getArenaWithPlayer(arg1) != null) { + if (am.getArenaWithPlayer(args[0]) != null) { Messenger.tell(sender, "Player is currently in an arena."); - return false; + return true; } - if (InventoryManager.restoreFromFile(am.getPlugin(), am.getPlugin().getServer().getPlayer(arg1))) { - Messenger.tell(sender, "Restored " + arg1 + "'s inventory!"); + if (InventoryManager.restoreFromFile(am.getPlugin(), am.getPlugin().getServer().getPlayer(args[0]))) { + Messenger.tell(sender, "Restored " + args[0] + "'s inventory!"); } else { - Messenger.tell(sender, "Failed to restore " + arg1 + "'s inventory."); + Messenger.tell(sender, "Failed to restore " + args[0] + "'s inventory."); } - return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/AddArenaCommand.java b/src/com/garbagemule/MobArena/commands/setup/AddArenaCommand.java index a587c57..e682730 100644 --- a/src/com/garbagemule/MobArena/commands/setup/AddArenaCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/AddArenaCommand.java @@ -21,31 +21,25 @@ public class AddArenaCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } - - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + + // Require an arena name + if (args.length != 1) return false; // Cast the sender. Player p = (Player) sender; - - // Require an argument - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma addarena "); - return true; - } - Arena arena = am.getArenaWithName(arg1); + Arena arena = am.getArenaWithName(args[0]); if (arena != null) { Messenger.tell(sender, "An arena with that name already exists."); return true; } - arena = am.createArenaNode(arg1, p.getWorld()); + arena = am.createArenaNode(args[0], p.getWorld()); am.setSelectedArena(arena); - Messenger.tell(sender, "New arena with name '" + arg1 + "' created!"); + Messenger.tell(sender, "New arena with name '" + args[0] + "' created!"); return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/AddClassPermCommand.java b/src/com/garbagemule/MobArena/commands/setup/AddClassPermCommand.java index 2e1016c..b03617c 100644 --- a/src/com/garbagemule/MobArena/commands/setup/AddClassPermCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/AddClassPermCommand.java @@ -18,30 +18,24 @@ public class AddClassPermCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); - String arg2 = (args.length > 1 ? args[1] : ""); - - if (arg1.equals("") || arg2.equals("")) { - Messenger.tell(sender, "Usage: /ma addclassperm "); - return false; - } - + // Require classname and permission + if (args.length != 2) return false; + // Grab the arena class - ArenaClass arenaClass = am.getClasses().get(arg1); + ArenaClass arenaClass = am.getClasses().get(args[0]); if (arenaClass == null) { - Messenger.tell(sender, "The class '" + TextUtils.camelCase(arg1) + "' does not exist."); - return false; + Messenger.tell(sender, "The class '" + TextUtils.camelCase(args[0]) + "' does not exist."); + return true; } // Try to add the permission. - if (am.addClassPermission(arg1, arg2)) { - Messenger.tell(sender, "Added permission '" + arg2 + "' to class '" + TextUtils.camelCase(arg1) + "'."); + if (am.addClassPermission(args[0], args[1])) { + Messenger.tell(sender, "Added permission '" + args[1] + "' to class '" + TextUtils.camelCase(args[0]) + "'."); return true; } // If it wasn't added, notify. - Messenger.tell(sender, "Permission '" + arg2 + "' was NOT added to class '" + TextUtils.camelCase(arg1) + "'."); - return false; + Messenger.tell(sender, "Permission '" + args[1] + "' was NOT added to class '" + TextUtils.camelCase(args[0]) + "'."); + return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/AddContainerCommand.java b/src/com/garbagemule/MobArena/commands/setup/AddContainerCommand.java index bec6870..222a35b 100644 --- a/src/com/garbagemule/MobArena/commands/setup/AddContainerCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/AddContainerCommand.java @@ -21,27 +21,23 @@ public class AddContainerCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } - - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + + // Require a point name + if (args.length != 1 || args[0].matches("^[a-zA-Z][a-zA-Z0-9]*$")) return false; // Cast the sender. Player p = (Player) sender; - - if (!arg1.matches("^[a-zA-Z][a-zA-Z0-9]*$")) { - Messenger.tell(sender, "Usage: /ma addcontainer "); - return false; - } - + + // Make sure we're looking at a container if (!(p.getTargetBlock(null, 50).getState() instanceof InventoryHolder)) { Messenger.tell(sender, "You must look at container."); - return false; + return true; } - am.getSelectedArena().getRegion().addChest(arg1, p.getTargetBlock(null, 50).getLocation()); - Messenger.tell(sender, "Container '" + arg1 + "' added for arena \"" + am.getSelectedArena().configName() + "\""); + am.getSelectedArena().getRegion().addChest(args[0], p.getTargetBlock(null, 50).getLocation()); + Messenger.tell(sender, "Container '" + args[0] + "' added for arena \"" + am.getSelectedArena().configName() + "\""); return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/AddSpawnpointCommand.java b/src/com/garbagemule/MobArena/commands/setup/AddSpawnpointCommand.java index 5e3fca9..e07f04f 100644 --- a/src/com/garbagemule/MobArena/commands/setup/AddSpawnpointCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/AddSpawnpointCommand.java @@ -22,19 +22,14 @@ public class AddSpawnpointCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } - - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + + // Require a point name + if (args.length != 1 || args[0].matches("^[a-zA-Z][a-zA-Z0-9]*$")) return false; // Cast the sender. Player p = (Player) sender; - - if (!arg1.matches("^[a-zA-Z][a-zA-Z0-9]*$")) { - Messenger.tell(sender, "Usage: /ma addspawn "); - return true; - } // Make a world check first Arena arena = am.getSelectedArena(); @@ -57,7 +52,7 @@ public class AddSpawnpointCommand implements Command if (changeWorld) arena.setWorld(aw); } else { // Add the spawnpoint - am.getSelectedArena().getRegion().addSpawn(arg1, p.getLocation()); + am.getSelectedArena().getRegion().addSpawn(args[0], p.getLocation()); // Notify the player if world changed if (changeWorld) { @@ -67,7 +62,7 @@ public class AddSpawnpointCommand implements Command } // Then notify about point set - Messenger.tell(sender, "Spawnpoint '" + arg1 + "' added for arena '" + am.getSelectedArena().configName() + "'"); + Messenger.tell(sender, "Spawnpoint '" + args[0] + "' added for arena '" + am.getSelectedArena().configName() + "'"); arena.getRegion().checkData(am.getPlugin(), sender, false, false, false, true); } return true; diff --git a/src/com/garbagemule/MobArena/commands/setup/AutoDegenerateCommand.java b/src/com/garbagemule/MobArena/commands/setup/AutoDegenerateCommand.java index 41c2b94..ba80297 100644 --- a/src/com/garbagemule/MobArena/commands/setup/AutoDegenerateCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/AutoDegenerateCommand.java @@ -18,33 +18,28 @@ public class AutoDegenerateCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the arguments, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + // Require an arena name + if (args.length != 1) return false; - // Require an argument - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma autodegenerate "); - return true; - } - + // We have to make sure at least one arena exists before degenerating if (am.getArenas().size() < 2) { Messenger.tell(sender, "At least one arena must exist!"); return true; } // Check if arena exists. - Arena arena = am.getArenaWithName(arg1); + Arena arena = am.getArenaWithName(args[0]); if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); return true; } - if (!MAUtils.undoItHippieMonster(arg1, am.getPlugin(), true)) { + if (!MAUtils.undoItHippieMonster(args[0], am.getPlugin(), true)) { Messenger.tell(sender, "Could not degenerate arena."); return true; } - Messenger.tell(sender, "Arena with name '" + arg1 + "' degenerated."); + Messenger.tell(sender, "Arena with name '" + args[0] + "' degenerated."); return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/AutoGenerateCommand.java b/src/com/garbagemule/MobArena/commands/setup/AutoGenerateCommand.java index de4f911..f881af6 100644 --- a/src/com/garbagemule/MobArena/commands/setup/AutoGenerateCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/AutoGenerateCommand.java @@ -21,34 +21,28 @@ public class AutoGenerateCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } - - // Grab the arguments, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + + // Require an arena name + if (args.length != 1) return false; // Cast the sender. Player p = (Player) sender; - - // Require an argument - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma autogenerate "); - return true; - } // Check if arena already exists. - Arena arena = am.getArenaWithName(arg1); + Arena arena = am.getArenaWithName(args[0]); if (arena != null) { Messenger.tell(sender, "An arena with that name already exists."); return true; } - if (!MAUtils.doooooItHippieMonster(p.getLocation(), 13, arg1, am.getPlugin())) { + if (!MAUtils.doooooItHippieMonster(p.getLocation(), 13, args[0], am.getPlugin())) { Messenger.tell(sender, "Could not auto-generate arena."); return true; } - Messenger.tell(sender, "Arena with name '" + arg1 + "' generated."); + Messenger.tell(sender, "Arena with name '" + args[0] + "' generated."); return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/CheckDataCommand.java b/src/com/garbagemule/MobArena/commands/setup/CheckDataCommand.java index f333be3..47f2e10 100644 --- a/src/com/garbagemule/MobArena/commands/setup/CheckDataCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/CheckDataCommand.java @@ -10,7 +10,7 @@ import com.garbagemule.MobArena.framework.ArenaMaster; @CommandInfo( name = "checkdata", pattern = "checkdata", - usage = "/ma checkdata", + usage = "/ma checkdata ()", desc = "check if all required points are set up", permission = "mobarena.setup.checkdata" ) @@ -24,7 +24,7 @@ public class CheckDataCommand implements Command Arena arena = arg1.equals("") ? am.getSelectedArena() : am.getArenaWithName(arg1); if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } arena.getRegion().checkData(am.getPlugin(), sender, true, true, true, true); diff --git a/src/com/garbagemule/MobArena/commands/setup/CheckSpawnsCommand.java b/src/com/garbagemule/MobArena/commands/setup/CheckSpawnsCommand.java index 66a5853..6637f1f 100644 --- a/src/com/garbagemule/MobArena/commands/setup/CheckSpawnsCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/CheckSpawnsCommand.java @@ -23,7 +23,7 @@ public class CheckSpawnsCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } // Grab the argument, if any. @@ -33,29 +33,23 @@ public class CheckSpawnsCommand implements Command Player p = (Player) sender; Arena arena; - if (arg1.equals("")) { arena = am.getArenaAtLocation(p.getLocation()); if (arena == null) { arena = am.getSelectedArena(); } - if (arena.getRegion().getSpawnpoints().isEmpty()) { Messenger.tell(sender, "There are no spawnpoints in the selected arena."); - return false; + return true; } - } - else { + } else { arena = am.getArenaWithName(arg1); - if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } } - arena.getRegion().checkSpawns(p); - return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/ClassChestCommand.java b/src/com/garbagemule/MobArena/commands/setup/ClassChestCommand.java index 7e2fa73..39b4899 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ClassChestCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ClassChestCommand.java @@ -26,14 +26,12 @@ public class ClassChestCommand implements Command { public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; - } - - if (args.length != 1) { - Messenger.tell(sender, "Usage: /ma classchest "); return true; } + // Require a class name + if (args.length != 1) return false; + ArenaClass ac = am.getClasses().get(args[0].toLowerCase()); if (ac == null) { Messenger.tell(sender, "Class not found."); diff --git a/src/com/garbagemule/MobArena/commands/setup/ConfigCommand.java b/src/com/garbagemule/MobArena/commands/setup/ConfigCommand.java index ff2f2f8..c919164 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ConfigCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ConfigCommand.java @@ -17,23 +17,18 @@ public class ConfigCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); - - if (arg1.equals("reload")) { + // Require reload/save + if (args.length != 1) return false; + + if (args[0].equals("reload")) { am.reloadConfig(); Messenger.tell(sender, "Config reloaded."); - return true; - } - - if (arg1.equals("save")) { + } else if (args[0].equals("save")) { am.saveConfig(); Messenger.tell(sender, "Config saved."); - return true; + } else { + return false; } - - // Requires an argument. - Messenger.tell(sender, "Usage: /ma config reload|save"); - return false; + return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/EditArenaCommand.java b/src/com/garbagemule/MobArena/commands/setup/EditArenaCommand.java index 77db98e..96c32e4 100644 --- a/src/com/garbagemule/MobArena/commands/setup/EditArenaCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/EditArenaCommand.java @@ -36,15 +36,13 @@ public class EditArenaCommand implements Command // Argument is [true|false] if (arg1.matches("true|on") || arg1.matches("false|off")) { arena = am.getSelectedArena(); - arena.setEditMode(arg1.equals("true")); + arena.setEditMode(arg1.matches("true|on")); } // Argument is else { arena = am.getArenaWithName(arg1); if (arena == null) { Messenger.tell(sender, "There is no arena with that name."); - Messenger.tell(sender, "Usage: /ma editarena (true|false)"); - Messenger.tell(sender, " or /ma editarena (true|false)"); return true; } arena.setEditMode(!arena.inEditMode()); @@ -54,18 +52,14 @@ public class EditArenaCommand implements Command // Two arguments else { if (!(arg2.matches("true|on") || arg2.matches("false|off"))) { - Messenger.tell(sender, "Usage: /ma editarena (true|false)"); - Messenger.tell(sender, " or /ma editarena (true|false)"); - return true; + return false; } arena = am.getArenaWithName(arg1); if (arena == null) { Messenger.tell(sender, "There is no arena with that name."); - Messenger.tell(sender, "Usage: /ma editarena (true|false)"); - Messenger.tell(sender, " or /ma editarena (true|false)"); return true; } - arena.setEditMode(arg2.equals("true")); + arena.setEditMode(arg2.matches("true|on")); } Messenger.tell(sender, "Edit mode for arena '" + arena.configName() + "': " + ((arena.inEditMode()) ? ChatColor.GREEN + "true" : ChatColor.RED + "false")); diff --git a/src/com/garbagemule/MobArena/commands/setup/ExpandLobbyRegionCommand.java b/src/com/garbagemule/MobArena/commands/setup/ExpandLobbyRegionCommand.java index 55111c2..0fb8112 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ExpandLobbyRegionCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ExpandLobbyRegionCommand.java @@ -17,40 +17,29 @@ public class ExpandLobbyRegionCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); - String arg2 = (args.length > 1 ? args[1] : ""); - - if (args.length != 2 || !arg1.matches("(-)?[0-9]+")) { - Messenger.tell(sender, "Usage: /ma expandlobbyregion up|down|out"); - return false; - } + // Require amount and direction + if (args.length != 2 || !args[0].matches("(-)?[0-9]+")) return false; if (!am.getSelectedArena().getRegion().isLobbyDefined()) { Messenger.tell(sender, "You must first define l1 and l2"); return true; } - if (arg2.equals("up")) { - am.getSelectedArena().getRegion().expandLobbyUp(Integer.parseInt(arg1)); - } - else if (arg2.equals("down")) { - am.getSelectedArena().getRegion().expandLobbyDown(Integer.parseInt(arg1)); - } - else if (arg2.equals("out")) { - am.getSelectedArena().getRegion().expandLobbyOut(Integer.parseInt(arg1)); - } - else { - Messenger.tell(sender, "Usage: /ma expandlobbyregion up|down|out"); - return true; + if (args[1].equals("up")) { + am.getSelectedArena().getRegion().expandLobbyUp(Integer.parseInt(args[0])); + } else if (args[1].equals("down")) { + am.getSelectedArena().getRegion().expandLobbyDown(Integer.parseInt(args[0])); + } else if (args[1].equals("out")) { + am.getSelectedArena().getRegion().expandLobbyOut(Integer.parseInt(args[0])); + } else { + return false; } // In case of a "negative" region, fix it! am.getSelectedArena().getRegion().fixLobbyRegion(); - Messenger.tell(sender, "Lobby region for '" + am.getSelectedArena().configName() + "' expanded " + arg2 + " by " + arg1 + " blocks."); + Messenger.tell(sender, "Lobby region for '" + am.getSelectedArena().configName() + "' expanded " + args[1] + " by " + args[0] + " blocks."); am.getSelectedArena().getRegion().save(); - return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/ExpandRegionCommand.java b/src/com/garbagemule/MobArena/commands/setup/ExpandRegionCommand.java index cea8aeb..c187b26 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ExpandRegionCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ExpandRegionCommand.java @@ -17,40 +17,29 @@ public class ExpandRegionCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); - String arg2 = (args.length > 1 ? args[1] : ""); - - if (args.length != 2 || !arg1.matches("(-)?[0-9]+")) { - Messenger.tell(sender, "Usage: /ma expandregion up|down|out"); - return false; - } + // Require amount and direction + if (args.length != 2 || !args[0].matches("(-)?[0-9]+")) return false; if (!am.getSelectedArena().getRegion().isDefined()) { Messenger.tell(sender, "You must first define p1 and p2"); return true; } - - if (arg2.equals("up")) { - am.getSelectedArena().getRegion().expandUp(Integer.parseInt(arg1)); - } - else if (arg2.equals("down")) { - am.getSelectedArena().getRegion().expandDown(Integer.parseInt(arg1)); - } - else if (arg2.equals("out")) { - am.getSelectedArena().getRegion().expandOut(Integer.parseInt(arg1)); - } - else { - Messenger.tell(sender, "Usage: /ma expandregion up|down|out"); - return true; + + if (args[1].equals("up")) { + am.getSelectedArena().getRegion().expandUp(Integer.parseInt(args[0])); + } else if (args[1].equals("down")) { + am.getSelectedArena().getRegion().expandDown(Integer.parseInt(args[0])); + } else if (args[1].equals("out")) { + am.getSelectedArena().getRegion().expandOut(Integer.parseInt(args[0])); + } else { + return false; } // In case of a "negative" region, fix it! am.getSelectedArena().getRegion().fixRegion(); - Messenger.tell(sender, "Region for '" + am.getSelectedArena().configName() + "' expanded " + arg2 + " by " + arg1 + " blocks."); + Messenger.tell(sender, "Region for '" + am.getSelectedArena().configName() + "' expanded " + args[1] + " by " + args[0] + " blocks."); am.getSelectedArena().getRegion().save(); - return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/ListClassPermsCommand.java b/src/com/garbagemule/MobArena/commands/setup/ListClassPermsCommand.java index 2973677..7f7f48e 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ListClassPermsCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ListClassPermsCommand.java @@ -21,17 +21,11 @@ public class ListClassPermsCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + // Require a class name + if (args.length != 1) return false; - // Require an argument. - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma listclassperms "); - return true; - } - - ArenaClass arenaClass = am.getClasses().get(arg1); - String className = TextUtils.camelCase(arg1); + ArenaClass arenaClass = am.getClasses().get(args[0]); + String className = TextUtils.camelCase(args[0]); if (arenaClass == null) { Messenger.tell(sender, "The class '" + className + "' does not exist."); diff --git a/src/com/garbagemule/MobArena/commands/setup/ProtectCommand.java b/src/com/garbagemule/MobArena/commands/setup/ProtectCommand.java index 478407c..81ebf7e 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ProtectCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ProtectCommand.java @@ -43,8 +43,6 @@ public class ProtectCommand implements Command arena = am.getArenaWithName(arg1); if (arena == null) { Messenger.tell(sender, "There is no arena with that name."); - Messenger.tell(sender, "Usage: /ma protect (true|false)"); - Messenger.tell(sender, " or /ma protect (true|false)"); return true; } arena.setProtected(!arena.isProtected()); @@ -54,18 +52,14 @@ public class ProtectCommand implements Command // Two arguments else { if (!(arg2.matches("true|on") || arg2.matches("false|off"))) { - Messenger.tell(sender, "Usage: /ma protect (true|false)"); - Messenger.tell(sender, " or /ma protect (true|false)"); - return true; + return false; } arena = am.getArenaWithName(arg1); if (arena == null) { Messenger.tell(sender, "There is no arena with that name."); - Messenger.tell(sender, "Usage: /ma protect (true|false)"); - Messenger.tell(sender, " or /ma protect (true|false)"); return true; } - arena.setProtected(arg2.equals("true")); + arena.setProtected(arg2.matches("true|on")); } arena.getPlugin().saveConfig(); diff --git a/src/com/garbagemule/MobArena/commands/setup/RemoveArenaCommand.java b/src/com/garbagemule/MobArena/commands/setup/RemoveArenaCommand.java index c2adf4c..21bdb68 100644 --- a/src/com/garbagemule/MobArena/commands/setup/RemoveArenaCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/RemoveArenaCommand.java @@ -18,24 +18,18 @@ public class RemoveArenaCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); - - // Require an argument - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma removearena "); - return false; - } + // Require an arena name + if (args.length != 1) return false; if (am.getArenas().size() == 1) { Messenger.tell(sender, "At least one arena must exist."); - return false; + return true; } - Arena arena = am.getArenaWithName(arg1); + Arena arena = am.getArenaWithName(args[0]); if (arena == null) { Messenger.tell(sender, "There is no arena with that name."); - return false; + return true; } am.removeArenaNode(arena); diff --git a/src/com/garbagemule/MobArena/commands/setup/RemoveClassCommand.java b/src/com/garbagemule/MobArena/commands/setup/RemoveClassCommand.java index fb514d2..6ade546 100644 --- a/src/com/garbagemule/MobArena/commands/setup/RemoveClassCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/RemoveClassCommand.java @@ -18,21 +18,15 @@ public class RemoveClassCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); - - // Require an argument. - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma removeclass "); - return false; - } + // Require a class name + if (args.length != 1) return false; // Find the class - ArenaClass arenaClass = am.getClasses().get(arg1); - String className = TextUtils.camelCase(arg1); + ArenaClass arenaClass = am.getClasses().get(args[0]); + String className = TextUtils.camelCase(args[0]); if (arenaClass == null) { Messenger.tell(sender, "The class '" + className + "' does not exist."); - return false; + return true; } am.removeClassNode(className); diff --git a/src/com/garbagemule/MobArena/commands/setup/RemoveClassPermCommand.java b/src/com/garbagemule/MobArena/commands/setup/RemoveClassPermCommand.java index 6c616ab..fa084e2 100644 --- a/src/com/garbagemule/MobArena/commands/setup/RemoveClassPermCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/RemoveClassPermCommand.java @@ -18,30 +18,24 @@ public class RemoveClassPermCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); - String arg2 = (args.length > 1 ? args[1] : ""); - - if (arg1.equals("") || arg2.equals("")) { - Messenger.tell(sender, "Usage: /ma removeclassperm "); - return false; - } - + // Require class name and permission + if (args.length != 2) return false; + // Grab the arena class - ArenaClass arenaClass = am.getClasses().get(arg1); + ArenaClass arenaClass = am.getClasses().get(args[0]); if (arenaClass == null) { - Messenger.tell(sender, "The class '" + TextUtils.camelCase(arg1) + "' does not exist."); - return false; + Messenger.tell(sender, "The class '" + TextUtils.camelCase(args[0]) + "' does not exist."); + return true; } // Remove the permission. - if (am.removeClassPermission(arg1, arg2)) { - Messenger.tell(sender, "Removed permission '" + arg2 + "' from class '" + TextUtils.camelCase(arg1) + "'."); + if (am.removeClassPermission(args[0], args[1])) { + Messenger.tell(sender, "Removed permission '" + args[1] + "' from class '" + TextUtils.camelCase(args[0]) + "'."); return true; } // If it wasn't removed, notify. - Messenger.tell(sender, "Permission '" + arg2 + "' was NOT removed from class '" + TextUtils.camelCase(arg1) + "'."); - return false; + Messenger.tell(sender, "Permission '" + args[1] + "' was NOT removed from class '" + TextUtils.camelCase(args[0]) + "'."); + return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/RemoveContainerCommand.java b/src/com/garbagemule/MobArena/commands/setup/RemoveContainerCommand.java index f20463f..9d429b4 100644 --- a/src/com/garbagemule/MobArena/commands/setup/RemoveContainerCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/RemoveContainerCommand.java @@ -17,19 +17,14 @@ public class RemoveContainerCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + // Require a point name + if (args.length != 1 || !args[0].matches("^[a-zA-Z][a-zA-Z0-9]*$")) return false; - // Require an argument - if (!arg1.matches("^[a-zA-Z][a-zA-Z0-9]*$")) { - Messenger.tell(sender, "Usage: /ma removecontainer "); - return false; + if (am.getSelectedArena().getRegion().removeChest(args[0])) { + Messenger.tell(sender, "Container " + args[0] + " removed for arena '" + am.getSelectedArena().configName() + "'"); + } else { + Messenger.tell(sender, "Could not find the container " + args[0] + "for the arena '" + am.getSelectedArena().configName() + "'"); } - - if (am.getSelectedArena().getRegion().removeChest(arg1)) - Messenger.tell(sender, "Container " + arg1 + " removed for arena '" + am.getSelectedArena().configName() + "'"); - else - Messenger.tell(sender, "Could not find the container " + arg1 + "for the arena '" + am.getSelectedArena().configName() + "'"); return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/RemoveLeaderboardCommand.java b/src/com/garbagemule/MobArena/commands/setup/RemoveLeaderboardCommand.java index 7fec32f..760139f 100644 --- a/src/com/garbagemule/MobArena/commands/setup/RemoveLeaderboardCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/RemoveLeaderboardCommand.java @@ -9,14 +9,14 @@ import com.garbagemule.MobArena.commands.CommandInfo; import com.garbagemule.MobArena.framework.ArenaMaster; @CommandInfo( - name = "removeleaderboard", - pattern = "(del(.)*|r(e)?m(ove)?)leaderboard", - usage = "/ma removeleaderboard ", - desc = "remove the selected arena's leaderboard", - permission = "mobarena.setup.leaderboards" - ) -public class RemoveLeaderboardCommand implements Command{ - + name = "removeleaderboard", + pattern = "(del(.)*|r(e)?m(ove)?)leaderboard", + usage = "/ma removeleaderboard ()", + desc = "remove the selected arena's leaderboard", + permission = "mobarena.setup.leaderboards" +) +public class RemoveLeaderboardCommand implements Command +{ @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { // Grab the argument, if any. @@ -28,29 +28,22 @@ public class RemoveLeaderboardCommand implements Command{ am.getSelectedArena().getRegion().set("leaderboard", null); Messenger.tell(sender, "Leaderboard for " + am.getSelectedArena().arenaName() + " successfully removed!"); return true; - } - else { + } else { Messenger.tell(sender, Msg.ARENA_LBOARD_NOT_FOUND); } - } - else { + } else { if (am.getArenaWithName(arg1) != null) { if (am.getSelectedArena().getRegion().getLeaderboard() != null) { am.getArenaWithName(arg1).getRegion().set("leaderboard", null); Messenger.tell(sender, "Leaderboard for " + am.getArenaWithName(arg1).arenaName() + " successfully removed!"); return true; - } - else { + } else { Messenger.tell(sender, Msg.ARENA_LBOARD_NOT_FOUND); } - } - else { - Messenger.tell(sender, "Usage: /ma removeleaderboard "); - return false; + } else { + Messenger.tell(sender, "No arena with that name exists."); } } - - return false; + return true; } - } \ No newline at end of file diff --git a/src/com/garbagemule/MobArena/commands/setup/RemoveSpawnpointCommand.java b/src/com/garbagemule/MobArena/commands/setup/RemoveSpawnpointCommand.java index 5630343..89b5d86 100644 --- a/src/com/garbagemule/MobArena/commands/setup/RemoveSpawnpointCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/RemoveSpawnpointCommand.java @@ -17,19 +17,14 @@ public class RemoveSpawnpointCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + // Require a point name + if (args.length != 1 || !args[0].matches("^[a-zA-Z][a-zA-Z0-9]*$")) return false; - // Require an argument - if (!arg1.matches("^[a-zA-Z][a-zA-Z0-9]*$")) { - Messenger.tell(sender, "Usage: /ma removespawn "); - return true; + if (am.getSelectedArena().getRegion().removeSpawn(args[0])) { + Messenger.tell(sender, "Spawnpoint " + args[0] + " removed for arena '" + am.getSelectedArena().configName() + "'"); + } else { + Messenger.tell(sender, "Could not find the spawnpoint " + args[0] + "for the arena '" + am.getSelectedArena().configName() + "'"); } - - if (am.getSelectedArena().getRegion().removeSpawn(arg1)) - Messenger.tell(sender, "Spawnpoint " + arg1 + " removed for arena '" + am.getSelectedArena().configName() + "'"); - else - Messenger.tell(sender, "Could not find the spawnpoint " + arg1 + "for the arena '" + am.getSelectedArena().configName() + "'"); return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/SetArenaCommand.java b/src/com/garbagemule/MobArena/commands/setup/SetArenaCommand.java index c451752..8a4c64e 100644 --- a/src/com/garbagemule/MobArena/commands/setup/SetArenaCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/SetArenaCommand.java @@ -18,24 +18,16 @@ public class SetArenaCommand implements Command { @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); - - // Require an argument - if (arg1.equals("")) { - Messenger.tell(sender, "Usage: /ma setarena "); - return false; - } + // Require an arena name + if (args.length != 1) return false; - Arena arena = am.getArenaWithName(arg1); + Arena arena = am.getArenaWithName(args[0]); if (arena != null) { am.setSelectedArena(arena); Messenger.tell(sender, "Currently selected arena: " + arena.configName()); - } - else { + } else { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); } - return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/SetClassCommand.java b/src/com/garbagemule/MobArena/commands/setup/SetClassCommand.java index a8c569d..df2f439 100644 --- a/src/com/garbagemule/MobArena/commands/setup/SetClassCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/SetClassCommand.java @@ -21,8 +21,11 @@ public class SetClassCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } + + // Require at least a class name + if (args.length < 1) return false; // Grab the argument, if any. String arg1 = (args.length > 0 ? args[0] : ""); @@ -31,19 +34,9 @@ public class SetClassCommand implements Command // Cast the sender. Player p = (Player) sender; - // Require an argument. - if (arg1.equals("")) { - Messenger.tell(p, "Usage: /ma setclass (safe) "); - return true; - } - // Check if we're overwriting. boolean safe = arg1.equals("safe"); - - if (safe && arg2.equals("")) { - Messenger.tell(p, "Usage: /ma setclass (safe) "); - return true; - } + if (safe && arg2.equals("")) return false; // If so, use arg2, otherwise, use arg1 String className = TextUtils.camelCase(safe ? arg2 : arg1); diff --git a/src/com/garbagemule/MobArena/commands/setup/SetLobbyRegionCommand.java b/src/com/garbagemule/MobArena/commands/setup/SetLobbyRegionCommand.java index df1c3cc..535c241 100644 --- a/src/com/garbagemule/MobArena/commands/setup/SetLobbyRegionCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/SetLobbyRegionCommand.java @@ -22,7 +22,7 @@ public class SetLobbyRegionCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } // Grab the argument, if any. diff --git a/src/com/garbagemule/MobArena/commands/setup/SetRegionCommand.java b/src/com/garbagemule/MobArena/commands/setup/SetRegionCommand.java index 21358a3..062f4a6 100644 --- a/src/com/garbagemule/MobArena/commands/setup/SetRegionCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/SetRegionCommand.java @@ -22,19 +22,14 @@ public class SetRegionCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } - - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + + // Require a region point + if (args.length != 1 || !args[0].matches("p1|p2")) return false; // Cast the sender. Player p = (Player) sender; - - if (!(arg1.equals("p1") || arg1.equals("p2"))) { - Messenger.tell(sender, "Usage: /ma setregion p1|p2"); - return true; - } Arena arena = am.getSelectedArena(); World aw = arena.getWorld(); @@ -46,8 +41,8 @@ public class SetRegionCommand implements Command } arena.setWorld(p.getWorld()); - arena.getRegion().set(arg1, p.getLocation()); - Messenger.tell(sender, "Region point " + arg1 + " for arena '" + am.getSelectedArena().configName() + "' set."); + arena.getRegion().set(args[0], p.getLocation()); + Messenger.tell(sender, "Region point " + args[0] + " for arena '" + am.getSelectedArena().configName() + "' set."); arena.getRegion().checkData(am.getPlugin(), sender, true, true, false, false); return true; } diff --git a/src/com/garbagemule/MobArena/commands/setup/SetWarpCommand.java b/src/com/garbagemule/MobArena/commands/setup/SetWarpCommand.java index 2c54051..99b990b 100644 --- a/src/com/garbagemule/MobArena/commands/setup/SetWarpCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/SetWarpCommand.java @@ -9,9 +9,6 @@ import com.garbagemule.MobArena.*; import com.garbagemule.MobArena.commands.*; import com.garbagemule.MobArena.framework.ArenaMaster; -import java.util.Arrays; -import java.util.List; - @CommandInfo( name = "setwarp", pattern = "set(warp|point)", @@ -21,26 +18,25 @@ import java.util.List; ) public class SetWarpCommand implements Command { - private static final List WARPS = Arrays.asList("arena", "lobby", "spectator", "exit"); - @Override public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } - - // Grab the argument, if any. - String arg1 = (args.length > 0 ? args[0] : ""); + + // Require a point name + if (args.length != 1) return false; // Cast the sender. Player p = (Player) sender; // spec -> spectator - if (arg1.equals("spec")) arg1 = "spectator"; + if (args[0].equals("spec")) args[0] = "spectator"; - if (!WARPS.contains(arg1)) { - Messenger.tell(sender, "Usage: /ma setwarp arena|lobby|spectator|exit"); + // Check that the point is valid + if (!args[0].matches("arena|lobby|spectator|exit")) { + Messenger.tell(sender, "There's no warp called '" + args[0] + "'."); return true; } @@ -48,13 +44,13 @@ public class SetWarpCommand implements Command Arena arena = am.getSelectedArena(); World aw = arena.getWorld(); World pw = p.getLocation().getWorld(); - boolean changeWorld = !arg1.equals("exit") && !aw.getName().equals(pw.getName()); + boolean changeWorld = !args[0].equals("exit") && !aw.getName().equals(pw.getName()); // Change worlds to make sure the region check doesn't fail if (changeWorld) arena.setWorld(pw); // Make sure the arena warp is inside the region - if (arg1.equals("arena") && !arena.getRegion().contains(p.getLocation())) { + if (args[0].equals("arena") && !arena.getRegion().contains(p.getLocation())) { if (arena.getRegion().isDefined()) { Messenger.tell(sender, "You must be inside the arena region!"); } else { @@ -65,7 +61,7 @@ public class SetWarpCommand implements Command if (changeWorld) arena.setWorld(aw); } else { // Set the region point - arena.getRegion().set(arg1, p.getLocation()); + arena.getRegion().set(args[0], p.getLocation()); // Notify the player if world changed if (changeWorld) { @@ -74,7 +70,7 @@ public class SetWarpCommand implements Command } // Then notify about point set - Messenger.tell(sender, "Warp point '" + arg1 + "' was set for arena '" + am.getSelectedArena().configName() + "'"); + Messenger.tell(sender, "Warp point '" + args[0] + "' was set for arena '" + am.getSelectedArena().configName() + "'"); arena.getRegion().checkData(am.getPlugin(), sender, true, false, true, false); } return true; diff --git a/src/com/garbagemule/MobArena/commands/setup/ShowLobbyRegionCommand.java b/src/com/garbagemule/MobArena/commands/setup/ShowLobbyRegionCommand.java index 8eecc2a..a7d69f2 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ShowLobbyRegionCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ShowLobbyRegionCommand.java @@ -12,7 +12,7 @@ import org.bukkit.entity.Player; @CommandInfo( name = "showlobbyregion", - pattern = "showlobbyregion", + pattern = "showlobby(region)?", usage = "/ma showlobbyregion ()", desc = "show a lobby region", permission = "mobarena.setup.showlobbyregion" @@ -23,7 +23,7 @@ public class ShowLobbyRegionCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } // Grab the argument, if any. @@ -33,25 +33,22 @@ public class ShowLobbyRegionCommand implements Command Player p = (Player) sender; Arena arena; - if (arg1.equals("")) { arena = am.getArenaAtLocation(p.getLocation()); if (arena == null) { arena = am.getSelectedArena(); } - } - else { + } else { arena = am.getArenaWithName(arg1); - if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } } if (!arena.getRegion().isLobbyDefined()) { Messenger.tell(sender, "The lobby region is not defined for the selected arena."); - return false; + return true; } // Show an error message if we aren't in the right world @@ -59,11 +56,9 @@ public class ShowLobbyRegionCommand implements Command Messenger.tell(sender, "Arena '" + arena.configName() + "' is in world '" + arena.getWorld().getName() + "' and you are in world '" + p.getWorld().getName() + "'"); - return false; + return true; } - arena.getRegion().showLobbyRegion(p); - return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/ShowRegionCommand.java b/src/com/garbagemule/MobArena/commands/setup/ShowRegionCommand.java index c276505..7c4ffb0 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ShowRegionCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ShowRegionCommand.java @@ -10,7 +10,7 @@ import com.garbagemule.MobArena.framework.ArenaMaster; @CommandInfo( name = "showregion", - pattern = "showregion", + pattern = "show(region|arena)", usage = "/ma showregion ()", desc = "show an arena region", permission = "mobarena.setup.showregion" @@ -21,7 +21,7 @@ public class ShowRegionCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } // Grab the argument, if any. @@ -31,25 +31,22 @@ public class ShowRegionCommand implements Command Player p = (Player) sender; Arena arena; - if (arg1.equals("")) { arena = am.getArenaAtLocation(p.getLocation()); if (arena == null) { arena = am.getSelectedArena(); } - } - else { + } else { arena = am.getArenaWithName(arg1); - if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } } if (!arena.getRegion().isDefined()) { Messenger.tell(sender, "The region is not defined for the selected arena."); - return false; + return true; } // Show an error message if we aren't in the right world @@ -57,11 +54,9 @@ public class ShowRegionCommand implements Command Messenger.tell(sender, "Arena '" + arena.configName() + "' is in world '" + arena.getWorld().getName() + "' and you are in world '" + p.getWorld().getName() + "'"); - return false; + return true; } - arena.getRegion().showRegion(p); - return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/ShowSpawnsCommand.java b/src/com/garbagemule/MobArena/commands/setup/ShowSpawnsCommand.java index 439f49b..0660ed0 100644 --- a/src/com/garbagemule/MobArena/commands/setup/ShowSpawnsCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/ShowSpawnsCommand.java @@ -23,7 +23,7 @@ public class ShowSpawnsCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } // Grab the argument, if any. @@ -33,7 +33,6 @@ public class ShowSpawnsCommand implements Command Player p = (Player) sender; Arena arena; - if (arg1.equals("")) { arena = am.getArenaAtLocation(p.getLocation()); if (arena == null) { @@ -42,20 +41,16 @@ public class ShowSpawnsCommand implements Command if (arena.getRegion().getSpawnpoints().isEmpty()) { Messenger.tell(sender, "There are no spawnpoints in the selected arena."); - return false; + return true; } - } - else { + } else { arena = am.getArenaWithName(arg1); - if (arena == null) { Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); - return false; + return true; } } - arena.getRegion().showSpawns(p); - return true; } } diff --git a/src/com/garbagemule/MobArena/commands/setup/SpawnpointsCommand.java b/src/com/garbagemule/MobArena/commands/setup/SpawnpointsCommand.java index 61b7f1b..e58709b 100644 --- a/src/com/garbagemule/MobArena/commands/setup/SpawnpointsCommand.java +++ b/src/com/garbagemule/MobArena/commands/setup/SpawnpointsCommand.java @@ -27,11 +27,9 @@ public class SpawnpointsCommand implements Command buffy.append(s); buffy.append(" "); } - } - else { + } else { buffy.append(Msg.MISC_NONE); } - Messenger.tell(sender, "Spawnpoints for arena '" + am.getSelectedArena().configName() + "': " + buffy.toString()); return true; } diff --git a/src/com/garbagemule/MobArena/commands/user/JoinCommand.java b/src/com/garbagemule/MobArena/commands/user/JoinCommand.java index 4f933f6..f7b83a2 100644 --- a/src/com/garbagemule/MobArena/commands/user/JoinCommand.java +++ b/src/com/garbagemule/MobArena/commands/user/JoinCommand.java @@ -21,7 +21,7 @@ public class JoinCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } // Cast the sender, grab the argument, if any. @@ -30,20 +30,20 @@ public class JoinCommand implements Command // Run some rough sanity checks, and grab the arena to join. Arena toArena = Commands.getArenaToJoinOrSpec(am, p, arg1); - Arena fromArena = am.getArenaWithPlayer(p); if (toArena == null) { - return false; + return true; } // Deny joining from other arenas + Arena fromArena = am.getArenaWithPlayer(p); if (fromArena != null && (fromArena.inArena(p) || fromArena.inLobby(p))) { Messenger.tell(p, Msg.JOIN_ALREADY_PLAYING); - return false; + return true; } // Per-arena sanity checks if (!toArena.canJoin(p)) { - return false; + return true; } // Force leave previous arena diff --git a/src/com/garbagemule/MobArena/commands/user/LeaveCommand.java b/src/com/garbagemule/MobArena/commands/user/LeaveCommand.java index 85639ee..c89673b 100644 --- a/src/com/garbagemule/MobArena/commands/user/LeaveCommand.java +++ b/src/com/garbagemule/MobArena/commands/user/LeaveCommand.java @@ -21,7 +21,7 @@ public class LeaveCommand implements Command public boolean execute(ArenaMaster am, CommandSender sender, String... args) { if (!Commands.isPlayer(sender)) { Messenger.tell(sender, Msg.MISC_NOT_FROM_CONSOLE); - return false; + return true; } // Cast the sender. @@ -32,7 +32,7 @@ public class LeaveCommand implements Command arena = am.getArenaWithSpectator(p); if (arena == null) { Messenger.tell(p, Msg.LEAVE_NOT_PLAYING); - return false; + return true; } } diff --git a/src/com/garbagemule/MobArena/commands/user/NotReadyCommand.java b/src/com/garbagemule/MobArena/commands/user/NotReadyCommand.java index 0953c06..e9e8875 100644 --- a/src/com/garbagemule/MobArena/commands/user/NotReadyCommand.java +++ b/src/com/garbagemule/MobArena/commands/user/NotReadyCommand.java @@ -31,18 +31,15 @@ public class NotReadyCommand implements Command Messenger.tell(sender, Msg.ARENA_DOES_NOT_EXIST); return false; } - } - else if (Commands.isPlayer(sender)) { + } else if (Commands.isPlayer(sender)) { Player p = (Player) sender; arena = am.getArenaWithPlayer(p); if (arena == null) { Messenger.tell(sender, Msg.LEAVE_NOT_PLAYING); - return false; + return true; } - } - else { - Messenger.tell(sender, "Usage: /ma notready "); + } else { return false; } diff --git a/src/com/garbagemule/MobArena/commands/user/PlayerListCommand.java b/src/com/garbagemule/MobArena/commands/user/PlayerListCommand.java index 2af4c27..e476e39 100644 --- a/src/com/garbagemule/MobArena/commands/user/PlayerListCommand.java +++ b/src/com/garbagemule/MobArena/commands/user/PlayerListCommand.java @@ -35,9 +35,8 @@ public class PlayerListCommand implements Command } list = MAUtils.listToString(arena.getPlayersInArena(), am.getPlugin()); - } - else { - StringBuffer buffy = new StringBuffer(); + } else { + StringBuilder buffy = new StringBuilder(); List players = new LinkedList(); for (Arena arena : am.getArenas()) { diff --git a/src/com/garbagemule/MobArena/commands/user/SpecCommand.java b/src/com/garbagemule/MobArena/commands/user/SpecCommand.java index 2fd9df0..fabedd6 100644 --- a/src/com/garbagemule/MobArena/commands/user/SpecCommand.java +++ b/src/com/garbagemule/MobArena/commands/user/SpecCommand.java @@ -30,20 +30,20 @@ public class SpecCommand implements Command // Run some rough sanity checks, and grab the arena to spec. Arena toArena = Commands.getArenaToJoinOrSpec(am, p, arg1); - Arena fromArena = am.getArenaWithPlayer(p); if (toArena == null) { - return false; + return true; } // Deny spectating from other arenas + Arena fromArena = am.getArenaWithPlayer(p); if (fromArena != null && (fromArena.inArena(p) || fromArena.inLobby(p))) { Messenger.tell(p, Msg.SPEC_ALREADY_PLAYING); - return false; + return true; } // Per-arena sanity checks if (!toArena.canSpec(p)) { - return false; + return true; } // Force leave previous arena