Skip to content

Commit a9bfda4

Browse files
Rewrite 1.11->1.12 ChatItemRewriter (ViaVersion#3740)
1 parent f868dfa commit a9bfda4

File tree

4 files changed

+67
-75
lines changed

4 files changed

+67
-75
lines changed

common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java

Lines changed: 0 additions & 70 deletions
This file was deleted.

common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/Protocol1_12To1_11_1.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.metadata.MetadataRewriter1_12To1_11_1;
4141
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.packets.InventoryPackets;
4242
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.providers.InventoryQuickMoveProvider;
43+
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.rewriter.ChatItemRewriter;
44+
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.rewriter.TranslateRewriter;
4345
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.ClientboundPackets1_13;
4446
import com.viaversion.viaversion.protocols.protocol1_13to1_12_2.Protocol1_13To1_12_2;
4547
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
@@ -98,8 +100,9 @@ public void register() {
98100
if (!Via.getConfig().is1_12NBTArrayFix()) return;
99101
try {
100102
JsonElement obj = Protocol1_9To1_8.FIX_JSON.transform(null, wrapper.passthrough(Type.COMPONENT).toString());
101-
TranslateRewriter.toClient(obj, wrapper.user());
102-
ChatItemRewriter.toClient(obj, wrapper.user());
103+
TranslateRewriter.toClient(obj);
104+
ChatItemRewriter.toClient(obj);
105+
103106
wrapper.set(Type.COMPONENT, 0, obj);
104107
} catch (Exception e) {
105108
e.printStackTrace();
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/*
2+
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
3+
* Copyright (C) 2016-2024 ViaVersion and contributors
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU General Public License
16+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17+
*/
18+
package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.rewriter;
19+
20+
import com.github.steveice10.opennbt.tag.builtin.CompoundTag;
21+
import com.google.gson.JsonArray;
22+
import com.google.gson.JsonElement;
23+
import com.google.gson.JsonObject;
24+
import net.lenni0451.mcstructs.snbt.SNbtSerializer;
25+
import net.lenni0451.mcstructs.snbt.exceptions.SNbtDeserializeException;
26+
import net.lenni0451.mcstructs.snbt.exceptions.SNbtSerializeException;
27+
import net.lenni0451.mcstructs.text.ATextComponent;
28+
import net.lenni0451.mcstructs.text.serializer.TextComponentSerializer;
29+
30+
public class ChatItemRewriter {
31+
32+
public static void toClient(JsonElement element) throws SNbtDeserializeException, SNbtSerializeException {
33+
if (element instanceof JsonObject) {
34+
JsonObject obj = (JsonObject) element;
35+
if (obj.has("hoverEvent")) {
36+
if (obj.get("hoverEvent") instanceof JsonObject) {
37+
final JsonObject hoverEvent = (JsonObject) obj.get("hoverEvent");
38+
if (hoverEvent.has("action") && hoverEvent.has("value")) {
39+
final String type = hoverEvent.get("action").getAsString();
40+
final JsonElement value = hoverEvent.get("value");
41+
42+
if (type.equals("show_item")) {
43+
final ATextComponent component = TextComponentSerializer.V1_8.deserialize(value);
44+
45+
final CompoundTag compound = SNbtSerializer.V1_8.deserialize(component.asUnformattedString());
46+
hoverEvent.addProperty("value", SNbtSerializer.V1_12.serialize(compound));
47+
}
48+
}
49+
}
50+
} else if (obj.has("extra")) {
51+
toClient(obj.get("extra"));
52+
}
53+
} else if (element instanceof JsonArray) {
54+
JsonArray array = (JsonArray) element;
55+
for (JsonElement value : array) {
56+
toClient(value);
57+
}
58+
}
59+
}
60+
}

common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/TranslateRewriter.java renamed to common/src/main/java/com/viaversion/viaversion/protocols/protocol1_12to1_11_1/rewriter/TranslateRewriter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,12 @@
1515
* You should have received a copy of the GNU General Public License
1616
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1717
*/
18-
package com.viaversion.viaversion.protocols.protocol1_12to1_11_1;
18+
package com.viaversion.viaversion.protocols.protocol1_12to1_11_1.rewriter;
1919

2020
import com.google.gson.JsonArray;
2121
import com.google.gson.JsonElement;
2222
import com.google.gson.JsonObject;
2323
import com.viaversion.viaversion.api.Via;
24-
import com.viaversion.viaversion.api.connection.UserConnection;
2524
import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.data.AchievementTranslationMapping;
2625
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ClientboundPackets1_9_3;
2726
import com.viaversion.viaversion.rewriter.ComponentRewriter;
@@ -103,7 +102,7 @@ protected void handleHoverEvent(JsonObject hoverEvent) {
103102
}
104103
};
105104

106-
public static void toClient(JsonElement element, UserConnection user) {
105+
public static void toClient(JsonElement element) {
107106
if (element instanceof JsonObject) {
108107
JsonObject obj = (JsonObject) element;
109108
JsonElement translate = obj.get("translate");

0 commit comments

Comments
 (0)