From b234fbe58137c256e99b0f034715cb1774a94321 Mon Sep 17 00:00:00 2001 From: Tim203 Date: Thu, 16 Dec 2021 21:57:11 +0100 Subject: [PATCH] Separate the packet id from the rest of the packet data --- .../geysermc/floodgate/api/unsafe/Unsafe.java | 21 +++++++++++++++++-- .../floodgate/api/UnsafeFloodgateApi.java | 12 +++++------ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/api/src/main/java/org/geysermc/floodgate/api/unsafe/Unsafe.java b/api/src/main/java/org/geysermc/floodgate/api/unsafe/Unsafe.java index 7e209c26..ce98af4a 100644 --- a/api/src/main/java/org/geysermc/floodgate/api/unsafe/Unsafe.java +++ b/api/src/main/java/org/geysermc/floodgate/api/unsafe/Unsafe.java @@ -29,6 +29,23 @@ import org.geysermc.floodgate.api.player.FloodgatePlayer; public interface Unsafe { - void sendPacket(UUID bedrockPlayer, byte[] packetData); - void sendPacket(FloodgatePlayer player, byte[] packetData); + /** + * Send a raw Bedrock packet to the given online Bedrock player. + * + * @param bedrockPlayer the uuid of the online Bedrock player + * @param packetId the id of the packet to send + * @param packetData the raw packet data + */ + void sendPacket(UUID bedrockPlayer, int packetId, byte[] packetData); + + /** + * Send a raw Bedrock packet to the given online Bedrock player. + * + * @param player the Bedrock player to send the packet to + * @param packetId the id of the packet to send + * @param packetData the raw packet data + */ + default void sendPacket(FloodgatePlayer player, int packetId, byte[] packetData) { + sendPacket(player.getCorrectUniqueId(), packetId, packetData); + } } diff --git a/core/src/main/java/org/geysermc/floodgate/api/UnsafeFloodgateApi.java b/core/src/main/java/org/geysermc/floodgate/api/UnsafeFloodgateApi.java index 25754300..6e860f68 100644 --- a/core/src/main/java/org/geysermc/floodgate/api/UnsafeFloodgateApi.java +++ b/core/src/main/java/org/geysermc/floodgate/api/UnsafeFloodgateApi.java @@ -26,7 +26,6 @@ package org.geysermc.floodgate.api; import java.util.UUID; -import org.geysermc.floodgate.api.player.FloodgatePlayer; import org.geysermc.floodgate.api.unsafe.Unsafe; import org.geysermc.floodgate.pluginmessage.PluginMessageManager; import org.geysermc.floodgate.pluginmessage.channel.PacketChannel; @@ -44,12 +43,11 @@ public final class UnsafeFloodgateApi implements Unsafe { } @Override - public void sendPacket(UUID bedrockPlayer, byte[] packetData) { - packetChannel.sendPacket(bedrockPlayer, packetData, this); - } + public void sendPacket(UUID bedrockPlayer, int packetId, byte[] packetData) { + byte[] fullData = new byte[packetData.length + 1]; + fullData[0] = (byte) packetId; + System.arraycopy(packetData, 0, fullData, 1, packetData.length); - @Override - public void sendPacket(FloodgatePlayer player, byte[] packetData) { - sendPacket(player.getCorrectUniqueId(), packetData); + packetChannel.sendPacket(bedrockPlayer, fullData, this); } }