From ce544da46dfe1fc2039926fe5efcf379bf514bb3 Mon Sep 17 00:00:00 2001 From: sk89q Date: Mon, 21 Feb 2011 23:15:19 -0800 Subject: [PATCH] Improved command detection algorithm, fixed //size. --- src/com/sk89q/worldedit/WorldEdit.java | 106 +++++++++--------- .../worldedit/commands/SelectionCommands.java | 2 +- 2 files changed, 55 insertions(+), 53 deletions(-) diff --git a/src/com/sk89q/worldedit/WorldEdit.java b/src/com/sk89q/worldedit/WorldEdit.java index cee9826e5..a896aae81 100644 --- a/src/com/sk89q/worldedit/WorldEdit.java +++ b/src/com/sk89q/worldedit/WorldEdit.java @@ -853,61 +853,63 @@ public class WorldEdit { } String searchCmd = split[0].toLowerCase(); - if (commands.hasCommand(searchCmd) - || (config.noDoubleSlash && commands.hasCommand("/" + searchCmd)) - || (searchCmd.length() >= 2 && searchCmd.charAt(0) == '/' - && commands.hasCommand(searchCmd.substring(1)))) { - if (config.noDoubleSlash && commands.hasCommand("/" + searchCmd)) { - split[0] = "/" + split[0]; - } else if (commands.hasCommand(searchCmd.substring(1))) { - split[0] = split[0].substring(1); - } - LocalSession session = getSession(player); - BlockBag blockBag = session.getBlockBag(player); - - session.tellVersion(player); - - EditSession editSession = - new EditSession(player.getWorld(), - session.getBlockChangeLimit(), blockBag); - editSession.enableQueue(); - - long start = System.currentTimeMillis(); - - try { - if (config.logCommands) { - logger.info("WorldEdit: " + player.getName() + ": " - + StringUtil.joinString(split, " ")); - } - - Object[] methodArgs = new Object[] { - null, this, session, player, editSession - }; - - return commands.execute(split, player, methodArgs); - } finally { - session.remember(editSession); - editSession.flushQueue(); - - if (config.profile) { - long time = System.currentTimeMillis() - start; - int changed = editSession.getBlockChangeCount(); - if (time > 0) { - double throughput = changed / (time / 1000.0); - player.printDebug((time / 1000.0) + "s elapsed (history: " - + changed + " changed; " - + Math.round(throughput) + " blocks/sec)."); - } else { - player.printDebug((time / 1000.0) + "s elapsed."); - } - } - - flushBlockBag(player, editSession); - } + // Try to detect the command + if (commands.hasCommand(searchCmd)) { + } else if (config.noDoubleSlash && commands.hasCommand("/" + searchCmd)) { + split[0] = "/" + split[0]; + } else if (commands.hasCommand(searchCmd.substring(1))) { + split[0] = split[0].substring(1); } + + // No command found! + if (!commands.hasCommand(split[0])) { + return false; + } + + LocalSession session = getSession(player); + BlockBag blockBag = session.getBlockBag(player); + + session.tellVersion(player); + + // Create an edit session + EditSession editSession = + new EditSession(player.getWorld(), + session.getBlockChangeLimit(), blockBag); + editSession.enableQueue(); - return false; + long start = System.currentTimeMillis(); + + try { + if (config.logCommands) { + logger.info("WorldEdit: " + player.getName() + ": " + + StringUtil.joinString(split, " ")); + } + + Object[] methodArgs = new Object[] { + null, this, session, player, editSession + }; + + return commands.execute(split, player, methodArgs); + } finally { + session.remember(editSession); + editSession.flushQueue(); + + if (config.profile) { + long time = System.currentTimeMillis() - start; + int changed = editSession.getBlockChangeCount(); + if (time > 0) { + double throughput = changed / (time / 1000.0); + player.printDebug((time / 1000.0) + "s elapsed (history: " + + changed + " changed; " + + Math.round(throughput) + " blocks/sec)."); + } else { + player.printDebug((time / 1000.0) + "s elapsed."); + } + } + + flushBlockBag(player, editSession); + } } catch (NumberFormatException e) { player.printError("Number expected; string given."); } catch (IncompleteRegionException e) { diff --git a/src/com/sk89q/worldedit/commands/SelectionCommands.java b/src/com/sk89q/worldedit/commands/SelectionCommands.java index 7d6f3212c..22d2415e1 100644 --- a/src/com/sk89q/worldedit/commands/SelectionCommands.java +++ b/src/com/sk89q/worldedit/commands/SelectionCommands.java @@ -425,7 +425,7 @@ public class SelectionCommands { } @Command( - aliases = {"/m", "//size"}, + aliases = {"/size"}, usage = "", desc = "Get information about the selection", min = 0,