package ru.betterend.util; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import net.minecraft.core.Registry; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; import ru.betterend.mixin.common.BiomeGenerationSettingsAccessor; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndStructures; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.function.Supplier; public class FeaturesHelper { private static final Set INJECTED = Sets.newHashSet(); public static void addFeatures(Registry biomeRegistry) { biomeRegistry.forEach((biome) -> { if (biome.getBiomeCategory() == Biome.BiomeCategory.THEEND && !INJECTED.contains(biome)) { BiomeGenerationSettingsAccessor accessor = (BiomeGenerationSettingsAccessor) biome.getGenerationSettings(); List>> structures = Lists.newArrayList(accessor.be_getStructures()); List>>> preFeatures = accessor.be_getFeatures(); List>>> features = new ArrayList>>>( preFeatures.size()); preFeatures.forEach((list) -> { features.add(Lists.newArrayList(list)); }); EndFeatures.registerBiomeFeatures(biomeRegistry.getKey(biome), biome, features); EndStructures.registerBiomeStructures(biomeRegistry.getKey(biome), biome, structures); accessor.be_setFeatures(features); accessor.be_setStructures(structures); INJECTED.add(biome); } }); } }