From 9f2e46a9981a694bfb3601dd967e9a6c9294520b Mon Sep 17 00:00:00 2001 From: onebeastchris Date: Fri, 10 May 2024 15:01:56 +0200 Subject: [PATCH] Changes to ensure GeyserConnect still works despite internal changes in https://github.com/GeyserMC/Geyser/pull/4604/ --- .../extension/connect/GeyserConnect.java | 5 ++++ .../extension/connect/PacketHandler.java | 26 +++++++++---------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/geysermc/extension/connect/GeyserConnect.java b/src/main/java/org/geysermc/extension/connect/GeyserConnect.java index e81544b..c166428 100644 --- a/src/main/java/org/geysermc/extension/connect/GeyserConnect.java +++ b/src/main/java/org/geysermc/extension/connect/GeyserConnect.java @@ -119,6 +119,11 @@ public class GeyserConnect implements Extension { @Subscribe public void onSessionInitialize(SessionInitializeEvent event) { GeyserSession session = (GeyserSession) event.connection(); + if (config().hardPlayerLimit()) { + if (session.getGeyser().getSessionManager().size() >= session.getGeyser().getConfig().getMaxPlayers()) { + session.disconnect("disconnectionScreen.serverFull"); + } + } // Change the packet handler to our own BedrockPacketHandler packetHandler = session.getUpstream().getSession().getPacketHandler(); diff --git a/src/main/java/org/geysermc/extension/connect/PacketHandler.java b/src/main/java/org/geysermc/extension/connect/PacketHandler.java index e3919a8..f1f1fc9 100644 --- a/src/main/java/org/geysermc/extension/connect/PacketHandler.java +++ b/src/main/java/org/geysermc/extension/connect/PacketHandler.java @@ -27,8 +27,9 @@ package org.geysermc.extension.connect; import org.cloudburstmc.protocol.bedrock.data.AttributeData; import org.cloudburstmc.protocol.bedrock.packet.BedrockPacketHandler; -import org.cloudburstmc.protocol.bedrock.packet.LoginPacket; import org.cloudburstmc.protocol.bedrock.packet.NetworkStackLatencyPacket; +import org.cloudburstmc.protocol.bedrock.packet.ResourcePackChunkRequestPacket; +import org.cloudburstmc.protocol.bedrock.packet.ResourcePackClientResponsePacket; import org.cloudburstmc.protocol.bedrock.packet.SetLocalPlayerAsInitializedPacket; import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket; import org.cloudburstmc.protocol.common.PacketSignal; @@ -74,19 +75,6 @@ public class PacketHandler extends UpstreamPacketHandler { } } - @Override - public PacketSignal handle(LoginPacket loginPacket) { - // Check to see if the server is full and we have a hard player cap - if (geyserConnect.config().hardPlayerLimit()) { - if (session.getGeyser().getSessionManager().size() >= session.getGeyser().getConfig().getMaxPlayers()) { - session.disconnect("disconnectionScreen.serverFull"); - return PacketSignal.HANDLED; - } - } - - return super.handle(loginPacket); - } - @Override public PacketSignal handle(SetLocalPlayerAsInitializedPacket packet) { geyserConnect.logger().debug("Player initialized: " + Utils.displayName(session)); @@ -165,5 +153,15 @@ public class PacketHandler extends UpstreamPacketHandler { return super.handle(packet); } + + @Override + public PacketSignal handle(ResourcePackClientResponsePacket packet) { + return originalPacketHandler.handle(packet); + } + + @Override + public PacketSignal handle(ResourcePackChunkRequestPacket packet) { + return originalPacketHandler.handle(packet); + } }