NOISSUE move version file reading and writing to dedicated namespaces
This commit is contained in:
parent
17ad1e64f8
commit
a0b47aee5b
16 changed files with 328 additions and 308 deletions
71
logic/minecraft/MojangVersionFormat.cpp
Normal file
71
logic/minecraft/MojangVersionFormat.cpp
Normal file
|
@ -0,0 +1,71 @@
|
|||
#include "MojangVersionFormat.h"
|
||||
|
||||
#include "Json.h"
|
||||
using namespace Json;
|
||||
|
||||
static const int CURRENT_MINIMUM_LAUNCHER_VERSION = 14;
|
||||
|
||||
// FIXME: duplicated in OneSixVersionFormat!
|
||||
static void readString(const QJsonObject &root, const QString &key, QString &variable)
|
||||
{
|
||||
if (root.contains(key))
|
||||
{
|
||||
variable = requireString(root.value(key));
|
||||
}
|
||||
}
|
||||
|
||||
VersionFilePtr MojangVersionFormat::fromJson(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"))
|
||||
{
|
||||
auto minimumLauncherVersion = requireInteger(root.value("minimumLauncherVersion"));
|
||||
if (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(minimumLauncherVersion)
|
||||
.arg(CURRENT_MINIMUM_LAUNCHER_VERSION));
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue