Use Overworld generation for cave and skylands Ages
Build / build (push) Canceled after 0s

This commit is contained in:
dnorberg committed 2026-09-22 06:10:07 -04:00
1 parent ee388f2b55
commit 0182684231
3 files changed
+11 -54

No files matched your search

@@ -22,7 +22,6 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.biome.Biomes;
import net.minecraft.world.level.biome.MultiNoiseBiomeSource;
import net.minecraft.world.level.biome.MultiNoiseBiomeSourceParameterLists;
import net.minecraft.world.level.biome.TheEndBiomeSource;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.BuiltinDimensionTypes;
import net.minecraft.world.level.dimension.DimensionType;
@@ -49,7 +48,7 @@ public final class AgeDimensionService {
loader.loadDynamicDimension(
age.dimensionId(),
createGenerator(server, age),
createDimensionType(server, age)
createDimensionType()
);
}
synchronizeImmersivePortals(server);
@@ -86,7 +85,7 @@ public final class AgeDimensionService {
ServerLevel loaded = DynamicDimensionRegistry.from(server).loadDynamicDimension(
definition.dimensionId(),
createGenerator(server, definition),
createDimensionType(server, definition)
createDimensionType()
);
if (loaded == null) {
Rivencraft.LOGGER.error("Failed to load Age {} as {}", definition.id(), definition.dimensionId());
@@ -208,26 +207,15 @@ public final class AgeDimensionService {
return new FlatLevelSource(settings);
}
var biomes = server.registryAccess().lookupOrThrow(Registries.BIOME);
var biomeParameters = server.registryAccess()
.lookupOrThrow(Registries.MULTI_NOISE_BIOME_SOURCE_PARAMETER_LIST);
var noiseSettings = server.registryAccess().lookupOrThrow(Registries.NOISE_SETTINGS);
if (profile.equals(AgeGenerationProfiles.CAVE)) {
return new NoiseBasedChunkGenerator(
MultiNoiseBiomeSource.createFromPreset(
biomeParameters.getOrThrow(MultiNoiseBiomeSourceParameterLists.NETHER)),
noiseSettings.getOrThrow(NoiseGeneratorSettings.NETHER)
);
}
if (profile.equals(AgeGenerationProfiles.ISLAND)) {
return new NoiseBasedChunkGenerator(
TheEndBiomeSource.create(biomes),
noiseSettings.getOrThrow(NoiseGeneratorSettings.END)
);
}
ResourceKey<NoiseGeneratorSettings> 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.
// random_vanilla is retained as a migration alias for existing Ages.
return new NoiseBasedChunkGenerator(
MultiNoiseBiomeSource.createFromPreset(
@@ -236,13 +224,7 @@ public final class AgeDimensionService {
);
}
private static DimensionType createDimensionType(MinecraftServer server, AgeDefinition age) {
if (age.generationProfile().equals(AgeGenerationProfiles.CAVE)) {
return copyDimensionType(server.getLevel(Level.NETHER).dimensionType());
}
if (age.generationProfile().equals(AgeGenerationProfiles.ISLAND)) {
return copyDimensionType(server.getLevel(Level.END).dimensionType());
}
private static DimensionType createDimensionType() {
return new DimensionType(
OptionalLong.empty(),
true,
@@ -262,33 +244,4 @@ public final class AgeDimensionService {
);
}
/** Dynamic Dimensions registers one dimension-type value per Age, so each needs a distinct instance graph. */
private static DimensionType copyDimensionType(DimensionType type) {
DimensionType.MonsterSettings monsters = type.monsterSettings();
return new DimensionType(
type.fixedTime(),
type.hasSkyLight(),
type.hasCeiling(),
type.ultraWarm(),
type.natural(),
type.coordinateScale(),
type.bedWorks(),
type.respawnAnchorWorks(),
type.minY(),
type.height(),
type.logicalHeight(),
type.infiniburn(),
type.effectsLocation(),
type.ambientLight(),
new DimensionType.MonsterSettings(
monsters.piglinSafe(),
monsters.hasRaids(),
UniformInt.of(
monsters.monsterSpawnLightTest().getMinValue(),
monsters.monsterSpawnLightTest().getMaxValue()
),
monsters.monsterSpawnBlockLightLimit()
)
);
}
}