Create/Load of Worlds with WorldPreset appears to work

This commit is contained in:
Frank 2022-10-26 17:01:26 +02:00
parent 409534e6f1
commit 416ff1644e
27 changed files with 187 additions and 195 deletions

View file

@ -81,7 +81,7 @@ public class BCLib implements ModInitializer {
VersionChecker.registerMod(MOD_ID);
if (false && isDevEnvironment()) {
if (true && isDevEnvironment()) {
BCLBiome theYellow = BCLBiomeBuilder
.start(makeID("the_yellow"))
.precipitation(Biome.Precipitation.NONE)

View file

@ -30,7 +30,6 @@ import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator;
import net.minecraft.world.level.levelgen.NoiseGeneratorSettings;
import net.minecraft.world.level.levelgen.RandomState;
import net.minecraft.world.level.levelgen.WorldDimensions;
import net.minecraft.world.level.levelgen.structure.StructureSet;
import net.minecraft.world.level.levelgen.synth.NormalNoise;
@ -157,12 +156,12 @@ public class BCLChunkGenerator extends NoiseBasedChunkGenerator implements Resto
}
@Override
public WorldDimensions enforceGeneratorInWorldGenSettings(
public Registry<LevelStem> enforceGeneratorInWorldGenSettings(
RegistryAccess access,
ResourceKey<LevelStem> dimensionKey,
ResourceKey<DimensionType> dimensionTypeKey,
ChunkGenerator loadedChunkGenerator,
WorldDimensions worldDims
Registry<LevelStem> dimensionRegistry
) {
BCLib.LOGGER.info("Enforcing Correct Generator for " + dimensionKey.location().toString() + ".");
@ -195,7 +194,7 @@ public class BCLChunkGenerator extends NoiseBasedChunkGenerator implements Resto
dimensionKey,
dimensionTypeKey,
access,
worldDims,
dimensionRegistry,
referenceGenerator
);

View file

@ -15,6 +15,7 @@ import org.betterx.worlds.together.world.event.WorldEvents;
import org.betterx.worlds.together.worldPreset.TogetherWorldPreset;
import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
import net.minecraft.core.RegistryAccess;
import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation;
@ -22,7 +23,6 @@ import net.minecraft.tags.TagLoader;
import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.WorldDimensions;
import net.minecraft.world.level.levelgen.WorldGenSettings;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.storage.LevelStorageSource;
@ -149,14 +149,14 @@ public class LevelGenEvents {
}
private static void finalizeStem(
WorldGenSettings settings,
Registry<LevelStem> dimensionRegistry,
ResourceKey<LevelStem> dimension,
LevelStem levelStem
) {
InternalBiomeAPI.applyModifications(levelStem.generator().getBiomeSource(), dimension);
}
private static void finalizedWorldLoad(WorldGenSettings worldGenSettings) {
private static void finalizedWorldLoad(Registry<LevelStem> dimensionRegistry) {
PoiManager.updateStates();
}
}

View file

@ -22,7 +22,6 @@ import net.minecraft.resources.ResourceKey;
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.WorldDimensions;
import net.minecraft.world.level.levelgen.presets.WorldPreset;
import net.minecraft.world.level.levelgen.presets.WorldPresets;
@ -64,11 +63,11 @@ public class LevelGenUtil {
}
public static WorldDimensions replaceGenerator(
public static Registry<LevelStem> replaceGenerator(
ResourceKey<LevelStem> dimensionKey,
ResourceKey<DimensionType> dimensionTypeKey,
RegistryAccess registryAccess,
WorldDimensions worldDimensions,
Registry<LevelStem> dimensionRegistry,
ChunkGenerator generator
) {
Registry<DimensionType> dimensionTypeRegistry = registryAccess.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY);
@ -76,10 +75,10 @@ public class LevelGenUtil {
dimensionKey,
dimensionTypeKey,
dimensionTypeRegistry,
worldDimensions.dimensions(),
dimensionRegistry,
generator
);
return new WorldDimensions(newDimensions);
return newDimensions;
}
public static Registry<LevelStem> withDimension(

View file

@ -44,7 +44,7 @@ public class BCLBiome extends BCLBiomeSettings implements BiomeData {
instance,
BCLBiome::new
));
public static final KeyDispatchDataCodec<BCLBiome> KEY_CODEC = KeyDispatchDataCodec.of(CODEC);
public static final KeyDispatchDataCodec<? extends BCLBiome> KEY_CODEC = KeyDispatchDataCodec.of(CODEC);
public KeyDispatchDataCodec<? extends BCLBiome> codec() {
return KEY_CODEC;
@ -425,7 +425,7 @@ public class BCLBiome extends BCLBiomeSettings implements BiomeData {
}
public ResourceKey<BCLBiome> getBCLBiomeKey() {
return ResourceKey.create(BCLBiomeRegistry.BCL_BIOMES_REGISTRY, biomeID);
return (ResourceKey<BCLBiome>) (Object) ResourceKey.create(BCLBiomeRegistry.BCL_BIOMES_REGISTRY, biomeID);
}
/**

View file

@ -16,7 +16,6 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.KeyDispatchDataCodec;
import net.minecraft.world.level.biome.Biomes;
import java.util.Optional;
import java.util.stream.Stream;
import org.jetbrains.annotations.ApiStatus;
@ -81,6 +80,7 @@ public class BCLBiomeRegistry {
return ResourceKey.createRegistryKey(location);
}
private static Codec<? extends BCLBiome> bootstrapCodecs(Registry<Codec<? extends BCLBiome>> registry) {
return Registry.register(registry, BCLib.makeID("biome"), BCLBiome.KEY_CODEC.codec());
}
@ -153,8 +153,8 @@ public class BCLBiomeRegistry {
private static Registry<BCLBiome> getBclBiomesRegistry(RegistryAccess access) {
if (access != null) {
return ((Optional<Registry<BCLBiome>>) access
.registry(BCLBiomeRegistry.BCL_BIOMES_REGISTRY))
return access
.registry(BCLBiomeRegistry.BCL_BIOMES_REGISTRY)
.orElse(BUILTIN_BCL_BIOMES);
} else {
return BUILTIN_BCL_BIOMES;

View file

@ -26,6 +26,7 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
import net.minecraft.world.level.dimension.BuiltinDimensionTypes;
import net.minecraft.world.level.dimension.DimensionType;
import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.WorldDimensions;
import net.minecraft.world.level.levelgen.presets.WorldPresets;
import net.fabricmc.api.EnvType;
@ -269,13 +270,13 @@ public class WorldSetupScreen extends LayoutScreen {
ChunkGenerator chunkGenerator
) {
createWorldScreen.worldGenSettingsComponent.updateSettings(
(registryAccess, worldDimensions) -> LevelGenUtil.replaceGenerator(
(registryAccess, worldDimensions) -> new WorldDimensions(LevelGenUtil.replaceGenerator(
dimensionKey,
dimensionTypeKey,
registryAccess,
worldDimensions,
worldDimensions.dimensions(),
chunkGenerator
)
))
);
}

View file

@ -16,7 +16,7 @@ import java.util.ArrayList;
import java.util.List;
@Mixin(RegistryDataLoader.class)
public interface RegistryDataLoaderMixin {
public class RegistryDataLoaderMixin {
@Accessor("WORLDGEN_REGISTRIES")
@Mutable
static void wt_set_WORLDGEN_REGISTRIES(List<RegistryDataLoader.RegistryData<?>> list) {