From 26fa4bb3fd6cc22a9f7a58b9c209e59d81bfb440 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 3 Dec 2021 09:48:55 +0100 Subject: [PATCH] Reverted changes to BiomeModification API --- .../java/ru/bclib/api/biomes/BiomeAPI.java | 52 +++---------------- .../mixin/common/RegistryReadOpsMixin.java | 24 --------- .../bclib/mixin/common/ServerLevelMixin.java | 5 +- src/main/resources/bclib.mixins.common.json | 3 +- 4 files changed, 9 insertions(+), 75 deletions(-) delete mode 100644 src/main/java/ru/bclib/mixin/common/RegistryReadOpsMixin.java diff --git a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java index f431106a..934ced83 100644 --- a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java @@ -82,16 +82,7 @@ public class BiomeAPI { * @param server - {@link MinecraftServer} */ public static void initRegistry(MinecraftServer server) { - initRegistry(server.registryAccess()); - } - - /** - * Initialize registry for current server. - * - * @param access - {@link RegistryAccess} - */ - public static void initRegistry(RegistryAccess access) { - biomeRegistry = access.registryOrThrow(Registry.BIOME_REGISTRY); + biomeRegistry = server.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY); CLIENT.clear(); } @@ -401,45 +392,14 @@ public class BiomeAPI { * @param level */ public static void applyModifications(ServerLevel level) { - BiomeSource source = level.getChunkSource().getGenerator().getBiomeSource(); - Set biomes = source.possibleBiomes(); - - applyModifications(biomes, level.dimension()); - } - - private static final Set modifiedBiomes = new HashSet<>(); - /** - * Will apply biome modifications to world, internal usage only. - * @param registryAccess - */ - public static void applyModifications(RegistryAccess registryAccess) { - Registry biomeReg = registryAccess.registryOrThrow(Registry.BIOME_REGISTRY); - Set biomes = biomeReg - .entrySet() - .stream() - .map(e -> e.getValue()) - .filter(b -> modifiedBiomes.add(getBiomeID(b))) - .collect(Collectors.toSet()); - - applyModifications( - biomes.stream().filter(b->b.getBiomeCategory().equals(BiomeCategory.NETHER)).collect(Collectors.toSet()), - Level.NETHER - ); - applyModifications( - biomes.stream().filter(b->!b.getBiomeCategory().equals(BiomeCategory.NETHER) && !b.getBiomeCategory().equals(BiomeCategory.THEEND)).collect(Collectors.toSet()), - Level.OVERWORLD - ); - applyModifications( - biomes.stream().filter(b->b.getBiomeCategory().equals(BiomeCategory.THEEND)).collect(Collectors.toSet()), - Level.END - ); - } - - private static void applyModifications(Set biomes, ResourceKey dimension) { - List> modifications = MODIFICATIONS.get(dimension); + List> modifications = MODIFICATIONS.get(level.dimension()); if (modifications == null) { return; } + + BiomeSource source = level.getChunkSource().getGenerator().getBiomeSource(); + Set biomes = source.possibleBiomes(); + biomes.forEach(biome -> { ResourceLocation biomeID = getBiomeID(biome); boolean modify = isDatapackBiome(biomeID); diff --git a/src/main/java/ru/bclib/mixin/common/RegistryReadOpsMixin.java b/src/main/java/ru/bclib/mixin/common/RegistryReadOpsMixin.java deleted file mode 100644 index a33d6c59..00000000 --- a/src/main/java/ru/bclib/mixin/common/RegistryReadOpsMixin.java +++ /dev/null @@ -1,24 +0,0 @@ -package ru.bclib.mixin.common; - -import com.mojang.serialization.DynamicOps; -import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.RegistryReadOps; -import net.minecraft.resources.RegistryResourceAccess; -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; - -/** - * Fabrics BiomeModifications API is called at this point. We have to ensure that BCLibs Modification API - * runs before Fabric, so we need to hook into the same class. - */ -@Mixin(RegistryReadOps.class) -public class RegistryReadOpsMixin { - @Inject(method = "createAndLoad(Lcom/mojang/serialization/DynamicOps;Lnet/minecraft/resources/RegistryResourceAccess;Lnet/minecraft/core/RegistryAccess;)Lnet/minecraft/resources/RegistryReadOps;", at = @At("RETURN")) - private static void foo(DynamicOps dynamicOps, RegistryResourceAccess registryResourceAccess, RegistryAccess registryAccess, CallbackInfoReturnable> cir){ - BiomeAPI.initRegistry(registryAccess); - BiomeAPI.applyModifications(registryAccess); - } -} diff --git a/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java b/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java index e94c49e2..ccb3b8be 100644 --- a/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java +++ b/src/main/java/ru/bclib/mixin/common/ServerLevelMixin.java @@ -38,9 +38,8 @@ 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); - //called from RegistryReadOpsMixin for now -// BiomeAPI.initRegistry(server); -// BiomeAPI.applyModifications(ServerLevel.class.cast(this)); + BiomeAPI.initRegistry(server); + BiomeAPI.applyModifications(ServerLevel.class.cast(this)); if (bclib_lastWorld != null && bclib_lastWorld.equals(levelStorageAccess.getLevelId())) { return; diff --git a/src/main/resources/bclib.mixins.common.json b/src/main/resources/bclib.mixins.common.json index d7578488..004e65c3 100644 --- a/src/main/resources/bclib.mixins.common.json +++ b/src/main/resources/bclib.mixins.common.json @@ -33,8 +33,7 @@ "AnvilBlockMixin", "AnvilMenuMixin", "TagLoaderMixin", - "MainMixin", - "RegistryReadOpsMixin" + "MainMixin" ], "injectors": { "defaultRequire": 1