Added new preliminary non-destructive //rotate and //flip implementations.

Blocks themselves are not yet rotated/flip.

//flip now only flips across the player. -p was removed.
This commit is contained in:
sk89q
2014-07-02 02:56:21 -07:00
parent 9e8b2d1875
commit aad7bb47d6
11 changed files with 197 additions and 77 deletions

View File

@ -28,22 +28,25 @@ import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.regions.Region;
import com.sk89q.worldedit.session.ClipboardHolder;
public class ClipboardBrush implements Brush {
private Clipboard clipboard;
private ClipboardHolder holder;
private boolean noAir;
public ClipboardBrush(Clipboard clipboard, boolean noAir) {
this.clipboard = clipboard;
public ClipboardBrush(ClipboardHolder holder, boolean noAir) {
this.holder = holder;
this.noAir = noAir;
}
@Override
public void build(EditSession editSession, Vector pos, Pattern mat, double size) throws MaxChangedBlocksException {
Clipboard clipboard = holder.getClipboard();
Region region = clipboard.getRegion();
Vector centerOffset = region.getCenter().subtract(region.getMinimumPoint());
ForwardExtentCopy copy = new ForwardExtentCopy(clipboard, clipboard.getRegion(), editSession, pos.subtract(centerOffset));
Vector centerOffset = region.getCenter().subtract(clipboard.getOrigin());
ForwardExtentCopy copy = new ForwardExtentCopy(clipboard, region, clipboard.getOrigin(), editSession, pos.subtract(centerOffset));
copy.setTransform(holder.getTransform());
if (noAir) {
copy.setSourceMask(new ExistingBlockMask(clipboard));
}