diff --git a/src/main/java/net/raphimc/viaproxy/cli/options/Options.java b/src/main/java/net/raphimc/viaproxy/cli/options/Options.java index 0466217..a9fd677 100644 --- a/src/main/java/net/raphimc/viaproxy/cli/options/Options.java +++ b/src/main/java/net/raphimc/viaproxy/cli/options/Options.java @@ -48,6 +48,7 @@ public class Options { public static Account MC_ACCOUNT; public static URI PROXY_URL; // Example: type://address:port or type://username:password@address:port public static boolean IGNORE_PACKET_TRANSLATION_ERRORS; + public static boolean ALLOW_BETA_PINGING; // GUI only config options public static String CLASSIC_MP_PASS; @@ -81,6 +82,7 @@ public class Options { final OptionSpec serverHaProxyProtocol = parser.acceptsAll(asList("server-haproxy-protocol", "server-haproxy"), "Send HAProxy protocol messages to the backend server"); final OptionSpec legacyClientPassthrough = parser.acceptsAll(asList("legacy_client_passthrough", "legacy_passthrough"), "Allow <= 1.6.4 clients to connect to the backend server (No protocol translation)"); final OptionSpec ignorePacketTranslationErrors = parser.acceptsAll(List.of("ignore-packet-translation-errors"), "Enabling this will prevent getting disconnected from the server when a packet translation error occurs and instead only print the error in the console. This may cause issues depending on the type of packet which failed to translate"); + final OptionSpec allowBetaPinging = parser.acceptsAll(List.of("allow-beta-pinging"), "Enabling this will allow you to ping <= b1.7.3 servers. This may cause issues with servers that block too frequent connections"); ViaProxy.EVENT_MANAGER.call(new PreOptionsParseEvent(parser)); final OptionSet options; @@ -137,6 +139,7 @@ public class Options { SERVER_HAPROXY_PROTOCOL = options.has(serverHaProxyProtocol); LEGACY_CLIENT_PASSTHROUGH = options.has(legacyClientPassthrough); IGNORE_PACKET_TRANSLATION_ERRORS = options.has(ignorePacketTranslationErrors); + ALLOW_BETA_PINGING = options.has(allowBetaPinging); ViaProxy.EVENT_MANAGER.call(new PostOptionsParseEvent(options)); } catch (OptionException e) { Logger.LOGGER.error("Error parsing options: " + e.getMessage()); diff --git a/src/main/java/net/raphimc/viaproxy/proxy/client2proxy/Client2ProxyHandler.java b/src/main/java/net/raphimc/viaproxy/proxy/client2proxy/Client2ProxyHandler.java index 1660c70..7da767c 100644 --- a/src/main/java/net/raphimc/viaproxy/proxy/client2proxy/Client2ProxyHandler.java +++ b/src/main/java/net/raphimc/viaproxy/proxy/client2proxy/Client2ProxyHandler.java @@ -28,6 +28,7 @@ import net.raphimc.netminecraft.constants.IntendedState; import net.raphimc.netminecraft.packet.IPacket; import net.raphimc.netminecraft.packet.impl.handshake.C2SHandshakePacket; import net.raphimc.viabedrock.api.BedrockProtocolVersion; +import net.raphimc.vialegacy.api.LegacyProtocolVersion; import net.raphimc.viaproxy.ViaProxy; import net.raphimc.viaproxy.cli.options.Options; import net.raphimc.viaproxy.plugins.events.ConnectEvent; @@ -158,6 +159,10 @@ public class Client2ProxyHandler extends SimpleChannelInboundHandler { } } + if (!Options.ALLOW_BETA_PINGING && serverVersion.olderThanOrEqualTo(LegacyProtocolVersion.b1_7tob1_7_3)) { + this.proxyConnection.kickClient("§7ViaProxy is working!\n§7Connect to join the configured server"); + } + if (packet.intendedState.getConnectionState() == ConnectionState.LOGIN && TransferDataHolder.hasTempRedirect(this.proxyConnection.getC2P())) { serverAddress = TransferDataHolder.removeTempRedirect(this.proxyConnection.getC2P()); } diff --git a/src/main/java/net/raphimc/viaproxy/ui/impl/AdvancedTab.java b/src/main/java/net/raphimc/viaproxy/ui/impl/AdvancedTab.java index a0e5d86..fc48056 100644 --- a/src/main/java/net/raphimc/viaproxy/ui/impl/AdvancedTab.java +++ b/src/main/java/net/raphimc/viaproxy/ui/impl/AdvancedTab.java @@ -49,6 +49,7 @@ public class AdvancedTab extends AUITab { JCheckBox legacySkinLoading; JCheckBox chatSigning; JCheckBox ignorePacketTranslationErrors; + JCheckBox allowBetaPinging; JButton viaVersionDumpButton; JButton uploadLogsButton; @@ -115,6 +116,13 @@ public class AdvancedTab extends AUITab { ViaProxy.getSaveManager().uiSave.loadCheckBox("ignore_packet_translation_errors", this.ignorePacketTranslationErrors); GBC.create(body).grid(0, gridy++).insets(BODY_BLOCK_PADDING, BORDER_PADDING, 0, 0).anchor(GBC.NORTHWEST).add(this.ignorePacketTranslationErrors); } + { + this.allowBetaPinging = new JCheckBox(I18n.get("tab.advanced.allow_beta_pinging.label")); + this.allowBetaPinging.setToolTipText(I18n.get("tab.advanced.allow_beta_pinging.tooltip")); + this.allowBetaPinging.setSelected(false); + ViaProxy.getSaveManager().uiSave.loadCheckBox("allow_beta_pinging", this.allowBetaPinging); + GBC.create(body).grid(0, gridy++).insets(BODY_BLOCK_PADDING, BORDER_PADDING, 0, 0).anchor(GBC.NORTHWEST).add(this.allowBetaPinging); + } parent.add(body, BorderLayout.NORTH); } @@ -190,6 +198,7 @@ public class AdvancedTab extends AUITab { save.put("legacy_skin_loading", String.valueOf(this.legacySkinLoading.isSelected())); save.put("chat_signing", String.valueOf(this.chatSigning.isSelected())); save.put("ignore_packet_translation_errors", String.valueOf(this.ignorePacketTranslationErrors.isSelected())); + save.put("allow_beta_pinging", String.valueOf(this.allowBetaPinging.isSelected())); ViaProxy.getSaveManager().save(); } diff --git a/src/main/java/net/raphimc/viaproxy/ui/impl/GeneralTab.java b/src/main/java/net/raphimc/viaproxy/ui/impl/GeneralTab.java index e2cdee7..c8e8544 100644 --- a/src/main/java/net/raphimc/viaproxy/ui/impl/GeneralTab.java +++ b/src/main/java/net/raphimc/viaproxy/ui/impl/GeneralTab.java @@ -215,6 +215,7 @@ public class GeneralTab extends AUITab { ViaProxy.getUI().advancedTab.legacySkinLoading.setEnabled(state); ViaProxy.getUI().advancedTab.chatSigning.setEnabled(state); ViaProxy.getUI().advancedTab.ignorePacketTranslationErrors.setEnabled(state); + ViaProxy.getUI().advancedTab.allowBetaPinging.setEnabled(state); if (state) this.serverVersion.getActionListeners()[0].actionPerformed(null); } @@ -258,6 +259,7 @@ public class GeneralTab extends AUITab { final String proxyUrl = ViaProxy.getUI().advancedTab.proxy.getText().trim(); final boolean chatSigning = ViaProxy.getUI().advancedTab.chatSigning.isSelected(); final boolean ignorePacketTranslationErrors = ViaProxy.getUI().advancedTab.ignorePacketTranslationErrors.isSelected(); + final boolean allowBetaPinging = ViaProxy.getUI().advancedTab.allowBetaPinging.isSelected(); try { try { @@ -295,6 +297,7 @@ public class GeneralTab extends AUITab { Options.OPENAUTHMOD_AUTH = authMethod == 2; Options.CHAT_SIGNING = chatSigning; Options.IGNORE_PACKET_TRANSLATION_ERRORS = ignorePacketTranslationErrors; + Options.ALLOW_BETA_PINGING = allowBetaPinging; if (!proxyUrl.isEmpty()) { try { diff --git a/src/main/resources/assets/language/de_DE.properties b/src/main/resources/assets/language/de_DE.properties index 77232cb..11898e8 100644 --- a/src/main/resources/assets/language/de_DE.properties +++ b/src/main/resources/assets/language/de_DE.properties @@ -53,6 +53,8 @@ tab.advanced.chat_signing.label=Chat Signatur tab.advanced.chat_signing.tooltip=Aktiviert das Senden von signierten Chat Nachrichten auf >= 1.19 Servern. tab.advanced.ignore_packet_translation_errors.label=Datenpaket Übersetzungsfehler ignorieren tab.advanced.ignore_packet_translation_errors.tooltip=Wenn du diese Option aktivierst, wirst du nicht mehr vom Server gekickt, wenn es einen Datenpaket Übersetzungsfehler gibt, sondern der Fehler wird nur in der Konsole angezeigt.\nDiese Option könnte abhängig vom Datenpaket, welches nicht übersetzt werden konnte, Folgeprobleme verursachen. +tab.advanced.allow_beta_pinging.label=Aktiviere Pings für <= b1.7.3 +tab.advanced.allow_beta_pinging.tooltip=Aktiviert das Pingen für <= b1.7.3 Server. Das könnte zu Problemen bei Servern, welche zu schnelle Verbindungen blockieren führen. tab.advanced.create_viaversion_dump.label=ViaVersion Dump erstellen tab.advanced.create_viaversion_dump.success=Der ViaVersion Dump Link wurde in die Zwischenablage kopiert. tab.advanced.upload_latest_log.label=Neueste Log-Datei hochladen diff --git a/src/main/resources/assets/language/en_US.properties b/src/main/resources/assets/language/en_US.properties index 93faa58..c3c1c04 100644 --- a/src/main/resources/assets/language/en_US.properties +++ b/src/main/resources/assets/language/en_US.properties @@ -53,6 +53,8 @@ tab.advanced.chat_signing.label=Chat signing tab.advanced.chat_signing.tooltip=Enables sending signed chat messages on >= 1.19 servers. tab.advanced.ignore_packet_translation_errors.label=Ignore packet translation errors tab.advanced.ignore_packet_translation_errors.tooltip=Enabling this will prevent getting disconnected from the server when a packet translation error occurs and instead only print the error in the console.\nThis may cause issues depending on the type of packet which failed to translate. +tab.advanced.allow_beta_pinging.label=Allow <= b1.7.3 pinging +tab.advanced.allow_beta_pinging.tooltip=Enabling this will allow you to ping <= b1.7.3 servers. This may cause issues with servers that block too frequent connections. tab.advanced.create_viaversion_dump.label=Create ViaVersion dump tab.advanced.create_viaversion_dump.success=Copied ViaVersion dump link to clipboard. tab.advanced.upload_latest_log.label=Upload latest log file