finished up the curesforge export

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97
2023-06-22 21:06:01 +03:00
parent 377f27b16f
commit 049b02cee4
4 changed files with 42 additions and 30 deletions

View File

@ -28,20 +28,21 @@
#include "MMCZip.h"
#include "minecraft/PackProfile.h"
#include "minecraft/mod/ModFolderModel.h"
#include "modplatform/ModIndex.h"
#include "modplatform/helpers/ExportModsToStringTask.h"
const QStringList FlamePackExportTask::PREFIXES({ "mods/", "coremods/", "resourcepacks/", "texturepacks/", "shaderpacks/" });
const QStringList FlamePackExportTask::FILE_EXTENSIONS({ "jar", "litemod", "zip" });
const QString FlamePackExportTask::TEMPLATE = "<li><a href={url}>{name}({authors})</a></li>";
FlamePackExportTask::FlamePackExportTask(const QString& name,
const QString& version,
const QString& author,
const QVariant& projectID,
InstancePtr instance,
const QString& output,
MMCZip::FilterFunction filter)
: name(name)
, version(version)
, author(author)
, projectID(projectID)
, instance(instance)
, mcInstance(dynamic_cast<MinecraftInstance*>(instance.get()))
@ -193,28 +194,27 @@ QByteArray FlamePackExportTask::generateIndex()
QJsonObject loader;
if (quilt != nullptr)
loader["id"] = quilt->getName();
loader["id"] = "quilt-" + quilt->getVersion();
else if (fabric != nullptr)
loader["id"] = fabric->getName();
loader["id"] = "fabric-" + fabric->getVersion();
else if (forge != nullptr)
loader["id"] = forge->getName();
loader["id"] = "forge-" + forge->getVersion();
loader["primary"] = true;
version["modLoaders"] = QJsonArray({ loader });
obj["minecraft"] = version;
}
QJsonArray files;
QMapIterator<QString, ResolvedFile> iterator(resolvedFiles);
while (iterator.hasNext()) {
iterator.next();
const ResolvedFile& value = iterator.value();
for (auto mod : mods) {
auto meta = mod->metadata();
if (meta == nullptr || meta->provider != ModPlatform::ResourceProvider::FLAME)
continue;
resolvedFiles[gameRoot.relativeFilePath(mod->fileinfo().absoluteFilePath())] = {};
QJsonObject file;
file["projectID"] = value.projectID.toInt();
file["fileID"] = value.fileID.toInt();
file["required"] = value.required;
file["projectID"] = meta->project_id.toInt();
file["fileID"] = meta->file_id.toInt();
file["required"] = true;
files << file;
}
obj["files"] = files;

View File

@ -29,6 +29,7 @@ class FlamePackExportTask : public Task {
public:
FlamePackExportTask(const QString& name,
const QString& version,
const QString& author,
const QVariant& projectID,
InstancePtr instance,
const QString& output,
@ -39,13 +40,6 @@ class FlamePackExportTask : public Task {
bool abort() override;
private:
struct ResolvedFile {
QVariant projectID, fileID;
bool required;
};
static const QStringList PREFIXES;
static const QStringList FILE_EXTENSIONS;
static const QString TEMPLATE;
// inputs
@ -60,7 +54,7 @@ class FlamePackExportTask : public Task {
typedef std::optional<QString> BuildZipResult;
QFileInfoList files;
QMap<QString, ResolvedFile> resolvedFiles;
QMap<QString, QString> resolvedFiles;
Task::Ptr task;
QFuture<BuildZipResult> buildZipFuture;
QFutureWatcher<BuildZipResult> buildZipWatcher;