diff --git a/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java b/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java index 4be10f896..afb3bff3a 100644 --- a/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java +++ b/core/src/main/java/org/geysermc/geyser/network/netty/GeyserServer.java @@ -166,6 +166,10 @@ public final class GeyserServer { pong.maximumPlayerCount(config.getMaxPlayers()); } + // https://github.com/GeyserMC/Geyser/issues/3388 + pong.motd(pong.motd().replace(';', ':')); + pong.subMotd(pong.subMotd().replace(';', ':')); + // Fallbacks to prevent errors and allow Bedrock to see the server if (pong.motd() == null || pong.motd().isBlank()) { pong.motd(GeyserImpl.NAME); @@ -193,6 +197,14 @@ public final class GeyserServer { } } + if (config.isPassthroughPlayerCounts() && pingInfo != null) { + pong.playerCount(pingInfo.getPlayers().getOnline()); + pong.maximumPlayerCount(pingInfo.getPlayers().getMax()); + } else { + pong.playerCount(geyser.getSessionManager().getSessions().size()); + pong.maximumPlayerCount(config.getMaxPlayers()); + } + //Bedrock will not even attempt a connection if the client thinks the server is full //so we have to fake it not being full if (pong.playerCount() >= pong.maximumPlayerCount()) {