summaryrefslogtreecommitdiffstats
path: root/logic/minecraft/VersionFile.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-02-27 22:02:56 +0100
committerPetr Mrázek <peterix@gmail.com>2016-02-27 22:02:56 +0100
commita0b47aee5ba8d96e5ceec12798be9f63a16dbcd5 (patch)
tree5fcdca854ff8c93ac6f5b5715a2ff3d0dc7a8ad8 /logic/minecraft/VersionFile.cpp
parent17ad1e64f824fba6d8f153191effdb2af7d387c8 (diff)
downloadMultiMC-a0b47aee5ba8d96e5ceec12798be9f63a16dbcd5.tar
MultiMC-a0b47aee5ba8d96e5ceec12798be9f63a16dbcd5.tar.gz
MultiMC-a0b47aee5ba8d96e5ceec12798be9f63a16dbcd5.tar.lz
MultiMC-a0b47aee5ba8d96e5ceec12798be9f63a16dbcd5.tar.xz
MultiMC-a0b47aee5ba8d96e5ceec12798be9f63a16dbcd5.zip
NOISSUE move version file reading and writing to dedicated namespaces
Diffstat (limited to 'logic/minecraft/VersionFile.cpp')
-rw-r--r--logic/minecraft/VersionFile.cpp265
1 files changed, 0 insertions, 265 deletions
diff --git a/logic/minecraft/VersionFile.cpp b/logic/minecraft/VersionFile.cpp
index e0b4aa85..6e2af603 100644
--- a/logic/minecraft/VersionFile.cpp
+++ b/logic/minecraft/VersionFile.cpp
@@ -9,29 +9,9 @@
#include "minecraft/JarMod.h"
#include "ParseUtils.h"
-#include "Json.h"
-using namespace Json;
-
#include "VersionBuildError.h"
#include <Version.h>
-static void readString(const QJsonObject &root, const QString &key, QString &variable)
-{
- if (root.contains(key))
- {
- variable = requireString(root.value(key));
- }
-}
-
-static QString readStringRet(const QJsonObject &root, const QString &key)
-{
- if (root.contains(key))
- {
- return requireString(root.value(key));
- }
- return QString();
-}
-
int findLibraryByName(QList<RawLibraryPtr> haystack, const GradleSpecifier &needle)
{
int retval = -1;
@@ -48,246 +28,6 @@ int findLibraryByName(QList<RawLibraryPtr> haystack, const GradleSpecifier &need
return retval;
}
-void checkMinimumLauncherVersion(VersionFilePtr out)
-{
- const int CURRENT_MINIMUM_LAUNCHER_VERSION = 14;
- if (out->minimumLauncherVersion > CURRENT_MINIMUM_LAUNCHER_VERSION)
- {
- out->addProblem(
- PROBLEM_WARNING,
- QObject::tr("The 'minimumLauncherVersion' value of this version (%1) is higher than supported by MultiMC (%2). It might not work properly!")
- .arg(out->minimumLauncherVersion)
- .arg(CURRENT_MINIMUM_LAUNCHER_VERSION));
- }
-}
-
-VersionFilePtr VersionFile::fromMojangJson(const QJsonDocument &doc, const QString &filename)
-{
- VersionFilePtr out(new VersionFile());
- if (doc.isEmpty() || doc.isNull())
- {
- throw JSONValidationError(filename + " is empty or null");
- }
- if (!doc.isObject())
- {
- throw JSONValidationError(filename + " is not an object");
- }
-
- QJsonObject root = doc.object();
-
- out->name = root.value("name").toString();
- out->fileId = root.value("fileId").toString();
- out->version = root.value("version").toString();
- out->mcVersion = root.value("mcVersion").toString();
- out->filename = filename;
-
- readString(root, "id", out->id);
-
- readString(root, "mainClass", out->mainClass);
- readString(root, "appletClass", out->appletClass);
- readString(root, "minecraftArguments", out->overwriteMinecraftArguments);
- readString(root, "type", out->type);
-
- readString(root, "assets", out->assets);
-
- if (root.contains("minimumLauncherVersion"))
- {
- out->minimumLauncherVersion = requireInteger(root.value("minimumLauncherVersion"));
- checkMinimumLauncherVersion(out);
- }
-
- if (root.contains("libraries"))
- {
- out->shouldOverwriteLibs = true;
- for (auto libVal : requireArray(root.value("libraries")))
- {
- auto libObj = requireObject(libVal);
-
- auto lib = RawLibrary::fromJson(libObj, filename);
- out->overwriteLibs.append(lib);
- }
- }
- return out;
-}
-
-VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &filename, const bool requireOrder)
-{
- VersionFilePtr out(new VersionFile());
- if (doc.isEmpty() || doc.isNull())
- {
- throw JSONValidationError(filename + " is empty or null");
- }
- if (!doc.isObject())
- {
- throw JSONValidationError(filename + " is not an object");
- }
-
- QJsonObject root = doc.object();
-
- if (requireOrder)
- {
- if (root.contains("order"))
- {
- out->order = requireInteger(root.value("order"));
- }
- else
- {
- // FIXME: evaluate if we don't want to throw exceptions here instead
- qCritical() << filename << "doesn't contain an order field";
- }
- }
-
- out->name = root.value("name").toString();
- out->fileId = root.value("fileId").toString();
- out->version = root.value("version").toString();
- out->mcVersion = root.value("mcVersion").toString();
- out->filename = filename;
-
- readString(root, "id", out->id);
-
- readString(root, "mainClass", out->mainClass);
- readString(root, "appletClass", out->appletClass);
- readString(root, "processArguments", out->processArguments);
- readString(root, "minecraftArguments", out->overwriteMinecraftArguments);
- readString(root, "+minecraftArguments", out->addMinecraftArguments);
- readString(root, "type", out->type);
-
- parse_timestamp(readStringRet(root, "releaseTime"), out->m_releaseTimeString, out->m_releaseTime);
- parse_timestamp(readStringRet(root, "time"), out->m_updateTimeString, out->m_updateTime);
-
- readString(root, "assets", out->assets);
-
- if (root.contains("minimumLauncherVersion"))
- {
- out->minimumLauncherVersion = requireInteger(root.value("minimumLauncherVersion"));
- checkMinimumLauncherVersion(out);
- }
-
- if (root.contains("tweakers"))
- {
- out->shouldOverwriteTweakers = true;
- for (auto tweakerVal : requireArray(root.value("tweakers")))
- {
- out->overwriteTweakers.append(requireString(tweakerVal));
- }
- }
-
- if (root.contains("+tweakers"))
- {
- for (auto tweakerVal : requireArray(root.value("+tweakers")))
- {
- out->addTweakers.append(requireString(tweakerVal));
- }
- }
-
-
- if (root.contains("+traits"))
- {
- for (auto tweakerVal : requireArray(root.value("+traits")))
- {
- out->traits.insert(requireString(tweakerVal));
- }
- }
-
- if (root.contains("libraries"))
- {
- out->shouldOverwriteLibs = true;
- for (auto libVal : requireArray(root.value("libraries")))
- {
- auto libObj = requireObject(libVal);
-
- auto lib = RawLibrary::fromJson(libObj, filename);
- out->overwriteLibs.append(lib);
- }
- }
-
- if (root.contains("+jarMods"))
- {
- for (auto libVal : requireArray(root.value("+jarMods")))
- {
- QJsonObject libObj = requireObject(libVal);
- // parse the jarmod
- auto lib = Jarmod::fromJson(libObj, filename, out->name);
- if(lib->originalName.isEmpty())
- {
- auto fixed = out->name;
- fixed.remove(" (jar mod)");
- lib->originalName = out->name;
- }
- // and add to jar mods
- out->jarMods.append(lib);
- }
- }
-
- if (root.contains("+libraries"))
- {
- for (auto libVal : requireArray(root.value("+libraries")))
- {
- QJsonObject libObj = requireObject(libVal);
- // parse the library
- auto lib = RawLibrary::fromJson(libObj, filename);
- out->addLibs.append(lib);
- }
- }
-
- /* removed features that shouldn't be used */
- if (root.contains("-libraries"))
- {
- out->addProblem(PROBLEM_ERROR, QObject::tr("Version file contains unsupported element '-libraries'"));
- }
- if (root.contains("-tweakers"))
- {
- out->addProblem(PROBLEM_ERROR, QObject::tr("Version file contains unsupported element '-tweakers'"));
- }
- if (root.contains("-minecraftArguments"))
- {
- out->addProblem(PROBLEM_ERROR, QObject::tr("Version file contains unsupported element '-minecraftArguments'"));
- }
- return out;
-}
-
-QJsonDocument VersionFile::toJson(bool saveOrder)
-{
- QJsonObject root;
- if (saveOrder)
- {
- root.insert("order", order);
- }
- writeString(root, "name", name);
- writeString(root, "fileId", fileId);
- writeString(root, "version", version);
- writeString(root, "mcVersion", mcVersion);
- writeString(root, "id", id);
- writeString(root, "mainClass", mainClass);
- writeString(root, "appletClass", appletClass);
- writeString(root, "processArguments", processArguments);
- writeString(root, "minecraftArguments", overwriteMinecraftArguments);
- writeString(root, "+minecraftArguments", addMinecraftArguments);
- writeString(root, "type", type);
- writeString(root, "assets", assets);
- if (isMinecraftVersion())
- {
- writeString(root, "releaseTime", m_releaseTimeString);
- writeString(root, "time", m_updateTimeString);
- }
- if (minimumLauncherVersion != -1)
- {
- root.insert("minimumLauncherVersion", minimumLauncherVersion);
- }
- writeStringList(root, "tweakers", overwriteTweakers);
- writeStringList(root, "+tweakers", addTweakers);
- writeStringList(root, "+traits", traits.toList());
- writeObjectList(root, "libraries", overwriteLibs);
- writeObjectList(root, "+libraries", addLibs);
- writeObjectList(root, "+jarMods", jarMods);
- // write the contents to a json document.
- {
- QJsonDocument out;
- out.setObject(root);
- return out;
- }
-}
-
bool VersionFile::isMinecraftVersion()
{
return fileId == "net.minecraft";
@@ -350,11 +90,6 @@ void VersionFile::applyTo(MinecraftProfile *version)
{
version->assets = assets;
}
- if (minimumLauncherVersion >= 0)
- {
- if (version->minimumLauncherVersion < minimumLauncherVersion)
- version->minimumLauncherVersion = minimumLauncherVersion;
- }
if (!overwriteMinecraftArguments.isNull())
{
if (isMinecraftVersion())