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");