Add a new block metadata framework and fix //rotate and //flip.

Remove the previous Mapping interfaces.
This commit is contained in:
sk89q
2014-07-09 14:14:17 -07:00
parent 22dceb5614
commit 56b349ead8
29 changed files with 7425 additions and 319 deletions

View File

@ -23,8 +23,7 @@ import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.MaxChangedBlocksException;
import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.function.mask.ExistingBlockMask;
import com.sk89q.worldedit.function.operation.ForwardExtentCopy;
import com.sk89q.worldedit.function.operation.Operation;
import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.regions.Region;
@ -33,11 +32,11 @@ import com.sk89q.worldedit.session.ClipboardHolder;
public class ClipboardBrush implements Brush {
private ClipboardHolder holder;
private boolean noAir;
private boolean ignoreAirBlocks;
public ClipboardBrush(ClipboardHolder holder, boolean noAir) {
public ClipboardBrush(ClipboardHolder holder, boolean ignoreAirBlocks) {
this.holder = holder;
this.noAir = noAir;
this.ignoreAirBlocks = ignoreAirBlocks;
}
@Override
@ -45,12 +44,14 @@ public class ClipboardBrush implements Brush {
Clipboard clipboard = holder.getClipboard();
Region region = clipboard.getRegion();
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));
}
Operations.completeLegacy(copy);
Operation operation = holder
.createPaste(editSession, editSession.getWorld().getWorldData())
.to(pos.subtract(centerOffset))
.ignoreAirBlocks(ignoreAirBlocks)
.build();
Operations.completeLegacy(operation);
}
}