minecraft-src/net/minecraft/world/level/levelgen/feature/RandomSelectorFeature.java
2025-07-04 01:41:11 +03:00

31 lines
1.3 KiB
Java

package net.minecraft.world.level.levelgen.feature;
import com.mojang.serialization.Codec;
import net.minecraft.core.BlockPos;
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.RandomFeatureConfiguration;
public class RandomSelectorFeature extends Feature<RandomFeatureConfiguration> {
public RandomSelectorFeature(Codec<RandomFeatureConfiguration> codec) {
super(codec);
}
@Override
public boolean place(FeaturePlaceContext<RandomFeatureConfiguration> context) {
RandomFeatureConfiguration randomFeatureConfiguration = context.config();
RandomSource randomSource = context.random();
WorldGenLevel worldGenLevel = context.level();
ChunkGenerator chunkGenerator = context.chunkGenerator();
BlockPos blockPos = context.origin();
for (WeightedPlacedFeature weightedPlacedFeature : randomFeatureConfiguration.features) {
if (randomSource.nextFloat() < weightedPlacedFeature.chance) {
return weightedPlacedFeature.place(worldGenLevel, chunkGenerator, randomSource, blockPos);
}
}
return randomFeatureConfiguration.defaultFeature.value().place(worldGenLevel, chunkGenerator, randomSource, blockPos);
}
}