From 4f9b7698151a79c633b95a0c650a4d66fb435416 Mon Sep 17 00:00:00 2001 From: Dustin Norberg Date: Tue, 22 Sep 2026 06:15:04 -0400 Subject: [PATCH] Preserve cave and skylands terrain with Overworld environments --- docs/PORTING.md | 6 +++--- gradle.properties | 2 +- .../rivencraft/book/AgeDimensionService.java | 19 +++++++++++++------ 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/docs/PORTING.md b/docs/PORTING.md index e3bc694..2b0c040 100644 --- a/docs/PORTING.md +++ b/docs/PORTING.md @@ -248,9 +248,9 @@ honor the server's loaded data packs. Automated coverage also verifies that a live Age's seed equals its immutable saved definition; Dynamic Dimensions derives both from the Overworld seed and the Age dimension identifier. -Version 0.2.16.11 moves Cave and Island/Skylands Ages onto the standard -Overworld biome, terrain, surface, structure, and feature pipeline. They no -longer inherit Nether or End generation and dimension behavior. +Version 0.2.16.12 gives Cave and Island/Skylands Ages Overworld biomes, sky, +weather, lighting, and day/night behavior while retaining their distinct +terrain density: enclosed Nether-shaped caves and End-shaped floating islands. Version 0.2.14.0 restores the legacy Linking and Descriptive Book artwork for inventory items and gives each book its matching open-book texture when placed diff --git a/gradle.properties b/gradle.properties index 70f6be3..0b65da4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -35,7 +35,7 @@ mod_name=Rivencraft # The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default. mod_license=LGPL-3.0-or-later # The mod version. Rivencraft uses the x.y.z.b policy documented in README.md. -mod_version=0.2.16.11 +mod_version=0.2.16.12 immersive_portals_version=6.0.7 # The group ID for the mod. It is only important when publishing as an artifact to a Maven repository. # This should match the base package used for the mod sources. diff --git a/src/main/java/net/dnorberg/rivencraft/book/AgeDimensionService.java b/src/main/java/net/dnorberg/rivencraft/book/AgeDimensionService.java index ef331fc..43f40c5 100644 --- a/src/main/java/net/dnorberg/rivencraft/book/AgeDimensionService.java +++ b/src/main/java/net/dnorberg/rivencraft/book/AgeDimensionService.java @@ -210,12 +210,19 @@ public final class AgeDimensionService { var biomeParameters = server.registryAccess() .lookupOrThrow(Registries.MULTI_NOISE_BIOME_SOURCE_PARAMETER_LIST); var noiseSettings = server.registryAccess().lookupOrThrow(Registries.NOISE_SETTINGS); - ResourceKey settingsKey = profile.equals(AgeGenerationProfiles.AMPLIFIED) - ? NoiseGeneratorSettings.AMPLIFIED - : NoiseGeneratorSettings.OVERWORLD; - // Cave and Island/Skylands currently describe an Age's theme. Their - // terrain, biomes, surfaces, structures, and features use the standard - // Overworld pipeline until their dedicated terrain modifiers land. + ResourceKey settingsKey; + if (profile.equals(AgeGenerationProfiles.CAVE)) { + settingsKey = NoiseGeneratorSettings.NETHER; + } else if (profile.equals(AgeGenerationProfiles.ISLAND)) { + settingsKey = NoiseGeneratorSettings.END; + } else if (profile.equals(AgeGenerationProfiles.AMPLIFIED)) { + settingsKey = NoiseGeneratorSettings.AMPLIFIED; + } else { + settingsKey = NoiseGeneratorSettings.OVERWORLD; + } + // Cave retains enclosed Nether-shaped density and Island/Skylands + // retains floating End-shaped density. All profiles use Overworld + // biomes and the Overworld dimension type for sky and time behavior. // random_vanilla is retained as a migration alias for existing Ages. return new NoiseBasedChunkGenerator( MultiNoiseBiomeSource.createFromPreset(