diff options
Diffstat (limited to 'logic')
-rw-r--r-- | logic/minecraft/MojangVersionFormat.cpp | 25 | ||||
-rw-r--r-- | logic/minecraft/MojangVersionFormat.h | 2 | ||||
-rw-r--r-- | logic/minecraft/VersionFile.h | 49 |
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; }; |