mirror of
https://github.com/plexusorg/Plex-FAWE.git
synced 2024-12-23 09:47:38 +00:00
Apply source function after source mask in ForwardExtentCopy.
The source function should only get applied to actually copied blocks.
This commit is contained in:
parent
f46c70093c
commit
e53962dadd
@ -1252,7 +1252,7 @@ public class EditSession implements Extent, AutoCloseable {
|
||||
BlockVector3 to = region.getMinimumPoint();
|
||||
|
||||
// Remove the original blocks
|
||||
com.sk89q.worldedit.function.pattern.Pattern pattern = replacement != null ?
|
||||
Pattern pattern = replacement != null ?
|
||||
replacement :
|
||||
new BlockPattern(BlockTypes.AIR.getDefaultState());
|
||||
BlockReplace remove = new BlockReplace(this, pattern);
|
||||
|
@ -262,11 +262,12 @@ public class RegionCommands {
|
||||
@Command(
|
||||
aliases = { "/move" },
|
||||
usage = "[count] [direction] [leave-id]",
|
||||
flags = "s",
|
||||
flags = "sa",
|
||||
desc = "Move the contents of the selection",
|
||||
help =
|
||||
"Moves the contents of the selection.\n" +
|
||||
"The -s flag shifts the selection to the target location.\n" +
|
||||
"The -a flag skips air blocks.\n" +
|
||||
"Optionally fills the old location with <leave-id>.",
|
||||
min = 0,
|
||||
max = 3
|
||||
@ -278,9 +279,10 @@ public class RegionCommands {
|
||||
@Optional("1") @Range(min = 1) int count,
|
||||
@Optional(Direction.AIM) @Direction(includeDiagonals = true) BlockVector3 direction,
|
||||
@Optional("air") Pattern replace,
|
||||
@Switch('s') boolean moveSelection) throws WorldEditException {
|
||||
@Switch('s') boolean moveSelection,
|
||||
@Switch('a') boolean ignoreAirBlocks) throws WorldEditException {
|
||||
|
||||
int affected = editSession.moveRegion(region, direction, count, true, replace);
|
||||
int affected = editSession.moveRegion(region, direction, count, !ignoreAirBlocks, replace);
|
||||
|
||||
if (moveSelection) {
|
||||
try {
|
||||
|
@ -248,9 +248,9 @@ public class ForwardExtentCopy implements Operation {
|
||||
}
|
||||
|
||||
ExtentBlockCopy blockCopy = new ExtentBlockCopy(source, from, destination, to, currentTransform);
|
||||
RegionMaskingFilter filter = new RegionMaskingFilter(sourceMask, blockCopy);
|
||||
RegionFunction function = sourceFunction != null ? new CombinedRegionFunction(filter, sourceFunction) : filter;
|
||||
RegionVisitor blockVisitor = new RegionVisitor(region, function);
|
||||
RegionMaskingFilter filteredFunction = new RegionMaskingFilter(sourceMask,
|
||||
sourceFunction == null ? blockCopy : new CombinedRegionFunction(blockCopy, sourceFunction));
|
||||
RegionVisitor blockVisitor = new RegionVisitor(region, filteredFunction);
|
||||
|
||||
lastVisitor = blockVisitor;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user