From 1f456a293064be85801848a5d6dc3505728a5e14 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Thu, 28 Jul 2022 21:42:48 -0700 Subject: [PATCH] fix: CraftBukkit Chat facet for 1.19.1 --- .../platform/bukkit/CraftBukkitFacet.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/platform-bukkit/src/main/java/net/kyori/adventure/platform/bukkit/CraftBukkitFacet.java b/platform-bukkit/src/main/java/net/kyori/adventure/platform/bukkit/CraftBukkitFacet.java index aa0c5ad8..f3ba0192 100644 --- a/platform-bukkit/src/main/java/net/kyori/adventure/platform/bukkit/CraftBukkitFacet.java +++ b/platform-bukkit/src/main/java/net/kyori/adventure/platform/bukkit/CraftBukkitFacet.java @@ -81,6 +81,7 @@ import org.jetbrains.annotations.Nullable; import static java.lang.invoke.MethodHandles.dropArguments; +import static java.lang.invoke.MethodHandles.insertArguments; import static java.lang.invoke.MethodType.methodType; import static net.kyori.adventure.platform.bukkit.BukkitComponentSerializer.gson; import static net.kyori.adventure.platform.bukkit.BukkitComponentSerializer.legacy; @@ -248,8 +249,12 @@ public Object createMessage(final @NotNull V viewer, final @NotNull Component me findMcClassName("network.protocol.game.ClientboundChatPacket"), findMcClassName("network.protocol.game.ClientboundSystemChatPacket") ); - // ClientboundSystemChatPacket constructor changed for 1.19 - chatPacketConstructor = findConstructor(chatPacketClass, CLASS_CHAT_COMPONENT, int.class); + // ClientboundSystemChatPacket constructor changed for 1.19.1 + chatPacketConstructor = findConstructor(chatPacketClass, CLASS_CHAT_COMPONENT, boolean.class); + if (chatPacketConstructor == null) { + // ClientboundSystemChatPacket constructor changed for 1.19 + chatPacketConstructor = findConstructor(chatPacketClass, CLASS_CHAT_COMPONENT, int.class); + } if (chatPacketConstructor == null) { // ClientboundChatPacket constructor changed for 1.16 chatPacketConstructor = findConstructor(chatPacketClass, CLASS_CHAT_COMPONENT); @@ -260,8 +265,14 @@ public Object createMessage(final @NotNull V viewer, final @NotNull Component me } } else { if (MESSAGE_TYPE_CHAT == Integer.valueOf(0)) { - // for 1.19, create a function that drops the last UUID argument while keeping the integer message type argument - chatPacketConstructor = dropArguments(chatPacketConstructor, 2, UUID.class); + if (chatPacketConstructor.type().parameterType(1).equals(boolean.class)) { + // 1.19.1 + chatPacketConstructor = insertArguments(chatPacketConstructor, 1, Boolean.FALSE); + chatPacketConstructor = dropArguments(chatPacketConstructor, 1, Integer.class, UUID.class); + } else { + // for 1.19, create a function that drops the last UUID argument while keeping the integer message type argument + chatPacketConstructor = dropArguments(chatPacketConstructor, 2, UUID.class); + } } else { // Create a function that ignores the message type and sender id arguments to call the underlying one-argument constructor chatPacketConstructor = dropArguments(chatPacketConstructor, 1, CLASS_MESSAGE_TYPE == null ? Object.class : CLASS_MESSAGE_TYPE, UUID.class);