NOISSUE handle 'folder' Flame packages by ignoring them, show warnings for minor Flame import problems
This commit is contained in:
		| @@ -373,6 +373,10 @@ protected: | ||||
| 	{ | ||||
| 		m_child->start(); | ||||
| 	} | ||||
| 	QStringList warnings() const override | ||||
| 	{ | ||||
| 		return m_child->warnings(); | ||||
| 	} | ||||
|  | ||||
| private slots: | ||||
| 	void childSucceded() | ||||
|   | ||||
| @@ -150,7 +150,7 @@ void InstanceImportTask::extractFinished() | ||||
| 		{ | ||||
| 			if(!QFile::setPermissions(filepath, permissions)) | ||||
| 			{ | ||||
| 				qWarning() << "Could not fix" << filepath; | ||||
| 				logWarning(tr("Could not fix permissions for %1").arg(filepath)); | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| @@ -213,7 +213,7 @@ void InstanceImportTask::processFlame() | ||||
| 		} | ||||
| 		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; | ||||
| 			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"); | ||||
| @@ -240,7 +240,7 @@ void InstanceImportTask::processFlame() | ||||
| 	if(mcVersion.endsWith('.')) | ||||
| 	{ | ||||
| 		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(); | ||||
| 	components->buildingFromScratch(); | ||||
| @@ -256,7 +256,7 @@ void InstanceImportTask::processFlame() | ||||
| 			} | ||||
| 			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); | ||||
| @@ -313,9 +313,33 @@ void InstanceImportTask::processFlame() | ||||
| 			{ | ||||
| 				filename += ".disabled"; | ||||
| 			} | ||||
| 			auto path = FS::PathCombine(m_stagingPath ,"minecraft", result.targetFolder, filename); | ||||
| 			auto dl = Net::Download::makeFile(result.url, path); | ||||
| 			m_filesNetJob->addNetAction(dl); | ||||
|  | ||||
| 			auto relpath = FS::PathCombine("minecraft", result.targetFolder, filename); | ||||
| 			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(); | ||||
| 		connect(m_filesNetJob.get(), &NetJob::succeeded, this, [&]() | ||||
|   | ||||
| @@ -59,8 +59,6 @@ void Flame::FileResolvingTask::netJobFinished() | ||||
| 				{ | ||||
| 					out.type = File::Type::SingleFile; | ||||
| 				} | ||||
| 				// FIXME: what are these? | ||||
| 				/* | ||||
| 				else if(strType == "ctoc") | ||||
| 				{ | ||||
| 					out.type = File::Type::Ctoc; | ||||
| @@ -69,13 +67,10 @@ void Flame::FileResolvingTask::netJobFinished() | ||||
| 				{ | ||||
| 					out.type = File::Type::Cmod2; | ||||
| 				} | ||||
| 				*/ | ||||
| 				else if(strType == "mod") | ||||
| 				{ | ||||
| 					out.type = File::Type::Mod; | ||||
| 				} | ||||
| 				// FIXME: how to handle nested packs and folders? | ||||
| 				/* | ||||
| 				else if(strType == "folder") | ||||
| 				{ | ||||
| 					out.type = File::Type::Folder; | ||||
| @@ -84,7 +79,6 @@ void Flame::FileResolvingTask::netJobFinished() | ||||
| 				{ | ||||
| 					out.type = File::Type::Modpack; | ||||
| 				} | ||||
| 				*/ | ||||
| 				else | ||||
| 				{ | ||||
| 					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; | ||||
| } | ||||
|  | ||||
| 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; | ||||
|  | ||||
| 	virtual QStringList warnings() const; | ||||
|  | ||||
| 	virtual bool canAbort() const { return false; } | ||||
|  | ||||
| 	QString getStatus() | ||||
| @@ -54,6 +56,9 @@ public: | ||||
| 		return m_progressTotal; | ||||
| 	} | ||||
|  | ||||
| protected: | ||||
| 	void logWarning(const QString & line); | ||||
|  | ||||
| private: | ||||
| 	QString describe(); | ||||
|  | ||||
| @@ -85,6 +90,7 @@ private: | ||||
| 	bool m_running = false; | ||||
| 	bool m_finished = false; | ||||
| 	bool m_succeeded = false; | ||||
| 	QStringList m_Warnings; | ||||
| 	QString m_failReason = ""; | ||||
| 	QString m_status; | ||||
| 	int m_progress = 0; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user