From 0f4e6a01bcf4461e5544d63e15d8b0d5b600caef Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Sun, 19 Aug 2018 01:18:57 +0800 Subject: [PATCH] Fix unable to install more than one libraries --- .../hmcl/ui/download/InstallerWizardProvider.java | 8 ++++---- .../jackhuang/hmcl/download/DefaultDependencyManager.java | 6 ++++++ .../org/jackhuang/hmcl/download/DefaultGameBuilder.java | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/InstallerWizardProvider.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/InstallerWizardProvider.java index 087845ea0..5c4d16538 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/InstallerWizardProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/download/InstallerWizardProvider.java @@ -85,16 +85,16 @@ public final class InstallerWizardProvider implements WizardProvider { settings.put("success_message", i18n("install.success")); settings.put("failure_message", i18n("install.failed")); - Task ret = Task.empty(); + Task ret = Task.ofResult("version", () -> version); if (settings.containsKey("forge")) - ret = ret.then(profile.getDependency().installLibraryAsync(version, (RemoteVersion) settings.get("forge"))); + ret = ret.then(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("forge"))); if (settings.containsKey("liteloader")) - ret = ret.then(profile.getDependency().installLibraryAsync(version, (RemoteVersion) settings.get("liteloader"))); + ret = ret.then(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("liteloader"))); if (settings.containsKey("optifine")) - ret = ret.then(profile.getDependency().installLibraryAsync(version, (RemoteVersion) settings.get("optifine"))); + ret = ret.then(profile.getDependency().installLibraryAsync((RemoteVersion) settings.get("optifine"))); return ret.then(profile.getRepository().refreshVersionsAsync()); } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultDependencyManager.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultDependencyManager.java index c7a84d427..c92d7bee0 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultDependencyManager.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultDependencyManager.java @@ -28,6 +28,8 @@ import org.jackhuang.hmcl.game.DefaultGameRepository; import org.jackhuang.hmcl.game.Version; import org.jackhuang.hmcl.task.ParallelTask; import org.jackhuang.hmcl.task.Task; +import org.jackhuang.hmcl.util.AutoTypingMap; +import org.jackhuang.hmcl.util.ExceptionalFunction; /** * Note: This class has no state. @@ -97,4 +99,8 @@ public class DefaultDependencyManager extends AbstractDependencyManager { throw new IllegalArgumentException("Remote library " + libraryVersion + " is unrecognized."); } + + public ExceptionalFunction, Task, ?> installLibraryAsync(RemoteVersion libraryVersion) { + return var -> installLibraryAsync(var.get("version"), libraryVersion); + } } diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java index 1d02fba28..0e0d53ed5 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultGameBuilder.java @@ -68,7 +68,7 @@ public class DefaultGameBuilder extends GameBuilder { result = result.then(libraryTaskHelper(gameVersion, "optifine")); for (RemoteVersion remoteVersion : remoteVersions) - result = result.then(var -> dependencyManager.installLibraryAsync(var.get("version"), remoteVersion)); + result = result.then(dependencyManager.installLibraryAsync(remoteVersion)); return result; }).finalized((variables, isDependentsSucceeded) -> {