diff options
author | Petr Mrázek <peterix@gmail.com> | 2015-05-31 21:45:28 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2015-05-31 21:50:01 +0200 |
commit | 6fd18a5cceb21f547fb95398215d9d30aeef0249 (patch) | |
tree | 754e3eee4c1f810eb601c26673edb95c59cbee9c | |
parent | 9920062003d78864be886b1ddb79e484f44bc30a (diff) | |
download | MultiMC-6fd18a5cceb21f547fb95398215d9d30aeef0249.tar MultiMC-6fd18a5cceb21f547fb95398215d9d30aeef0249.tar.gz MultiMC-6fd18a5cceb21f547fb95398215d9d30aeef0249.tar.lz MultiMC-6fd18a5cceb21f547fb95398215d9d30aeef0249.tar.xz MultiMC-6fd18a5cceb21f547fb95398215d9d30aeef0249.zip |
GH-1016 print list of mods, coremods and jarmods
Includes a change to jar mods, where they gain an 'originalName' attribute used only for display
-rw-r--r-- | logic/minecraft/JarMod.cpp | 7 | ||||
-rw-r--r-- | logic/minecraft/JarMod.h | 4 | ||||
-rw-r--r-- | logic/minecraft/OneSixInstance.cpp | 18 | ||||
-rw-r--r-- | logic/minecraft/OneSixProfileStrategy.cpp | 1 | ||||
-rw-r--r-- | logic/minecraft/VersionFile.cpp | 8 |
5 files changed, 32 insertions, 6 deletions
diff --git a/logic/minecraft/JarMod.cpp b/logic/minecraft/JarMod.cpp index c7ba58f1..bf711c1f 100644 --- a/logic/minecraft/JarMod.cpp +++ b/logic/minecraft/JarMod.cpp @@ -2,7 +2,7 @@ #include "MMCJson.h" using namespace MMCJson; -JarmodPtr Jarmod::fromJson(const QJsonObject &libObj, const QString &filename) +JarmodPtr Jarmod::fromJson(const QJsonObject &libObj, const QString &filename, const QString &originalName) { JarmodPtr out(new Jarmod()); if (!libObj.contains("name")) @@ -11,6 +11,7 @@ JarmodPtr Jarmod::fromJson(const QJsonObject &libObj, const QString &filename) "contains a jarmod that doesn't have a 'name' field"); } out->name = libObj.value("name").toString(); + out->originalName = libObj.value("originalName").toString(); return out; } @@ -18,5 +19,9 @@ QJsonObject Jarmod::toJson() { QJsonObject out; writeString(out, "name", name); + if(!originalName.isEmpty()) + { + writeString(out, "originalName", originalName); + } return out; } diff --git a/logic/minecraft/JarMod.h b/logic/minecraft/JarMod.h index 7d9fa038..461308f0 100644 --- a/logic/minecraft/JarMod.h +++ b/logic/minecraft/JarMod.h @@ -7,8 +7,10 @@ typedef std::shared_ptr<Jarmod> JarmodPtr; class Jarmod { public: /* methods */ - static JarmodPtr fromJson(const QJsonObject &libObj, const QString &filename); + static JarmodPtr fromJson(const QJsonObject &libObj, const QString &filename, + const QString &originalName); QJsonObject toJson(); public: /* data */ QString name; + QString originalName; }; diff --git a/logic/minecraft/OneSixInstance.cpp b/logic/minecraft/OneSixInstance.cpp index 74c28a8f..ffccc259 100644 --- a/logic/minecraft/OneSixInstance.cpp +++ b/logic/minecraft/OneSixInstance.cpp @@ -136,17 +136,29 @@ BaseProcess *OneSixInstance::prepareForLaunch(AuthSessionPtr session) for(auto & mod: loaderModList()->allMods()) { - launchScript += "mod " + mod.filename().absoluteFilePath() + "\n";; + if(!mod.enabled()) + continue; + if(mod.type() == Mod::MOD_FOLDER) + continue; + // TODO: proper implementation would need to descend into folders. + + launchScript += "mod " + mod.filename().completeBaseName() + "\n";; } for(auto & coremod: coreModList()->allMods()) { - launchScript += "coremod " + coremod.filename().absoluteFilePath() + "\n";; + if(!coremod.enabled()) + continue; + if(coremod.type() == Mod::MOD_FOLDER) + continue; + // TODO: proper implementation would need to descend into folders. + + launchScript += "coremod " + coremod.filename().completeBaseName() + "\n";; } for(auto & jarmod: m_version->jarMods) { - launchScript += "jarmod " + jarmod->name + "\n";; + launchScript += "jarmod " + jarmod->originalName + " (" + jarmod->name + ")\n"; } // libraries and class path. diff --git a/logic/minecraft/OneSixProfileStrategy.cpp b/logic/minecraft/OneSixProfileStrategy.cpp index e0ee4c21..173cd4d6 100644 --- a/logic/minecraft/OneSixProfileStrategy.cpp +++ b/logic/minecraft/OneSixProfileStrategy.cpp @@ -368,6 +368,7 @@ bool OneSixProfileStrategy::installJarMods(QStringList filepaths) auto f = std::make_shared<VersionFile>(); auto jarMod = std::make_shared<Jarmod>(); jarMod->name = target_filename; + jarMod->originalName = sourceInfo.completeBaseName(); f->jarMods.append(jarMod); f->name = target_name; f->fileId = target_id; diff --git a/logic/minecraft/VersionFile.cpp b/logic/minecraft/VersionFile.cpp index 6ef5a8bc..227ba8be 100644 --- a/logic/minecraft/VersionFile.cpp +++ b/logic/minecraft/VersionFile.cpp @@ -155,7 +155,13 @@ VersionFilePtr VersionFile::fromJson(const QJsonDocument &doc, const QString &fi { QJsonObject libObj = ensureObject(libVal); // parse the jarmod - auto lib = Jarmod::fromJson(libObj, filename); + 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); } |