package net.minecraft.advancements; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import net.minecraft.util.ExtraCodecs; public record Criterion(CriterionTrigger trigger, T triggerInstance) { private static final MapCodec> MAP_CODEC = ExtraCodecs.dispatchOptionalValue( "trigger", "conditions", CriteriaTriggers.CODEC, Criterion::trigger, Criterion::criterionCodec ); public static final Codec> CODEC = MAP_CODEC.codec(); private static Codec> criterionCodec(CriterionTrigger p_312894_) { return p_312894_.codec().xmap(p_309410_ -> new Criterion<>(p_312894_, (T)p_309410_), Criterion::triggerInstance); } }