diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java b/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java index be2a307b9..4a8c1840d 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/command/RegionCommands.java @@ -36,6 +36,7 @@ import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.extension.platform.Actor; import com.sk89q.worldedit.function.GroundFunction; import com.sk89q.worldedit.function.generator.FloraGenerator; +import com.sk89q.worldedit.function.mask.AbstractExtentMask; import com.sk89q.worldedit.function.mask.ExistingBlockMask; import com.sk89q.worldedit.function.mask.Mask; import com.sk89q.worldedit.function.mask.MaskIntersection; @@ -300,6 +301,9 @@ public class RegionCommands { if (from == null) { from = new ExistingBlockMask(editSession); } + if (from instanceof AbstractExtentMask) { + ((AbstractExtentMask) from).setExtent(editSession); + } int affected = editSession.replaceBlocks(region, from, to); actor.printInfo(TranslatableComponent.of("worldedit.replace.replaced", TextComponent.of(affected))); return affected; diff --git a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BiomeMask.java b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BiomeMask.java index 8189d583e..202efefec 100644 --- a/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BiomeMask.java +++ b/worldedit-core/src/main/java/com/sk89q/worldedit/function/mask/BiomeMask.java @@ -34,9 +34,8 @@ import static com.google.common.base.Preconditions.checkNotNull; /** * Tests true if the biome at applied points is the same as the one given. */ -public class BiomeMask extends AbstractMask { +public class BiomeMask extends AbstractExtentMask { - private final Extent extent; private final Set biomes = new HashSet<>(); /** @@ -46,9 +45,8 @@ public class BiomeMask extends AbstractMask { * @param biomes a list of biomes to match */ public BiomeMask(Extent extent, Collection biomes) { - checkNotNull(extent); + super(extent); checkNotNull(biomes); - this.extent = extent; this.biomes.addAll(biomes); } @@ -92,7 +90,7 @@ public class BiomeMask extends AbstractMask { @Override public boolean test(BlockVector3 vector) { - BiomeType biome = extent.getBiome(vector); + BiomeType biome = getExtent().getBiome(vector); return biomes.contains(biome); } @@ -104,7 +102,12 @@ public class BiomeMask extends AbstractMask { @Override public Mask copy() { - return new BiomeMask(extent, new HashSet<>(biomes)); + return new BiomeMask(getExtent(), new HashSet<>(biomes)); } + @Override + public boolean test(Extent extent, BlockVector3 position) { + BiomeType biome = getExtent().getBiome(position); + return biomes.contains(biome); + } }