From fe316696d489e65b47327eecbe30a99202540277 Mon Sep 17 00:00:00 2001 From: tanyaofei Date: Tue, 22 Jul 2025 09:26:35 +0800 Subject: [PATCH] fix plugin message --- .../FakeServerGamePacketListenerImpl.java | 18 ++++++++++++++++-- .../FakeServerGamePacketListenerImpl.java | 17 +++++++++++++++-- pom.xml | 2 +- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/fakeplayer-v1_21_5/src/main/java/io/github/hello09x/fakeplayer/v1_21_5/network/FakeServerGamePacketListenerImpl.java b/fakeplayer-v1_21_5/src/main/java/io/github/hello09x/fakeplayer/v1_21_5/network/FakeServerGamePacketListenerImpl.java index d16a6d3..ea6a87d 100644 --- a/fakeplayer-v1_21_5/src/main/java/io/github/hello09x/fakeplayer/v1_21_5/network/FakeServerGamePacketListenerImpl.java +++ b/fakeplayer-v1_21_5/src/main/java/io/github/hello09x/fakeplayer/v1_21_5/network/FakeServerGamePacketListenerImpl.java @@ -3,6 +3,7 @@ package io.github.hello09x.fakeplayer.v1_21_5.network; import io.github.hello09x.fakeplayer.api.spi.NMSServerGamePacketListener; import io.github.hello09x.fakeplayer.core.Main; import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager; +import lombok.Lombok; import net.minecraft.network.Connection; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; @@ -16,6 +17,7 @@ import org.bukkit.Bukkit; import org.bukkit.craftbukkit.v1_21_R4.entity.CraftPlayer; import org.jetbrains.annotations.NotNull; +import java.lang.reflect.InvocationTargetException; import java.util.Optional; import java.util.logging.Logger; @@ -66,7 +68,7 @@ public class FakeServerGamePacketListenerImpl extends ServerGamePacketListenerIm return; } - if (!(payload instanceof DiscardedPayload p)) { + if (!(payload instanceof DiscardedPayload discardedPayload)) { return; } @@ -82,8 +84,20 @@ public class FakeServerGamePacketListenerImpl extends ServerGamePacketListenerIm return; } - var message = p.data().array(); + var message = getDiscardedPayloadData(discardedPayload); recipient.sendPluginMessage(Main.getInstance(), BUNGEE_CORD_CHANNEL, message); } + private byte[] getDiscardedPayloadData(@NotNull DiscardedPayload payload) { + try { + return payload.data().array(); + } catch (NoSuchMethodError e) { + try { + return (byte[]) payload.getClass().getMethod("data").invoke(payload); // 1.21.5 actual is `public final byte[] data() {}` + } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException ex) { + throw Lombok.sneakyThrow(e); + } + } + } + } \ No newline at end of file diff --git a/fakeplayer-v1_21_6/src/main/java/io/github/hello09x/fakeplayer/v1_21_6/network/FakeServerGamePacketListenerImpl.java b/fakeplayer-v1_21_6/src/main/java/io/github/hello09x/fakeplayer/v1_21_6/network/FakeServerGamePacketListenerImpl.java index 8fc4b42..985b894 100644 --- a/fakeplayer-v1_21_6/src/main/java/io/github/hello09x/fakeplayer/v1_21_6/network/FakeServerGamePacketListenerImpl.java +++ b/fakeplayer-v1_21_6/src/main/java/io/github/hello09x/fakeplayer/v1_21_6/network/FakeServerGamePacketListenerImpl.java @@ -3,6 +3,7 @@ package io.github.hello09x.fakeplayer.v1_21_6.network; import io.github.hello09x.fakeplayer.api.spi.NMSServerGamePacketListener; import io.github.hello09x.fakeplayer.core.Main; import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager; +import lombok.Lombok; import net.minecraft.network.Connection; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket; @@ -75,7 +76,7 @@ public class FakeServerGamePacketListenerImpl extends ServerGamePacketListenerIm return; } - if (!(payload instanceof DiscardedPayload p)) { + if (!(payload instanceof DiscardedPayload discardedPayload)) { return; } @@ -91,8 +92,20 @@ public class FakeServerGamePacketListenerImpl extends ServerGamePacketListenerIm return; } - var message = p.data().array(); + var message = getDiscardedPayloadData(discardedPayload); recipient.sendPluginMessage(Main.getInstance(), BUNGEE_CORD_CHANNEL, message); } + private byte[] getDiscardedPayloadData(@NotNull DiscardedPayload payload) { + try { + return payload.data().array(); + } catch (NoSuchMethodError e) { + try { + return (byte[]) payload.getClass().getMethod("data").invoke(payload); // 1.21.5 actual is `public final byte[] data() {}` + } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException ex) { + throw Lombok.sneakyThrow(e); + } + } + } + } \ No newline at end of file diff --git a/pom.xml b/pom.xml index 8279718..6516efd 100644 --- a/pom.xml +++ b/pom.xml @@ -32,7 +32,7 @@ 21 UTF-8 - 0.3.16 + 0.3.17 0.1.6-SNAPSHOT