NOISSUE handle 'folder' Flame packages by ignoring them, show warnings for minor Flame import problems
This commit is contained in:
parent
5937b1c3d4
commit
58ead6a1f4
@ -373,6 +373,10 @@ protected:
|
|||||||
{
|
{
|
||||||
m_child->start();
|
m_child->start();
|
||||||
}
|
}
|
||||||
|
QStringList warnings() const override
|
||||||
|
{
|
||||||
|
return m_child->warnings();
|
||||||
|
}
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void childSucceded()
|
void childSucceded()
|
||||||
|
@ -150,7 +150,7 @@ void InstanceImportTask::extractFinished()
|
|||||||
{
|
{
|
||||||
if(!QFile::setPermissions(filepath, permissions))
|
if(!QFile::setPermissions(filepath, permissions))
|
||||||
{
|
{
|
||||||
qWarning() << "Could not fix" << filepath;
|
logWarning(tr("Could not fix permissions for %1").arg(filepath));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -213,7 +213,7 @@ void InstanceImportTask::processFlame()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
qWarning() << "The specified overrides folder is missing. Maybe the modpack was already used before?";
|
logWarning(tr("The specified overrides folder (%1) is missing. Maybe the modpack was already used before?").arg(pack.overrides));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +227,7 @@ void InstanceImportTask::processFlame()
|
|||||||
forgeVersion = id;
|
forgeVersion = id;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
qWarning() << "Unknown mod loader in manifest:" << id;
|
logWarning(tr("Unknown mod loader in manifest: %1").arg(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
QString configPath = FS::PathCombine(m_stagingPath, "instance.cfg");
|
QString configPath = FS::PathCombine(m_stagingPath, "instance.cfg");
|
||||||
@ -240,7 +240,7 @@ void InstanceImportTask::processFlame()
|
|||||||
if(mcVersion.endsWith('.'))
|
if(mcVersion.endsWith('.'))
|
||||||
{
|
{
|
||||||
mcVersion.remove(QRegExp("[.]+$"));
|
mcVersion.remove(QRegExp("[.]+$"));
|
||||||
qWarning() << "Mysterious trailing dots removed from Minecraft version while importing pack.";
|
logWarning(tr("Mysterious trailing dots removed from Minecraft version while importing pack."));
|
||||||
}
|
}
|
||||||
auto components = instance.getComponentList();
|
auto components = instance.getComponentList();
|
||||||
components->buildingFromScratch();
|
components->buildingFromScratch();
|
||||||
@ -256,7 +256,7 @@ void InstanceImportTask::processFlame()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
qWarning() << "Could not map recommended forge version for" << mcVersion;
|
logWarning(tr("Could not map recommended forge version for Minecraft %1").arg(mcVersion));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
components->setComponentVersion("net.minecraftforge", forgeVersion);
|
components->setComponentVersion("net.minecraftforge", forgeVersion);
|
||||||
@ -313,9 +313,33 @@ void InstanceImportTask::processFlame()
|
|||||||
{
|
{
|
||||||
filename += ".disabled";
|
filename += ".disabled";
|
||||||
}
|
}
|
||||||
auto path = FS::PathCombine(m_stagingPath ,"minecraft", result.targetFolder, filename);
|
|
||||||
auto dl = Net::Download::makeFile(result.url, path);
|
auto relpath = FS::PathCombine("minecraft", result.targetFolder, filename);
|
||||||
m_filesNetJob->addNetAction(dl);
|
auto path = FS::PathCombine(m_stagingPath , relpath);
|
||||||
|
|
||||||
|
switch(result.type)
|
||||||
|
{
|
||||||
|
case Flame::File::Type::Folder:
|
||||||
|
{
|
||||||
|
logWarning(tr("This 'Folder' may need extracting: %1").arg(relpath));
|
||||||
|
// fall-through intentional, we treat these as plain old mods and dump them wherever.
|
||||||
|
}
|
||||||
|
case Flame::File::Type::SingleFile:
|
||||||
|
case Flame::File::Type::Mod:
|
||||||
|
{
|
||||||
|
auto dl = Net::Download::makeFile(result.url, path);
|
||||||
|
m_filesNetJob->addNetAction(dl);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case Flame::File::Type::Modpack:
|
||||||
|
logWarning(tr("Nesting modpacks in modpacks is not implemented, nothing was downloaded: %1").arg(relpath));
|
||||||
|
break;
|
||||||
|
case Flame::File::Type::Cmod2:
|
||||||
|
case Flame::File::Type::Ctoc:
|
||||||
|
case Flame::File::Type::Unknown:
|
||||||
|
logWarning(tr("Unrecognized/unhandled PackageType for: %1").arg(relpath));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_modIdResolver.reset();
|
m_modIdResolver.reset();
|
||||||
connect(m_filesNetJob.get(), &NetJob::succeeded, this, [&]()
|
connect(m_filesNetJob.get(), &NetJob::succeeded, this, [&]()
|
||||||
|
@ -59,8 +59,6 @@ void Flame::FileResolvingTask::netJobFinished()
|
|||||||
{
|
{
|
||||||
out.type = File::Type::SingleFile;
|
out.type = File::Type::SingleFile;
|
||||||
}
|
}
|
||||||
// FIXME: what are these?
|
|
||||||
/*
|
|
||||||
else if(strType == "ctoc")
|
else if(strType == "ctoc")
|
||||||
{
|
{
|
||||||
out.type = File::Type::Ctoc;
|
out.type = File::Type::Ctoc;
|
||||||
@ -69,13 +67,10 @@ void Flame::FileResolvingTask::netJobFinished()
|
|||||||
{
|
{
|
||||||
out.type = File::Type::Cmod2;
|
out.type = File::Type::Cmod2;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
else if(strType == "mod")
|
else if(strType == "mod")
|
||||||
{
|
{
|
||||||
out.type = File::Type::Mod;
|
out.type = File::Type::Mod;
|
||||||
}
|
}
|
||||||
// FIXME: how to handle nested packs and folders?
|
|
||||||
/*
|
|
||||||
else if(strType == "folder")
|
else if(strType == "folder")
|
||||||
{
|
{
|
||||||
out.type = File::Type::Folder;
|
out.type = File::Type::Folder;
|
||||||
@ -84,7 +79,6 @@ void Flame::FileResolvingTask::netJobFinished()
|
|||||||
{
|
{
|
||||||
out.type = File::Type::Modpack;
|
out.type = File::Type::Modpack;
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
qCritical() << "Resolving of" << out.projectId << out.fileId << "failed because of unknown file type:" << strType;
|
qCritical() << "Resolving of" << out.projectId << out.fileId << "failed because of unknown file type:" << strType;
|
||||||
|
@ -134,3 +134,13 @@ QString Task::failReason() const
|
|||||||
return m_failReason;
|
return m_failReason;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Task::logWarning(const QString& line)
|
||||||
|
{
|
||||||
|
qWarning() << line;
|
||||||
|
m_Warnings.append(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStringList Task::warnings() const
|
||||||
|
{
|
||||||
|
return m_Warnings;
|
||||||
|
}
|
||||||
|
@ -37,6 +37,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
QString failReason() const;
|
QString failReason() const;
|
||||||
|
|
||||||
|
virtual QStringList warnings() const;
|
||||||
|
|
||||||
virtual bool canAbort() const { return false; }
|
virtual bool canAbort() const { return false; }
|
||||||
|
|
||||||
QString getStatus()
|
QString getStatus()
|
||||||
@ -54,6 +56,9 @@ public:
|
|||||||
return m_progressTotal;
|
return m_progressTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void logWarning(const QString & line);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString describe();
|
QString describe();
|
||||||
|
|
||||||
@ -85,6 +90,7 @@ private:
|
|||||||
bool m_running = false;
|
bool m_running = false;
|
||||||
bool m_finished = false;
|
bool m_finished = false;
|
||||||
bool m_succeeded = false;
|
bool m_succeeded = false;
|
||||||
|
QStringList m_Warnings;
|
||||||
QString m_failReason = "";
|
QString m_failReason = "";
|
||||||
QString m_status;
|
QString m_status;
|
||||||
int m_progress = 0;
|
int m_progress = 0;
|
||||||
|
@ -1239,7 +1239,11 @@ void MainWindow::runModalTask(Task *task)
|
|||||||
{
|
{
|
||||||
connect(task, &Task::failed, [this](QString reason)
|
connect(task, &Task::failed, [this](QString reason)
|
||||||
{
|
{
|
||||||
CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Warning)->show();
|
CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show();
|
||||||
|
});
|
||||||
|
connect(task, &Task::succeeded, [this, task]()
|
||||||
|
{
|
||||||
|
CustomMessageBox::selectable(this, tr("Warnings"), task->warnings().join('\n'), QMessageBox::Warning)->show();
|
||||||
});
|
});
|
||||||
ProgressDialog loadDialog(this);
|
ProgressDialog loadDialog(this);
|
||||||
loadDialog.setSkipButton(true, tr("Abort"));
|
loadDialog.setSkipButton(true, tr("Abort"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user