diff options
author | Sefa Eyeoglu <contact@scrumplex.net> | 2023-01-07 17:33:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-07 17:33:34 +0100 |
commit | f3f628410d3d4c9589b8ec2d06d492e7861c35a3 (patch) | |
tree | 415bb4e7bb92dd48bec8097ea73a8e63d5c0c10e /launcher/minecraft/mod/tasks/LocalModParseTask.h | |
parent | 9901ecda4938827986e4754f770a2b35b64bb774 (diff) | |
parent | 0ebf04a021c633cd6a3cdd76514aa728dc253714 (diff) | |
download | PrismLauncher-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.h | 34 |
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; |