From 3413fb5c4ed304ccd368eb92bfb48332eb555abc Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 29 Nov 2021 17:45:34 +0100 Subject: [PATCH] Revert "Use new lifetime hook for level loading" This reverts commit c90540c33eea0402c25569641b172381263299d4. --- .../mixin/common/ServerLevelMixin.java | 36 ++++++++++++------- .../java/ru/betterend/registry/EndBiomes.java | 8 ++--- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java b/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java index 1bc61420..ecf0c116 100644 --- a/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java @@ -1,16 +1,21 @@ package ru.betterend.mixin.common; -import java.util.function.Supplier; - import net.minecraft.core.BlockPos; +import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.progress.ChunkProgressListener; import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.level.CustomSpawner; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.dimension.DimensionType; +import net.minecraft.world.level.storage.LevelStorageSource; +import net.minecraft.world.level.storage.ServerLevelData; import net.minecraft.world.level.storage.WritableLevelData; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -20,27 +25,32 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.bclib.api.BiomeAPI; import ru.betterend.BetterEnd; +import ru.betterend.registry.EndBiomes; import ru.betterend.registry.EndBlocks; import ru.betterend.world.generator.GeneratorOptions; +import java.util.List; +import java.util.concurrent.Executor; +import java.util.function.Supplier; + @Mixin(ServerLevel.class) public abstract class ServerLevelMixin extends Level { -// private static String be_lastWorld = null; + private static String be_lastWorld = null; protected ServerLevelMixin(WritableLevelData writableLevelData, ResourceKey resourceKey, DimensionType dimensionType, Supplier supplier, boolean bl, boolean bl2, long l) { super(writableLevelData, resourceKey, dimensionType, supplier, bl, bl2, l); } -// @Inject(method = "*", at = @At("TAIL")) -// private void be_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List list, boolean bl, CallbackInfo info) { -//// if (be_lastWorld != null && be_lastWorld.equals(session.getLevelId())) { -//// return; -//// } -//// -//// be_lastWorld = session.getLevelId(); -// ServerLevel level = ServerLevel.class.cast(this); -// EndBiomes.onWorldLoad(level, level.getSeed(), level.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY)); -// } + @Inject(method = "*", at = @At("TAIL")) + private void be_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List list, boolean bl, CallbackInfo info) { + if (be_lastWorld != null && be_lastWorld.equals(session.getLevelId())) { + return; + } + + be_lastWorld = session.getLevelId(); + ServerLevel world = ServerLevel.class.cast(this); + EndBiomes.onWorldLoad(world.getSeed(), world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY)); + } @Inject(method = "getSharedSpawnPos", at = @At("HEAD"), cancellable = true) private void be_getSharedSpawnPos(CallbackInfoReturnable info) { diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index 59f1ec39..455098c3 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -2,10 +2,8 @@ package ru.betterend.registry; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerLevel; import net.minecraft.world.level.biome.Biome; import ru.bclib.api.BiomeAPI; -import ru.bclib.api.LifeCycleAPI; import ru.bclib.world.biomes.BCLBiome; import ru.bclib.world.generator.BiomeMap; import ru.bclib.world.generator.BiomePicker; @@ -76,11 +74,9 @@ public class EndBiomes { public static final EndCaveBiome LUSH_AURORA_CAVE = registerCaveBiome(new LushAuroraCaveBiome()); public static final EndCaveBiome JADE_CAVE = registerCaveBiome(new JadeCaveBiome()); - public static void register() { - LifeCycleAPI.onLevelLoad(EndBiomes::onWorldLoad); - } + public static void register() {} - private static void onWorldLoad(ServerLevel level, long seed, Registry registry) { + public static void onWorldLoad(long seed, Registry registry) { CAVE_BIOMES.getBiomes().forEach(biome -> biome.updateActualBiomes(registry)); CAVE_BIOMES.rebuild(); if (caveBiomeMap == null || caveBiomeMap.getSeed() != seed) {