Further work

This commit is contained in:
dordsor21
2025-08-23 16:37:56 +01:00
parent 4924ffe03b
commit 22974d6478
3 changed files with 10 additions and 9 deletions

View File

@@ -164,6 +164,9 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld {
: getMinBuildHeight(); : getMinBuildHeight();
} }
/**
* Get the lowest height of plot, road, and wall. Accounts for {@link Settings.Schematics#USE_WALL_IN_ROAD_SCHEM_HEIGHT}
*/
int schematicStartHeight() { int schematicStartHeight() {
int plotRoadMin = Math.min(PLOT_HEIGHT, ROAD_HEIGHT); int plotRoadMin = Math.min(PLOT_HEIGHT, ROAD_HEIGHT);
if (!Settings.Schematics.USE_WALL_IN_ROAD_SCHEM_HEIGHT) { if (!Settings.Schematics.USE_WALL_IN_ROAD_SCHEM_HEIGHT) {

View File

@@ -274,6 +274,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
SCHEM_Y = getMinGenHeight(); SCHEM_Y = getMinGenHeight();
plotY = 0; plotY = 0;
} else if (!Settings.Schematics.PASTE_ON_TOP) { } else if (!Settings.Schematics.PASTE_ON_TOP) {
// Schematics should generate/be pasted from build height
SCHEM_Y = getMinBuildHeight(); SCHEM_Y = getMinBuildHeight();
plotY = 0; plotY = 0;
} }
@@ -291,18 +292,14 @@ public class HybridPlotWorld extends ClassicPlotWorld {
roadY = 0; // Road is the lowest schematic roadY = 0; // Road is the lowest schematic
if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldGenHeight) { if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldGenHeight) {
// Road is the lowest schematic. Normalize plotY to it. // Road is the lowest schematic. Normalize plotY to it.
if (Settings.Schematics.PASTE_ON_TOP) { plotY = (Settings.Schematics.PASTE_ON_TOP ? PLOT_HEIGHT : getMinBuildHeight()) - SCHEM_Y;
plotY = PLOT_HEIGHT - getMinGenHeight();
}
} }
} else if (!Settings.Schematics.PASTE_ROAD_ON_TOP) { } else if (!Settings.Schematics.PASTE_ROAD_ON_TOP) {
roadY = 0; roadY = 0;
SCHEM_Y = getMinGenHeight(); SCHEM_Y = getMinGenHeight();
if (schematic3 != null) { if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldGenHeight) {
if (Settings.Schematics.PASTE_ON_TOP) {
// Road is the lowest schematic. Normalize plotY to it. // Road is the lowest schematic. Normalize plotY to it.
plotY = PLOT_HEIGHT - SCHEM_Y; plotY = (Settings.Schematics.PASTE_ON_TOP ? PLOT_HEIGHT : getMinBuildHeight()) - SCHEM_Y;
}
} }
} else { } else {
roadY = minRoadWall - SCHEM_Y; roadY = minRoadWall - SCHEM_Y;

View File

@@ -68,6 +68,7 @@ import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@@ -529,7 +530,7 @@ public class HybridUtils {
final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world)); final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world));
Location bot = plot.getBottomAbs().subtract(1, 0, 1); Location bot = plot.getBottomAbs().subtract(1, 0, 1);
Location top = plot.getTopAbs(); Location top = plot.getTopAbs();
final HybridPlotWorld plotworld = (HybridPlotWorld) plot.getArea(); final HybridPlotWorld plotworld = Objects.requireNonNull((HybridPlotWorld) plot.getArea());
// Do not use plotworld#schematicStartHeight() here as we want to restore the pre 6.1.4 way of doing it if // Do not use plotworld#schematicStartHeight() here as we want to restore the pre 6.1.4 way of doing it if
// USE_WALL_IN_ROAD_SCHEM_HEIGHT is false // USE_WALL_IN_ROAD_SCHEM_HEIGHT is false
int schemY = Settings.Schematics.USE_WALL_IN_ROAD_SCHEM_HEIGHT ? int schemY = Settings.Schematics.USE_WALL_IN_ROAD_SCHEM_HEIGHT ?