From a9bfda4568c9c3b3591d4c72634725bb7082ee10 Mon Sep 17 00:00:00 2001 From: EnZaXD <60033407+FlorianMichael@users.noreply.github.com> Date: Sat, 9 Mar 2024 10:58:42 +0100 Subject: [PATCH] Rewrite 1.11->1.12 ChatItemRewriter (#3740) --- .../ChatItemRewriter.java | 70 ------------------- .../Protocol1_12To1_11_1.java | 7 +- .../rewriter/ChatItemRewriter.java | 60 ++++++++++++++++ .../{ => rewriter}/TranslateRewriter.java | 5 +- 4 files changed, 67 insertions(+), 75 deletions(-) delete mode 100644 common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java create mode 100644 common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/rewriter/ChatItemRewriter.java rename common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/{ => rewriter}/TranslateRewriter.java (97%) diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java deleted file mode 100644 index bb1c7426a..000000000 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion - * Copyright (C) 2016-2024 ViaVersion and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.viaversion.viaversion.protocols.protocol1_12to1_11_1; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonPrimitive; -import com.viaversion.viaversion.api.connection.UserConnection; -import java.util.regex.Pattern; - -public class ChatItemRewriter { - private static final Pattern indexRemoval = Pattern.compile("(?. + */ +package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.rewriter; + +import com.github.steveice10.opennbt.tag.builtin.CompoundTag; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import net.lenni0451.mcstructs.snbt.SNbtSerializer; +import net.lenni0451.mcstructs.snbt.exceptions.SNbtDeserializeException; +import net.lenni0451.mcstructs.snbt.exceptions.SNbtSerializeException; +import net.lenni0451.mcstructs.text.ATextComponent; +import net.lenni0451.mcstructs.text.serializer.TextComponentSerializer; + +public class ChatItemRewriter { + + public static void toClient(JsonElement element) throws SNbtDeserializeException, SNbtSerializeException { + if (element instanceof JsonObject) { + JsonObject obj = (JsonObject) element; + if (obj.has("hoverEvent")) { + if (obj.get("hoverEvent") instanceof JsonObject) { + final JsonObject hoverEvent = (JsonObject) obj.get("hoverEvent"); + if (hoverEvent.has("action") && hoverEvent.has("value")) { + final String type = hoverEvent.get("action").getAsString(); + final JsonElement value = hoverEvent.get("value"); + + if (type.equals("show_item")) { + final ATextComponent component = TextComponentSerializer.V1_8.deserialize(value); + + final CompoundTag compound = SNbtSerializer.V1_8.deserialize(component.asUnformattedString()); + hoverEvent.addProperty("value", SNbtSerializer.V1_12.serialize(compound)); + } + } + } + } else if (obj.has("extra")) { + toClient(obj.get("extra")); + } + } else if (element instanceof JsonArray) { + JsonArray array = (JsonArray) element; + for (JsonElement value : array) { + toClient(value); + } + } + } +} diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/TranslateRewriter.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/rewriter/TranslateRewriter.java similarity index 97% rename from common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/TranslateRewriter.java rename to common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/rewriter/TranslateRewriter.java index fc72f5a2e..c90d110a5 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/TranslateRewriter.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/rewriter/TranslateRewriter.java @@ -15,13 +15,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -package com.viaversion.viaversion.protocols.protocol1_12to1_11_1; +package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.rewriter; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.api.connection.UserConnection; import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.data.AchievementTranslationMapping; import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3; import com.viaversion.viaversion.rewriter.ComponentRewriter; @@ -103,7 +102,7 @@ public class TranslateRewriter { } }; - public static void toClient(JsonElement element, UserConnection user) { + public static void toClient(JsonElement element) { if (element instanceof JsonObject) { JsonObject obj = (JsonObject) element; JsonElement translate = obj.get("translate");