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 45dbbafb1..9a87c3542 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java @@ -62,7 +62,7 @@ public final class Accounts { public static final OfflineAccountFactory FACTORY_OFFLINE = OfflineAccountFactory.INSTANCE; public static final YggdrasilAccountFactory FACTORY_YGGDRASIL = new YggdrasilAccountFactory(MojangYggdrasilProvider.INSTANCE); public static final AuthlibInjectorAccountFactory FACTORY_AUTHLIB_INJECTOR = new AuthlibInjectorAccountFactory( - new AuthlibInjectorDownloader(Metadata.HMCL_DIRECTORY, DownloadProviders::getDownloadProvider)::getArtifactInfo, + new AuthlibInjectorDownloader(Metadata.HMCL_DIRECTORY, DownloadProviders::getDownloadProvider), Accounts::getOrCreateAuthlibInjectorServer); // ==== login type / account factory mapping ==== 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 d135cf81c..9e2168d13 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 @@ -33,16 +33,17 @@ import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionException; import java.util.concurrent.ExecutionException; + import static org.jackhuang.hmcl.util.io.IOUtils.readFullyWithoutClosing; public class AuthlibInjectorAccount extends YggdrasilAccount { private AuthlibInjectorServer server; - private ExceptionalSupplier authlibInjectorDownloader; + private AuthlibInjectorDownloader downloader; - protected AuthlibInjectorAccount(YggdrasilService service, AuthlibInjectorServer server, ExceptionalSupplier authlibInjectorDownloader, String username, UUID characterUUID, YggdrasilSession session) { + protected AuthlibInjectorAccount(YggdrasilService service, AuthlibInjectorServer server, AuthlibInjectorDownloader downloader, String username, UUID characterUUID, YggdrasilSession session) { super(service, username, characterUUID, session); - this.authlibInjectorDownloader = authlibInjectorDownloader; + this.downloader = downloader; this.server = server; } @@ -67,7 +68,7 @@ public class AuthlibInjectorAccount extends YggdrasilAccount { CompletableFuture artifactTask = CompletableFuture.supplyAsync(() -> { try { - return authlibInjectorDownloader.get(); + return downloader.getArtifactInfo(); } catch (IOException e) { throw new CompletionException(new AuthlibInjectorDownloadException(e)); } 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 3c5c91611..16b9c7fd2 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 @@ -22,9 +22,6 @@ import org.jackhuang.hmcl.auth.AuthenticationException; import org.jackhuang.hmcl.auth.CharacterSelector; import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilService; import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilSession; -import org.jackhuang.hmcl.util.function.ExceptionalSupplier; - -import java.io.IOException; import java.util.Map; import java.util.Objects; import java.util.function.Function; @@ -32,14 +29,14 @@ import java.util.function.Function; import static org.jackhuang.hmcl.util.Lang.tryCast; public class AuthlibInjectorAccountFactory extends AccountFactory { - private ExceptionalSupplier authlibInjectorDownloader; + private AuthlibInjectorDownloader downloader; private Function serverLookup; /** * @param serverLookup a function that looks up {@link AuthlibInjectorServer} by url */ - public AuthlibInjectorAccountFactory(ExceptionalSupplier authlibInjectorDownloader, Function serverLookup) { - this.authlibInjectorDownloader = authlibInjectorDownloader; + public AuthlibInjectorAccountFactory(AuthlibInjectorDownloader downloader, Function serverLookup) { + this.downloader = downloader; this.serverLookup = serverLookup; } @@ -52,7 +49,7 @@ public class AuthlibInjectorAccountFactory extends AccountFactory getArtifactInfoImmediately() { + return getLocalArtifact(); + } + private void update(Optional local) throws IOException { LOG.info("Checking update of authlib-injector"); AuthlibInjectorVersionInfo latest = getLatestArtifactInfo();