NOISSUE Remove special FTB logic from generic version patch code
This commit is contained in:
		@@ -27,7 +27,7 @@ void FTBProfileStrategy::loadDefaultBuiltinPatches()
 | 
			
		||||
		{
 | 
			
		||||
			auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false);
 | 
			
		||||
			file->fileId = "net.minecraft";
 | 
			
		||||
			file->name = "Minecraft (FTB tracked)";
 | 
			
		||||
			file->name = QObject::tr("Minecraft (tracked)");
 | 
			
		||||
			if(file->version.isEmpty())
 | 
			
		||||
			{
 | 
			
		||||
				file->version = mcVersion;
 | 
			
		||||
@@ -48,12 +48,33 @@ void FTBProfileStrategy::loadDefaultBuiltinPatches()
 | 
			
		||||
		// load up the base minecraft patch
 | 
			
		||||
		if(QFile::exists(mcJson))
 | 
			
		||||
		{
 | 
			
		||||
			auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false, true);
 | 
			
		||||
			auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false);
 | 
			
		||||
 | 
			
		||||
			// adapt the loaded file - the FTB patch file format is different than ours.
 | 
			
		||||
			file->addLibs = file->overwriteLibs;
 | 
			
		||||
			file->overwriteLibs.clear();
 | 
			
		||||
			file->shouldOverwriteLibs = false;
 | 
			
		||||
			file->id.clear();
 | 
			
		||||
			for(auto addLib: file->addLibs)
 | 
			
		||||
			{
 | 
			
		||||
				addLib->m_hint = "local";
 | 
			
		||||
				addLib->insertType = RawLibrary::Prepend;
 | 
			
		||||
			}
 | 
			
		||||
			file->fileId = "org.multimc.ftb.pack";
 | 
			
		||||
			file->name = QString("%1 (FTB tracked)").arg(m_instance->name());
 | 
			
		||||
			file->name = QObject::tr("%1 (FTB pack)").arg(m_instance->name());
 | 
			
		||||
			if(file->version.isEmpty())
 | 
			
		||||
			{
 | 
			
		||||
				file->version = mcVersion;
 | 
			
		||||
				file->version = QObject::tr("Unknown");
 | 
			
		||||
				QFile versionFile (PathCombine(m_instance->instanceRoot(), "version"));
 | 
			
		||||
				if(versionFile.exists())
 | 
			
		||||
				{
 | 
			
		||||
					if(versionFile.open(QIODevice::ReadOnly))
 | 
			
		||||
					{
 | 
			
		||||
						// FIXME: just guessing the encoding/charset here.
 | 
			
		||||
						auto version = QString::fromUtf8(versionFile.readAll());
 | 
			
		||||
						file->version = version;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			minecraftPatch = std::dynamic_pointer_cast<ProfilePatch>(file);
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -87,7 +87,7 @@ void OneSixProfileStrategy::loadDefaultBuiltinPatches()
 | 
			
		||||
 | 
			
		||||
	// TODO: this is obviously fake.
 | 
			
		||||
	QResource LWJGL(":/versions/LWJGL/2.9.1.json");
 | 
			
		||||
	auto lwjgl = ProfileUtils::parseJsonFile(LWJGL.absoluteFilePath(), false, false);
 | 
			
		||||
	auto lwjgl = ProfileUtils::parseJsonFile(LWJGL.absoluteFilePath(), false);
 | 
			
		||||
	auto lwjglPatch = std::dynamic_pointer_cast<ProfilePatch>(lwjgl);
 | 
			
		||||
	if (!lwjglPatch)
 | 
			
		||||
	{
 | 
			
		||||
 
 | 
			
		||||
@@ -98,7 +98,7 @@ bool readOverrideOrders(QString path, PatchOrder &order)
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
VersionFilePtr parseJsonFile(const QFileInfo &fileInfo, const bool requireOrder, bool isFTB)
 | 
			
		||||
VersionFilePtr parseJsonFile(const QFileInfo &fileInfo, const bool requireOrder)
 | 
			
		||||
{
 | 
			
		||||
	QFile file(fileInfo.absoluteFilePath());
 | 
			
		||||
	if (!file.open(QFile::ReadOnly))
 | 
			
		||||
@@ -115,7 +115,7 @@ VersionFilePtr parseJsonFile(const QFileInfo &fileInfo, const bool requireOrder,
 | 
			
		||||
				.arg(fileInfo.fileName(), error.errorString())
 | 
			
		||||
				.arg(error.offset));
 | 
			
		||||
	}
 | 
			
		||||
	return VersionFile::fromJson(doc, file.fileName(), requireOrder, isFTB);
 | 
			
		||||
	return VersionFile::fromJson(doc, file.fileName(), requireOrder);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
VersionFilePtr parseBinaryJsonFile(const QFileInfo &fileInfo)
 | 
			
		||||
@@ -134,7 +134,7 @@ VersionFilePtr parseBinaryJsonFile(const QFileInfo &fileInfo)
 | 
			
		||||
		throw JSONValidationError(
 | 
			
		||||
			QObject::tr("Unable to process the version file %1.").arg(fileInfo.fileName()));
 | 
			
		||||
	}
 | 
			
		||||
	return VersionFile::fromJson(doc, file.fileName(), false, false);
 | 
			
		||||
	return VersionFile::fromJson(doc, file.fileName(), false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void removeLwjglFromPatch(VersionFilePtr patch)
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ bool writeOverrideOrders(QString path, const PatchOrder &order);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/// Parse a version file in JSON format
 | 
			
		||||
VersionFilePtr parseJsonFile(const QFileInfo &fileInfo, const bool requireOrder, bool isFTB = false);
 | 
			
		||||
VersionFilePtr parseJsonFile(const QFileInfo &fileInfo, const bool requireOrder);
 | 
			
		||||
 | 
			
		||||
/// Parse a version file in binary JSON format
 | 
			
		||||
VersionFilePtr parseBinaryJsonFile(const QFileInfo &fileInfo);
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@ int findLibraryByName(QList<OneSixLibraryPtr> haystack, const GradleSpecifier &n
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &filename,
 | 
			
		||||
									 const bool requireOrder, const bool isFTB)
 | 
			
		||||
									 const bool requireOrder)
 | 
			
		||||
{
 | 
			
		||||
	VersionFilePtr out(new VersionFile());
 | 
			
		||||
	if (doc.isEmpty() || doc.isNull())
 | 
			
		||||
@@ -84,11 +84,7 @@ VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &fi
 | 
			
		||||
		return QString();
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	// FIXME: This should be ignored when applying.
 | 
			
		||||
	if (!isFTB)
 | 
			
		||||
	{
 | 
			
		||||
		readString("id", out->id);
 | 
			
		||||
	}
 | 
			
		||||
	readString("id", out->id);
 | 
			
		||||
 | 
			
		||||
	readString("mainClass", out->mainClass);
 | 
			
		||||
	readString("appletClass", out->appletClass);
 | 
			
		||||
@@ -143,24 +139,13 @@ VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &fi
 | 
			
		||||
 | 
			
		||||
	if (root.contains("libraries"))
 | 
			
		||||
	{
 | 
			
		||||
		// FIXME: This should be done when applying.
 | 
			
		||||
		out->shouldOverwriteLibs = !isFTB;
 | 
			
		||||
		out->shouldOverwriteLibs = true;
 | 
			
		||||
		for (auto libVal : ensureArray(root.value("libraries")))
 | 
			
		||||
		{
 | 
			
		||||
			auto libObj = ensureObject(libVal);
 | 
			
		||||
 | 
			
		||||
			auto lib = RawLibrary::fromJson(libObj, filename);
 | 
			
		||||
			// FIXME: This should be done when applying.
 | 
			
		||||
			if (isFTB)
 | 
			
		||||
			{
 | 
			
		||||
				lib->m_hint = "local";
 | 
			
		||||
				lib->insertType = RawLibrary::Prepend;
 | 
			
		||||
				out->addLibs.prepend(lib);
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				out->overwriteLibs.append(lib);
 | 
			
		||||
			}
 | 
			
		||||
			out->overwriteLibs.append(lib);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ class VersionFile : public ProfilePatch
 | 
			
		||||
{
 | 
			
		||||
public: /* methods */
 | 
			
		||||
	static VersionFilePtr fromJson(const QJsonDocument &doc, const QString &filename,
 | 
			
		||||
								   const bool requireOrder, const bool isFTB = false);
 | 
			
		||||
								   const bool requireOrder);
 | 
			
		||||
	QJsonDocument toJson(bool saveOrder);
 | 
			
		||||
 | 
			
		||||
	virtual void applyTo(MinecraftProfile *version) override;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user