minecraft-src/net/minecraft/advancements/critereon/LightPredicate.java
2025-07-04 01:41:11 +03:00

34 lines
1.1 KiB
Java

package net.minecraft.advancements.critereon;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
public record LightPredicate(MinMaxBounds.Ints composite) {
public static final Codec<LightPredicate> CODEC = RecordCodecBuilder.create(
instance -> instance.group(MinMaxBounds.Ints.CODEC.optionalFieldOf("light", MinMaxBounds.Ints.ANY).forGetter(LightPredicate::composite))
.apply(instance, LightPredicate::new)
);
public boolean matches(ServerLevel level, BlockPos pos) {
return !level.isLoaded(pos) ? false : this.composite.matches(level.getMaxLocalRawBrightness(pos));
}
public static class Builder {
private MinMaxBounds.Ints composite = MinMaxBounds.Ints.ANY;
public static LightPredicate.Builder light() {
return new LightPredicate.Builder();
}
public LightPredicate.Builder setComposite(MinMaxBounds.Ints composite) {
this.composite = composite;
return this;
}
public LightPredicate build() {
return new LightPredicate(this.composite);
}
}
}