summaryrefslogtreecommitdiffstats
path: root/api/logic/minecraft/MinecraftProfile.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-04-21 22:23:00 +0200
committerPetr Mrázek <peterix@gmail.com>2017-04-21 22:23:00 +0200
commitf3c46dbf11ada91b0da8de506cb5308a7242bb33 (patch)
tree3bf443394e449a6eedb8d002a335f84cc7a6a37c /api/logic/minecraft/MinecraftProfile.cpp
parent581460dcf95c76d228785dbd0e894fbeb2c1a22d (diff)
downloadMultiMC-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.cpp33
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)
{