From 6c1c90b17178aed4c9eee6503d0679eda9e22209 Mon Sep 17 00:00:00 2001 From: Dustin Norberg Date: Tue, 22 Sep 2026 16:58:18 -0400 Subject: [PATCH] Use Overworld cave settings for Cave Ages --- docs/PORTING.md | 6 ++++++ gradle.properties | 2 +- .../java/net/dnorberg/rivencraft/book/AgeDefinition.java | 2 +- .../dnorberg/rivencraft/book/AgeDimensionService.java | 9 +++++---- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/PORTING.md b/docs/PORTING.md index 23c9185..945a146 100644 --- a/docs/PORTING.md +++ b/docs/PORTING.md @@ -317,6 +317,12 @@ Void profiles retain their profile-specific biome sources. Legacy's scaled, tiled, and grid layouts require dedicated modern biome sources and remain the next distribution work. +Version 0.2.21.1 changes Cave Ages from Nether noise settings to Minecraft's +cave noise settings. Caves remain enclosed, but use stone, water, and +Overworld-like surfaces together with the persisted Native or Single biome +distribution. This prevents Nether terrain generation from leaking into newly +generated Cave Age chunks. + 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 on a Book Stand. Return Linking Books created inside another Age also retain and diff --git a/gradle.properties b/gradle.properties index 80f4b6c..a9dc751 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.21.0 +mod_version=0.2.21.1 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/AgeDefinition.java b/src/main/java/net/dnorberg/rivencraft/book/AgeDefinition.java index 6eab9c7..ea6b507 100644 --- a/src/main/java/net/dnorberg/rivencraft/book/AgeDefinition.java +++ b/src/main/java/net/dnorberg/rivencraft/book/AgeDefinition.java @@ -21,7 +21,7 @@ public record AgeDefinition( public static final ResourceLocation RANDOM_VANILLA_PROFILE = ResourceLocation.fromNamespaceAndPath( Rivencraft.MOD_ID, "random_vanilla" ); - public static final int CURRENT_GENERATION_VERSION = 8; + public static final int CURRENT_GENERATION_VERSION = 9; public AgeDefinition { Objects.requireNonNull(id, "id"); diff --git a/src/main/java/net/dnorberg/rivencraft/book/AgeDimensionService.java b/src/main/java/net/dnorberg/rivencraft/book/AgeDimensionService.java index 97f6351..ff900f4 100644 --- a/src/main/java/net/dnorberg/rivencraft/book/AgeDimensionService.java +++ b/src/main/java/net/dnorberg/rivencraft/book/AgeDimensionService.java @@ -254,7 +254,7 @@ public final class AgeDimensionService { var noiseSettings = server.registryAccess().lookupOrThrow(Registries.NOISE_SETTINGS); ResourceKey settingsKey; if (profile.equals(AgeGenerationProfiles.CAVE)) { - settingsKey = NoiseGeneratorSettings.NETHER; + settingsKey = NoiseGeneratorSettings.CAVES; } else if (profile.equals(AgeGenerationProfiles.ISLAND)) { settingsKey = NoiseGeneratorSettings.FLOATING_ISLANDS; } else if (profile.equals(AgeGenerationProfiles.AMPLIFIED)) { @@ -262,9 +262,10 @@ public final class AgeDimensionService { } else { settingsKey = NoiseGeneratorSettings.OVERWORLD; } - // Cave retains enclosed Nether-shaped density. Island/Skylands uses - // uniform floating-island density without the End's central dragon - // island. Both use Overworld biomes and dimension environment. + // Cave uses Minecraft's enclosed cave density with stone, water, and + // Overworld-like surfaces while retaining the Age's biome source. + // Island/Skylands uses uniform floating-island density without the + // End's central dragon island. Both use the Overworld environment. // random_vanilla is retained as a migration alias for existing Ages. return new NoiseBasedChunkGenerator( createBiomeSource(server, age, biomeParameters),