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 4427fb687..ac89e0f46 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Accounts.java @@ -40,6 +40,7 @@ import org.jackhuang.hmcl.auth.yggdrasil.YggdrasilAccountFactory; import org.jackhuang.hmcl.task.Schedulers; import java.io.IOException; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.HashMap; import java.util.Map; @@ -243,7 +244,12 @@ public final class Accounts { private static AuthlibInjectorArtifactProvider createAuthlibInjectorArtifactProvider() { String authlibinjectorLocation = System.getProperty("hmcl.authlibinjector.location"); if (authlibinjectorLocation == null) { - return new AuthlibInjectorDownloader(Metadata.HMCL_DIRECTORY, DownloadProviders::getDownloadProvider); + Path currentDirectory = Paths.get("."); + Path artifactsDirectory = AuthlibInjectorDownloader.isArtifactsDirectory(currentDirectory) + ? currentDirectory + : Metadata.HMCL_DIRECTORY; + + return new AuthlibInjectorDownloader(artifactsDirectory, DownloadProviders::getDownloadProvider); } else { LOG.info("Using specified authlib-injector: " + authlibinjectorLocation); return new SimpleAuthlibInjectorArtifactProvider(Paths.get(authlibinjectorLocation)); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorDownloader.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorDownloader.java index 82953f662..33fe053be 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorDownloader.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/auth/authlibinjector/AuthlibInjectorDownloader.java @@ -127,6 +127,10 @@ public class AuthlibInjectorDownloader implements AuthlibInjectorArtifactProvide } } + public static boolean isArtifactsDirectory(Path artifactsDirectory) { + return Files.exists(artifactsDirectory.resolve("authlib-injector.jar")); + } + private static class AuthlibInjectorVersionInfo { @SerializedName("build_number") public int buildNumber;