diff --git a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java index cad8cfb0..ed557e64 100644 --- a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java @@ -32,6 +32,7 @@ import net.minecraft.world.level.levelgen.placement.PlacedFeature; import org.jetbrains.annotations.Nullable; import ru.bclib.config.Configs; import ru.bclib.mixin.common.BiomeGenerationSettingsAccessor; +import ru.bclib.util.CollectionsUtil; import ru.bclib.util.MHelper; import ru.bclib.world.biomes.BCLBiome; import ru.bclib.world.biomes.FabricBiomesData; @@ -450,9 +451,13 @@ public class BiomeAPI { */ public static void addBiomeFeature(Biome biome, PlacedFeature feature, Decoration step) { BiomeGenerationSettingsAccessor accessor = (BiomeGenerationSettingsAccessor) biome.getGenerationSettings(); - List>> allFeatures = getMutable(accessor.bclib_getFeatures()); + List>> allFeatures = CollectionsUtil.getMutable(accessor.bclib_getFeatures()); + Set set = CollectionsUtil.getMutable(accessor.bclib_getFeatureSet()); List> features = getFeaturesList(allFeatures, step); features.add(() -> feature); + set.add(feature); + accessor.bclib_setFeatures(allFeatures); + accessor.bclib_setFeatureSet(set); } /** @@ -559,19 +564,12 @@ public class BiomeAPI { biome.setGenChance(chance).setFogDensity(fog); } - private static List getMutable(List list) { - if (list instanceof ArrayList) { - return list; - } - return new ArrayList<>(list); - } - private static List> getFeaturesList(List>> features, Decoration step) { int index = step.ordinal(); while (features.size() <= index) { features.add(Lists.newArrayList()); } - List> mutable = getMutable(features.get(index)); + List> mutable = CollectionsUtil.getMutable(features.get(index)); features.set(index, mutable); return mutable; }