Skip to content
This repository was archived by the owner on May 18, 2026. It is now read-only.

Commit 92962c2

Browse files
authored
Merge pull request #98 from Machine-Maker/fix/craftbukkit-chat-1.19.1
fix: CraftBukkit Chat facet for 1.19.1
2 parents 9d6c831 + 1f456a2 commit 92962c2

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

‎platform-bukkit/src/main/java/net/kyori/adventure/platform/bukkit/CraftBukkitFacet.java‎

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
import org.jetbrains.annotations.Nullable;
8282

8383
import static java.lang.invoke.MethodHandles.dropArguments;
84+
import static java.lang.invoke.MethodHandles.insertArguments;
8485
import static java.lang.invoke.MethodType.methodType;
8586
import static net.kyori.adventure.platform.bukkit.BukkitComponentSerializer.gson;
8687
import static net.kyori.adventure.platform.bukkit.BukkitComponentSerializer.legacy;
@@ -248,8 +249,12 @@ public Object createMessage(final @NotNull V viewer, final @NotNull Component me
248249
findMcClassName("network.protocol.game.ClientboundChatPacket"),
249250
findMcClassName("network.protocol.game.ClientboundSystemChatPacket")
250251
);
251-
// ClientboundSystemChatPacket constructor changed for 1.19
252-
chatPacketConstructor = findConstructor(chatPacketClass, CLASS_CHAT_COMPONENT, int.class);
252+
// ClientboundSystemChatPacket constructor changed for 1.19.1
253+
chatPacketConstructor = findConstructor(chatPacketClass, CLASS_CHAT_COMPONENT, boolean.class);
254+
if (chatPacketConstructor == null) {
255+
// ClientboundSystemChatPacket constructor changed for 1.19
256+
chatPacketConstructor = findConstructor(chatPacketClass, CLASS_CHAT_COMPONENT, int.class);
257+
}
253258
if (chatPacketConstructor == null) {
254259
// ClientboundChatPacket constructor changed for 1.16
255260
chatPacketConstructor = findConstructor(chatPacketClass, CLASS_CHAT_COMPONENT);
@@ -260,8 +265,14 @@ public Object createMessage(final @NotNull V viewer, final @NotNull Component me
260265
}
261266
} else {
262267
if (MESSAGE_TYPE_CHAT == Integer.valueOf(0)) {
263-
// for 1.19, create a function that drops the last UUID argument while keeping the integer message type argument
264-
chatPacketConstructor = dropArguments(chatPacketConstructor, 2, UUID.class);
268+
if (chatPacketConstructor.type().parameterType(1).equals(boolean.class)) {
269+
// 1.19.1
270+
chatPacketConstructor = insertArguments(chatPacketConstructor, 1, Boolean.FALSE);
271+
chatPacketConstructor = dropArguments(chatPacketConstructor, 1, Integer.class, UUID.class);
272+
} else {
273+
// for 1.19, create a function that drops the last UUID argument while keeping the integer message type argument
274+
chatPacketConstructor = dropArguments(chatPacketConstructor, 2, UUID.class);
275+
}
265276
} else {
266277
// Create a function that ignores the message type and sender id arguments to call the underlying one-argument constructor
267278
chatPacketConstructor = dropArguments(chatPacketConstructor, 1, CLASS_MESSAGE_TYPE == null ? Object.class : CLASS_MESSAGE_TYPE, UUID.class);

0 commit comments

Comments
 (0)