diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java index b946d0934..607de7bcf 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java @@ -31,8 +31,6 @@ import org.jackhuang.hmcl.auth.yggdrasil.MojangYggdrasilProvider; import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilAccount; import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilAccountFactory; import org.jackhuang.hmcl.task.FileDownloadTask; -import org.jackhuang.hmcl.task.Task; -import org.jackhuang.hmcl.task.TaskResult; import org.jackhuang.hmcl.util.Constants; import org.jackhuang.hmcl.util.FileUtils; import org.jackhuang.hmcl.util.NetworkUtils; @@ -107,11 +105,6 @@ public final class Accounts { } } - @Deprecated - public static TaskResult getAuthlibInjectorServerNameAsync(AuthlibInjectorAccount account) { - return Task.ofResult("serverName", () -> Accounts.getAuthlibInjectorServerName(account.getServerBaseURL())); - } - private static AuthlibInjectorServer getOrCreateAuthlibInjectorServer(String url) { return Settings.SETTINGS.authlibInjectorServers.stream() .filter(server -> url.equals(server.getUrl())) 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 9ef5b6973..6003265ee 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java @@ -54,7 +54,6 @@ import java.util.logging.Level; import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; -import static java.util.stream.Collectors.toSet; import static org.jackhuang.hmcl.ui.FXUtils.onInvalidating; import static org.jackhuang.hmcl.util.Lang.tryCast; import static org.jackhuang.hmcl.util.Logging.LOG; @@ -309,22 +308,15 @@ public class Settings { * AUTHLIB INJECTORS * ****************************************/ - private Set getAuthlibInjectorServerUrls() { - return SETTINGS.authlibInjectorServers.stream() - .map(AuthlibInjectorServer::getUrl) - .collect(toSet()); - } - /** * After an {@link AuthlibInjectorServer} is removed, the associated accounts should also be removed. * This method performs a check and removes the dangling accounts. * Don't call this before {@link #migrateAuthlibInjectorServers()} is called, otherwise old data would be lost. */ private void removeDanglingAuthlibInjectorAccounts() { - Set currentServerUrls = getAuthlibInjectorServerUrls(); accounts.values().stream() .filter(AuthlibInjectorAccount.class::isInstance) - .filter(it -> !currentServerUrls.contains(((AuthlibInjectorAccount) it).getServerBaseURL())) + .filter(it -> !SETTINGS.authlibInjectorServers.contains(((AuthlibInjectorAccount) it).getServer())) .collect(toList()) .forEach(this::deleteAccount); } diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountPage.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountPage.java index 18d5a96c0..af9cedf5e 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountPage.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/AccountPage.java @@ -34,7 +34,6 @@ import org.jackhuang.hmcl.auth.authlibinjector.AuthlibInjectorAccount; import org.jackhuang.hmcl.auth.offline.OfflineAccount; import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilAccount; import org.jackhuang.hmcl.game.AccountHelper; -import org.jackhuang.hmcl.setting.Accounts; import org.jackhuang.hmcl.setting.Settings; import org.jackhuang.hmcl.setting.Theme; import org.jackhuang.hmcl.task.Schedulers; @@ -80,8 +79,7 @@ public class AccountPage extends StackPane implements DecoratorPage { FXUtils.setLimitWidth(this, 300); if (account instanceof AuthlibInjectorAccount) { - Accounts.getAuthlibInjectorServerNameAsync((AuthlibInjectorAccount) account) - .subscribe(Schedulers.javafx(), variables -> lblServer.setText(variables.get("serverName"))); + lblServer.setText(((AuthlibInjectorAccount) account).getServer().getName()); FXUtils.setLimitHeight(this, 182); } else { componentList.removeChildren(paneServer); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java index 749d59aef..8ed51b8ad 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java @@ -186,9 +186,9 @@ public final class LeftPaneController { } else item.setImage(AccountHelper.getDefaultSkin(account.getUUID(), 4), AccountHelper.getViewport(4)); - if (account instanceof AuthlibInjectorAccount) - Accounts.getAuthlibInjectorServerNameAsync((AuthlibInjectorAccount) account) - .subscribe(Schedulers.javafx(), variables -> FXUtils.installTooltip(ripplerContainer, 500, 5000, 0, new Tooltip(variables.get("serverName")))); + if (account instanceof AuthlibInjectorAccount) { + FXUtils.installTooltip(ripplerContainer, 500, 5000, 0, new Tooltip(((AuthlibInjectorAccount) account).getServer().getName())); + } if (selectedAccount == account) ripplerContainer.setSelected(true); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorAccount.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorAccount.java index 0114bc804..68a26596b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorAccount.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorAccount.java @@ -37,14 +37,14 @@ import java.util.concurrent.atomic.AtomicBoolean; import static java.nio.charset.StandardCharsets.UTF_8; public class AuthlibInjectorAccount extends YggdrasilAccount { - private final String serverBaseURL; + private final AuthlibInjectorServer server; private final ExceptionalSupplier injectorJarPath; - protected AuthlibInjectorAccount(YggdrasilService service, String serverBaseURL, ExceptionalSupplier injectorJarPath, String username, UUID characterUUID, YggdrasilSession session) { + protected AuthlibInjectorAccount(YggdrasilService service, AuthlibInjectorServer server, ExceptionalSupplier injectorJarPath, String username, UUID characterUUID, YggdrasilSession session) { super(service, username, characterUUID, session); this.injectorJarPath = injectorJarPath; - this.serverBaseURL = serverBaseURL; + this.server = server; } @Override @@ -59,7 +59,7 @@ public class AuthlibInjectorAccount extends YggdrasilAccount { private AuthInfo inject(ExceptionalSupplier supplier) throws AuthenticationException { // Authlib Injector recommends launchers to pre-fetch the server basic information before launched the game to save time. - GetTask getTask = new GetTask(NetworkUtils.toURL(serverBaseURL)); + GetTask getTask = new GetTask(NetworkUtils.toURL(server.getUrl())); AtomicBoolean flag = new AtomicBoolean(true); Thread thread = Lang.thread(() -> flag.set(getTask.test())); @@ -67,7 +67,7 @@ public class AuthlibInjectorAccount extends YggdrasilAccount { try { thread.join(); - Arguments arguments = new Arguments().addJVMArguments("-javaagent:" + injectorJarPath.get() + "=" + serverBaseURL); + Arguments arguments = new Arguments().addJVMArguments("-javaagent:" + injectorJarPath.get() + "=" + server.getUrl()); if (flag.get()) arguments = arguments.addJVMArguments("-Dorg.to2mbn.authlibinjector.config.prefetched=" + new String(Base64.getEncoder().encode(getTask.getResult().getBytes()), UTF_8)); @@ -81,12 +81,12 @@ public class AuthlibInjectorAccount extends YggdrasilAccount { @Override public Map toStorage() { Map map = super.toStorage(); - map.put("serverBaseURL", serverBaseURL); + map.put("serverBaseURL", server.getUrl()); return map; } - public String getServerBaseURL() { - return serverBaseURL; + public AuthlibInjectorServer getServer() { + return server; } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorAccountFactory.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorAccountFactory.java index 8a4228987..eb5189d4b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorAccountFactory.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorAccountFactory.java @@ -40,7 +40,7 @@ public class AuthlibInjectorAccountFactory extends AccountFactory