From c56c15fc02864fe7fd84acb99e00db02d3fe27b9 Mon Sep 17 00:00:00 2001 From: Frank Date: Sat, 9 Jul 2022 04:38:57 +0200 Subject: [PATCH] Handling for Datapack overrides (#20) --- .../bclib/api/v2/levelgen/LevelGenEvents.java | 4 +--- .../worlds/together/levelgen/WorldGenUtil.java | 17 +++++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/betterx/bclib/api/v2/levelgen/LevelGenEvents.java b/src/main/java/org/betterx/bclib/api/v2/levelgen/LevelGenEvents.java index 79393780..348d24d0 100644 --- a/src/main/java/org/betterx/bclib/api/v2/levelgen/LevelGenEvents.java +++ b/src/main/java/org/betterx/bclib/api/v2/levelgen/LevelGenEvents.java @@ -57,7 +57,7 @@ public class LevelGenEvents { //make sure we include Tags registered by the deprecated API TagAPI.apply(directory, tagsMap); - + if (directory.equals(TagManager.BIOMES.directory)) { InternalBiomeAPI._runBiomeTagAdders(); } @@ -79,8 +79,6 @@ public class LevelGenEvents { //We probably loaded a Datapack for the End if (!(endStem.generator().getBiomeSource() instanceof BCLibEndBiomeSource)) { - - if (currentPreset.isPresent()) { if (currentPreset.get().value() instanceof TogetherWorldPreset worldPreset) { ResourceKey worldPresetKey = currentPreset.get().unwrapKey().orElse(null); diff --git a/src/main/java/org/betterx/worlds/together/levelgen/WorldGenUtil.java b/src/main/java/org/betterx/worlds/together/levelgen/WorldGenUtil.java index 55f2dade..7605f42e 100644 --- a/src/main/java/org/betterx/worlds/together/levelgen/WorldGenUtil.java +++ b/src/main/java/org/betterx/worlds/together/levelgen/WorldGenUtil.java @@ -245,13 +245,18 @@ public class WorldGenUtil { ChunkGenerator referenceGenerator = dimensions.get(key); if (referenceGenerator instanceof EnforceableChunkGenerator enforcer) { - // This list contains the vanilla default level stem (only available if a new world is loaded) as well as - // The currently loaded stem - var vanillaDimensionMap = WorldGenUtil.getDimensionsWithModData(net.minecraft.world.level.levelgen.presets.WorldPresets.NORMAL); - LevelStem vanillaDefaultStem = vanillaDimensionMap.get(key); - if (vanillaDefaultStem != null) { - loadedStem = vanillaDefaultStem; + // probably not a datapack, so we need to check what other mods would have + // added to the vanilla settings + if (loadedStem.generator() instanceof EnforceableChunkGenerator) { + // This list contains the vanilla default level stem (only available if a new world is loaded) as well as + // The currently loaded stem + var vanillaDimensionMap = WorldGenUtil.getDimensionsWithModData(net.minecraft.world.level.levelgen.presets.WorldPresets.NORMAL); + + LevelStem vanillaDefaultStem = vanillaDimensionMap.get(key); + if (vanillaDefaultStem != null) { + loadedStem = vanillaDefaultStem; + } }