diff options
author | Petr Mrázek <peterix@gmail.com> | 2020-03-27 02:23:15 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2020-03-27 02:23:15 +0100 |
commit | 0281845fc840fae131856b2fda47be9b8ca1affc (patch) | |
tree | 177e1cadd39027e05b53c7ad115f8dfd7d4550ad /api/logic/minecraft/OneSixVersionFormat.cpp | |
parent | e6cc65cf69b3fb2c1fa08e6768669f826048af20 (diff) | |
download | MultiMC-0281845fc840fae131856b2fda47be9b8ca1affc.tar MultiMC-0281845fc840fae131856b2fda47be9b8ca1affc.tar.gz MultiMC-0281845fc840fae131856b2fda47be9b8ca1affc.tar.lz MultiMC-0281845fc840fae131856b2fda47be9b8ca1affc.tar.xz MultiMC-0281845fc840fae131856b2fda47be9b8ca1affc.zip |
GH-2544 allow adding files to `libraries` without affecting classpath
This is done by adding library-like objects into the `mavenFiles`
list in version JSONs.
Diffstat (limited to 'api/logic/minecraft/OneSixVersionFormat.cpp')
-rw-r--r-- | api/logic/minecraft/OneSixVersionFormat.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/api/logic/minecraft/OneSixVersionFormat.cpp b/api/logic/minecraft/OneSixVersionFormat.cpp index 3d3cf916..a0b6fd0e 100644 --- a/api/logic/minecraft/OneSixVersionFormat.cpp +++ b/api/logic/minecraft/OneSixVersionFormat.cpp @@ -144,18 +144,14 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument &doc } } - auto readLibs = [&](const char * which) + auto readLibs = [&](const char * which, QList<LibraryPtr> & out) { for (auto libVal : requireArray(root.value(which))) { QJsonObject libObj = requireObject(libVal); // parse the library auto lib = libraryFromJson(libObj, filename); - if(lib->rawName().artifactId() == "ForgeWrapper") { - out->mainClass.clear(); - out->addProblem(ProblemSeverity::Error, QObject::tr("Forge workarounds have no place in MultiMC.")); - } - out->libraries.append(lib); + out.append(lib); } }; bool hasPlusLibs = root.contains("+libraries"); @@ -164,16 +160,20 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument &doc { out->addProblem(ProblemSeverity::Warning, QObject::tr("Version file has both '+libraries' and 'libraries'. This is no longer supported.")); - readLibs("libraries"); - readLibs("+libraries"); + readLibs("libraries", out->libraries); + readLibs("+libraries", out->libraries); } else if (hasLibs) { - readLibs("libraries"); + readLibs("libraries", out->libraries); } else if(hasPlusLibs) { - readLibs("+libraries"); + readLibs("+libraries", out->libraries); + } + + if(root.contains("mavenFiles")) { + readLibs("mavenFiles", out->mavenFiles); } // if we have mainJar, just use it @@ -280,6 +280,15 @@ QJsonDocument OneSixVersionFormat::versionFileToJson(const VersionFilePtr &patch } root.insert("libraries", array); } + if (!patch->mavenFiles.isEmpty()) + { + QJsonArray array; + for (auto value: patch->mavenFiles) + { + array.append(OneSixVersionFormat::libraryToJson(value.get())); + } + root.insert("mavenFiles", array); + } if (!patch->jarMods.isEmpty()) { QJsonArray array; |