SurfaceRule handling
This commit is contained in:
parent
7a891d71ee
commit
919e3c25c5
15 changed files with 147 additions and 96 deletions
|
@ -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<ChunkGenerator> 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<Holder<LevelStem>> refLevelStem = WorldGenUtilities.referenceStemForVersion(
|
||||
Optional<Holder<LevelStem>> refLevelStem = WorldGenUtil.referenceStemForVersion(
|
||||
dimensionKey,
|
||||
targetVersion,
|
||||
registryAccess,
|
||||
|
|
|
@ -128,7 +128,6 @@ public class BiomeAPI {
|
|||
|
||||
private static final Map<ResourceKey, List<BiConsumer<ResourceLocation, Holder<Biome>>>> MODIFICATIONS = Maps.newHashMap();
|
||||
private static final Map<ResourceKey, List<BiConsumer<ResourceLocation, Holder<Biome>>>> TAG_ADDERS = Maps.newHashMap();
|
||||
private static final Map<ResourceLocation, SurfaceRules.RuleSource> SURFACE_RULES = Maps.newHashMap();
|
||||
private static final Set<SurfaceRuleProvider> 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<SurfaceRules.RuleSource> getRuleSourcesForBiomes(Set<Holder<Biome>> biomes) {
|
||||
Set<ResourceLocation> 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
|
||||
* <p>
|
||||
* 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<SurfaceRules.RuleSource> getRuleSources(Set<BiomeSource> sources) {
|
||||
final Set<Holder<Biome>> biomes = new HashSet<>();
|
||||
for (BiomeSource s : sources) {
|
||||
biomes.addAll(s.possibleBiomes());
|
||||
}
|
||||
|
||||
return getRuleSourcesForBiomes(biomes);
|
||||
}
|
||||
|
||||
private static List<SurfaceRules.RuleSource> getRuleSourcesFromIDs(Set<ResourceLocation> biomeIDs) {
|
||||
List<SurfaceRules.RuleSource> 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.
|
||||
*
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
|
@ -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<ResourceLocation, RuleSource> SURFACE_RULES = Maps.newHashMap();
|
||||
|
||||
private static List<RuleSource> getRuleSourcesForBiomes(Set<Holder<Biome>> biomes) {
|
||||
Set<ResourceLocation> 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
|
||||
* <p>
|
||||
* 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<RuleSource> getRuleSources(Set<BiomeSource> sources) {
|
||||
final Set<Holder<Biome>> biomes = new HashSet<>();
|
||||
for (BiomeSource s : sources) {
|
||||
biomes.addAll(s.possibleBiomes());
|
||||
}
|
||||
|
||||
return getRuleSourcesForBiomes(biomes);
|
||||
}
|
||||
|
||||
public static List<RuleSource> getRuleSources(BiomeSource biomeSource) {
|
||||
return getRuleSourcesForBiomes(Sets.newHashSet(biomeSource.possibleBiomes()));
|
||||
}
|
||||
|
||||
private static List<RuleSource> getRuleSourcesFromIDs(Set<ResourceLocation> biomeIDs) {
|
||||
List<RuleSource> 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);
|
||||
}
|
||||
}
|
|
@ -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<RuleSource> additionalRules = SurfaceRuleUtil.getRuleSources(biomeSource);
|
||||
if (org instanceof SurfaceRules.SequenceRuleSource sequenceRule) {
|
||||
List<RuleSource> 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()]));
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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<WorldGenSettings> bcl_NewDefaultSettings(WorldLoader.WorldDataSupplier<WorldGenSettings> worldDataSupplier) {
|
||||
return (resourceManager, dataPackConfig) -> {
|
||||
Pair<WorldGenSettings, RegistryAccess.Frozen> res = worldDataSupplier.get(resourceManager, dataPackConfig);
|
||||
return WorldGenUtilities.defaultWorldDataSupplier(res.getSecond());
|
||||
return WorldGenUtil.defaultWorldDataSupplier(res.getSecond());
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<BiomeSource> bclib_biomeSources = new HashSet<>();
|
||||
|
||||
private void bclib_updateCustomRules() {
|
||||
bclib_setCustomRules(BiomeAPI.getRuleSources(bclib_biomeSources));
|
||||
bclib_setCustomRules(SurfaceRuleUtil.getRuleSources(bclib_biomeSources));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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;<init>(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<Tag>> registryOps = bcl_lastRegistryAccess.get();
|
||||
settings = WorldGenUtilities.fixSettingsInCurrentWorld(registryOps, settings);
|
||||
settings = WorldGenUtil.fixSettingsInCurrentWorld(registryOps, settings);
|
||||
|
||||
bcl_lastRegistryAccess.set(Optional.empty());
|
||||
return settings;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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<ResourceKey<LevelStem>, 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<LevelStem> key) {
|
||||
public LevelStem createStem(WorldGenUtil.Context ctx, ResourceKey<LevelStem> 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<Holder<Biome>> 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<DimensionType> 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<Holder<LevelStem>> refLevelStem = WorldGenUtilities.referenceStemForVersion(
|
||||
Optional<Holder<LevelStem>> 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,
|
||||
|
|
|
@ -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<WorldPreset> presets,
|
||||
LevelStem overworldStem,
|
||||
WorldGenUtilities.Context netherContext,
|
||||
WorldGenUtilities.Context endContext) {
|
||||
WorldGenUtil.Context netherContext,
|
||||
WorldGenUtil.Context endContext) {
|
||||
|
||||
for (Map.Entry<ResourceKey<WorldPreset>, 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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue