From b557b2b71d81ef67f3d9fa878470442ac6c287b1 Mon Sep 17 00:00:00 2001 From: wizjany Date: Fri, 9 Jun 2017 12:44:54 -0400 Subject: [PATCH] Revert "Some command fixes" aka "Some command breaks" This reverts commit 4a8bba7a54741ef5d36b3a9793dca09e9dc0c917. Fixes WORLDEDIT-3574. --- .../worldedit/command/BrushCommands.java | 12 ++--- .../worldedit/command/ChunkCommands.java | 6 +-- .../worldedit/command/ClipboardCommands.java | 4 +- .../worldedit/command/GeneralCommands.java | 8 +-- .../worldedit/command/HistoryCommands.java | 6 +-- .../worldedit/command/NavigationCommands.java | 9 ++-- .../worldedit/command/SchematicCommands.java | 13 ++--- .../worldedit/command/ScriptingCommands.java | 5 +- .../worldedit/command/SelectionCommands.java | 52 ++++++++++++------- .../worldedit/command/SnapshotCommands.java | 10 ++-- .../command/SuperPickaxeCommands.java | 6 +-- .../sk89q/worldedit/command/ToolCommands.java | 18 +++---- .../worldedit/command/ToolUtilCommands.java | 10 ++-- .../worldedit/command/WorldEditCommands.java | 4 +- .../util/command/SimpleDispatcher.java | 9 +++- 15 files changed, 93 insertions(+), 79 deletions(-) diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java index 24bf84750e..67efbd7168 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/BrushCommands.java @@ -80,7 +80,7 @@ public BrushCommands(WorldEdit worldEdit) { max = 2 ) @CommandPermissions("worldedit.brush.sphere") - public void sphereBrush(Player player, LocalSession session, Pattern fill, + public void sphereBrush(Player player, LocalSession session, EditSession editSession, Pattern fill, @Optional("2") double radius, @Switch('h') boolean hollow) throws WorldEditException { worldEdit.checkMaxBrushRadius(radius); @@ -109,7 +109,7 @@ public void sphereBrush(Player player, LocalSession session, Pattern fill, max = 3 ) @CommandPermissions("worldedit.brush.cylinder") - public void cylinderBrush(Player player, LocalSession session, Pattern fill, + public void cylinderBrush(Player player, LocalSession session, EditSession editSession, Pattern fill, @Optional("2") double radius, @Optional("1") int height, @Switch('h') boolean hollow) throws WorldEditException { worldEdit.checkMaxBrushRadius(radius); worldEdit.checkMaxBrushRadius(height); @@ -139,7 +139,7 @@ public void cylinderBrush(Player player, LocalSession session, Pattern fill, "stood relative to the copied area when you copied it." ) @CommandPermissions("worldedit.brush.clipboard") - public void clipboardBrush(Player player, LocalSession session, @Switch('a') boolean ignoreAir, @Switch('p') boolean usingOrigin) throws WorldEditException { + public void clipboardBrush(Player player, LocalSession session, EditSession editSession, @Switch('a') boolean ignoreAir, @Switch('p') boolean usingOrigin) throws WorldEditException { ClipboardHolder holder = session.getClipboard(); Clipboard clipboard = holder.getClipboard(); @@ -167,7 +167,7 @@ public void clipboardBrush(Player player, LocalSession session, @Switch('a') boo max = 2 ) @CommandPermissions("worldedit.brush.smooth") - public void smoothBrush(Player player, LocalSession session, + public void smoothBrush(Player player, LocalSession session, EditSession editSession, @Optional("2") double radius, @Optional("4") int iterations, @Switch('n') boolean naturalBlocksOnly) throws WorldEditException { @@ -215,7 +215,7 @@ public void extinguishBrush(Player player, LocalSession session, EditSession edi max = 1 ) @CommandPermissions("worldedit.brush.gravity") - public void gravityBrush(Player player, LocalSession session, @Optional("5") double radius, @Switch('h') boolean fromMaxY) throws WorldEditException { + public void gravityBrush(Player player, LocalSession session, EditSession editSession, @Optional("5") double radius, @Switch('h') boolean fromMaxY) throws WorldEditException { worldEdit.checkMaxBrushRadius(radius); BrushTool tool = session.getBrushTool(player.getItemInHand()); @@ -246,7 +246,7 @@ public void gravityBrush(Player player, LocalSession session, @Optional("5") dou max = 1 ) @CommandPermissions("worldedit.brush.butcher") - public void butcherBrush(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void butcherBrush(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = worldEdit.getConfiguration(); double radius = args.argsLength() > 0 ? args.getDouble(0) : 5; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ChunkCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ChunkCommands.java index 7d3373e757..0330c58bc7 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ChunkCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ChunkCommands.java @@ -57,7 +57,7 @@ public ChunkCommands(WorldEdit worldEdit) { max = 0 ) @CommandPermissions("worldedit.chunkinfo") - public void chunkInfo(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void chunkInfo(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { Vector pos = player.getBlockIn(); int chunkX = (int) Math.floor(pos.getBlockX() / 16.0); int chunkZ = (int) Math.floor(pos.getBlockZ() / 16.0); @@ -81,7 +81,7 @@ public void chunkInfo(Player player, LocalSession session, CommandContext args) max = 0 ) @CommandPermissions("worldedit.listchunks") - public void listChunks(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void listChunks(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { Set chunks = session.getSelection(player.getWorld()).getChunks(); for (Vector2D chunk : chunks) { @@ -98,7 +98,7 @@ public void listChunks(Player player, LocalSession session, CommandContext args) ) @CommandPermissions("worldedit.delchunks") @Logging(REGION) - public void deleteChunks(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void deleteChunks(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { player.print("Note that this command does not yet support the mcregion format."); LocalConfiguration config = worldEdit.getConfiguration(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java index 2e8c23caec..9d7cb265aa 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ClipboardCommands.java @@ -207,7 +207,7 @@ public void rotate(Player player, LocalSession session, Double yRotate, @Optiona max = 1 ) @CommandPermissions("worldedit.clipboard.flip") - public void flip(Player player, LocalSession session, + public void flip(Player player, LocalSession session, EditSession editSession, @Optional(Direction.AIM) @Direction Vector direction) throws WorldEditException { ClipboardHolder holder = session.getClipboard(); Clipboard clipboard = holder.getClipboard(); @@ -251,7 +251,7 @@ public void save(Actor actor) { max = 0 ) @CommandPermissions("worldedit.clipboard.clear") - public void clearClipboard(Player player, LocalSession session) throws WorldEditException { + public void clearClipboard(Player player, LocalSession session, EditSession editSession) throws WorldEditException { session.setClipboard(null); player.print("Clipboard cleared."); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/GeneralCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/GeneralCommands.java index 5979afe526..4d8aa6f8f3 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/GeneralCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/GeneralCommands.java @@ -56,7 +56,7 @@ public GeneralCommands(WorldEdit worldEdit) { max = 1 ) @CommandPermissions("worldedit.limit") - public void limit(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void limit(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = worldEdit.getConfiguration(); boolean mayDisable = player.hasPermission("worldedit.limit.unrestricted"); @@ -86,7 +86,7 @@ public void limit(Player player, LocalSession session, CommandContext args) thro max = 1 ) @CommandPermissions("worldedit.fast") - public void fast(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void fast(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { String newState = args.getString(0, null); if (session.hasFastMode()) { @@ -116,7 +116,7 @@ public void fast(Player player, LocalSession session, CommandContext args) throw max = -1 ) @CommandPermissions("worldedit.global-mask") - public void gmask(Player player, LocalSession session, @Optional Mask mask) throws WorldEditException { + public void gmask(Player player, LocalSession session, EditSession editSession, @Optional Mask mask) throws WorldEditException { if (mask == null) { session.setMask((Mask) null); player.print("Global mask disabled."); @@ -133,7 +133,7 @@ public void gmask(Player player, LocalSession session, @Optional Mask mask) thro min = 0, max = 0 ) - public void togglePlace(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void togglePlace(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { if (session.togglePlacementPosition()) { player.print("Now placing at pos #1."); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/HistoryCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/HistoryCommands.java index e1b2573b80..eda112bbdf 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/HistoryCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/HistoryCommands.java @@ -52,7 +52,7 @@ public HistoryCommands(WorldEdit worldEdit) { max = 2 ) @CommandPermissions("worldedit.history.undo") - public void undo(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void undo(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { int times = Math.max(1, args.getInteger(0, 1)); for (int i = 0; i < times; ++i) { EditSession undone; @@ -85,7 +85,7 @@ public void undo(Player player, LocalSession session, CommandContext args) throw max = 2 ) @CommandPermissions("worldedit.history.redo") - public void redo(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void redo(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { int times = Math.max(1, args.getInteger(0, 1)); @@ -119,7 +119,7 @@ public void redo(Player player, LocalSession session, CommandContext args) throw max = 0 ) @CommandPermissions("worldedit.history.clear") - public void clearHistory(Player player, LocalSession session) throws WorldEditException { + public void clearHistory(Player player, LocalSession session, EditSession editSession) throws WorldEditException { session.clearHistory(); player.print("History cleared."); } diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/NavigationCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/NavigationCommands.java index 01fbf67692..4cb581e3d8 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/NavigationCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/NavigationCommands.java @@ -23,6 +23,7 @@ import com.sk89q.minecraft.util.commands.CommandContext; import com.sk89q.minecraft.util.commands.CommandPermissions; import com.sk89q.minecraft.util.commands.Logging; +import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.LocalConfiguration; import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.WorldEdit; @@ -115,7 +116,7 @@ public void descend(Player player, @Optional("1") int levelsToDescend) throws Wo ) @CommandPermissions("worldedit.navigation.ceiling") @Logging(POSITION) - public void ceiling(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void ceiling(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { final int clearance = args.argsLength() > 0 ? Math.max(0, args.getInteger(0)) : 0; @@ -136,7 +137,7 @@ public void ceiling(Player player, LocalSession session, CommandContext args) th max = 0 ) @CommandPermissions("worldedit.navigation.thru.command") - public void thru(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void thru(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { if (player.passThroughForwardWall(6)) { player.print("Whoosh!"); } else { @@ -152,7 +153,7 @@ public void thru(Player player, LocalSession session, CommandContext args) throw max = 0 ) @CommandPermissions("worldedit.navigation.jumpto.command") - public void jumpTo(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void jumpTo(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { WorldVector pos = player.getSolidBlockTrace(300); if (pos != null) { @@ -173,7 +174,7 @@ public void jumpTo(Player player, LocalSession session, CommandContext args) thr ) @CommandPermissions("worldedit.navigation.up") @Logging(POSITION) - public void up(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void up(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { final int distance = args.getInteger(0); final boolean alwaysGlass = getAlwaysGlass(args); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java index 8a2964c30b..a72e7b8720 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SchematicCommands.java @@ -23,6 +23,7 @@ import com.sk89q.minecraft.util.commands.CommandContext; import com.sk89q.minecraft.util.commands.CommandException; import com.sk89q.minecraft.util.commands.CommandPermissions; +import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.LocalConfiguration; import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.WorldEdit; @@ -200,7 +201,7 @@ public void save(Player player, LocalSession session, @Optional("schematic") Str max = 1 ) @CommandPermissions("worldedit.schematic.delete") - public void delete(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void delete(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = worldEdit.getConfiguration(); String filename = args.getString(0); @@ -335,7 +336,6 @@ private List allFiles(File root) { } private List listFiles(String prefix, File[] files) { - File dir = worldEdit.getWorkingDirectoryFile(prefix); if (prefix == null) prefix = ""; List result = new ArrayList(); for (File file : files) { @@ -344,13 +344,8 @@ private List listFiles(String prefix, File[] files) { build.append("\u00a72"); ClipboardFormat format = ClipboardFormat.findByFile(file); boolean inRoot = file.getParentFile().getName().equals(prefix); - if (inRoot) { - build.append(file.getName()); - } else { - String relative = dir.toURI().relativize(file.toURI()).getPath(); - build.append(relative); - } - build.append(": ").append(format == null ? "Unknown" : format.name()); + build.append(inRoot ? file.getName() : file.getPath().split(Pattern.quote(prefix + File.separator))[1]) + .append(": ").append(format == null ? "Unknown" : format.name()); result.add(build.toString()); } return result; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ScriptingCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ScriptingCommands.java index 18d13432de..3cb190e15a 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ScriptingCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ScriptingCommands.java @@ -23,6 +23,7 @@ import com.sk89q.minecraft.util.commands.CommandContext; import com.sk89q.minecraft.util.commands.CommandPermissions; import com.sk89q.minecraft.util.commands.Logging; +import com.sk89q.worldedit.EditSession; import com.sk89q.worldedit.LocalSession; import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.WorldEditException; @@ -59,7 +60,7 @@ public ScriptingCommands(WorldEdit worldEdit) { ) @CommandPermissions("worldedit.scripting.execute") @Logging(ALL) - public void execute(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void execute(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { String[] scriptArgs = args.getSlice(1); String name = args.getString(0); @@ -86,7 +87,7 @@ public void execute(Player player, LocalSession session, CommandContext args) th ) @CommandPermissions("worldedit.scripting.execute") @Logging(ALL) - public void executeLast(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void executeLast(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { String lastScript = session.getLastScript(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SelectionCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SelectionCommands.java index b48d7915a6..41799e8a0a 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SelectionCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SelectionCommands.java @@ -83,7 +83,8 @@ public SelectionCommands(WorldEdit we) { ) @Logging(POSITION) @CommandPermissions("worldedit.selection.pos") - public void pos1(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void pos1(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + Vector pos; if (args.argsLength() == 1) { @@ -116,7 +117,8 @@ public void pos1(Player player, LocalSession session, CommandContext args) throw ) @Logging(POSITION) @CommandPermissions("worldedit.selection.pos") - public void pos2(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void pos2(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + Vector pos; if (args.argsLength() == 1) { if (args.getString(0).matches("-?\\d+,-?\\d+,-?\\d+")) { @@ -149,7 +151,8 @@ public void pos2(Player player, LocalSession session, CommandContext args) throw max = 0 ) @CommandPermissions("worldedit.selection.hpos") - public void hpos1(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void hpos1(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + Vector pos = player.getBlockTrace(300); if (pos != null) { @@ -173,7 +176,8 @@ public void hpos1(Player player, LocalSession session, CommandContext args) thro max = 0 ) @CommandPermissions("worldedit.selection.hpos") - public void hpos2(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void hpos2(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + Vector pos = player.getBlockTrace(300); if (pos != null) { @@ -207,7 +211,7 @@ public void hpos2(Player player, LocalSession session, CommandContext args) thro ) @Logging(POSITION) @CommandPermissions("worldedit.selection.chunk") - public void chunk(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void chunk(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { final Vector min; final Vector max; final World world = player.getWorld(); @@ -269,7 +273,8 @@ public void chunk(Player player, LocalSession session, CommandContext args) thro max = 0 ) @CommandPermissions("worldedit.wand") - public void wand(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void wand(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + player.giveItem(we.getConfiguration().wandItem, 1); player.print("Left click: select pos #1; Right click: select pos #2"); } @@ -282,7 +287,8 @@ public void wand(Player player, LocalSession session, CommandContext args) throw max = 0 ) @CommandPermissions("worldedit.wand.toggle") - public void toggleWand(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void toggleWand(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + session.setToolControl(!session.isToolControlEnabled()); if (session.isToolControlEnabled()) { @@ -301,7 +307,8 @@ public void toggleWand(Player player, LocalSession session, CommandContext args) ) @Logging(REGION) @CommandPermissions("worldedit.selection.expand") - public void expand(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void expand(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + // Special syntax (//expand vert) to expand the selection between // sky and bedrock. if (args.getString(0).equalsIgnoreCase("vert") @@ -380,7 +387,7 @@ public void expand(Player player, LocalSession session, CommandContext args) thr session.getRegionSelector(player.getWorld()).learnChanges(); int newSize = region.getArea(); - + session.getRegionSelector(player.getWorld()).explainRegionAdjust(player, session); player.print("Region expanded " + (newSize - oldSize) + " blocks."); @@ -395,7 +402,8 @@ public void expand(Player player, LocalSession session, CommandContext args) thr ) @Logging(REGION) @CommandPermissions("worldedit.selection.contract") - public void contract(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void contract(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + List dirs = new ArrayList(); int change = args.getInteger(0); int reverseChange = 0; @@ -450,7 +458,7 @@ public void contract(Player player, LocalSession session, CommandContext args) t } session.getRegionSelector(player.getWorld()).learnChanges(); int newSize = region.getArea(); - + session.getRegionSelector(player.getWorld()).explainRegionAdjust(player, session); @@ -469,7 +477,8 @@ public void contract(Player player, LocalSession session, CommandContext args) t ) @Logging(REGION) @CommandPermissions("worldedit.selection.shift") - public void shift(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void shift(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + List dirs = new ArrayList(); int change = args.getInteger(0); if (args.argsLength() == 2) { @@ -516,7 +525,7 @@ public void shift(Player player, LocalSession session, CommandContext args) thro ) @Logging(REGION) @CommandPermissions("worldedit.selection.outset") - public void outset(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void outset(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { Region region = session.getSelection(player.getWorld()); region.expand(getChangesForEachDir(args)); session.getRegionSelector(player.getWorld()).learnChanges(); @@ -539,7 +548,7 @@ public void outset(Player player, LocalSession session, CommandContext args) thr ) @Logging(REGION) @CommandPermissions("worldedit.selection.inset") - public void inset(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void inset(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { Region region = session.getSelection(player.getWorld()); region.contract(getChangesForEachDir(args)); session.getRegionSelector(player.getWorld()).learnChanges(); @@ -575,7 +584,8 @@ private Vector[] getChangesForEachDir(CommandContext args) { max = 0 ) @CommandPermissions("worldedit.selection.size") - public void size(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void size(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + if (args.hasFlag('c')) { ClipboardHolder holder = session.getClipboard(); Clipboard clipboard = holder.getClipboard(); @@ -589,20 +599,20 @@ public void size(Player player, LocalSession session, CommandContext args) throw player.print("# of blocks: " + (int) (size.getX() * size.getY() * size.getZ())); return; } - + Region region = session.getSelection(player.getWorld()); Vector size = region.getMaximumPoint() .subtract(region.getMinimumPoint()) .add(1, 1, 1); - + player.print("Type: " + session.getRegionSelector(player.getWorld()) .getTypeName()); - + for (String line : session.getRegionSelector(player.getWorld()) .getInformationLines()) { player.print(line); } - + player.print("Size: " + size); player.print("Cuboid distance: " + region.getMaximumPoint().distance(region.getMinimumPoint())); player.print("# of blocks: " + region.getArea()); @@ -619,6 +629,7 @@ public void size(Player player, LocalSession session, CommandContext args) throw ) @CommandPermissions("worldedit.analysis.count") public void count(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { + boolean useData = args.hasFlag('d'); if (args.getString(0).contains(":")) { useData = true; //override d flag, if they specified data they want it @@ -648,6 +659,7 @@ public void count(Player player, LocalSession session, EditSession editSession, ) @CommandPermissions("worldedit.analysis.distr") public void distr(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException, CommandException { + int size; boolean useData = args.hasFlag('d'); List> distribution = null; @@ -703,7 +715,7 @@ public void distr(Player player, LocalSession session, EditSession editSession, min = 0, max = 1 ) - public void select(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void select(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { final World world = player.getWorld(); if (args.argsLength() == 0) { session.getRegionSelector(world).clear(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SnapshotCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SnapshotCommands.java index 36726b4256..8c7676eee6 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SnapshotCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SnapshotCommands.java @@ -60,7 +60,7 @@ public SnapshotCommands(WorldEdit we) { max = 1 ) @CommandPermissions("worldedit.snapshots.list") - public void list(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void list(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); @@ -110,7 +110,7 @@ public void list(Player player, LocalSession session, CommandContext args) throw max = 1 ) @CommandPermissions("worldedit.snapshots.restore") - public void use(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void use(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); @@ -153,7 +153,7 @@ public void use(Player player, LocalSession session, CommandContext args) throws max = 1 ) @CommandPermissions("worldedit.snapshots.restore") - public void sel(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void sel(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); if (config.snapshotRepo == null) { @@ -200,7 +200,7 @@ public void sel(Player player, LocalSession session, CommandContext args) throws max = -1 ) @CommandPermissions("worldedit.snapshots.restore") - public void before(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void before(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); @@ -239,7 +239,7 @@ public void before(Player player, LocalSession session, CommandContext args) thr max = -1 ) @CommandPermissions("worldedit.snapshots.restore") - public void after(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void after(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SuperPickaxeCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SuperPickaxeCommands.java index 9ed03cbd89..116d71a813 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/SuperPickaxeCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/SuperPickaxeCommands.java @@ -43,7 +43,7 @@ public SuperPickaxeCommands(WorldEdit we) { max = 0 ) @CommandPermissions("worldedit.superpickaxe") - public void single(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void single(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { session.setSuperPickaxe(new SinglePickaxe()); session.enableSuperPickAxe(); @@ -58,7 +58,7 @@ public void single(Player player, LocalSession session, CommandContext args) thr max = 1 ) @CommandPermissions("worldedit.superpickaxe.area") - public void area(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void area(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); int range = args.getInteger(0); @@ -81,7 +81,7 @@ public void area(Player player, LocalSession session, CommandContext args) throw max = 1 ) @CommandPermissions("worldedit.superpickaxe.recursive") - public void recursive(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void recursive(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); double range = args.getDouble(0); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ToolCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ToolCommands.java index 949bd0e4d3..59f099c58e 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ToolCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ToolCommands.java @@ -44,7 +44,7 @@ public ToolCommands(WorldEdit we) { min = 0, max = 0 ) - public void none(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void none(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { session.setTool(player.getItemInHand(), null); player.print("Tool unbound from your current item."); @@ -58,7 +58,7 @@ public void none(Player player, LocalSession session, CommandContext args) throw max = 0 ) @CommandPermissions("worldedit.tool.info") - public void info(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void info(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { session.setTool(player.getItemInHand(), new QueryTool()); player.print("Info tool bound to " @@ -74,7 +74,7 @@ public void info(Player player, LocalSession session, CommandContext args) throw ) @CommandPermissions("worldedit.tool.tree") @SuppressWarnings("deprecation") - public void tree(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void tree(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { TreeGenerator.TreeType type = args.argsLength() > 0 ? type = TreeGenerator.lookup(args.getString(0)) @@ -98,7 +98,7 @@ public void tree(Player player, LocalSession session, CommandContext args) throw max = 1 ) @CommandPermissions("worldedit.tool.replacer") - public void repl(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void repl(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { BaseBlock targetBlock = we.getBlock(player, args.getString(0)); session.setTool(player.getItemInHand(), new BlockReplacer(targetBlock)); @@ -114,7 +114,7 @@ public void repl(Player player, LocalSession session, CommandContext args) throw max = 0 ) @CommandPermissions("worldedit.tool.data-cycler") - public void cycler(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void cycler(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { session.setTool(player.getItemInHand(), new BlockDataCyler()); player.print("Block data cycler tool bound to " @@ -129,7 +129,7 @@ public void cycler(Player player, LocalSession session, CommandContext args) thr max = 2 ) @CommandPermissions("worldedit.tool.flood-fill") - public void floodFill(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void floodFill(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); int range = args.getInteger(1); @@ -153,7 +153,7 @@ public void floodFill(Player player, LocalSession session, CommandContext args) max = 0 ) @CommandPermissions("worldedit.tool.deltree") - public void deltree(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void deltree(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { session.setTool(player.getItemInHand(), new FloatingTreeRemover()); player.print("Floating tree remover tool bound to " @@ -168,7 +168,7 @@ public void deltree(Player player, LocalSession session, CommandContext args) th max = 0 ) @CommandPermissions("worldedit.tool.farwand") - public void farwand(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void farwand(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { session.setTool(player.getItemInHand(), new DistanceWand()); player.print("Far wand tool bound to " + ItemType.toHeldName(player.getItemInHand()) + "."); @@ -182,7 +182,7 @@ public void farwand(Player player, LocalSession session, CommandContext args) th max = 2 ) @CommandPermissions("worldedit.tool.lrbuild") - public void longrangebuildtool(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void longrangebuildtool(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { BaseBlock secondary = we.getBlock(player, args.getString(0)); BaseBlock primary = we.getBlock(player, args.getString(1)); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ToolUtilCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ToolUtilCommands.java index cf232695ac..f4f92675cf 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/ToolUtilCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/ToolUtilCommands.java @@ -46,7 +46,7 @@ public ToolUtilCommands(WorldEdit we) { max = 1 ) @CommandPermissions("worldedit.superpickaxe") - public void togglePickaxe(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void togglePickaxe(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { String newState = args.getString(0, null); if (session.hasSuperPickAxe()) { @@ -76,7 +76,7 @@ public void togglePickaxe(Player player, LocalSession session, CommandContext ar max = -1 ) @CommandPermissions("worldedit.brush.options.mask") - public void mask(Player player, LocalSession session, @Optional Mask mask) throws WorldEditException { + public void mask(Player player, LocalSession session, EditSession editSession, @Optional Mask mask) throws WorldEditException { if (mask == null) { session.getBrushTool(player.getItemInHand()).setMask(null); player.print("Brush mask disabled."); @@ -94,7 +94,7 @@ public void mask(Player player, LocalSession session, @Optional Mask mask) throw max = 1 ) @CommandPermissions("worldedit.brush.options.material") - public void material(Player player, LocalSession session, Pattern pattern) throws WorldEditException { + public void material(Player player, LocalSession session, EditSession editSession, Pattern pattern) throws WorldEditException { session.getBrushTool(player.getItemInHand()).setFill(pattern); player.print("Brush material set."); } @@ -107,7 +107,7 @@ public void material(Player player, LocalSession session, Pattern pattern) throw max = 1 ) @CommandPermissions("worldedit.brush.options.range") - public void range(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void range(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { int range = args.getInteger(0); session.getBrushTool(player.getItemInHand()).setRange(range); player.print("Brush range set."); @@ -121,7 +121,7 @@ public void range(Player player, LocalSession session, CommandContext args) thro max = 1 ) @CommandPermissions("worldedit.brush.options.size") - public void size(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void size(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { int radius = args.getInteger(0); we.checkMaxBrushRadius(radius); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/WorldEditCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/WorldEditCommands.java index b1f9ea351a..1c40eb8f65 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/WorldEditCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/WorldEditCommands.java @@ -90,7 +90,7 @@ public void reload(Actor actor) throws WorldEditException { min = 0, max = 0 ) - public void cui(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void cui(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { session.setCUISupport(true); session.dispatchCUISetup(player); } @@ -102,7 +102,7 @@ public void cui(Player player, LocalSession session, CommandContext args) throws min = 1, max = 1 ) - public void tz(Player player, LocalSession session, CommandContext args) throws WorldEditException { + public void tz(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { TimeZone tz = TimeZone.getTimeZone(args.getString(0)); session.setTimezone(tz); player.print("Timezone set for this session to: " + tz.getDisplayName()); diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/util/command/SimpleDispatcher.java b/worldedit-core/src/main/java/com/sk89q/worldedit/util/command/SimpleDispatcher.java index cd760d0ec3..8478c76e9a 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/util/command/SimpleDispatcher.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/util/command/SimpleDispatcher.java @@ -177,8 +177,13 @@ public SimpleDescription getDescription() { @Override public boolean testPermission(CommandLocals locals) { - // checking EVERY perm here doesn't do anything but waste cpu - return true; + for (CommandMapping mapping : getCommands()) { + if (mapping.getCallable().testPermission(locals)) { + return true; + } + } + + return false; } }