package net.minecraft.util.datafix.fixes; import com.google.common.escape.Escaper; import com.google.common.escape.Escapers; import com.mojang.datafixers.schemas.Schema; import com.mojang.serialization.Dynamic; import java.util.Optional; import org.jetbrains.annotations.Nullable; public class LockComponentPredicateFix extends DataComponentRemainderFix { public static final Escaper ESCAPER = Escapers.builder().addEscape('"', "\\\"").addEscape('\\', "\\\\").build(); public LockComponentPredicateFix(Schema outputSchema) { super(outputSchema, "LockComponentPredicateFix", "minecraft:lock"); } @Nullable @Override protected Dynamic fixComponent(Dynamic component) { return fixLock(component); } @Nullable public static Dynamic fixLock(Dynamic tag) { Optional optional = tag.asString().result(); if (optional.isEmpty()) { return null; } else if (((String)optional.get()).isEmpty()) { return null; } else { Dynamic dynamic = tag.createString("\"" + ESCAPER.escape((String)optional.get()) + "\""); Dynamic dynamic2 = tag.emptyMap().set("minecraft:custom_name", dynamic); return tag.emptyMap().set("components", dynamic2); } } }