From 22974d6478a73c4ad60c5bc4631bdd2b9fbdf13d Mon Sep 17 00:00:00 2001 From: dordsor21 Date: Sat, 23 Aug 2025 16:37:56 +0100 Subject: [PATCH] Further work --- .../core/generator/ClassicPlotWorld.java | 3 +++ .../plotsquared/core/generator/HybridPlotWorld.java | 13 +++++-------- .../com/plotsquared/core/generator/HybridUtils.java | 3 ++- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/generator/ClassicPlotWorld.java b/Core/src/main/java/com/plotsquared/core/generator/ClassicPlotWorld.java index 298315724..4ebfe71cc 100644 --- a/Core/src/main/java/com/plotsquared/core/generator/ClassicPlotWorld.java +++ b/Core/src/main/java/com/plotsquared/core/generator/ClassicPlotWorld.java @@ -164,6 +164,9 @@ public abstract class ClassicPlotWorld extends SquarePlotWorld { : getMinBuildHeight(); } + /** + * Get the lowest height of plot, road, and wall. Accounts for {@link Settings.Schematics#USE_WALL_IN_ROAD_SCHEM_HEIGHT} + */ int schematicStartHeight() { int plotRoadMin = Math.min(PLOT_HEIGHT, ROAD_HEIGHT); if (!Settings.Schematics.USE_WALL_IN_ROAD_SCHEM_HEIGHT) { diff --git a/Core/src/main/java/com/plotsquared/core/generator/HybridPlotWorld.java b/Core/src/main/java/com/plotsquared/core/generator/HybridPlotWorld.java index f0d9ea704..b084e82cc 100644 --- a/Core/src/main/java/com/plotsquared/core/generator/HybridPlotWorld.java +++ b/Core/src/main/java/com/plotsquared/core/generator/HybridPlotWorld.java @@ -274,6 +274,7 @@ public class HybridPlotWorld extends ClassicPlotWorld { SCHEM_Y = getMinGenHeight(); plotY = 0; } else if (!Settings.Schematics.PASTE_ON_TOP) { + // Schematics should generate/be pasted from build height SCHEM_Y = getMinBuildHeight(); plotY = 0; } @@ -291,18 +292,14 @@ public class HybridPlotWorld extends ClassicPlotWorld { roadY = 0; // Road is the lowest schematic if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldGenHeight) { // Road is the lowest schematic. Normalize plotY to it. - if (Settings.Schematics.PASTE_ON_TOP) { - plotY = PLOT_HEIGHT - getMinGenHeight(); - } + plotY = (Settings.Schematics.PASTE_ON_TOP ? PLOT_HEIGHT : getMinBuildHeight()) - SCHEM_Y; } } else if (!Settings.Schematics.PASTE_ROAD_ON_TOP) { roadY = 0; SCHEM_Y = getMinGenHeight(); - if (schematic3 != null) { - if (Settings.Schematics.PASTE_ON_TOP) { - // Road is the lowest schematic. Normalize plotY to it. - plotY = PLOT_HEIGHT - SCHEM_Y; - } + if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldGenHeight) { + // Road is the lowest schematic. Normalize plotY to it. + plotY = (Settings.Schematics.PASTE_ON_TOP ? PLOT_HEIGHT : getMinBuildHeight()) - SCHEM_Y; } } else { roadY = minRoadWall - SCHEM_Y; diff --git a/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java b/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java index 7b35f6f97..c42d35d60 100644 --- a/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java +++ b/Core/src/main/java/com/plotsquared/core/generator/HybridUtils.java @@ -68,6 +68,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @@ -529,7 +530,7 @@ public class HybridUtils { final QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world)); Location bot = plot.getBottomAbs().subtract(1, 0, 1); 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 // USE_WALL_IN_ROAD_SCHEM_HEIGHT is false int schemY = Settings.Schematics.USE_WALL_IN_ROAD_SCHEM_HEIGHT ?