minecraft-src/net/minecraft/advancements/critereon/CriterionValidator.java
2025-07-04 02:49:36 +03:00

42 lines
1.7 KiB
Java

package net.minecraft.advancements.critereon;
import java.util.List;
import java.util.Optional;
import net.minecraft.core.HolderGetter;
import net.minecraft.util.ProblemReporter;
import net.minecraft.util.context.ContextKeySet;
import net.minecraft.world.level.storage.loot.ValidationContext;
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
public class CriterionValidator {
private final ProblemReporter reporter;
private final HolderGetter.Provider lootData;
public CriterionValidator(ProblemReporter reporter, HolderGetter.Provider lootData) {
this.reporter = reporter;
this.lootData = lootData;
}
public void validateEntity(Optional<ContextAwarePredicate> entity, String name) {
entity.ifPresent(contextAwarePredicate -> this.validateEntity(contextAwarePredicate, name));
}
public void validateEntities(List<ContextAwarePredicate> entities, String name) {
this.validate(entities, LootContextParamSets.ADVANCEMENT_ENTITY, name);
}
public void validateEntity(ContextAwarePredicate entity, String name) {
this.validate(entity, LootContextParamSets.ADVANCEMENT_ENTITY, name);
}
public void validate(ContextAwarePredicate entity, ContextKeySet contextKeySet, String name) {
entity.validate(new ValidationContext(this.reporter.forChild(name), contextKeySet, this.lootData));
}
public void validate(List<ContextAwarePredicate> entities, ContextKeySet contextKeySet, String name) {
for (int i = 0; i < entities.size(); i++) {
ContextAwarePredicate contextAwarePredicate = (ContextAwarePredicate)entities.get(i);
contextAwarePredicate.validate(new ValidationContext(this.reporter.forChild(name + "[" + i + "]"), contextKeySet, this.lootData));
}
}
}