diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java index 2d315a65f..422976c97 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_12to1_11_1/ChatItemRewriter.java @@ -3,6 +3,7 @@ package us.myles.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 us.myles.ViaVersion.api.data.UserConnection; import java.util.regex.Pattern; @@ -20,23 +21,30 @@ public class ChatItemRewriter { if (hoverEvent.has("action") && hoverEvent.has("value")) { String type = hoverEvent.get("action").getAsString(); if (type.equals("show_item") || type.equals("show_entity")) { - if (hoverEvent.get("value").isJsonPrimitive()) { - if (hoverEvent.get("value").getAsJsonPrimitive().isString()) { - String value = hoverEvent.get("value").getAsString(); - value = indexRemoval.matcher(value).replaceAll(""); - hoverEvent.addProperty("value", value); + JsonElement value = hoverEvent.get("value"); + + if (value.isJsonPrimitive() && value.getAsJsonPrimitive().isString()) { + String newValue = indexRemoval.matcher(value.getAsString()).replaceAll(""); + hoverEvent.addProperty("value", newValue); + } else if (value.isJsonArray()) { + JsonArray newArray = new JsonArray(); + + for (JsonElement valueElement : value.getAsJsonArray()) { + if (valueElement.isJsonPrimitive() && valueElement.getAsJsonPrimitive().isString()) { + String newValue = indexRemoval.matcher(valueElement.getAsString()).replaceAll(""); + newArray.add(new JsonPrimitive(newValue)); + } } + + hoverEvent.add("value", newArray); } } } } - } else { - if (obj.has("extra")) { - toClient(obj.get("extra"), user); - } + } else if (obj.has("extra")) { + toClient(obj.get("extra"), user); } - } - if (element instanceof JsonArray) { + } else if (element instanceof JsonArray) { JsonArray array = (JsonArray) element; for (JsonElement value : array) { toClient(value, user); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java index 3aac71e72..9039c7168 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/Protocol1_13To1_12_2.java @@ -105,8 +105,7 @@ public class Protocol1_13To1_12_2 extends Protocol { }; // These are arbitrary rewrite values, it just needs an invalid color code character. - protected static EnumMap SCOREBOARD_TEAM_NAME_REWRITE = new EnumMap<>(ChatColor.class); - // @formatter:on + protected static final EnumMap SCOREBOARD_TEAM_NAME_REWRITE = new EnumMap<>(ChatColor.class); static { SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.BLACK, 'g'); @@ -125,6 +124,13 @@ public class Protocol1_13To1_12_2 extends Protocol { SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.LIGHT_PURPLE, 'z'); SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.YELLOW, '!'); SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.WHITE, '?'); + SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.MAGIC, '#'); + SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.BOLD, '('); + SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.STRIKETHROUGH, ')'); + SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.UNDERLINE, ':'); + SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.ITALIC, ';'); + SCOREBOARD_TEAM_NAME_REWRITE.put(ChatColor.RESET, '/'); + MappingData.init(); ConnectionData.init(); RecipeData.init();