From 9547cf160d5531721418ae2de9ca323d5aa65591 Mon Sep 17 00:00:00 2001 From: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> Date: Tue, 21 May 2024 11:30:57 +0200 Subject: [PATCH] Fixup ComponentUtil#legacyToJsonString behavior on items with styles (#3868) --- .../com/viaversion/viaversion/util/ComponentUtil.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) 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 d06db9f33..08fb014ee 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java +++ b/common/src/main/java/com/viaversion/viaversion/util/ComponentUtil.java @@ -30,6 +30,7 @@ import net.lenni0451.mcstructs.text.events.hover.AHoverEvent; import net.lenni0451.mcstructs.text.events.hover.impl.TextHoverEvent; import net.lenni0451.mcstructs.text.serializer.LegacyStringDeserializer; import net.lenni0451.mcstructs.text.serializer.TextComponentSerializer; +import net.lenni0451.mcstructs.text.utils.TextUtils; import org.checkerframework.checker.nullness.qual.Nullable; /** @@ -151,12 +152,18 @@ public final class ComponentUtil { public static String legacyToJsonString(final String message, final boolean itemData) { final ATextComponent component = LegacyStringDeserializer.parse(message, true); - if (itemData) { + if (itemData && hasStyle(component)) { component.setParentStyle(new Style().setItalic(false)); } return SerializerVersion.V1_12.toString(component); } + public static boolean hasStyle(final ATextComponent component) { + final boolean[] hasStyle = {false}; + TextUtils.iterateAll(component, c -> hasStyle[0] |= !c.getStyle().isEmpty()); + return hasStyle[0]; + } + public static String jsonToLegacy(final String value) { return TextComponentSerializer.V1_12.deserializeReader(value).asLegacyFormatString(); }