3
0
Mirror von https://github.com/IntellectualSites/FastAsyncWorldEdit.git synchronisiert 2024-11-07 20:10:06 +01:00

Apply source function after source mask in ForwardExtentCopy.

The source function should only get applied to actually copied blocks.
Dieser Commit ist enthalten in:
wizjany 2019-03-01 21:15:21 -05:00
Ursprung f46c70093c
Commit e53962dadd
3 geänderte Dateien mit 9 neuen und 7 gelöschten Zeilen

Datei anzeigen

@ -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);

Datei anzeigen

@ -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 {

Datei anzeigen

@ -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;