diff --git a/src/main/java/org/betterx/bclib/BCLibPatch.java b/src/main/java/org/betterx/bclib/BCLibPatch.java index f88b1db7..bc9d8c84 100644 --- a/src/main/java/org/betterx/bclib/BCLibPatch.java +++ b/src/main/java/org/betterx/bclib/BCLibPatch.java @@ -16,7 +16,7 @@ import org.betterx.bclib.api.datafixer.DataFixerAPI; import org.betterx.bclib.api.datafixer.ForcedLevelPatch; import org.betterx.bclib.api.datafixer.MigrationProfile; import org.betterx.bclib.config.Configs; -import org.betterx.bclib.presets.worldgen.WorldGenUtilities; +import org.betterx.bclib.api.worldgen.WorldGenUtil; import org.betterx.bclib.util.MHelper; import org.betterx.bclib.world.generator.GeneratorOptions; @@ -45,7 +45,7 @@ final class BiomeSourcePatch extends ForcedLevelPatch { @Override protected Boolean runLevelDatPatch(CompoundTag root, MigrationProfile profile) { //make sure we have a working generators file before attempting to patch - WorldGenUtilities.migrateGeneratorSettings(); + WorldGenUtil.migrateGeneratorSettings(); final CompoundTag worldGenSettings = root.getCompound("Data").getCompound("WorldGenSettings"); final CompoundTag dimensions = worldGenSettings.getCompound("dimensions"); @@ -115,10 +115,10 @@ final class BiomeSourcePatch extends ForcedLevelPatch { .resultOrPartial(BCLib.LOGGER::error); Optional netherGenerator = oLevelStem.map(l -> l.generator()); - int biomeSourceVersion = WorldGenUtilities.getBiomeVersionForGenerator(netherGenerator.orElse(null)); - int targetVersion = WorldGenUtilities.getBiomeVersionForCurrentWorld(dimensionKey); + int biomeSourceVersion = WorldGenUtil.getBiomeVersionForGenerator(netherGenerator.orElse(null)); + int targetVersion = WorldGenUtil.getBiomeVersionForCurrentWorld(dimensionKey); if (biomeSourceVersion != targetVersion) { - Optional> refLevelStem = WorldGenUtilities.referenceStemForVersion( + Optional> refLevelStem = WorldGenUtil.referenceStemForVersion( dimensionKey, targetVersion, registryAccess, diff --git a/src/main/java/org/betterx/bclib/api/biomes/BiomeAPI.java b/src/main/java/org/betterx/bclib/api/biomes/BiomeAPI.java index 9a164b1f..e5248965 100644 --- a/src/main/java/org/betterx/bclib/api/biomes/BiomeAPI.java +++ b/src/main/java/org/betterx/bclib/api/biomes/BiomeAPI.java @@ -128,7 +128,6 @@ public class BiomeAPI { private static final Map>>> MODIFICATIONS = Maps.newHashMap(); private static final Map>>> TAG_ADDERS = Maps.newHashMap(); - private static final Map SURFACE_RULES = Maps.newHashMap(); private static final Set MODIFIED_SURFACE_PROVIDERS = new HashSet<>(8); public static final BCLBiome NETHER_WASTES_BIOME = registerNetherBiome(getFromRegistry(Biomes.NETHER_WASTES).value()); @@ -728,45 +727,7 @@ public class BiomeAPI { } accessor.bclib_setFeatures(featureList); } - - private static List getRuleSourcesForBiomes(Set> biomes) { - Set biomeIDs = biomes - .stream() - .map(biome -> getBiomeID(biome)) - .collect(Collectors.toSet()); - return getRuleSourcesFromIDs(biomeIDs); - } - - /** - * Creates a list of SurfaceRules for all Biomes that are managed by the passed {@link BiomeSource}. - * If we have Surface rules for any of the Biomes from the given set of {@link BiomeSource}, they - * will be added to the result - *

- * Note: This Method is used in the {@link NoiseGeneratorSettingsMixin} which in turn - * is called from {@link #applyModifications(ServerLevel)}. - * - * @param sources The Set of {@link BiomeSource} we want to consider - * @return A list of {@link RuleSource}-Objects that are needed to create those Biomes - */ - public static List getRuleSources(Set sources) { - final Set> biomes = new HashSet<>(); - for (BiomeSource s : sources) { - biomes.addAll(s.possibleBiomes()); - } - - return getRuleSourcesForBiomes(biomes); - } - - private static List getRuleSourcesFromIDs(Set biomeIDs) { - List rules = Lists.newArrayList(); - SURFACE_RULES.forEach((biomeID, rule) -> { - if (biomeIDs.contains(biomeID)) { - rules.add(rule); - } - }); - return rules; - } - + /** * Adds new features to existing biome. * @@ -827,20 +788,8 @@ public class BiomeAPI { accessor.bclib_setFeatureSet(featureSet); accessor.bclib_setFlowerFeatures(flowerFeatures); } - - - /** - * Adds surface rule to specified biome. - * - * @param biomeID biome {@link ResourceLocation}. - * @param source {@link SurfaceRules.RuleSource}. - */ - public static void addSurfaceRule(ResourceLocation biomeID, SurfaceRules.RuleSource source) { - SURFACE_RULES.put(biomeID, source); - //NOISE_GENERATOR_SETTINGS.forEach(BiomeAPI::changeSurfaceRulesForGenerator); - } - - + + /** * Adds mob spawning to specified biome. * diff --git a/src/main/java/org/betterx/bclib/api/datafixer/DataFixerAPI.java b/src/main/java/org/betterx/bclib/api/datafixer/DataFixerAPI.java index ed5db74c..73c787f9 100644 --- a/src/main/java/org/betterx/bclib/api/datafixer/DataFixerAPI.java +++ b/src/main/java/org/betterx/bclib/api/datafixer/DataFixerAPI.java @@ -24,7 +24,7 @@ import org.betterx.bclib.gui.screens.ConfirmFixScreen; import org.betterx.bclib.gui.screens.LevelFixErrorScreen; import org.betterx.bclib.gui.screens.LevelFixErrorScreen.Listener; import org.betterx.bclib.gui.screens.ProgressScreen; -import org.betterx.bclib.presets.worldgen.WorldGenUtilities; +import org.betterx.bclib.api.worldgen.WorldGenUtil; import org.betterx.bclib.util.Logger; import java.io.*; @@ -181,7 +181,7 @@ public class DataFixerAPI { public static void createWorldData(LevelStorageAccess access, WorldGenSettings settings) { initializeWorldData(access, true); - WorldGenUtilities.initializeWorldData(settings); + WorldGenUtil.initializeWorldData(settings); WorldDataAPI.saveFile(BCLib.MOD_ID); } diff --git a/src/main/java/org/betterx/bclib/presets/worldgen/BCLChunkGenerator.java b/src/main/java/org/betterx/bclib/api/worldgen/BCLChunkGenerator.java similarity index 98% rename from src/main/java/org/betterx/bclib/presets/worldgen/BCLChunkGenerator.java rename to src/main/java/org/betterx/bclib/api/worldgen/BCLChunkGenerator.java index 6c8c295a..2428ea26 100644 --- a/src/main/java/org/betterx/bclib/presets/worldgen/BCLChunkGenerator.java +++ b/src/main/java/org/betterx/bclib/api/worldgen/BCLChunkGenerator.java @@ -1,4 +1,4 @@ -package org.betterx.bclib.presets.worldgen; +package org.betterx.bclib.api.worldgen; import net.minecraft.core.Holder; import net.minecraft.core.Registry; diff --git a/src/main/java/org/betterx/bclib/api/worldgen/SurfaceRuleUtil.java b/src/main/java/org/betterx/bclib/api/worldgen/SurfaceRuleUtil.java new file mode 100644 index 00000000..f6dc8552 --- /dev/null +++ b/src/main/java/org/betterx/bclib/api/worldgen/SurfaceRuleUtil.java @@ -0,0 +1,77 @@ +package org.betterx.bclib.api.worldgen; + +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSource; +import net.minecraft.world.level.levelgen.SurfaceRules; +import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource; +import org.betterx.bclib.api.biomes.BiomeAPI; +import org.betterx.bclib.mixin.common.NoiseGeneratorSettingsMixin; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +public class SurfaceRuleUtil { + private static final Map SURFACE_RULES = Maps.newHashMap(); + + private static List getRuleSourcesForBiomes(Set> biomes) { + Set biomeIDs = biomes + .stream() + .map(biome -> BiomeAPI.getBiomeID(biome)) + .collect(Collectors.toSet()); + return getRuleSourcesFromIDs(biomeIDs); + } + + /** + * Creates a list of SurfaceRules for all Biomes that are managed by the passed {@link BiomeSource}. + * If we have Surface rules for any of the Biomes from the given set of {@link BiomeSource}, they + * will be added to the result + *

+ * Note: This Method is used in the {@link NoiseGeneratorSettingsMixin} which in turn + * is called from {@link #applyModifications(ServerLevel)}. + * + * @param sources The Set of {@link BiomeSource} we want to consider + * @return A list of {@link RuleSource}-Objects that are needed to create those Biomes + */ + public static List getRuleSources(Set sources) { + final Set> biomes = new HashSet<>(); + for (BiomeSource s : sources) { + biomes.addAll(s.possibleBiomes()); + } + + return getRuleSourcesForBiomes(biomes); + } + + public static List getRuleSources(BiomeSource biomeSource) { + return getRuleSourcesForBiomes(Sets.newHashSet(biomeSource.possibleBiomes())); + } + + private static List getRuleSourcesFromIDs(Set biomeIDs) { + List rules = Lists.newArrayList(); + SURFACE_RULES.forEach((biomeID, rule) -> { + if (biomeIDs.contains(biomeID)) { + rules.add(rule); + } + }); + return rules; + } + + /** + * Adds surface rule to specified biome. + * + * @param biomeID biome {@link ResourceLocation}. + * @param source {@link RuleSource}. + */ + public static void addSurfaceRule(ResourceLocation biomeID, RuleSource source) { + SURFACE_RULES.put(biomeID, source); + //NOISE_GENERATOR_SETTINGS.forEach(BiomeAPI::changeSurfaceRulesForGenerator); + } +} diff --git a/src/main/java/org/betterx/bclib/presets/worldgen/WorldGenUtilities.java b/src/main/java/org/betterx/bclib/api/worldgen/WorldGenUtil.java similarity index 93% rename from src/main/java/org/betterx/bclib/presets/worldgen/WorldGenUtilities.java rename to src/main/java/org/betterx/bclib/api/worldgen/WorldGenUtil.java index a44bb8a9..45eb8e37 100644 --- a/src/main/java/org/betterx/bclib/presets/worldgen/WorldGenUtilities.java +++ b/src/main/java/org/betterx/bclib/api/worldgen/WorldGenUtil.java @@ -1,4 +1,4 @@ -package org.betterx.bclib.presets.worldgen; +package org.betterx.bclib.api.worldgen; import net.minecraft.core.Holder; import net.minecraft.core.MappedRegistry; @@ -16,6 +16,8 @@ import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; +import net.minecraft.world.level.levelgen.SurfaceRules; +import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource; import net.minecraft.world.level.levelgen.WorldGenSettings; import net.minecraft.world.level.levelgen.presets.WorldPreset; import net.minecraft.world.level.levelgen.structure.StructureSet; @@ -27,16 +29,22 @@ import com.mojang.serialization.Lifecycle; import org.betterx.bclib.BCLib; import org.betterx.bclib.api.WorldDataAPI; import org.betterx.bclib.mixin.common.RegistryOpsAccessor; +import org.betterx.bclib.presets.worldgen.BCLWorldPresetSettings; +import org.betterx.bclib.presets.worldgen.BCLWorldPresets; +import org.betterx.bclib.presets.worldgen.WorldPresetSettings; import org.betterx.bclib.util.ModUtil; import org.betterx.bclib.world.generator.BCLBiomeSource; import org.betterx.bclib.world.generator.BCLibEndBiomeSource; import org.betterx.bclib.world.generator.BCLibNetherBiomeSource; +import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Collectors; + import org.jetbrains.annotations.NotNull; -public class WorldGenUtilities { +public class WorldGenUtil { private static final String TAG_VERSION = "version"; private static final String TAG_BN_GEN_VERSION = "generator_version"; private static String TAG_GENERATOR = "generator"; @@ -379,4 +387,17 @@ public class WorldGenUtilities { this.biomes = biomes; } } + + public static RuleSource addRulesForBiomeSource(RuleSource org, BiomeSource biomeSource) { + List additionalRules = SurfaceRuleUtil.getRuleSources(biomeSource); + if (org instanceof SurfaceRules.SequenceRuleSource sequenceRule) { + List existingSequence = sequenceRule.sequence(); + additionalRules = additionalRules.stream().filter(r -> existingSequence.indexOf(r) < 0).collect(Collectors.toList()); + additionalRules.addAll(sequenceRule.sequence()); + } else { + additionalRules.add(org); + } + + return SurfaceRules.sequence(additionalRules.toArray(new RuleSource[additionalRules.size()])); + } } diff --git a/src/main/java/org/betterx/bclib/gui/screens/WorldSetupScreen.java b/src/main/java/org/betterx/bclib/gui/screens/WorldSetupScreen.java index e3b77f6a..d91ac096 100644 --- a/src/main/java/org/betterx/bclib/gui/screens/WorldSetupScreen.java +++ b/src/main/java/org/betterx/bclib/gui/screens/WorldSetupScreen.java @@ -15,7 +15,7 @@ import net.fabricmc.api.Environment; import org.betterx.bclib.BCLib; import org.betterx.bclib.gui.gridlayout.GridCheckboxCell; import org.betterx.bclib.gui.gridlayout.GridLayout; -import org.betterx.bclib.presets.worldgen.WorldGenUtilities; +import org.betterx.bclib.api.worldgen.WorldGenUtil; import org.betterx.bclib.world.generator.BCLBiomeSource; import org.jetbrains.annotations.Nullable; @@ -39,14 +39,14 @@ public class WorldSetupScreen extends BCLibScreen { @Override protected void initLayout() { - final int netherVersion = WorldGenUtilities.getBiomeVersionForGenerator(context + final int netherVersion = WorldGenUtil.getBiomeVersionForGenerator(context .worldGenSettings() .dimensions() .getOrCreateHolderOrThrow( LevelStem.NETHER) .value() .generator()); - final int endVersion = WorldGenUtilities.getBiomeVersionForGenerator(context + final int endVersion = WorldGenUtil.getBiomeVersionForGenerator(context .worldGenSettings() .dimensions() .getOrCreateHolderOrThrow( @@ -149,7 +149,7 @@ public class WorldSetupScreen extends BCLibScreen { int biomeSourceVersion ) { createWorldScreen.worldGenSettingsComponent.updateSettings( - (registryAccess, worldGenSettings) -> WorldGenUtilities.replaceGenerator( + (registryAccess, worldGenSettings) -> WorldGenUtil.replaceGenerator( dimensionKey, dimensionTypeKey, biomeSourceVersion, diff --git a/src/main/java/org/betterx/bclib/mixin/client/CreateWorldScreenMixin.java b/src/main/java/org/betterx/bclib/mixin/client/CreateWorldScreenMixin.java index 8ca033c4..0e83b2b2 100644 --- a/src/main/java/org/betterx/bclib/mixin/client/CreateWorldScreenMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/client/CreateWorldScreenMixin.java @@ -14,7 +14,7 @@ import net.minecraft.world.level.levelgen.presets.WorldPreset; import com.mojang.datafixers.util.Pair; import org.betterx.bclib.api.biomes.BiomeAPI; import org.betterx.bclib.presets.worldgen.BCLWorldPresets; -import org.betterx.bclib.presets.worldgen.WorldGenUtilities; +import org.betterx.bclib.api.worldgen.WorldGenUtil; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -44,7 +44,7 @@ public class CreateWorldScreenMixin { private static WorldLoader.WorldDataSupplier bcl_NewDefaultSettings(WorldLoader.WorldDataSupplier worldDataSupplier) { return (resourceManager, dataPackConfig) -> { Pair res = worldDataSupplier.get(resourceManager, dataPackConfig); - return WorldGenUtilities.defaultWorldDataSupplier(res.getSecond()); + return WorldGenUtil.defaultWorldDataSupplier(res.getSecond()); }; } } diff --git a/src/main/java/org/betterx/bclib/mixin/common/ChunkGeneratorsMixin.java b/src/main/java/org/betterx/bclib/mixin/common/ChunkGeneratorsMixin.java index 504a0a9c..08f6466f 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/ChunkGeneratorsMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/ChunkGeneratorsMixin.java @@ -6,7 +6,7 @@ import net.minecraft.world.level.chunk.ChunkGenerators; import com.mojang.serialization.Codec; import org.betterx.bclib.BCLib; -import org.betterx.bclib.presets.worldgen.BCLChunkGenerator; +import org.betterx.bclib.api.worldgen.BCLChunkGenerator; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/org/betterx/bclib/mixin/common/NoiseGeneratorSettingsMixin.java b/src/main/java/org/betterx/bclib/mixin/common/NoiseGeneratorSettingsMixin.java index 507789ae..4474d29f 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/NoiseGeneratorSettingsMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/NoiseGeneratorSettingsMixin.java @@ -5,7 +5,7 @@ import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; import net.minecraft.world.level.levelgen.SurfaceRules; import net.minecraft.world.level.levelgen.SurfaceRules.RuleSource; -import org.betterx.bclib.api.biomes.BiomeAPI; +import org.betterx.bclib.api.worldgen.SurfaceRuleUtil; import org.betterx.bclib.interfaces.SurfaceRuleProvider; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -28,7 +28,7 @@ public class NoiseGeneratorSettingsMixin implements SurfaceRuleProvider { private final Set bclib_biomeSources = new HashSet<>(); private void bclib_updateCustomRules() { - bclib_setCustomRules(BiomeAPI.getRuleSources(bclib_biomeSources)); + bclib_setCustomRules(SurfaceRuleUtil.getRuleSources(bclib_biomeSources)); } @Override diff --git a/src/main/java/org/betterx/bclib/mixin/common/PrimaryLevelDataMixin.java b/src/main/java/org/betterx/bclib/mixin/common/PrimaryLevelDataMixin.java index 3d3e1fba..7d37fba9 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/PrimaryLevelDataMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/PrimaryLevelDataMixin.java @@ -11,7 +11,7 @@ import net.minecraft.world.level.storage.PrimaryLevelData; import com.mojang.datafixers.DataFixer; import com.mojang.serialization.Dynamic; import com.mojang.serialization.Lifecycle; -import org.betterx.bclib.presets.worldgen.WorldGenUtilities; +import org.betterx.bclib.api.worldgen.WorldGenUtil; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -44,7 +44,7 @@ public class PrimaryLevelDataMixin { @ModifyArg(method = "parse", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/storage/PrimaryLevelData;(Lcom/mojang/datafixers/DataFixer;ILnet/minecraft/nbt/CompoundTag;ZIIIFJJIIIZIZZZLnet/minecraft/world/level/border/WorldBorder$Settings;IILjava/util/UUID;Ljava/util/Set;Lnet/minecraft/world/level/timers/TimerQueue;Lnet/minecraft/nbt/CompoundTag;Lnet/minecraft/nbt/CompoundTag;Lnet/minecraft/world/level/LevelSettings;Lnet/minecraft/world/level/levelgen/WorldGenSettings;Lcom/mojang/serialization/Lifecycle;)V")) private static WorldGenSettings bcl_fixSettings(WorldGenSettings settings) { Optional> registryOps = bcl_lastRegistryAccess.get(); - settings = WorldGenUtilities.fixSettingsInCurrentWorld(registryOps, settings); + settings = WorldGenUtil.fixSettingsInCurrentWorld(registryOps, settings); bcl_lastRegistryAccess.set(Optional.empty()); return settings; diff --git a/src/main/java/org/betterx/bclib/mixin/common/WorldPresetsBootstrapMixin.java b/src/main/java/org/betterx/bclib/mixin/common/WorldPresetsBootstrapMixin.java index 689fd2d9..ab334a4c 100644 --- a/src/main/java/org/betterx/bclib/mixin/common/WorldPresetsBootstrapMixin.java +++ b/src/main/java/org/betterx/bclib/mixin/common/WorldPresetsBootstrapMixin.java @@ -12,7 +12,7 @@ import net.minecraft.world.level.levelgen.structure.StructureSet; import net.minecraft.world.level.levelgen.synth.NormalNoise; import org.betterx.bclib.presets.worldgen.BCLWorldPresets; -import org.betterx.bclib.presets.worldgen.WorldGenUtilities; +import org.betterx.bclib.api.worldgen.WorldGenUtil; import org.betterx.bclib.presets.worldgen.WorldPresetSettings; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -52,12 +52,12 @@ public abstract class WorldPresetsBootstrapMixin { @ModifyArg(method = "run", at = @At(value = "INVOKE", ordinal = 0, target = "Lnet/minecraft/world/level/levelgen/presets/WorldPresets$Bootstrap;registerCustomOverworldPreset(Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/world/level/dimension/LevelStem;)Lnet/minecraft/core/Holder;")) private LevelStem bcl_getOverworldStem(LevelStem overworldStem) { WorldPresetSettings.bootstrap(); - WorldGenUtilities.Context netherContext = new WorldGenUtilities.Context(this.biomes, + WorldGenUtil.Context netherContext = new WorldGenUtil.Context(this.biomes, this.netherDimensionType, this.structureSets, this.noises, this.netherNoiseSettings); - WorldGenUtilities.Context endContext = new WorldGenUtilities.Context(this.biomes, + WorldGenUtil.Context endContext = new WorldGenUtil.Context(this.biomes, this.endDimensionType, this.structureSets, this.noises, diff --git a/src/main/java/org/betterx/bclib/presets/worldgen/BCLWorldPresetSettings.java b/src/main/java/org/betterx/bclib/presets/worldgen/BCLWorldPresetSettings.java index b771553e..c90c6bee 100644 --- a/src/main/java/org/betterx/bclib/presets/worldgen/BCLWorldPresetSettings.java +++ b/src/main/java/org/betterx/bclib/presets/worldgen/BCLWorldPresetSettings.java @@ -15,6 +15,8 @@ import net.minecraft.world.level.levelgen.WorldGenSettings; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import org.betterx.bclib.BCLib; +import org.betterx.bclib.api.worldgen.BCLChunkGenerator; +import org.betterx.bclib.api.worldgen.WorldGenUtil; import org.betterx.bclib.interfaces.ChunkGeneratorAccessor; import org.betterx.bclib.interfaces.NoiseGeneratorSettingsProvider; import org.betterx.bclib.world.generator.BCLBiomeSource; @@ -60,14 +62,14 @@ public class BCLWorldPresetSettings extends WorldPresetSettings { } public BCLWorldPreset buildPreset(LevelStem overworldStem, - WorldGenUtilities.Context netherContext, - WorldGenUtilities.Context endContext) { + WorldGenUtil.Context netherContext, + WorldGenUtil.Context endContext) { return new BCLWorldPreset(buildDimensionMap(overworldStem, netherContext, endContext), 1000, this); } public Map, LevelStem> buildDimensionMap(LevelStem overworldStem, - WorldGenUtilities.Context netherContext, - WorldGenUtilities.Context endContext) { + WorldGenUtil.Context netherContext, + WorldGenUtil.Context endContext) { return Map.of(LevelStem.OVERWORLD, overworldStem, LevelStem.NETHER, @@ -84,18 +86,18 @@ public class BCLWorldPresetSettings extends WorldPresetSettings { return BCLBiomeSource.BIOME_SOURCE_VERSION_VANILLA; } - public LevelStem createStem(WorldGenUtilities.Context ctx, ResourceKey key) { + public LevelStem createStem(WorldGenUtil.Context ctx, ResourceKey key) { if (key == LevelStem.NETHER) return createNetherStem(ctx); if (key == LevelStem.END) return createEndStem(ctx); return null; } - public LevelStem createNetherStem(WorldGenUtilities.Context ctx) { - return WorldGenUtilities.getBCLNetherLevelStem(ctx, Optional.of(netherVersion)); + public LevelStem createNetherStem(WorldGenUtil.Context ctx) { + return WorldGenUtil.getBCLNetherLevelStem(ctx, Optional.of(netherVersion)); } - public LevelStem createEndStem(WorldGenUtilities.Context ctx) { - return WorldGenUtilities.getBCLEndLevelStem(ctx, Optional.of(endVersion)); + public LevelStem createEndStem(WorldGenUtil.Context ctx) { + return WorldGenUtil.getBCLEndLevelStem(ctx, Optional.of(endVersion)); } public BiomeSource fixBiomeSource(BiomeSource biomeSource, Set> datapackBiomes) { @@ -112,7 +114,7 @@ public class BCLWorldPresetSettings extends WorldPresetSettings { old.defaultBlock(), old.defaultFluid(), old.noiseRouter(), - old.surfaceRule(), + WorldGenUtil.addRulesForBiomeSource(old.surfaceRule(), biomeSource), old.spawnTarget(), old.seaLevel(), old.disableMobGeneration(), @@ -138,7 +140,7 @@ public class BCLWorldPresetSettings extends WorldPresetSettings { ResourceKey dimensionTypeKey, WorldGenSettings settings) { var oldNether = settings.dimensions().getHolder(dimensionKey); - int loaderVersion = WorldGenUtilities.getBiomeVersionForGenerator(oldNether + int loaderVersion = WorldGenUtil.getBiomeVersionForGenerator(oldNether .map(h -> h.value().generator()) .orElse(null)); @@ -146,7 +148,7 @@ public class BCLWorldPresetSettings extends WorldPresetSettings { if (loaderVersion != targetVersion) { BCLib.LOGGER.info("Enforcing Correct Generator for " + dimensionKey.location().toString() + "."); var chunkGenerator = oldNether.map(h -> h.value().generator()).orElse(null); - Optional> refLevelStem = WorldGenUtilities.referenceStemForVersion( + Optional> refLevelStem = WorldGenUtil.referenceStemForVersion( dimensionKey, targetVersion, access, @@ -173,7 +175,7 @@ public class BCLWorldPresetSettings extends WorldPresetSettings { } } - return WorldGenUtilities.replaceGenerator(dimensionKey, + return WorldGenUtil.replaceGenerator(dimensionKey, dimensionTypeKey, access, settings, diff --git a/src/main/java/org/betterx/bclib/presets/worldgen/BCLWorldPresets.java b/src/main/java/org/betterx/bclib/presets/worldgen/BCLWorldPresets.java index fd0ac408..621f2428 100644 --- a/src/main/java/org/betterx/bclib/presets/worldgen/BCLWorldPresets.java +++ b/src/main/java/org/betterx/bclib/presets/worldgen/BCLWorldPresets.java @@ -12,6 +12,7 @@ import com.google.common.collect.Maps; import org.betterx.bclib.BCLib; import org.betterx.bclib.api.tag.TagAPI; import org.betterx.bclib.api.tag.TagType; +import org.betterx.bclib.api.worldgen.WorldGenUtil; import org.betterx.bclib.world.generator.BCLBiomeSource; import java.util.Map; @@ -82,8 +83,8 @@ public class BCLWorldPresets { public static void bootstrapPresets(Registry presets, LevelStem overworldStem, - WorldGenUtilities.Context netherContext, - WorldGenUtilities.Context endContext) { + WorldGenUtil.Context netherContext, + WorldGenUtil.Context endContext) { for (Map.Entry, PresetBuilder> e : BUILDERS.entrySet()) { BCLWorldPreset preset = e.getValue().create(overworldStem, netherContext, endContext); @@ -100,7 +101,7 @@ public class BCLWorldPresets { @FunctionalInterface public interface PresetBuilder { BCLWorldPreset create(LevelStem overworldStem, - WorldGenUtilities.Context netherContext, - WorldGenUtilities.Context endContext); + WorldGenUtil.Context netherContext, + WorldGenUtil.Context endContext); } } diff --git a/src/main/java/org/betterx/bclib/world/biomes/BCLBiome.java b/src/main/java/org/betterx/bclib/world/biomes/BCLBiome.java index c3b123cb..fb506df4 100644 --- a/src/main/java/org/betterx/bclib/world/biomes/BCLBiome.java +++ b/src/main/java/org/betterx/bclib/world/biomes/BCLBiome.java @@ -18,6 +18,7 @@ import org.betterx.bclib.BCLib; import org.betterx.bclib.api.biomes.BCLBiomeBuilder; import org.betterx.bclib.api.biomes.BiomeAPI; import org.betterx.bclib.api.tag.TagAPI; +import org.betterx.bclib.api.worldgen.SurfaceRuleUtil; import org.betterx.bclib.util.WeightedList; import java.util.List; @@ -341,7 +342,7 @@ public class BCLBiome extends BCLBiomeSettings { if (key == null) { BCLib.LOGGER.warning("BCL Biome " + biomeID + " does not have registry key!"); } else { - BiomeAPI.addSurfaceRule(biomeID, SurfaceRules.ifTrue(SurfaceRules.isBiome(key), surface)); + SurfaceRuleUtil.addSurfaceRule(biomeID, SurfaceRules.ifTrue(SurfaceRules.isBiome(key), surface)); } }; }