diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModpackUpdateTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModpackUpdateTask.java new file mode 100644 index 000000000..5e7e4df39 --- /dev/null +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/ModpackUpdateTask.java @@ -0,0 +1,4 @@ +package org.jackhuang.hmcl.mod; + +public class ModpackUpdateTask { +} diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java index b1e6dee6a..376aafda7 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/Task.java @@ -95,6 +95,16 @@ public abstract class Task { dependentsSucceeded = true; } + private boolean dependenciesSucceeded = false; + + public boolean isDependenciesSucceeded() { + return dependenciesSucceeded; + } + + void setDependenciesSucceeded() { + dependenciesSucceeded = true; + } + /** * True if requires all {@link #getDependents} finishing successfully. *
diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java index a544a5bf3..eaff5d0d4 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java @@ -185,11 +185,15 @@ public final class TaskExecutor { variables.set(taskResult.getId(), taskResult.getResult()); } - if (!executeTasks(task.getDependencies()) && task.isRelyingOnDependencies()) { + boolean doDependenciesSucceeded = executeTasks(task.getDependencies()); + if (!doDependenciesSucceeded && task.isRelyingOnDependencies()) { Logging.LOG.severe("Subtasks failed for " + task.getName()); throw new SilentException(); } + if (doDependenciesSucceeded) + task.setDependenciesSucceeded(); + try { task.getScheduler().schedule(task::postExecute).get(); } catch (ExecutionException e) {