diff --git a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java index 8f479d08..e2fffc82 100644 --- a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java @@ -96,8 +96,8 @@ public class BiomeAPI { * * @param server - {@link MinecraftServer} */ - public static void initRegistry(MinecraftServer server) { - biomeRegistry = server.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY); + public static void initRegistry( Registry biomeRegistry) { + BiomeAPI.biomeRegistry = biomeRegistry; CLIENT.clear(); } diff --git a/src/main/java/ru/bclib/mixin/common/MinecraftServerMixin.java b/src/main/java/ru/bclib/mixin/common/MinecraftServerMixin.java index 5d455fb1..23bf14d9 100644 --- a/src/main/java/ru/bclib/mixin/common/MinecraftServerMixin.java +++ b/src/main/java/ru/bclib/mixin/common/MinecraftServerMixin.java @@ -56,7 +56,7 @@ public class MinecraftServerMixin { @Inject(method = "loadLevel", at = @At(value = "RETURN"), cancellable = true) private void bclib_loadLevel(CallbackInfo info) { bclib_injectRecipes(); - BiomeAPI.initRegistry(MinecraftServer.class.cast(this)); + //BiomeAPI.initRegistry(MinecraftServer.class.cast(this)); } private void bclib_injectRecipes() { diff --git a/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java b/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java index ccb3b8be..d0910008 100644 --- a/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java +++ b/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java @@ -38,7 +38,7 @@ public abstract class ServerLevelMixin extends Level { ServerLevel world = ServerLevel.class.cast(this); LifeCycleAPI._runLevelLoad(world, server, executor, levelStorageAccess, serverLevelData, resourceKey, dimensionType, chunkProgressListener, chunkGenerator, bl, l, list, bl2); - BiomeAPI.initRegistry(server); + //BiomeAPI.initRegistry(server); BiomeAPI.applyModifications(ServerLevel.class.cast(this)); if (bclib_lastWorld != null && bclib_lastWorld.equals(levelStorageAccess.getLevelId())) { diff --git a/src/main/java/ru/bclib/mixin/common/WorldPresetMixin.java b/src/main/java/ru/bclib/mixin/common/WorldPresetMixin.java new file mode 100644 index 00000000..d5bfd443 --- /dev/null +++ b/src/main/java/ru/bclib/mixin/common/WorldPresetMixin.java @@ -0,0 +1,19 @@ +package ru.bclib.mixin.common; + +import net.minecraft.client.gui.screens.worldselection.WorldPreset; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.world.level.levelgen.WorldGenSettings; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.bclib.api.biomes.BiomeAPI; + +@Mixin(WorldPreset.class) +public class WorldPresetMixin { + @Inject(method = "create", at = @At("HEAD")) + private void create(RegistryAccess.RegistryHolder registryHolder, long l, boolean bl, boolean bl2, CallbackInfoReturnable info) { + BiomeAPI.initRegistry(registryHolder.registryOrThrow(Registry.BIOME_REGISTRY)); + } +} diff --git a/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java b/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java index 9392481f..bfae3eed 100644 --- a/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java +++ b/src/main/java/ru/bclib/world/generator/BCLibEndBiomeSource.java @@ -50,6 +50,7 @@ public class BCLibEndBiomeSource extends BiomeSource { public BCLibEndBiomeSource(Registry biomeRegistry, long seed) { super(getBiomes(biomeRegistry)); + BiomeAPI.initRegistry(biomeRegistry); BiomeAPI.END_LAND_BIOME_PICKER.clearMutables(); BiomeAPI.END_VOID_BIOME_PICKER.clearMutables(); diff --git a/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java b/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java index 044e4c99..a17f0a3b 100644 --- a/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java +++ b/src/main/java/ru/bclib/world/generator/BCLibNetherBiomeSource.java @@ -52,6 +52,7 @@ public class BCLibNetherBiomeSource extends BiomeSource { public BCLibNetherBiomeSource(Registry biomeRegistry, long seed) { super(getBiomes(biomeRegistry)); + BiomeAPI.initRegistry(biomeRegistry); BiomeAPI.NETHER_BIOME_PICKER.clearMutables(); this.possibleBiomes().forEach(biome -> { diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index ea83b6ad..df63f458 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -30,6 +30,7 @@ "shears.SheepMixin", "PortalShapeMixin", "ServerLevelMixin", + "WorldPresetMixin", "AnvilBlockMixin", "AnvilMenuMixin", "TagLoaderMixin",