From 10217f5c5fdeb0db640e5f478957cdfce4a4be79 Mon Sep 17 00:00:00 2001 From: Nassim <28825609+KennyTV@users.noreply.github.com> Date: Thu, 21 Nov 2019 10:24:28 +0100 Subject: [PATCH] Merge dev, fixed suffix length check (#165) * fix falling block data remap (#161) * Update README.md (#162) * fix item hover event on 1.11 (#164) * Fix kick for overly long suffix --- README.md | 22 +++++++-- .../packets/ChatItemRewriter.java | 48 +++++++++++++++++++ .../packets/ChatPackets1_12.java | 7 +-- .../packets/PlayerPacket1_13.java | 2 + .../packets/EntityPackets1_14.java | 3 +- 5 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatItemRewriter.java diff --git a/README.md b/README.md index ea324b7d..798dd4f9 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,21 @@ Allows older Minecraft versions on a newer Minecraft server - -Requires [ViaVersion](http://viaversion.com) to be installed -**Spigot page:** https://www.spigotmc.org/resources/viabackwards.27448/ - ### Supported versions: -![supported_versions](http://i.imgur.com/gXCifhK.png) \ No newline at end of file +![supported_versions](https://camo.githubusercontent.com/75fd692876cdeadbb8a84ed3175e6f0fc23a640a/68747470733a2f2f692e696d6775722e636f6d2f695741744431702e706e67) + +--- + +### Releases / Dev Builds: + +***Requires [ViaVersion](http://viaversion.com) to be installed*** + +You can find official releases here: +**Spgot page:** https://www.spigotmc.org/resources/viabackwards.27448/ **[1.9.x - 1.12.x]** + +You can find official dev builds here: +**Jenkins:** https://ci.viaversion.com/view/ViaBackwards/ **[1.9.x - 1.14.x]** + +**Maven:** https://repo.viaversion.com/ + +**Issue tracker:** https://github.com/ViaVersion/ViaBackwards/issues diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatItemRewriter.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatItemRewriter.java new file mode 100644 index 00000000..db63cd57 --- /dev/null +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatItemRewriter.java @@ -0,0 +1,48 @@ +package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; + +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; + +public class ChatItemRewriter { + + public static void toClient(JsonElement element, UserConnection user) { + if (element instanceof JsonObject) { + JsonObject obj = (JsonObject) element; + if (obj.has("hoverEvent")) { + if (obj.get("hoverEvent") instanceof JsonObject) { + JsonObject hoverEvent = (JsonObject) obj.get("hoverEvent"); + if (hoverEvent.has("action") && hoverEvent.has("value")) { + String type = hoverEvent.get("action").getAsString(); + if (type.equals("show_item") || type.equals("show_entity")) { + JsonElement value = hoverEvent.get("value"); + + if (value.isJsonArray()) { + JsonArray newArray = new JsonArray(); + + int index = 0; + for (JsonElement valueElement : value.getAsJsonArray()) { + if (valueElement.isJsonPrimitive() && valueElement.getAsJsonPrimitive().isString()) { + String newValue = index + ":" + valueElement.getAsString(); + newArray.add(new JsonPrimitive(newValue)); + } + } + + hoverEvent.add("value", newArray); + } + } + } + } + } else if (obj.has("extra")) { + toClient(obj.get("extra"), user); + } + } else if (element instanceof JsonArray) { + JsonArray array = (JsonArray) element; + for (JsonElement value : array) { + toClient(value, user); + } + } + } +} diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java index c80d0f9e..4aa69b64 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_11_1to1_12/packets/ChatPackets1_12.java @@ -10,6 +10,9 @@ package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.api.rewriters.Rewriter; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; @@ -20,9 +23,6 @@ import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.packets.State; -import us.myles.viaversion.libs.gson.JsonElement; -import us.myles.viaversion.libs.gson.JsonObject; -import us.myles.viaversion.libs.gson.JsonParser; import java.util.Map; @@ -47,6 +47,7 @@ public class ChatPackets1_12 extends Rewriter { if (object.has("translate")) handleTranslations(object); + ChatItemRewriter.toClient(object, wrapper.user()); wrapper.set(Type.STRING, 0, object.toString()); } catch (Exception e) { // Only print if ViaVer debug is enabled diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java index 2976904e..f58cda88 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_12_2to1_13/packets/PlayerPacket1_13.java @@ -247,8 +247,10 @@ public class PlayerPacket1_13 extends Rewriter { prefix = ChatUtil.removeUnusedColor(prefix, 'f', true); if (prefix.length() > 16) prefix = prefix.substring(0, 16); if (prefix.endsWith("§")) prefix = prefix.substring(0, prefix.length() - 1); + suffix = suffix == null || suffix.equals("null") ? "" : ChatRewriter.jsonTextToLegacy(suffix); suffix = ChatUtil.removeUnusedColor(suffix, 'f'); + if (suffix.length() > 16) suffix = suffix.substring(0, 16); if (suffix.endsWith("§")) suffix = suffix.substring(0, suffix.length() - 1); wrapper.write(Type.STRING, prefix); wrapper.write(Type.STRING, suffix); diff --git a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java index ea53f3aa..83f312eb 100644 --- a/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java +++ b/core/src/main/java/nl/matsv/viabackwards/protocol/protocol1_13_2to1_14/packets/EntityPackets1_14.java @@ -95,8 +95,7 @@ public class EntityPackets1_14 extends EntityRewriter { int data = wrapper.get(Type.INT, 0); if (objectType == Entity1_13Types.ObjectType.FALLING_BLOCK) { int blockState = wrapper.get(Type.INT, 0); - int combined = BlockItemPackets1_13.toOldId(blockState); - combined = ((combined >> 4) & 0xFFF) | ((combined & 0xF) << 12); + int combined = Protocol1_13_2To1_14.getNewBlockStateId(blockState); wrapper.set(Type.INT, 0, combined); } else if (entityType.isOrHasParent(Entity1_13Types.EntityType.ABSTRACT_ARROW)) { wrapper.set(Type.INT, 0, data + 1);