From 56e4aa06b1d5293f9c9753ab1ac3a3a31fb7eb2c Mon Sep 17 00:00:00 2001 From: rtm516 Date: Fri, 28 Apr 2023 13:39:23 +0100 Subject: [PATCH] Check player limit earlier --- .../geysermc/connect/extension/PacketHandler.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/geysermc/connect/extension/PacketHandler.java b/src/main/java/org/geysermc/connect/extension/PacketHandler.java index 5a0444b..130c7fd 100644 --- a/src/main/java/org/geysermc/connect/extension/PacketHandler.java +++ b/src/main/java/org/geysermc/connect/extension/PacketHandler.java @@ -27,6 +27,7 @@ package org.geysermc.connect.extension; 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.SetLocalPlayerAsInitializedPacket; import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket; @@ -72,17 +73,22 @@ public class PacketHandler extends UpstreamPacketHandler { } @Override - public PacketSignal handle(SetLocalPlayerAsInitializedPacket packet) { - geyserConnect.logger().debug("Player initialized: " + Utils.displayName(session)); - + 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()) { + 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)); + // Handle the virtual host if specified VirtualHostSection vhost = geyserConnect.config().vhost(); if (vhost.enabled()) {