diff options
| author | Sefa Eyeoglu <contact@scrumplex.net> | 2022-06-12 19:17:08 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-12 19:17:08 +0200 |
| commit | d08815bbc161a3bfbca06a6c0c5c7aeb5f026173 (patch) | |
| tree | eb924e183387386a12a57e425491ae9ce73f0428 /launcher/minecraft/mod/tasks | |
| parent | 794022d399294c2ac377e4e62b65758117e5bdac (diff) | |
| parent | 4448418b63715bc64acbb19bd75bedf725cb4165 (diff) | |
| download | PrismLauncher-d08815bbc161a3bfbca06a6c0c5c7aeb5f026173.tar.gz PrismLauncher-d08815bbc161a3bfbca06a6c0c5c7aeb5f026173.tar.bz2 PrismLauncher-d08815bbc161a3bfbca06a6c0c5c7aeb5f026173.zip | |
Merge pull request #759 from flowln/mod_perma_3
Diffstat (limited to 'launcher/minecraft/mod/tasks')
| -rw-r--r-- | launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp index 62d856f6..80242fef 100644 --- a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp +++ b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp @@ -53,12 +53,33 @@ void ModFolderLoadTask::run() m_mods_dir.refresh(); for (auto entry : m_mods_dir.entryInfoList()) { Mod mod(entry); - if(m_result->mods.contains(mod.internal_id())){ - m_result->mods[mod.internal_id()].setStatus(ModStatus::Installed); + + if (mod.enabled()) { + if (m_result->mods.contains(mod.internal_id())) { + m_result->mods[mod.internal_id()].setStatus(ModStatus::Installed); + } + else { + m_result->mods[mod.internal_id()] = mod; + m_result->mods[mod.internal_id()].setStatus(ModStatus::NoMetadata); + } } - else { - m_result->mods[mod.internal_id()] = mod; - m_result->mods[mod.internal_id()].setStatus(ModStatus::NoMetadata); + else { + QString chopped_id = mod.internal_id().chopped(9); + if (m_result->mods.contains(chopped_id)) { + m_result->mods[mod.internal_id()] = mod; + + auto metadata = m_result->mods[chopped_id].metadata(); + if (metadata) { + mod.setMetadata(new Metadata::ModStruct(*metadata)); + + m_result->mods[mod.internal_id()].setStatus(ModStatus::Installed); + m_result->mods.remove(chopped_id); + } + } + else { + m_result->mods[mod.internal_id()] = mod; + m_result->mods[mod.internal_id()].setStatus(ModStatus::NoMetadata); + } } } |
