minecraft-src/net/minecraft/advancements/critereon/CriterionValidator.java
2025-07-04 02:00:41 +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 contextAwarePredicate, ContextKeySet contextKeySet, String string) {
contextAwarePredicate.validate(new ValidationContext(this.reporter.forChild(string), contextKeySet, this.lootData));
}
public void validate(List<ContextAwarePredicate> list, ContextKeySet contextKeySet, String string) {
for (int i = 0; i < list.size(); i++) {
ContextAwarePredicate contextAwarePredicate = (ContextAwarePredicate)list.get(i);
contextAwarePredicate.validate(new ValidationContext(this.reporter.forChild(string + "[" + i + "]"), contextKeySet, this.lootData));
}
}
}