diff --git a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java index 356fe645b..0720963fb 100644 --- a/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java +++ b/core/src/main/java/org/geysermc/geyser/translator/protocol/java/JavaLoginDisconnectTranslator.java @@ -46,10 +46,30 @@ public class JavaLoginDisconnectTranslator extends PacketTranslator children = component.children(); for (int i = 0; i < children.size(); i++) { if (children.get(i) instanceof TextComponent child && child.content().startsWith("Outdated server!")) { // Reproduced on Paper 1.17.1 - isOutdatedMessage = true; - break; + return true; } } } } } + return false; + } - String serverDisconnectMessage = MessageTranslator.convertMessage(disconnectReason, session.locale()); - String disconnectMessage; - if (isOutdatedMessage) { - String locale = session.locale(); - PlatformType platform = session.getGeyser().getPlatformType(); - String outdatedType = (platform == PlatformType.BUNGEECORD || platform == PlatformType.VELOCITY) ? - "geyser.network.remote.outdated.proxy" : "geyser.network.remote.outdated.server"; - disconnectMessage = GeyserLocale.getPlayerLocaleString(outdatedType, locale, GameProtocol.getJavaVersions().get(0)) + '\n' - + GeyserLocale.getPlayerLocaleString("geyser.network.remote.original_disconnect_message", locale, serverDisconnectMessage); - } else { - disconnectMessage = serverDisconnectMessage; - } - - // The client doesn't manually get disconnected so we have to do it ourselves - session.disconnect(disconnectMessage); + private boolean testForMissingProfilePublicKey(Component disconnectReason) { + return disconnectReason instanceof TranslatableComponent component && "multiplayer.disconnect.missing_public_key".equals(component.key()); } @Override