diff --git a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java index 51533dfd8..225f8207a 100644 --- a/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java +++ b/core/src/main/java/org/geysermc/geyser/network/UpstreamPacketHandler.java @@ -69,6 +69,7 @@ import java.util.OptionalInt; public class UpstreamPacketHandler extends LoggingPacketHandler { + private boolean networkSettingsRequested = false; private Deque packsToSent = new ArrayDeque<>(); public UpstreamPacketHandler(GeyserImpl geyser, GeyserSession session) { @@ -137,6 +138,7 @@ public class UpstreamPacketHandler extends LoggingPacketHandler { session.getUpstream().getSession().setCompression(algorithm); session.getUpstream().getSession().setCompressionLevel(this.geyser.getConfig().getBedrock().getCompressionLevel()); + networkSettingsRequested = true; return PacketSignal.HANDLED; } @@ -148,6 +150,11 @@ public class UpstreamPacketHandler extends LoggingPacketHandler { return PacketSignal.HANDLED; } + if (!networkSettingsRequested) { + session.disconnect(GeyserLocale.getLocaleStringLog("geyser.network.outdated.client", GameProtocol.getAllSupportedBedrockVersions())); + return PacketSignal.HANDLED; + } + // Set the block translation based off of version session.setBlockMappings(BlockRegistries.BLOCKS.forVersion(loginPacket.getProtocolVersion())); session.setItemMappings(Registries.ITEMS.forVersion(loginPacket.getProtocolVersion()));