35 lines
1.3 KiB
Java
35 lines
1.3 KiB
Java
package net.minecraft.world.level.levelgen.blockpredicates;
|
|
|
|
import com.mojang.serialization.MapCodec;
|
|
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
|
import com.mojang.serialization.codecs.RecordCodecBuilder.Instance;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.core.Vec3i;
|
|
import net.minecraft.world.level.WorldGenLevel;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
|
|
public class WouldSurvivePredicate implements BlockPredicate {
|
|
public static final MapCodec<WouldSurvivePredicate> CODEC = RecordCodecBuilder.mapCodec(
|
|
p_190577_ -> p_190577_.group(
|
|
Vec3i.offsetCodec(16).optionalFieldOf("offset", Vec3i.ZERO).forGetter(p_190581_ -> p_190581_.offset),
|
|
BlockState.CODEC.fieldOf("state").forGetter(p_190579_ -> p_190579_.state)
|
|
)
|
|
.apply(p_190577_, WouldSurvivePredicate::new)
|
|
);
|
|
private final Vec3i offset;
|
|
private final BlockState state;
|
|
|
|
protected WouldSurvivePredicate(Vec3i p_190570_, BlockState p_190571_) {
|
|
this.offset = p_190570_;
|
|
this.state = p_190571_;
|
|
}
|
|
|
|
public boolean test(WorldGenLevel p_190574_, BlockPos p_190575_) {
|
|
return this.state.canSurvive(p_190574_, p_190575_.offset(this.offset));
|
|
}
|
|
|
|
@Override
|
|
public BlockPredicateType<?> type() {
|
|
return BlockPredicateType.WOULD_SURVIVE;
|
|
}
|
|
} |