package net.minecraft.server; import com.mojang.datafixers.DSL; import com.mojang.datafixers.DataFix; import com.mojang.datafixers.OpticFinder; import com.mojang.datafixers.TypeRewriteRule; import com.mojang.datafixers.Typed; import com.mojang.datafixers.DSL.TypeReference; import com.mojang.datafixers.schemas.Schema; public abstract class DataConverterNamedEntity extends DataFix { private final String a; private final String b; private final TypeReference c; public DataConverterNamedEntity(Schema schema, boolean flag, String s, TypeReference typereference, String s1) { super(schema, flag); this.a = s; this.c = typereference; this.b = s1; } public TypeRewriteRule makeRule() { OpticFinder<?> opticfinder = DSL.namedChoice(this.b, this.getInputSchema().getChoiceType(this.c, this.b)); return this.fixTypeEverywhereTyped(this.a, this.getInputSchema().getType(this.c), this.getOutputSchema().getType(this.c), (typed) -> { return typed.updateTyped(opticfinder, this.getOutputSchema().getChoiceType(this.c, this.b), this::a); }); } protected abstract Typed<?> a(Typed<?> typed); }