aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--launcher/modplatform/modrinth/ModrinthPackExportTask.cpp22
-rw-r--r--launcher/modplatform/modrinth/ModrinthPackExportTask.h2
2 files changed, 15 insertions, 9 deletions
diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp
index cfb59fc3..772928e9 100644
--- a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp
+++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp
@@ -37,7 +37,13 @@ ModrinthPackExportTask::ModrinthPackExportTask(const QString& name,
InstancePtr instance,
const QString& output,
MMCZip::FilterFunction filter)
- : name(name), version(version), summary(summary), instance(instance), output(output), filter(filter)
+ : name(name)
+ , version(version)
+ , summary(summary)
+ , instance(instance)
+ , mcInstance(dynamic_cast<const MinecraftInstance*>(instance.get()))
+ , output(output)
+ , filter(filter)
{}
void ModrinthPackExportTask::executeTask()
@@ -73,17 +79,15 @@ void ModrinthPackExportTask::collectFiles()
pendingHashes.clear();
resolvedFiles.clear();
- const MinecraftInstance* mcInstance = dynamic_cast<const MinecraftInstance*>(instance.get());
- auto mods = mcInstance->loaderModList();
- mods->update();
- connect(mods.get(), &ModFolderModel::updateFinished, this, &ModrinthPackExportTask::collectHashes);
+ if (mcInstance) {
+ mcInstance->loaderModList()->update();
+ connect(mcInstance->loaderModList().get(), &ModFolderModel::updateFinished, this, &ModrinthPackExportTask::collectHashes);
+ } else
+ collectHashes();
}
void ModrinthPackExportTask::collectHashes()
{
- const MinecraftInstance* mcInstance = dynamic_cast<const MinecraftInstance*>(instance.get());
- auto mods = mcInstance->loaderModList();
-
QDir mc(instance->gameRoot());
for (QFileInfo file : files) {
QString relative = mc.relativeFilePath(file.absoluteFilePath());
@@ -110,7 +114,7 @@ void ModrinthPackExportTask::collectHashes()
}
hash.addData(data);
- auto allMods = mods->allMods();
+ auto allMods = mcInstance->loaderModList()->allMods();
if (auto modIter = std::find_if(allMods.begin(), allMods.end(), [&file](Mod* mod) { return mod->fileinfo() == file; });
modIter != allMods.end()) {
Mod* mod = *modIter;
diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.h b/launcher/modplatform/modrinth/ModrinthPackExportTask.h
index 217956db..021d8a56 100644
--- a/launcher/modplatform/modrinth/ModrinthPackExportTask.h
+++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.h
@@ -20,6 +20,7 @@
#include "BaseInstance.h"
#include "MMCZip.h"
+#include "minecraft/MinecraftInstance.h"
#include "modplatform/modrinth/ModrinthAPI.h"
#include "tasks/Task.h"
@@ -48,6 +49,7 @@ class ModrinthPackExportTask : public Task {
// inputs
const QString name, version, summary;
const InstancePtr instance;
+ const MinecraftInstance* mcInstance;
const QString output;
const MMCZip::FilterFunction filter;