diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/AuthlibInjectorServers.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/AuthlibInjectorServers.java index 089439d8d..7a4272b5f 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/AuthlibInjectorServers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/AuthlibInjectorServers.java @@ -18,6 +18,9 @@ package org.jackhuang.hmcl.setting; import com.google.gson.JsonParseException; +import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer; +import org.jackhuang.hmcl.task.Schedulers; +import org.jackhuang.hmcl.task.Task; import org.jackhuang.hmcl.util.gson.JsonUtils; import org.jackhuang.hmcl.util.gson.Validation; import org.jackhuang.hmcl.util.io.FileUtils; @@ -30,6 +33,7 @@ import java.util.Collections; import java.util.List; import java.util.logging.Level; +import static org.jackhuang.hmcl.setting.ConfigHolder.config; import static org.jackhuang.hmcl.util.Logging.LOG; public class AuthlibInjectorServers implements Validation { @@ -70,6 +74,15 @@ public class AuthlibInjectorServers implements Validation { LOG.log(Level.WARNING, "Malformed authlib-injectors.json", e); } } + + if (ConfigHolder.isNewlyCreated() && !AuthlibInjectorServers.getConfigInstance().getUrls().isEmpty()) { + config().setPreferredLoginType(Accounts.getLoginType(Accounts.FACTORY_AUTHLIB_INJECTOR)); + for (String url : AuthlibInjectorServers.getConfigInstance().getUrls()) { + Task.supplyAsync(Schedulers.io(), () -> AuthlibInjectorServer.locateServer(url)) + .thenAcceptAsync(Schedulers.javafx(), server -> config().getAuthlibInjectorServers().add(server)) + .start(); + } + } } public static AuthlibInjectorServers getConfigInstance() { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java index 0e040c291..f9d6bff1e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java @@ -19,7 +19,6 @@ package org.jackhuang.hmcl.setting; import javafx.beans.binding.Bindings; import org.jackhuang.hmcl.Metadata; -import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorServer; import org.jackhuang.hmcl.game.HMCLCacheRepository; import org.jackhuang.hmcl.util.CacheRepository; import org.jackhuang.hmcl.util.io.FileUtils; @@ -45,19 +44,11 @@ public class Settings { } private Settings() { - AuthlibInjectorServers.init(); - - if (ConfigHolder.isNewlyCreated() && !AuthlibInjectorServers.getConfigInstance().getUrls().isEmpty()) { - config().setPreferredLoginType(Accounts.getLoginType(Accounts.FACTORY_AUTHLIB_INJECTOR)); - AuthlibInjectorServers.getConfigInstance().getUrls().stream() - .map(AuthlibInjectorServer::new) - .forEach(config().getAuthlibInjectorServers()::add); - } - DownloadProviders.init(); ProxyManager.init(); Accounts.init(); Profiles.init(); + AuthlibInjectorServers.init(); CacheRepository.setInstance(HMCLCacheRepository.REPOSITORY); HMCLCacheRepository.REPOSITORY.directoryProperty().bind(Bindings.createStringBinding(() -> {