minecraft_25w45a_unobfuscated/net/minecraft/util/datafix/fixes/UnflattenTextComponentFix.java
2025-11-24 22:52:51 +03:00

66 lines
2.5 KiB
Java

/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* com.google.gson.JsonElement
* com.mojang.datafixers.DataFix
* com.mojang.datafixers.TypeRewriteRule
* com.mojang.datafixers.schemas.Schema
* com.mojang.datafixers.types.Type
* com.mojang.datafixers.util.Pair
* com.mojang.logging.LogUtils
* com.mojang.serialization.Dynamic
* com.mojang.serialization.DynamicOps
* com.mojang.serialization.JsonOps
* org.slf4j.Logger
*/
package net.minecraft.util.datafix.fixes;
import com.google.gson.JsonElement;
import com.mojang.datafixers.DataFix;
import com.mojang.datafixers.TypeRewriteRule;
import com.mojang.datafixers.schemas.Schema;
import com.mojang.datafixers.types.Type;
import com.mojang.datafixers.util.Pair;
import com.mojang.logging.LogUtils;
import com.mojang.serialization.Dynamic;
import com.mojang.serialization.DynamicOps;
import com.mojang.serialization.JsonOps;
import net.minecraft.util.LenientJsonParser;
import net.minecraft.util.Util;
import net.minecraft.util.datafix.fixes.References;
import org.slf4j.Logger;
public class UnflattenTextComponentFix
extends DataFix {
private static final Logger LOGGER = LogUtils.getLogger();
public UnflattenTextComponentFix(Schema outputSchema) {
super(outputSchema, true);
}
protected TypeRewriteRule makeRule() {
Type textComponentType = this.getInputSchema().getType(References.TEXT_COMPONENT);
Type newTextComponentType = this.getOutputSchema().getType(References.TEXT_COMPONENT);
return this.createFixer((Type<Pair<String, String>>)textComponentType, newTextComponentType);
}
private <T> TypeRewriteRule createFixer(Type<Pair<String, String>> textComponentType, Type<T> newTextComponentType) {
return this.fixTypeEverywhere("UnflattenTextComponentFix", textComponentType, newTextComponentType, ops -> input -> Util.readTypedOrThrow(newTextComponentType, UnflattenTextComponentFix.unflattenJson(ops, (String)input.getSecond()), true).getValue());
}
private static <T> Dynamic<T> unflattenJson(DynamicOps<T> ops, String jsonString) {
try {
JsonElement json = LenientJsonParser.parse(jsonString);
if (!json.isJsonNull()) {
return new Dynamic(ops, JsonOps.INSTANCE.convertTo(ops, json));
}
}
catch (Exception e) {
LOGGER.error("Failed to unflatten text component json: {}", (Object)jsonString, (Object)e);
}
return new Dynamic(ops, ops.createString(jsonString));
}
}