From 8aaaadc2b09a307964c9b35476ccd1077f94fa0c Mon Sep 17 00:00:00 2001 From: layue13 Date: Mon, 9 Nov 2026 22:16:05 +0000 Subject: [PATCH] fix: bake default join address mc.potatolab.uk Closed-beta players need a working join target even when the client server-manifest is missing or omits serverAddress. --- HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java | 7 +++++-- .../org/jackhuang/hmcl/game/ServerEndpointTest.java | 11 +++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java b/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java index 5032e7a82a..2174887e25 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/Metadata.java @@ -165,11 +165,14 @@ public final class Metadata { return getClientFileApi() + "/server-manifest.json"; } + /// Fallback join address when the installed modpack manifest has no `serverAddress` / routes. + public static final String DEFAULT_SERVER_ADDRESS = "mc.potatolab.uk"; + /// Server address used when the installed modpack manifest does not provide one. /// - /// Can be set at build or run time with the `hmcl.server.address` system property; empty by default. + /// Override at build or run time with `-Dhmcl.server.address=…`; defaults to [#DEFAULT_SERVER_ADDRESS]. public static String getDefaultServerAddress() { - return System.getProperty("hmcl.server.address", "").trim(); + return System.getProperty("hmcl.server.address", DEFAULT_SERVER_ADDRESS).trim(); } /// The server name shown in the title bar. diff --git a/HMCL/src/test/java/org/jackhuang/hmcl/game/ServerEndpointTest.java b/HMCL/src/test/java/org/jackhuang/hmcl/game/ServerEndpointTest.java index 0dc1a21d50..68ea263dd8 100644 --- a/HMCL/src/test/java/org/jackhuang/hmcl/game/ServerEndpointTest.java +++ b/HMCL/src/test/java/org/jackhuang/hmcl/game/ServerEndpointTest.java @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later WITH AdditionRef-HMCL package org.jackhuang.hmcl.game; +import org.jackhuang.hmcl.Metadata; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -19,13 +20,15 @@ public final class ServerEndpointTest { } @Test - void noConfigurationMeansNoRoute(@TempDir Path dir) { - assertTrue(ServerEndpoint.routes(dir.resolve("modpack.json")).isEmpty()); - assertNull(ServerEndpoint.selected(dir.resolve("modpack.json"))); + void fallsBackToBakedDefaultAddress(@TempDir Path dir) { + var routes = ServerEndpoint.routes(dir.resolve("modpack.json")); + assertEquals(1, routes.size()); + assertEquals(Metadata.DEFAULT_SERVER_ADDRESS, routes.get(0).address()); + assertEquals(routes.get(0), ServerEndpoint.selected(dir.resolve("modpack.json"))); } @Test - void fallsBackToDefaultAddress(@TempDir Path dir) { + void propertyOverridesBakedDefaultAddress(@TempDir Path dir) { System.setProperty("hmcl.server.address", " play.example.net:25565 "); var routes = ServerEndpoint.routes(dir.resolve("modpack.json")); assertEquals(1, routes.size()); -- 2.47.3