From 09cf3cb7e168ed6718af67bc3b62ec25bb3355cd Mon Sep 17 00:00:00 2001 From: xirren Date: Sun, 18 Jan 2026 01:21:33 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=B7=BB=E5=8A=A0preferI?= =?UTF-8?q?Pv4=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmcl/launch/DefaultLauncher.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index 777be6b75e..7cc7f95455 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -190,6 +190,33 @@ private Command generateCommandLine(Path nativeFolder) throws IOException { } } + try { + boolean hasIPv4 = false; + java.util.Enumeration nets = java.net.NetworkInterface.getNetworkInterfaces(); + while (nets != null && nets.hasMoreElements() && !hasIPv4) { + java.net.NetworkInterface nif = nets.nextElement(); + try { + if (!nif.isUp() || nif.isLoopback()) continue; + } catch (Throwable ignore) { + // ignore and continue checking other interfaces + continue; + } + java.util.Enumeration addrs = nif.getInetAddresses(); + while (addrs.hasMoreElements()) { + java.net.InetAddress addr = addrs.nextElement(); + if (addr instanceof java.net.Inet4Address && !addr.isLoopbackAddress()) { + hasIPv4 = true; + break; + } + } + } + if (hasIPv4) { + res.addDefault("-Djava.net.preferIPv4Stack=", "true"); + } + } catch (java.net.SocketException e) { + LOG.warning("Failed to detect IPv4 address", e); + } + final int javaVersion = options.getJava().getParsedVersion(); final boolean is64bit = options.getJava().getBits() == Bits.BIT_64; From 898dd2664b4850454fbe6b97c388dc0af148f229 Mon Sep 17 00:00:00 2001 From: xirren Date: Sun, 18 Jan 2026 17:25:49 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E4=BB=A3=E7=90=86=E5=8F=82=E6=95=B0=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index 7cc7f95455..a612bc7319 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -172,7 +172,7 @@ private Command generateCommandLine(Path nativeFolder) throws IOException { Proxy.Type proxyType = options.getProxyType(); if (proxyType == null) { - res.addDefault("-Djava.net.useSystemProxies", "true"); + res.addDefault("-Djava.net.useSystemProxies=", "true"); } else { String proxyHost = options.getProxyHost(); int proxyPort = options.getProxyPort();