aboutsummaryrefslogtreecommitdiff
path: root/launcher/minecraft/mod/tasks/LocalModParseTask.h
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2023-01-07 17:33:34 +0100
committerGitHub <noreply@github.com>2023-01-07 17:33:34 +0100
commitf3f628410d3d4c9589b8ec2d06d492e7861c35a3 (patch)
tree415bb4e7bb92dd48bec8097ea73a8e63d5c0c10e /launcher/minecraft/mod/tasks/LocalModParseTask.h
parent9901ecda4938827986e4754f770a2b35b64bb774 (diff)
parent0ebf04a021c633cd6a3cdd76514aa728dc253714 (diff)
downloadPrismLauncher-f3f628410d3d4c9589b8ec2d06d492e7861c35a3.tar.gz
PrismLauncher-f3f628410d3d4c9589b8ec2d06d492e7861c35a3.tar.bz2
PrismLauncher-f3f628410d3d4c9589b8ec2d06d492e7861c35a3.zip
Merge pull request #576 from Ryex/identify-zip-packs
fix https://github.com/PrismLauncher/PrismLauncher/issues/349
Diffstat (limited to 'launcher/minecraft/mod/tasks/LocalModParseTask.h')
-rw-r--r--launcher/minecraft/mod/tasks/LocalModParseTask.h34
1 files changed, 25 insertions, 9 deletions
diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.h b/launcher/minecraft/mod/tasks/LocalModParseTask.h
index 413eb2d1..38dae135 100644
--- a/launcher/minecraft/mod/tasks/LocalModParseTask.h
+++ b/launcher/minecraft/mod/tasks/LocalModParseTask.h
@@ -8,32 +8,48 @@
#include "tasks/Task.h"
-class LocalModParseTask : public Task
-{
+namespace ModUtils {
+
+ModDetails ReadFabricModInfo(QByteArray contents);
+ModDetails ReadQuiltModInfo(QByteArray contents);
+ModDetails ReadForgeInfo(QByteArray contents);
+ModDetails ReadLiteModInfo(QByteArray contents);
+
+enum class ProcessingLevel { Full, BasicInfoOnly };
+
+bool process(Mod& mod, ProcessingLevel level = ProcessingLevel::Full);
+
+bool processZIP(Mod& mod, ProcessingLevel level = ProcessingLevel::Full);
+bool processFolder(Mod& mod, ProcessingLevel level = ProcessingLevel::Full);
+bool processLitemod(Mod& mod, ProcessingLevel level = ProcessingLevel::Full);
+
+/** Checks whether a file is valid as a mod or not. */
+bool validate(QFileInfo file);
+} // namespace ModUtils
+
+class LocalModParseTask : public Task {
Q_OBJECT
-public:
+ public:
struct Result {
ModDetails details;
};
using ResultPtr = std::shared_ptr<Result>;
- ResultPtr result() const {
- return m_result;
- }
+ ResultPtr result() const { return m_result; }
[[nodiscard]] bool canAbort() const override { return true; }
bool abort() override;
- LocalModParseTask(int token, ResourceType type, const QFileInfo & modFile);
+ LocalModParseTask(int token, ResourceType type, const QFileInfo& modFile);
void executeTask() override;
[[nodiscard]] int token() const { return m_token; }
-private:
+ private:
void processAsZip();
void processAsFolder();
void processAsLitemod();
-private:
+ private:
int m_token;
ResourceType m_type;
QFileInfo m_modFile;