NOISSUE Remove special FTB logic from generic version patch code

This commit is contained in:
Petr Mrázek 2015-04-04 02:01:52 +02:00
parent 865b200571
commit c7b39fe116
6 changed files with 35 additions and 29 deletions

View File

@ -27,7 +27,7 @@ void FTBProfileStrategy::loadDefaultBuiltinPatches()
{ {
auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false); auto file = ProfileUtils::parseJsonFile(QFileInfo(mcJson), false);
file->fileId = "net.minecraft"; file->fileId = "net.minecraft";
file->name = "Minecraft (FTB tracked)"; file->name = QObject::tr("Minecraft (tracked)");
if(file->version.isEmpty()) if(file->version.isEmpty())
{ {
file->version = mcVersion; file->version = mcVersion;
@ -48,12 +48,33 @@ void FTBProfileStrategy::loadDefaultBuiltinPatches()
// load up the base minecraft patch // load up the base minecraft patch
if(QFile::exists(mcJson)) 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->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()) 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); minecraftPatch = std::dynamic_pointer_cast<ProfilePatch>(file);
} }

View File

@ -87,7 +87,7 @@ void OneSixProfileStrategy::loadDefaultBuiltinPatches()
// TODO: this is obviously fake. // TODO: this is obviously fake.
QResource LWJGL(":/versions/LWJGL/2.9.1.json"); 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); auto lwjglPatch = std::dynamic_pointer_cast<ProfilePatch>(lwjgl);
if (!lwjglPatch) if (!lwjglPatch)
{ {

View File

@ -98,7 +98,7 @@ bool readOverrideOrders(QString path, PatchOrder &order)
return true; return true;
} }
VersionFilePtr parseJsonFile(const QFileInfo &fileInfo, const bool requireOrder, bool isFTB) VersionFilePtr parseJsonFile(const QFileInfo &fileInfo, const bool requireOrder)
{ {
QFile file(fileInfo.absoluteFilePath()); QFile file(fileInfo.absoluteFilePath());
if (!file.open(QFile::ReadOnly)) if (!file.open(QFile::ReadOnly))
@ -115,7 +115,7 @@ VersionFilePtr parseJsonFile(const QFileInfo &fileInfo, const bool requireOrder,
.arg(fileInfo.fileName(), error.errorString()) .arg(fileInfo.fileName(), error.errorString())
.arg(error.offset)); .arg(error.offset));
} }
return VersionFile::fromJson(doc, file.fileName(), requireOrder, isFTB); return VersionFile::fromJson(doc, file.fileName(), requireOrder);
} }
VersionFilePtr parseBinaryJsonFile(const QFileInfo &fileInfo) VersionFilePtr parseBinaryJsonFile(const QFileInfo &fileInfo)
@ -134,7 +134,7 @@ VersionFilePtr parseBinaryJsonFile(const QFileInfo &fileInfo)
throw JSONValidationError( throw JSONValidationError(
QObject::tr("Unable to process the version file %1.").arg(fileInfo.fileName())); 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) void removeLwjglFromPatch(VersionFilePtr patch)

View File

@ -14,7 +14,7 @@ bool writeOverrideOrders(QString path, const PatchOrder &order);
/// Parse a version file in JSON format /// 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 /// Parse a version file in binary JSON format
VersionFilePtr parseBinaryJsonFile(const QFileInfo &fileInfo); VersionFilePtr parseBinaryJsonFile(const QFileInfo &fileInfo);

View File

@ -34,7 +34,7 @@ int findLibraryByName(QList<OneSixLibraryPtr> haystack, const GradleSpecifier &n
} }
VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &filename, VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &filename,
const bool requireOrder, const bool isFTB) const bool requireOrder)
{ {
VersionFilePtr out(new VersionFile()); VersionFilePtr out(new VersionFile());
if (doc.isEmpty() || doc.isNull()) if (doc.isEmpty() || doc.isNull())
@ -84,11 +84,7 @@ VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &fi
return QString(); return QString();
}; };
// FIXME: This should be ignored when applying.
if (!isFTB)
{
readString("id", out->id); readString("id", out->id);
}
readString("mainClass", out->mainClass); readString("mainClass", out->mainClass);
readString("appletClass", out->appletClass); readString("appletClass", out->appletClass);
@ -143,26 +139,15 @@ VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &fi
if (root.contains("libraries")) if (root.contains("libraries"))
{ {
// FIXME: This should be done when applying. out->shouldOverwriteLibs = true;
out->shouldOverwriteLibs = !isFTB;
for (auto libVal : ensureArray(root.value("libraries"))) for (auto libVal : ensureArray(root.value("libraries")))
{ {
auto libObj = ensureObject(libVal); auto libObj = ensureObject(libVal);
auto lib = RawLibrary::fromJson(libObj, filename); 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);
} }
} }
}
if (root.contains("+jarMods")) if (root.contains("+jarMods"))
{ {

View File

@ -19,7 +19,7 @@ class VersionFile : public ProfilePatch
{ {
public: /* methods */ public: /* methods */
static VersionFilePtr fromJson(const QJsonDocument &doc, const QString &filename, static VersionFilePtr fromJson(const QJsonDocument &doc, const QString &filename,
const bool requireOrder, const bool isFTB = false); const bool requireOrder);
QJsonDocument toJson(bool saveOrder); QJsonDocument toJson(bool saveOrder);
virtual void applyTo(MinecraftProfile *version) override; virtual void applyTo(MinecraftProfile *version) override;