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

36 lines
1.3 KiB
Java

package net.minecraft.world.level.levelgen.structure.templatesystem;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
public class RandomBlockMatchTest extends RuleTest {
public static final MapCodec<RandomBlockMatchTest> CODEC = RecordCodecBuilder.mapCodec(
instance -> instance.group(
BuiltInRegistries.BLOCK.byNameCodec().fieldOf("block").forGetter(randomBlockMatchTest -> randomBlockMatchTest.block),
Codec.FLOAT.fieldOf("probability").forGetter(randomBlockMatchTest -> randomBlockMatchTest.probability)
)
.apply(instance, RandomBlockMatchTest::new)
);
private final Block block;
private final float probability;
public RandomBlockMatchTest(Block block, float probability) {
this.block = block;
this.probability = probability;
}
@Override
public boolean test(BlockState state, RandomSource random) {
return state.is(this.block) && random.nextFloat() < this.probability;
}
@Override
protected RuleTestType<?> getType() {
return RuleTestType.RANDOM_BLOCK_TEST;
}
}