From 4f5e130b59347a6be694aac0711cbc4f890e50de Mon Sep 17 00:00:00 2001 From: sk89q Date: Thu, 10 Jul 2014 01:19:08 -0700 Subject: [PATCH] Add -p to /br clipboard to paste using origin of clipboard. Closes WORLDEDIT-2825. --- .../com/sk89q/worldedit/command/BrushCommands.java | 13 ++++++------- .../command/tool/brush/ClipboardBrush.java | 6 ++++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/sk89q/worldedit/command/BrushCommands.java b/src/main/java/com/sk89q/worldedit/command/BrushCommands.java index 8520cdfdf..6f3d65062 100644 --- a/src/main/java/com/sk89q/worldedit/command/BrushCommands.java +++ b/src/main/java/com/sk89q/worldedit/command/BrushCommands.java @@ -46,7 +46,6 @@ import com.sk89q.worldedit.extent.clipboard.Clipboard; import com.sk89q.worldedit.function.mask.BlockMask; import com.sk89q.worldedit.function.pattern.BlockPattern; import com.sk89q.worldedit.function.pattern.Pattern; -import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.session.ClipboardHolder; import com.sk89q.worldedit.util.command.binding.Switch; import com.sk89q.worldedit.util.command.parametric.Optional; @@ -132,16 +131,16 @@ public class BrushCommands { @Command( aliases = { "clipboard", "copy" }, usage = "", - flags = "a", desc = "Choose the clipboard brush", help = "Chooses the clipboard brush.\n" + - "The -a flag makes it not paste air.", - min = 0, - max = 0 + "The -a flag makes it not paste air.\n" + + "Without the -p flag, the paste will appear centered at the target location. " + + "With the flag, then the paste will appear relative to where you had " + + "stood relative to the copied area when you copied it." ) @CommandPermissions("worldedit.brush.clipboard") - public void clipboardBrush(Player player, LocalSession session, EditSession editSession, @Switch('a') boolean ignoreAir) 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(); @@ -152,7 +151,7 @@ public class BrushCommands { worldEdit.checkMaxBrushRadius(size.getBlockZ()); BrushTool tool = session.getBrushTool(player.getItemInHand()); - tool.setBrush(new ClipboardBrush(holder, ignoreAir), "worldedit.brush.clipboard"); + tool.setBrush(new ClipboardBrush(holder, ignoreAir, usingOrigin), "worldedit.brush.clipboard"); player.print("Clipboard brush shape equipped."); } diff --git a/src/main/java/com/sk89q/worldedit/command/tool/brush/ClipboardBrush.java b/src/main/java/com/sk89q/worldedit/command/tool/brush/ClipboardBrush.java index a5692265e..7f772239d 100644 --- a/src/main/java/com/sk89q/worldedit/command/tool/brush/ClipboardBrush.java +++ b/src/main/java/com/sk89q/worldedit/command/tool/brush/ClipboardBrush.java @@ -33,10 +33,12 @@ public class ClipboardBrush implements Brush { private ClipboardHolder holder; private boolean ignoreAirBlocks; + private boolean usingOrigin; - public ClipboardBrush(ClipboardHolder holder, boolean ignoreAirBlocks) { + public ClipboardBrush(ClipboardHolder holder, boolean ignoreAirBlocks, boolean usingOrigin) { this.holder = holder; this.ignoreAirBlocks = ignoreAirBlocks; + this.usingOrigin = usingOrigin; } @Override @@ -47,7 +49,7 @@ public class ClipboardBrush implements Brush { Operation operation = holder .createPaste(editSession, editSession.getWorld().getWorldData()) - .to(pos.subtract(centerOffset)) + .to(usingOrigin ? pos : pos.subtract(centerOffset)) .ignoreAirBlocks(ignoreAirBlocks) .build();