From ba2b1d659598c8b12579bdf4e2f063425a8842ac Mon Sep 17 00:00:00 2001 From: virustotalop Date: Wed, 14 Feb 2024 19:56:24 -0800 Subject: [PATCH] Temporary workaround for invalid player data Fixes https://github.com/dmulloy2/ProtocolLib/issues/2775 --- .../protocol/events/SerializedOfflinePlayer.java | 12 ++++++++++++ .../netty/manager/NetworkManagerInjector.java | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java b/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java index 57713e19..c340d8a8 100644 --- a/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java +++ b/src/main/java/com/comphenix/protocol/events/SerializedOfflinePlayer.java @@ -135,6 +135,12 @@ class SerializedOfflinePlayer implements OfflinePlayer, Serializable { return bedSpawnLocation; } + @Nullable + @Override + public Location getRespawnLocation() { + return null; + } + // @Override public long getLastLogin() { return lastLogin; @@ -209,6 +215,12 @@ class SerializedOfflinePlayer implements OfflinePlayer, Serializable { return null; } + @Nullable + @Override + public Location getLocation() { + return null; + } + @Override public long getFirstPlayed() { return firstPlayed; diff --git a/src/main/java/com/comphenix/protocol/injector/netty/manager/NetworkManagerInjector.java b/src/main/java/com/comphenix/protocol/injector/netty/manager/NetworkManagerInjector.java index d6cbbf6a..2d9eeafb 100644 --- a/src/main/java/com/comphenix/protocol/injector/netty/manager/NetworkManagerInjector.java +++ b/src/main/java/com/comphenix/protocol/injector/netty/manager/NetworkManagerInjector.java @@ -93,7 +93,12 @@ public class NetworkManagerInjector implements ChannelListener { if (marker != null || MinecraftReflection.isBundlePacket(packetClass) || outboundListeners.contains(packetClass)) { // wrap packet and construct the event PacketType.Protocol currentProtocol = injector.getCurrentProtocol(PacketType.Sender.SERVER); - PacketContainer container = new PacketContainer(PacketRegistry.getPacketType(currentProtocol, packetClass), packet); + PacketType type = PacketRegistry.getPacketType(currentProtocol, packetClass); + if (type == null) { + ProtocolLogger.debug("Invalid packet type: " + packetClass.getName()); + return null; + } + PacketContainer container = new PacketContainer(type, packet); PacketEvent packetEvent = PacketEvent.fromServer(this, container, marker, injector.getPlayer()); // post to all listeners, then return the packet event we constructed