mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-08-27 12:41:43 +00:00
d
This commit is contained in:
+12
-7
@@ -279,7 +279,7 @@ final class ModdedNativeStructureStage {
|
||||
Engine current = generator.engine();
|
||||
List<NativePlacementGroup> placementGroups = new ArrayList<>();
|
||||
List<StructureStart> heightmapStarts = new ArrayList<>();
|
||||
List<NativeStructureVegetationClearer.VegetationTarget> vegetationTargets = new ArrayList<>();
|
||||
List<StructureStart> vegetationTargets = new ArrayList<>();
|
||||
List<NativeStructureTerrainIntegrator.TerrainTarget> terrainTargets = new ArrayList<>();
|
||||
for (int step = 0; step < steps; step++) {
|
||||
int index = 0;
|
||||
@@ -310,11 +310,7 @@ final class ModdedNativeStructureStage {
|
||||
structureId, start,
|
||||
NativeStructureTerrainIntegrator.resolveNativeTerrain(
|
||||
start, decision.terrain())));
|
||||
boolean clearEntireFootprint = NativeStructureVegetationClearer
|
||||
.shouldClearEntireVegetationFootprint(
|
||||
structure.step(), decision.clearVegetation());
|
||||
vegetationTargets.add(new NativeStructureVegetationClearer.VegetationTarget(
|
||||
start, clearEntireFootprint));
|
||||
vegetationTargets.add(start);
|
||||
}
|
||||
if (!resolvedPlacements.isEmpty()) {
|
||||
placementGroups.add(new NativePlacementGroup(
|
||||
@@ -346,8 +342,9 @@ final class ModdedNativeStructureStage {
|
||||
"vegetation cleanup", nativeStructureBatchContext(placementGroups),
|
||||
chunkPos.x(), chunkPos.z(), error);
|
||||
}
|
||||
NativeStructureSurfaceFitter.VacuumFoundationPlan vacuumFoundationPlan;
|
||||
try {
|
||||
NativeStructureSurfaceFitter.prepareSurfaceStructures(
|
||||
vacuumFoundationPlan = NativeStructureSurfaceFitter.prepareSurfaceStructures(
|
||||
world, area, terrainTargets,
|
||||
(x, z) -> current.getHeight(x, z, true) + current.getMinHeight());
|
||||
} catch (Throwable error) {
|
||||
@@ -375,6 +372,14 @@ final class ModdedNativeStructureStage {
|
||||
"placement", group.structureId(), chunkPos.x(), chunkPos.z(), error);
|
||||
}
|
||||
}
|
||||
try {
|
||||
NativeStructureSurfaceFitter.repairVacuumFoundations(
|
||||
world, area, vacuumFoundationPlan);
|
||||
} catch (Throwable error) {
|
||||
throw NativeStructureGenerationException.failure(
|
||||
"foundation repair", nativeStructureBatchContext(placementGroups),
|
||||
chunkPos.x(), chunkPos.z(), error);
|
||||
}
|
||||
}
|
||||
|
||||
private static String nativeStructureBatchContext(List<NativePlacementGroup> placementGroups) {
|
||||
|
||||
+3
@@ -64,6 +64,7 @@ public class NativeStructureFailureContractTest {
|
||||
|
||||
assertTrue(placement.contains("\"terrain integration\""));
|
||||
assertTrue(placement.contains("\"terrain preparation\""));
|
||||
assertTrue(placement.contains("\"foundation repair\""));
|
||||
assertFalse(placement.contains("\"terrain carving\""));
|
||||
assertTrue(placement.contains("prepareSurfaceStructures"));
|
||||
assertTrue(placement.contains("clearIntersectingVegetation"));
|
||||
@@ -71,6 +72,8 @@ public class NativeStructureFailureContractTest {
|
||||
< placement.indexOf("prepareSurfaceStructures"));
|
||||
assertTrue(placement.indexOf("prepareSurfaceStructures")
|
||||
< placement.indexOf("for (NativePlacementGroup group"));
|
||||
assertTrue(placement.indexOf("repairVacuumFoundations")
|
||||
> placement.indexOf("for (NativePlacementGroup group"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+1
-1
@@ -332,6 +332,6 @@ public class IrisModdedStructureCommandTest {
|
||||
}
|
||||
|
||||
private IrisNativeStructureDecision decision(NativeStructureGenerationStatus status) {
|
||||
return new IrisNativeStructureDecision(status, 0, null, false, false, null, null);
|
||||
return new IrisNativeStructureDecision(status, 0, null, false, null, null);
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -102,13 +102,13 @@ public class NativeStructureReferenceRepairTest {
|
||||
public void deniedNaturalStartsCannotEnterCollisionArbitration() {
|
||||
IrisNativeStructureDecision enabled = new IrisNativeStructureDecision(
|
||||
NativeStructureGenerationStatus.GENERATE_NATIVE,
|
||||
0, null, false, false, null, new IrisStructureTerrain());
|
||||
0, null, false, null, new IrisStructureTerrain());
|
||||
IrisNativeStructureDecision disabled = new IrisNativeStructureDecision(
|
||||
NativeStructureGenerationStatus.DISABLED_BY_PACK,
|
||||
0, null, false, false, null, new IrisStructureTerrain());
|
||||
0, null, false, null, new IrisStructureTerrain());
|
||||
IrisNativeStructureDecision replaced = new IrisNativeStructureDecision(
|
||||
NativeStructureGenerationStatus.REPLACED_BY_IRIS,
|
||||
0, null, false, false, null, new IrisStructureTerrain());
|
||||
0, null, false, null, new IrisStructureTerrain());
|
||||
|
||||
assertTrue(NativeStructureReferenceRepair.naturalDecisionAllows(enabled));
|
||||
assertFalse(NativeStructureReferenceRepair.naturalDecisionAllows(disabled));
|
||||
|
||||
+4
-4
@@ -20,7 +20,7 @@ import org.junit.Test;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
public class NativeStructureVacuumParityTest {
|
||||
@@ -31,7 +31,7 @@ public class NativeStructureVacuumParityTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void explicitVacuumUsesSharedThinSurfaceFittingOnModdedLoaders() {
|
||||
public void explicitVacuumUsesNonCarvingSurfaceFittingOnModdedLoaders() {
|
||||
Structure structure = new DesertPyramidStructure(
|
||||
new Structure.StructureSettings(
|
||||
HolderSet.empty(), Map.of(),
|
||||
@@ -45,7 +45,7 @@ public class NativeStructureVacuumParityTest {
|
||||
new IrisStructureTerrain().setMode(IrisStructureTerrainMode.VACUUM));
|
||||
|
||||
assertTrue(NativeStructureSurfaceFitter.requiresSurfaceTerrain(target));
|
||||
assertEquals(TerrainAdjustment.BEARD_THIN,
|
||||
NativeStructureSurfaceFitter.effectiveSurfaceAdjustment(target));
|
||||
assertFalse(NativeStructureTerrainIntegrator.clearsLegacyTemplateAir(
|
||||
start, target.terrain()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user