From 94a217053b756b9be366200ef9ae419f3d918aa1 Mon Sep 17 00:00:00 2001 From: FlorianMichael <60033407+FlorianMichael@users.noreply.github.com> Date: Fri, 19 Apr 2024 14:19:21 +0200 Subject: [PATCH] Use correct deserialization method in SerializerVersion#toComponent MCStructs has multiple methods for parsing jsons depending on the version, we should use them correctly in our wrapper to support all possible cases of components. --- .../com/viaversion/viaversion/util/ComponentUtil.java | 4 ++-- .../com/viaversion/viaversion/util/SerializerVersion.java | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java b/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java index e523bf231..370d83d7f 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java +++ b/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java @@ -93,11 +93,11 @@ public final class ComponentUtil { } public static @Nullable JsonElement convertJson(@Nullable final JsonElement element, final SerializerVersion from, final SerializerVersion to) { - return element != null ? convert(from, to, from.jsonSerializer.deserialize(element)) : null; + return element != null ? convert(from, to, from.toComponent(element)) : null; } public static @Nullable JsonElement convertJson(@Nullable final String json, final SerializerVersion from, final SerializerVersion to) { - return json != null ? convert(from, to, from.jsonSerializer.deserializeReader(json)) : null; + return json != null ? convert(from, to, from.toComponent(json)) : null; } private static JsonElement convert(final SerializerVersion from, final SerializerVersion to, final ATextComponent component) { diff --git a/common/src/main/java/com/viaversion/viaversion/util/SerializerVersion.java b/common/src/main/java/com/viaversion/viaversion/util/SerializerVersion.java index ae76835a5..aa4e4cb98 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/SerializerVersion.java +++ b/common/src/main/java/com/viaversion/viaversion/util/SerializerVersion.java @@ -77,7 +77,13 @@ public enum SerializerVersion { } public ATextComponent toComponent(final String json) { - return jsonSerializer.deserializeReader(json); + if (ordinal() >= SerializerVersion.V1_20_3.ordinal()) { + return jsonSerializer.deserializeParser(json); + } else if (ordinal() >= SerializerVersion.V1_9.ordinal()) { + return jsonSerializer.deserializeReader(json); + } else { + return jsonSerializer.deserialize(json); + } } public ATextComponent toComponent(final Tag tag) {