diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-04-21 22:23:00 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-04-21 22:23:00 +0200 |
commit | f3c46dbf11ada91b0da8de506cb5308a7242bb33 (patch) | |
tree | 3bf443394e449a6eedb8d002a335f84cc7a6a37c /api/logic/minecraft/MinecraftProfile.cpp | |
parent | 581460dcf95c76d228785dbd0e894fbeb2c1a22d (diff) | |
download | MultiMC-f3c46dbf11ada91b0da8de506cb5308a7242bb33.tar MultiMC-f3c46dbf11ada91b0da8de506cb5308a7242bb33.tar.gz MultiMC-f3c46dbf11ada91b0da8de506cb5308a7242bb33.tar.lz MultiMC-f3c46dbf11ada91b0da8de506cb5308a7242bb33.tar.xz MultiMC-f3c46dbf11ada91b0da8de506cb5308a7242bb33.zip |
NOISSUE silly/simple implementation of mod metadata in OneSix version format
Diffstat (limited to 'api/logic/minecraft/MinecraftProfile.cpp')
-rw-r--r-- | api/logic/minecraft/MinecraftProfile.cpp | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/api/logic/minecraft/MinecraftProfile.cpp b/api/logic/minecraft/MinecraftProfile.cpp index a82d892f..5f1a9f26 100644 --- a/api/logic/minecraft/MinecraftProfile.cpp +++ b/api/logic/minecraft/MinecraftProfile.cpp @@ -457,12 +457,12 @@ void MinecraftProfile::applyJarMods(const QList<LibraryPtr>& jarMods) this->m_jarMods.append(jarMods); } -static int findLibraryByName(QList<LibraryPtr> haystack, const GradleSpecifier &needle) +static int findLibraryByName(QList<LibraryPtr> *haystack, const GradleSpecifier &needle) { int retval = -1; - for (int i = 0; i < haystack.size(); ++i) + for (int i = 0; i < haystack->size(); ++i) { - if (haystack.at(i)->rawName().matchName(needle)) + if (haystack->at(i)->rawName().matchName(needle)) { // only one is allowed. if (retval != -1) @@ -473,6 +473,31 @@ static int findLibraryByName(QList<LibraryPtr> haystack, const GradleSpecifier & return retval; } +void MinecraftProfile::applyMods(const QList<LibraryPtr>& mods) +{ + QList<LibraryPtr> * list = &m_mods; + for(auto & mod: mods) + { + auto modCopy = Library::limitedCopy(mod); + + // find the mod by name. + const int index = findLibraryByName(list, mod->rawName()); + // mod not found? just add it. + if (index < 0) + { + list->append(modCopy); + return; + } + + auto existingLibrary = list->at(index); + // if we are higher it means we should update + if (Version(mod->version()) > Version(existingLibrary->version())) + { + list->replace(index, modCopy); + } + } +} + void MinecraftProfile::applyLibrary(LibraryPtr library) { if(!library->isActive()) @@ -489,7 +514,7 @@ void MinecraftProfile::applyLibrary(LibraryPtr library) auto libraryCopy = Library::limitedCopy(library); // find the library by name. - const int index = findLibraryByName(*list, library->rawName()); + const int index = findLibraryByName(list, library->rawName()); // library not found? just add it. if (index < 0) { |