mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-11 19:14:11 +00:00
Reworked terrain transitions
- New terrain heights meet saved boundaries while retaining local relief - Surface water levels approach saved fluid heights across the band - Cave and physical biome matching use a four-block seam patch - Terrain generates once without speculative neighbor containment - Bounded caches serve transition membership and boundary lookups - Saved biome writes honor the selected durability policy - Release labels and presentation code leave generation identity unchanged - Unfinished objects retain blocks and metadata across pack changes - Whole structure assemblies preserve pending excavation and foundations - New placements keep pending historical pieces clear - Transition probes cover cutovers and retained object fragments
This commit is contained in:
@@ -29,6 +29,10 @@ public final class GenerationRevisionScope {
|
||||
"core/src/main/java/art/arcane/iris/world/safeguard/Diagnostic.java",
|
||||
"core/src/main/java/art/arcane/iris/world/safeguard/ValueWithDiagnostics.java",
|
||||
"core/src/main/java/art/arcane/iris/diagnostics/splash/IrisSplashRenderer.java",
|
||||
"core/src/main/java/art/arcane/iris/diagnostics/splash/IrisSplashComposer.java",
|
||||
"core/src/main/java/art/arcane/iris/diagnostics/splash/IrisSplashPackScanner.java",
|
||||
"adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedIrisSplash.java",
|
||||
"adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandDebug.java",
|
||||
"adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandDeveloper.java",
|
||||
"adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandPregen.java",
|
||||
"adapters/bukkit/plugin/src/main/java/art/arcane/iris/command/CommandIris.java",
|
||||
|
||||
@@ -33,6 +33,31 @@ public class GenerationBuildRevisionTest {
|
||||
GenerationBuildRevision.fingerprint(GenerationBuildRevision.capture(fixture.options(), fixture.dependencies())));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dependencyReleaseNamesAndMavenMetadataDoNotChangeGenerationIdentity() throws Exception {
|
||||
Fixture fixture = fixture();
|
||||
String original = GenerationBuildRevision.fingerprint(GenerationBuildRevision.read(fixture.revision()));
|
||||
Path released = fixture.root().resolve("math-2.0.jar");
|
||||
try (ZipOutputStream output = new ZipOutputStream(Files.newOutputStream(released))) {
|
||||
for (Map.Entry<String, String> entry : Map.of(
|
||||
"META-INF/MANIFEST.MF", "Manifest-Version: 1.0\r\nImplementation-Version: 2.0\r\nBuild-Time: 12345\r\n\r\n",
|
||||
"META-INF/maven/example/math/pom.properties", "groupId=example\nartifactId=math\nversion=2.0\n",
|
||||
"META-INF/maven/example/math/pom.xml", "<project><version>2.0</version></project>",
|
||||
"example/Math.class", "same code").entrySet()) {
|
||||
ZipEntry archiveEntry = new ZipEntry(entry.getKey());
|
||||
archiveEntry.setTime(1_700_000_000_000L);
|
||||
output.putNextEntry(archiveEntry);
|
||||
output.write(entry.getValue().getBytes(StandardCharsets.UTF_8));
|
||||
output.closeEntry();
|
||||
}
|
||||
}
|
||||
Map<String, Path> dependencies = Map.of("math", released);
|
||||
|
||||
GenerationBuildRevision.verifySnapshot(fixture.root(), fixture.revision(), dependencies);
|
||||
assertEquals(original, GenerationBuildRevision.fingerprint(
|
||||
GenerationBuildRevision.capture(fixture.options(), dependencies)));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void rejectsChangedAddedAndDeletedGenerationSources() throws Exception {
|
||||
Fixture fixture = fixture();
|
||||
|
||||
@@ -44,6 +44,25 @@ public class GenerationRevisionScopeTest {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void releaseVersionAndExpandedPluginMetadataPreserveTheGenerationFingerprint() throws Exception {
|
||||
Fixture fixture = fixture();
|
||||
String original = GenerationBuildRevision.fingerprint(GenerationBuildRevision.read(fixture.revision()));
|
||||
for (String version : List.of("4.1.2-26.2", "4.1.3-26.2", "4.1.3-26.2-build-123")) {
|
||||
write(fixture.root().resolve("gradle.properties"), "irisVersion=" + version + "\n");
|
||||
write(fixture.root().resolve("adapters/bukkit/plugin/src/main/resources/paper-plugin.yml"),
|
||||
"name: Iris\nversion: " + version + "\n");
|
||||
write(fixture.root().resolve("adapters/bukkit/plugin/build/resources/main/paper-plugin.yml"),
|
||||
"name: Iris\nversion: " + version + "\n");
|
||||
write(fixture.root().resolve("adapters/fabric/build/resources/main/fabric.mod.json"),
|
||||
"{\"id\":\"iris\",\"version\":\"" + version + "\"}\n");
|
||||
|
||||
GenerationBuildRevision.verifySnapshot(fixture.root(), fixture.revision(), fixture.dependencies());
|
||||
assertEquals(original, GenerationBuildRevision.fingerprint(
|
||||
GenerationBuildRevision.capture(fixture.options(), fixture.dependencies())));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void generationChangesProduceANewBuildRevision() throws Exception {
|
||||
Fixture fixture = fixture();
|
||||
@@ -88,6 +107,10 @@ public class GenerationRevisionScopeTest {
|
||||
}
|
||||
assertFalse(manifest.sources().containsKey(ENGINE_ROOT + "EngineDiagnostics.java"));
|
||||
assertFalse(manifest.sources().containsKey(COMMAND_ROOT + "CommandIris.java"));
|
||||
assertFalse(manifest.sources().containsKey(COMMAND_ROOT + "CommandDebug.java"));
|
||||
assertFalse(manifest.sources().containsKey("core/src/main/java/art/arcane/iris/diagnostics/splash/IrisSplashComposer.java"));
|
||||
assertFalse(manifest.sources().containsKey("core/src/main/java/art/arcane/iris/diagnostics/splash/IrisSplashPackScanner.java"));
|
||||
assertFalse(manifest.sources().containsKey("adapters/modded-common/src/main/java/art/arcane/iris/modded/ModdedIrisSplash.java"));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user