Changes to ensure GeyserConnect still works despite internal changes in https://github.com/GeyserMC/Geyser/pull/4604/ (#83)

This commit is contained in:
chris 2024-05-10 23:58:41 +02:00 committed by GitHub
parent 1c8c0386da
commit 9733781b98
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 17 additions and 14 deletions

View file

@ -119,6 +119,11 @@ public class GeyserConnect implements Extension {
@Subscribe @Subscribe
public void onSessionInitialize(SessionInitializeEvent event) { public void onSessionInitialize(SessionInitializeEvent event) {
GeyserSession session = (GeyserSession) event.connection(); 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 // Change the packet handler to our own
BedrockPacketHandler packetHandler = session.getUpstream().getSession().getPacketHandler(); BedrockPacketHandler packetHandler = session.getUpstream().getSession().getPacketHandler();

View file

@ -27,8 +27,9 @@ package org.geysermc.extension.connect;
import org.cloudburstmc.protocol.bedrock.data.AttributeData; import org.cloudburstmc.protocol.bedrock.data.AttributeData;
import org.cloudburstmc.protocol.bedrock.packet.BedrockPacketHandler; 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.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.SetLocalPlayerAsInitializedPacket;
import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket; import org.cloudburstmc.protocol.bedrock.packet.UpdateAttributesPacket;
import org.cloudburstmc.protocol.common.PacketSignal; 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 @Override
public PacketSignal handle(SetLocalPlayerAsInitializedPacket packet) { public PacketSignal handle(SetLocalPlayerAsInitializedPacket packet) {
geyserConnect.logger().debug("Player initialized: " + Utils.displayName(session)); geyserConnect.logger().debug("Player initialized: " + Utils.displayName(session));
@ -165,5 +153,15 @@ public class PacketHandler extends UpstreamPacketHandler {
return super.handle(packet); return super.handle(packet);
} }
@Override
public PacketSignal handle(ResourcePackClientResponsePacket packet) {
return originalPacketHandler.handle(packet);
}
@Override
public PacketSignal handle(ResourcePackChunkRequestPacket packet) {
return originalPacketHandler.handle(packet);
}
} }