Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / DataConverterJukeBox.java
package net.minecraft.server;

import com.mojang.datafixers.DSL;
import com.mojang.datafixers.Dynamic;
import com.mojang.datafixers.OpticFinder;
import com.mojang.datafixers.Typed;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.datafixers.types.Type;
import java.util.Optional;

public class DataConverterJukeBox extends DataConverterNamedEntity {

    public DataConverterJukeBox(Schema schema, boolean flag) {
        super(schema, flag, "BlockEntityJukeboxFix", DataConverterTypes.BLOCK_ENTITY, "minecraft:jukebox");
    }

    @Override
    protected Typed<?> a(Typed<?> typed) {
        Type<?> type = this.getInputSchema().getChoiceType(DataConverterTypes.BLOCK_ENTITY, "minecraft:jukebox");
        Type<?> type1 = type.findFieldType("RecordItem");
        OpticFinder<?> opticfinder = DSL.fieldFinder("RecordItem", type1);
        Dynamic<?> dynamic = (Dynamic) typed.get(DSL.remainderFinder());
        int i = dynamic.get("Record").asInt(0);

        if (i > 0) {
            dynamic.remove("Record");
            String s = DataConverterFlatten.a(DataConverterMaterialId.a(i), 0);

            if (s != null) {
                Dynamic<?> dynamic1 = dynamic.emptyMap();

                dynamic1 = dynamic1.set("id", dynamic1.createString(s));
                dynamic1 = dynamic1.set("Count", dynamic1.createByte((byte) 1));
                return typed.set(opticfinder, (Typed) ((Optional) type1.readTyped(dynamic1).getSecond()).orElseThrow(() -> {
                    return new IllegalStateException("Could not create record item stack.");
                })).set(DSL.remainderFinder(), dynamic);
            }
        }

        return typed;
    }
}