1
0
mirror of https://github.com/GeyserMC/Floodgate.git synced 2025-12-19 14:59:20 +00:00

Separate the packet id from the rest of the packet data

This commit is contained in:
Tim203
2021-12-16 21:57:11 +01:00
parent a68f400b6e
commit b234fbe581
2 changed files with 24 additions and 9 deletions

View File

@@ -29,6 +29,23 @@ import java.util.UUID;
import org.geysermc.floodgate.api.player.FloodgatePlayer; import org.geysermc.floodgate.api.player.FloodgatePlayer;
public interface Unsafe { 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);
}
} }

View File

@@ -26,7 +26,6 @@
package org.geysermc.floodgate.api; package org.geysermc.floodgate.api;
import java.util.UUID; import java.util.UUID;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.api.unsafe.Unsafe; import org.geysermc.floodgate.api.unsafe.Unsafe;
import org.geysermc.floodgate.pluginmessage.PluginMessageManager; import org.geysermc.floodgate.pluginmessage.PluginMessageManager;
import org.geysermc.floodgate.pluginmessage.channel.PacketChannel; import org.geysermc.floodgate.pluginmessage.channel.PacketChannel;
@@ -44,12 +43,11 @@ public final class UnsafeFloodgateApi implements Unsafe {
} }
@Override @Override
public void sendPacket(UUID bedrockPlayer, byte[] packetData) { public void sendPacket(UUID bedrockPlayer, int packetId, byte[] packetData) {
packetChannel.sendPacket(bedrockPlayer, packetData, this); byte[] fullData = new byte[packetData.length + 1];
} fullData[0] = (byte) packetId;
System.arraycopy(packetData, 0, fullData, 1, packetData.length);
@Override packetChannel.sendPacket(bedrockPlayer, fullData, this);
public void sendPacket(FloodgatePlayer player, byte[] packetData) {
sendPacket(player.getCorrectUniqueId(), packetData);
} }
} }