Skip to content

Commit

Permalink
Fix issues from PR review
Browse files Browse the repository at this point in the history
  • Loading branch information
me4502 committed Jun 24, 2023
1 parent 1844b75 commit 6ef0eba
Showing 1 changed file with 21 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@
import com.sk89q.worldedit.extent.clipboard.Clipboard;
import com.sk89q.worldedit.function.block.BlockDistributionCounter;
import com.sk89q.worldedit.function.mask.Mask;
import com.sk89q.worldedit.function.mask.MaskIntersection;
import com.sk89q.worldedit.function.mask.Masks;
import com.sk89q.worldedit.function.mask.RegionMask;
import com.sk89q.worldedit.function.operation.Operations;
import com.sk89q.worldedit.function.visitor.RegionVisitor;
import com.sk89q.worldedit.internal.annotation.Chunk3d;
Expand Down Expand Up @@ -516,7 +519,11 @@ public void trim(Actor actor, World world, LocalSession session,
Mask mask) throws WorldEditException {
// Avoid checking blocks outside the original region but within the cuboid region
Region originalRegion = session.getSelection(world);
boolean skipContains = originalRegion instanceof CuboidRegion;
if (!(originalRegion instanceof CuboidRegion)) {
mask = new MaskIntersection(new RegionMask(originalRegion), mask);
}
// Memoize the mask to reduce duplicated lookups
mask = Masks.memoize(mask);

// Result region will be cuboid
CuboidRegion region = originalRegion.getBoundingBox();
Expand All @@ -532,7 +539,7 @@ public void trim(Actor actor, World world, LocalSession session,
for (int z = min.getBlockZ(); z <= max.getBlockZ(); z++) {
BlockVector3 vec = BlockVector3.at(x, y, z);

if ((skipContains || originalRegion.contains(vec)) && mask.test(vec)) {
if (mask.test(vec)) {
found = true;
minY = y;

Expand All @@ -555,7 +562,7 @@ public void trim(Actor actor, World world, LocalSession session,
for (int z = min.getBlockZ(); z <= max.getBlockZ(); z++) {
BlockVector3 vec = BlockVector3.at(x, y, z);

if ((skipContains || originalRegion.contains(vec)) && mask.test(vec)) {
if (mask.test(vec)) {
maxY = y;
break outer;
}
Expand All @@ -570,7 +577,7 @@ public void trim(Actor actor, World world, LocalSession session,
for (int y = minY; y <= maxY; y++) {
BlockVector3 vec = BlockVector3.at(x, y, z);

if ((skipContains || originalRegion.contains(vec)) && mask.test(vec)) {
if (mask.test(vec)) {
minX = x;
break outer;
}
Expand All @@ -585,7 +592,7 @@ public void trim(Actor actor, World world, LocalSession session,
for (int y = minY; y <= maxY; y++) {
BlockVector3 vec = BlockVector3.at(x, y, z);

if ((skipContains || originalRegion.contains(vec)) && mask.test(vec)) {
if (mask.test(vec)) {
maxX = x;
break outer;
}
Expand All @@ -600,7 +607,7 @@ public void trim(Actor actor, World world, LocalSession session,
for (int y = minY; y <= maxY; y++) {
BlockVector3 vec = BlockVector3.at(x, y, z);

if ((skipContains || originalRegion.contains(vec)) && mask.test(vec)) {
if (mask.test(vec)) {
minZ = z;
break outer;
}
Expand All @@ -615,17 +622,21 @@ public void trim(Actor actor, World world, LocalSession session,
for (int y = minY; y <= maxY; y++) {
BlockVector3 vec = BlockVector3.at(x, y, z);

if ((skipContains || originalRegion.contains(vec)) && mask.test(vec)) {
if (mask.test(vec)) {
maxZ = z;
break outer;
}
}
}
}

session.setRegionSelector(world, new CuboidRegionSelector(
world, BlockVector3.at(minX, minY, minZ), BlockVector3.at(maxX, maxY, maxZ)
));
final CuboidRegionSelector selector;
if (session.getRegionSelector(world) instanceof ExtendingCuboidRegionSelector) {
selector = new ExtendingCuboidRegionSelector(world, BlockVector3.at(minX, minY, minZ), BlockVector3.at(maxX, maxY, maxZ));
} else {
selector = new CuboidRegionSelector(world, BlockVector3.at(minX, minY, minZ), BlockVector3.at(maxX, maxY, maxZ));
}
session.setRegionSelector(world, selector);

session.getRegionSelector(world).learnChanges();
session.getRegionSelector(world).explainRegionAdjust(actor, session);
Expand Down

0 comments on commit 6ef0eba

Please sign in to comment.