From fb79201b51219df79528365c9b41cf3a4c4c8aae Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 3 Dec 2021 03:58:53 +0100 Subject: [PATCH] Make sure biomes are not modified twice --- src/main/java/ru/bclib/api/biomes/BiomeAPI.java | 9 ++++++++- .../java/ru/bclib/mixin/common/RegistryReadOpsMixin.java | 1 - 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java index 2d5837e9..f431106a 100644 --- a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java @@ -37,6 +37,7 @@ import ru.bclib.world.features.BCLFeature; import ru.bclib.world.generator.BiomePicker; import ru.bclib.world.structures.BCLStructureFeature; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Random; @@ -406,13 +407,19 @@ public class BiomeAPI { 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()).collect(Collectors.toSet()); + 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()), diff --git a/src/main/java/ru/bclib/mixin/common/RegistryReadOpsMixin.java b/src/main/java/ru/bclib/mixin/common/RegistryReadOpsMixin.java index 1ca0f981..a33d6c59 100644 --- a/src/main/java/ru/bclib/mixin/common/RegistryReadOpsMixin.java +++ b/src/main/java/ru/bclib/mixin/common/RegistryReadOpsMixin.java @@ -4,7 +4,6 @@ import com.mojang.serialization.DynamicOps; import net.minecraft.core.RegistryAccess; import net.minecraft.resources.RegistryReadOps; import net.minecraft.resources.RegistryResourceAccess; -import net.minecraft.server.level.ServerLevel; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject;