From a6f5858dacd54e60435b4ad91fb3aa97a0650609 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 15 Jan 2025 21:54:02 +0200 Subject: [PATCH] Fix ignore for modrinth/flame export Signed-off-by: Trial97 --- launcher/ui/dialogs/ExportPackDialog.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 846c11a1a..c4f102515 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -71,26 +71,28 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla model->setIconProvider(&m_icons); // use the game root - everything outside cannot be exported - const QDir root(instance->gameRoot()); - m_proxy = new FileIgnoreProxy(instance->gameRoot(), this); + const QDir instanceRoot(instance->instanceRoot()); + m_proxy = new FileIgnoreProxy(instance->instanceRoot(), this); m_proxy->ignoreFilesWithPath().insert({ "logs", "crash-reports", ".cache", ".fabric", ".quilt" }); m_proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); m_proxy->setSourceModel(model); loadPackIgnore(); const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); - - for (const QString& file : root.entryList(filter)) { - if (!(file == "mods" || file == "coremods" || file == "datapacks" || file == "config" || file == "options.txt" || - file == "servers.dat")) - m_proxy->blockedPaths().insert(file); + if (m_proxy->blockedPaths().leaf()) { // only add this if the list is empty + const QDir gameRoot(instance->gameRoot()); + for (const QString& file : gameRoot.entryList(filter)) { + if (!(file == "mods" || file == "coremods" || file == "datapacks" || file == "config" || file == "options.txt" || + file == "servers.dat")) + m_proxy->blockedPaths().insert(instanceRoot.relativeFilePath(gameRoot.absoluteFilePath(file))); + } } MinecraftInstance* mcInstance = dynamic_cast(instance.get()); if (mcInstance) { for (auto& resourceModel : mcInstance->resourceLists()) if (resourceModel->indexDir().exists()) - m_proxy->ignoreFilesWithPath().insert(root.relativeFilePath(resourceModel->indexDir().absolutePath())); + m_proxy->ignoreFilesWithPath().insert(instanceRoot.relativeFilePath(resourceModel->indexDir().absolutePath())); } m_ui->files->setModel(m_proxy);