From fce942e130a2616af9840c58e5627bd8b23af3a0 Mon Sep 17 00:00:00 2001 From: Jeremy Koletar Date: Thu, 7 Jul 2011 10:35:20 -0500 Subject: [PATCH] Allow a command to be passed to /ascend and /descend which ascends/descends multiple floors. --- .../commands/NavigationCommands.java | 57 +++++++++++++++---- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/sk89q/worldedit/commands/NavigationCommands.java b/src/main/java/com/sk89q/worldedit/commands/NavigationCommands.java index 4dea41a0c..37054690a 100644 --- a/src/main/java/com/sk89q/worldedit/commands/NavigationCommands.java +++ b/src/main/java/com/sk89q/worldedit/commands/NavigationCommands.java @@ -48,39 +48,74 @@ public class NavigationCommands { @Command( aliases = {"ascend"}, - usage = "", + usage = "[# of levels]", desc = "Go up a floor", min = 0, - max = 0 + max = 1 ) @CommandPermissions({"worldedit.navigation.ascend"}) public static void ascend(CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { - - if (player.ascendLevel()) { - player.print("Ascended a level."); + if (args.argsLength() == 0) { + if (player.ascendLevel()) { + player.print("Ascended a level."); + } else { + player.printError("No free spot above you found."); + } } else { - player.printError("No free spot above you found."); + Boolean ascentDone = false; + int ascentLevels = 1; + int levelsToAscend = args.getInteger(0); + while (!ascentDone) { + if (player.ascendLevel() && levelsToAscend != ascentLevels) { + ascentLevels++; + } else { + ascentDone = true; + } + } + if (ascentLevels == 0) { + player.printError("No free spot above you found."); + } else { + player.print("Ascended " + Integer.toString(ascentLevels) + " levels."); + } } } @Command( aliases = {"descend"}, - usage = "", + usage = "[# of floors]", desc = "Go down a floor", min = 0, - max = 0 + max = 1 ) @CommandPermissions({"worldedit.navigation.descend"}) public static void descend(CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { - if (player.descendLevel()) { - player.print("Descended a level."); + if (args.argsLength() == 0) { + if (player.descendLevel()) { + player.print("Descended a level."); + } else { + player.printError("No free spot above you found."); + } } else { - player.printError("No free spot below you found."); + Boolean descentDone = false; + int descentLevels = 1; + int levelsToDescend = args.getInteger(0); + while (!descentDone) { + if (player.descendLevel() && levelsToDescend != descentLevels) { + descentLevels++; + } else { + descentDone = true; + } + } + if (descentLevels == 0) { + player.printError("No free spot above you found."); + } else { + player.print("Descended " + Integer.toString(descentLevels) + " levels."); + } } }