mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-14 14:26:43 -04:00
Fix curse mod downloading
This commit is contained in:
parent
630f164877
commit
eb565285b2
@ -27,6 +27,7 @@ import org.jackhuang.hmcl.download.DefaultDependencyManager;
|
|||||||
import org.jackhuang.hmcl.download.MaintainTask;
|
import org.jackhuang.hmcl.download.MaintainTask;
|
||||||
import org.jackhuang.hmcl.launch.*;
|
import org.jackhuang.hmcl.launch.*;
|
||||||
import org.jackhuang.hmcl.mod.CurseCompletionTask;
|
import org.jackhuang.hmcl.mod.CurseCompletionTask;
|
||||||
|
import org.jackhuang.hmcl.mod.ModpackConfiguration;
|
||||||
import org.jackhuang.hmcl.setting.LauncherVisibility;
|
import org.jackhuang.hmcl.setting.LauncherVisibility;
|
||||||
import org.jackhuang.hmcl.setting.Profile;
|
import org.jackhuang.hmcl.setting.Profile;
|
||||||
import org.jackhuang.hmcl.setting.Settings;
|
import org.jackhuang.hmcl.setting.Settings;
|
||||||
@ -76,7 +77,7 @@ public final class LauncherHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void launch0(Profile profile, Account account, String selectedVersion, File scriptFile) {
|
private void launch0(Profile profile, Account account, String selectedVersion, File scriptFile) {
|
||||||
GameRepository repository = profile.getRepository();
|
HMCLGameRepository repository = profile.getRepository();
|
||||||
DefaultDependencyManager dependencyManager = profile.getDependency();
|
DefaultDependencyManager dependencyManager = profile.getDependency();
|
||||||
Version version = MaintainTask.maintain(repository.getResolvedVersion(selectedVersion));
|
Version version = MaintainTask.maintain(repository.getResolvedVersion(selectedVersion));
|
||||||
VersionSetting setting = profile.getVersionSetting(selectedVersion);
|
VersionSetting setting = profile.getVersionSetting(selectedVersion);
|
||||||
@ -90,7 +91,13 @@ public final class LauncherHelper {
|
|||||||
return dependencyManager.checkGameCompletionAsync(version);
|
return dependencyManager.checkGameCompletionAsync(version);
|
||||||
})
|
})
|
||||||
.then(Task.of(Schedulers.javafx(), () -> emitStatus(LoadingState.MODS)))
|
.then(Task.of(Schedulers.javafx(), () -> emitStatus(LoadingState.MODS)))
|
||||||
.then(new CurseCompletionTask(dependencyManager, selectedVersion))
|
.then(var -> {
|
||||||
|
ModpackConfiguration<?> configuration = ModpackHelper.readModpackConfiguration(repository.getModpackConfiguration(selectedVersion));
|
||||||
|
if ("Curse".equals(configuration.getType()))
|
||||||
|
return new CurseCompletionTask(dependencyManager, selectedVersion);
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
})
|
||||||
.then(Task.of(Schedulers.javafx(), () -> emitStatus(LoadingState.LOGGING_IN)))
|
.then(Task.of(Schedulers.javafx(), () -> emitStatus(LoadingState.LOGGING_IN)))
|
||||||
.then(Task.of(Launcher.i18n("account.methods"), variables -> {
|
.then(Task.of(Launcher.i18n("account.methods"), variables -> {
|
||||||
try {
|
try {
|
||||||
|
@ -59,12 +59,12 @@ public final class ModpackHelper {
|
|||||||
throw new UnsupportedModpackException(file.toString());
|
throw new UnsupportedModpackException(file.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T> ModpackConfiguration<T> readModpackConfiguration(File file) throws IOException {
|
public static ModpackConfiguration<?> readModpackConfiguration(File file) throws IOException {
|
||||||
if (!file.exists())
|
if (!file.exists())
|
||||||
throw new FileNotFoundException(file.getPath());
|
throw new FileNotFoundException(file.getPath());
|
||||||
else
|
else
|
||||||
try {
|
try {
|
||||||
return Constants.GSON.fromJson(FileUtils.readText(file), new TypeToken<ModpackConfiguration<T>>() {
|
return Constants.GSON.fromJson(FileUtils.readText(file), new TypeToken<ModpackConfiguration<?>>() {
|
||||||
}.getType());
|
}.getType());
|
||||||
} catch (JsonParseException e) {
|
} catch (JsonParseException e) {
|
||||||
throw new IOException("Malformed modpack configuration");
|
throw new IOException("Malformed modpack configuration");
|
||||||
|
@ -69,7 +69,7 @@ public final class DownloadWizardProvider implements WizardProvider {
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
File selected = tryCast(settings.get(ModpackPage.MODPACK_FILE), File.class).orElse(null);
|
File selected = tryCast(settings.get(ModpackPage.MODPACK_FILE), File.class).orElse(null);
|
||||||
Modpack modpack = tryCast(settings.get(ModpackPage.MODPACK_CURSEFORGE_MANIFEST), Modpack.class).orElse(null);
|
Modpack modpack = tryCast(settings.get(ModpackPage.MODPACK_MANIFEST), Modpack.class).orElse(null);
|
||||||
String name = tryCast(settings.get(ModpackPage.MODPACK_NAME), String.class).orElse(null);
|
String name = tryCast(settings.get(ModpackPage.MODPACK_NAME), String.class).orElse(null);
|
||||||
if (selected == null || modpack == null || name == null) return null;
|
if (selected == null || modpack == null || name == null) return null;
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ public final class ModpackPage extends StackPane implements WizardPage {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
manifest = ModpackHelper.readModpackManifest(selectedFile);
|
manifest = ModpackHelper.readModpackManifest(selectedFile);
|
||||||
controller.getSettings().put(MODPACK_CURSEFORGE_MANIFEST, manifest);
|
controller.getSettings().put(MODPACK_MANIFEST, manifest);
|
||||||
lblName.setText(manifest.getName());
|
lblName.setText(manifest.getName());
|
||||||
lblVersion.setText(manifest.getVersion());
|
lblVersion.setText(manifest.getVersion());
|
||||||
lblAuthor.setText(manifest.getAuthor());
|
lblAuthor.setText(manifest.getAuthor());
|
||||||
@ -130,5 +130,5 @@ public final class ModpackPage extends StackPane implements WizardPage {
|
|||||||
|
|
||||||
public static final String MODPACK_FILE = "MODPACK_FILE";
|
public static final String MODPACK_FILE = "MODPACK_FILE";
|
||||||
public static final String MODPACK_NAME = "MODPACK_NAME";
|
public static final String MODPACK_NAME = "MODPACK_NAME";
|
||||||
public static final String MODPACK_CURSEFORGE_MANIFEST = "CURSEFORGE_MANIFEST";
|
public static final String MODPACK_MANIFEST = "MODPACK_MANIFEST";
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,10 @@ public final class CurseInstallTask extends Task {
|
|||||||
throw new IOException("Unable to delete mod file " + oldFile);
|
throw new IOException("Unable to delete mod file " + oldFile);
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies.add(new CurseCompletionTask(dependencyManager, name));
|
File root = repository.getVersionRoot(name);
|
||||||
|
FileUtils.writeText(new File(root, "manifest.json"), Constants.GSON.toJson(manifest));
|
||||||
|
|
||||||
|
dependencies.add(new CurseCompletionTask(dependencyManager, name, manifest));
|
||||||
dependencies.add(new MinecraftInstanceTask<>(zipFile, manifest.getOverrides(), manifest, MODPACK_TYPE, repository.getModpackConfiguration(name)));
|
dependencies.add(new MinecraftInstanceTask<>(zipFile, manifest.getOverrides(), manifest, MODPACK_TYPE, repository.getModpackConfiguration(name)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user