summaryrefslogtreecommitdiffstats
path: root/logic
diff options
context:
space:
mode:
Diffstat (limited to 'logic')
-rw-r--r--logic/minecraft/MojangVersionFormat.cpp25
-rw-r--r--logic/minecraft/MojangVersionFormat.h2
-rw-r--r--logic/minecraft/VersionFile.h49
3 files changed, 58 insertions, 18 deletions
diff --git a/logic/minecraft/MojangVersionFormat.cpp b/logic/minecraft/MojangVersionFormat.cpp
index 70a005c7..d1a27f9f 100644
--- a/logic/minecraft/MojangVersionFormat.cpp
+++ b/logic/minecraft/MojangVersionFormat.cpp
@@ -5,6 +5,7 @@
#include "Json.h"
using namespace Json;
+#include "ParseUtils.h"
static const int CURRENT_MINIMUM_LAUNCHER_VERSION = 14;
@@ -31,30 +32,37 @@ VersionFilePtr MojangVersionFormat::versionFileFromJson(const QJsonDocument &doc
QJsonObject root = doc.object();
- out->name = root.value("name").toString();
- out->fileId = root.value("fileId").toString();
+ out->name = "Minecraft";
+ out->fileId = "net.minecraft";
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 (!parse_timestamp(root.value("releaseTime").toString(""), out->m_releaseTimeString, out->m_releaseTime))
+ {
+ out->addProblem(PROBLEM_WARNING, QObject::tr("Invalid 'releaseTime' timestamp"));
+ }
+ if (!parse_timestamp(root.value("time").toString(""), out->m_updateTimeString, out->m_updateTime))
+ {
+ out->addProblem(PROBLEM_WARNING, QObject::tr("Invalid 'time' timestamp"));
+ }
+
if (root.contains("minimumLauncherVersion"))
{
- auto minimumLauncherVersion = requireInteger(root.value("minimumLauncherVersion"));
- if (minimumLauncherVersion > CURRENT_MINIMUM_LAUNCHER_VERSION)
+ out->minimumLauncherVersion = requireInteger(root.value("minimumLauncherVersion"));
+ 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(minimumLauncherVersion)
+ .arg(out->minimumLauncherVersion)
.arg(CURRENT_MINIMUM_LAUNCHER_VERSION));
}
}
@@ -72,7 +80,7 @@ VersionFilePtr MojangVersionFormat::versionFileFromJson(const QJsonDocument &doc
}
return out;
}
-/*
+
static QJsonDocument versionFileToJson(VersionFilePtr patch)
{
QJsonObject root;
@@ -128,4 +136,3 @@ QJsonDocument MojangVersionFormat::profilePatchToJson(const ProfilePatchPtr &pat
}
throw VersionIncomplete(QObject::tr("Unhandled object type while processing %1").arg(patch->getPatchName()));
}
-*/
diff --git a/logic/minecraft/MojangVersionFormat.h b/logic/minecraft/MojangVersionFormat.h
index da38bd62..925990ab 100644
--- a/logic/minecraft/MojangVersionFormat.h
+++ b/logic/minecraft/MojangVersionFormat.h
@@ -8,7 +8,5 @@ class MojangVersionFormat
public:
// version files / profile patches
static VersionFilePtr versionFileFromJson(const QJsonDocument &doc, const QString &filename);
- /*
static QJsonDocument profilePatchToJson(const ProfilePatchPtr &patch);
- */
};
diff --git a/logic/minecraft/VersionFile.h b/logic/minecraft/VersionFile.h
index 3486f656..df2f9bb2 100644
--- a/logic/minecraft/VersionFile.h
+++ b/logic/minecraft/VersionFile.h
@@ -102,49 +102,84 @@ public: /* methods */
public: /* data */
+ /// MultiMC: order hint for this version file if no explicit order is set
int order = 0;
+
+ // Flags for UI and version file manipulation in general
bool m_isVanilla = false;
bool m_isRemovable = false;
bool m_isRevertible = false;
bool m_isCustomizable = false;
bool m_isMovable = false;
+
+ /// MultiMC: filename of the file this was loaded from
+ QString filename;
+
+ /// MultiMC: human readable name of this package
QString name;
+
+ /// MultiMC: package ID of this package
QString fileId;
+
+ /// MultiMC: version of this package
QString version;
- // TODO use the mcVersion to determine if a version file should be removed on update
+
+ /// MultiMC: dependency on a Minecraft version
QString mcVersion;
- QString filename;
- // TODO requirements
- // QMap<QString, QString> requirements;
+
+ /// Mojang: used to version the Mojang version format
+ int minimumLauncherVersion = -1;
+
+ /// Mojang: version of Minecraft this is
QString id;
+
+ /// Mojang: class to launch Minecraft with
QString mainClass;
+
+ /// MultiMC: class to launch legacy Minecraft with (ambed in a custom window)
QString appletClass;
+
+ /// Mojang: Minecraft launch arguments (may contain placeholders for variable substitution)
QString overwriteMinecraftArguments;
+
+ /// MultiMC: Minecraft launch arguments, additive variant
QString addMinecraftArguments;
+
+ /// Mojang: DEPRECATED variant of the Minecraft arguments, hardcoded, do not use!
QString processArguments;
+
+ /// Mojang: type of the Minecraft version
QString type;
- /// the time this version was actually released by Mojang, as string and as QDateTime
+ /// Mojang: the time this version was actually released by Mojang, as string and as QDateTime
QString m_releaseTimeString;
QDateTime m_releaseTime;
- /// the time this version was last updated by Mojang, as string and as QDateTime
+ /// Mojang: the time this version was last updated by Mojang, as string and as QDateTime
QString m_updateTimeString;
QDateTime m_updateTime;
- /// asset group used by this ... thing.
+ /// Mojang: DEPRECATED asset group to be used with Minecraft
QString assets;
+ /// MultiMC: override list of tweaker mod arguments for launchwrapper (replaces the previously assembled lists)
bool shouldOverwriteTweakers = false;
QStringList overwriteTweakers;
+
+ /// MultiMC: list of tweaker mod arguments for launchwrapper
QStringList addTweakers;
+ /// MultiMC: override list of libraries (replaces the previously assembled lists)
bool shouldOverwriteLibs = false;
QList<RawLibraryPtr> overwriteLibs;
+
+ /// Mojang: list of libraries to add to the version
QList<RawLibraryPtr> addLibs;
+ /// MultiMC: list of attached traits of this version file - used to enable features
QSet<QString> traits;
+ /// MultiMC: list of jar mods added to this version
QList<JarmodPtr> jarMods;
};