package net.minecraft.util.datafix.fixes; import com.mojang.datafixers.DSL; import com.mojang.datafixers.Typed; import com.mojang.datafixers.schemas.Schema; import com.mojang.datafixers.types.Type; import com.mojang.datafixers.util.Pair; import net.minecraft.Util; public class EntityMinecartIdentifiersFix extends EntityRenameFix { public EntityMinecartIdentifiersFix(Schema outputSchema) { super("EntityMinecartIdentifiersFix", outputSchema, true); } @Override protected Pair> fix(String entityName, Typed typed) { if (!entityName.equals("Minecart")) { return Pair.of(entityName, typed); } else { int i = typed.getOrCreate(DSL.remainderFinder()).get("Type").asInt(0); String string = switch (i) { case 1 -> "MinecartChest"; case 2 -> "MinecartFurnace"; default -> "MinecartRideable"; }; Type type = (Type)this.getOutputSchema().findChoiceType(References.ENTITY).types().get(string); return Pair.of(string, Util.writeAndReadTypedOrThrow(typed, type, dynamic -> dynamic.remove("Type"))); } } }