package net.minecraft.world.level.levelgen.feature; import com.mojang.serialization.Codec; import java.util.Optional; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.feature.configurations.WeightedRandomFeatureConfiguration; import net.minecraft.world.level.levelgen.placement.PlacedFeature; public class WeightedRandomSelectorFeature extends Feature { public WeightedRandomSelectorFeature(final Codec codec) { super(codec); } @Override public boolean place(final FeaturePlaceContext context) { WeightedRandomFeatureConfiguration config = context.config(); RandomSource random = context.random(); WorldGenLevel level = context.level(); ChunkGenerator chunkGenerator = context.chunkGenerator(); BlockPos origin = context.origin(); Optional> featureToPlace = config.features().getRandom(random); return (Boolean)featureToPlace.map(placedFeatureHolder -> ((PlacedFeature)placedFeatureHolder.value()).place(level, chunkGenerator, random, origin)) .orElse(false); } }