package net.minecraft.world.level.levelgen.blockpredicates; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.BlockPos; import net.minecraft.core.HolderSet; import net.minecraft.core.RegistryCodecs; import net.minecraft.core.registries.Registries; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.biome.Biome; public class MatchingBiomesPredicate implements BlockPredicate { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec( i -> i.group(RegistryCodecs.homogeneousList(Registries.BIOME).fieldOf("biomes").forGetter(c -> c.biomes)).apply(i, MatchingBiomesPredicate::new) ); private final HolderSet biomes; public MatchingBiomesPredicate(final HolderSet biomes) { this.biomes = biomes; } public boolean test(final WorldGenLevel worldGenLevel, final BlockPos blockPos) { return this.biomes.contains(worldGenLevel.getBiome(blockPos)); } @Override public BlockPredicateType type() { return BlockPredicateType.MATCHING_BIOMES; } }