aboutsummaryrefslogtreecommitdiff
path: root/launcher/minecraft
diff options
context:
space:
mode:
authorflow <thiagodonato300@gmail.com>2022-04-17 10:19:23 -0300
committerflow <flowlnlnln@gmail.com>2022-05-23 14:42:28 -0300
commit4439666e67573a6a36af981fdc68410fdf9e4f9f (patch)
tree265c8873ea02f00110f12b1b245b227fb4e5c189 /launcher/minecraft
parent23febc6d94bcc5903a9863ba7b854b5091b0813b (diff)
downloadPrismLauncher-4439666e67573a6a36af981fdc68410fdf9e4f9f.tar.gz
PrismLauncher-4439666e67573a6a36af981fdc68410fdf9e4f9f.tar.bz2
PrismLauncher-4439666e67573a6a36af981fdc68410fdf9e4f9f.zip
feat: allow disabling mod metadata usage
Diffstat (limited to 'launcher/minecraft')
-rw-r--r--launcher/minecraft/mod/Mod.cpp6
-rw-r--r--launcher/minecraft/mod/tasks/LocalModUpdateTask.cpp6
-rw-r--r--launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp28
-rw-r--r--launcher/minecraft/mod/tasks/ModFolderLoadTask.h4
4 files changed, 33 insertions, 11 deletions
diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp
index 46776239..7b560845 100644
--- a/launcher/minecraft/mod/Mod.cpp
+++ b/launcher/minecraft/mod/Mod.cpp
@@ -124,7 +124,11 @@ bool Mod::enable(bool value)
bool Mod::destroy(QDir& index_dir)
{
- Metadata::remove(index_dir, m_name);
+ auto n = name();
+ // FIXME: This can fail to remove the metadata if the
+ // "DontUseModMetadata" setting is on, since there could
+ // be a name mismatch!
+ Metadata::remove(index_dir, n);
m_type = MOD_UNKNOWN;
return FS::deletePath(m_file.filePath());
diff --git a/launcher/minecraft/mod/tasks/LocalModUpdateTask.cpp b/launcher/minecraft/mod/tasks/LocalModUpdateTask.cpp
index 8b6e8ec7..3c9b76a8 100644
--- a/launcher/minecraft/mod/tasks/LocalModUpdateTask.cpp
+++ b/launcher/minecraft/mod/tasks/LocalModUpdateTask.cpp
@@ -2,6 +2,7 @@
#include <toml.h>
+#include "Application.h"
#include "FileSystem.h"
#include "minecraft/mod/MetadataHandler.h"
@@ -18,6 +19,11 @@ void LocalModUpdateTask::executeTask()
{
setStatus(tr("Updating index for mod:\n%1").arg(m_mod.name));
+ if(APPLICATION->settings()->get("DontUseModMetadata").toBool()){
+ emitSucceeded();
+ return;
+ }
+
auto pw_mod = Metadata::create(m_index_dir, m_mod, m_mod_version);
Metadata::update(m_index_dir, pw_mod);
diff --git a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp
index e94bdee9..5afbb08a 100644
--- a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp
+++ b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp
@@ -1,6 +1,7 @@
#include "ModFolderLoadTask.h"
#include <QDebug>
+#include "Application.h"
#include "minecraft/mod/MetadataHandler.h"
ModFolderLoadTask::ModFolderLoadTask(QDir& mods_dir, QDir& index_dir)
@@ -9,16 +10,9 @@ ModFolderLoadTask::ModFolderLoadTask(QDir& mods_dir, QDir& index_dir)
void ModFolderLoadTask::run()
{
- // Read metadata first
- m_index_dir.refresh();
- for (auto entry : m_index_dir.entryList()) {
- // QDir::Filter::NoDotAndDotDot seems to exclude all files for some reason...
- if (entry == "." || entry == "..")
- continue;
-
- entry.chop(5); // Remove .toml at the end
- Mod mod(m_mods_dir, Metadata::get(m_index_dir, entry));
- m_result->mods[mod.internal_id()] = mod;
+ if (!APPLICATION->settings()->get("DontUseModMetadata").toBool()) {
+ // Read metadata first
+ getFromMetadata();
}
// Read JAR files that don't have metadata
@@ -31,3 +25,17 @@ void ModFolderLoadTask::run()
emit succeeded();
}
+
+void ModFolderLoadTask::getFromMetadata()
+{
+ m_index_dir.refresh();
+ for (auto entry : m_index_dir.entryList()) {
+ // QDir::Filter::NoDotAndDotDot seems to exclude all files for some reason...
+ if (entry == "." || entry == "..")
+ continue;
+
+ entry.chop(5); // Remove .toml at the end
+ Mod mod(m_mods_dir, Metadata::get(m_index_dir, entry));
+ m_result->mods[mod.internal_id()] = mod;
+ }
+}
diff --git a/launcher/minecraft/mod/tasks/ModFolderLoadTask.h b/launcher/minecraft/mod/tasks/ModFolderLoadTask.h
index bb66022a..ba997874 100644
--- a/launcher/minecraft/mod/tasks/ModFolderLoadTask.h
+++ b/launcher/minecraft/mod/tasks/ModFolderLoadTask.h
@@ -24,6 +24,10 @@ public:
void run();
signals:
void succeeded();
+
+private:
+ void getFromMetadata();
+
private:
QDir& m_mods_dir, m_index_dir;
ResultPtr m_result;