Merge pull request #1321 from TheKodeToad/mr-optional
Optional mods in mrpack export
This commit is contained in:
parent
1d4cf0fd03
commit
d9de326f22
@ -263,13 +263,13 @@ void ModrinthPackExportTask::finish()
|
|||||||
|
|
||||||
QByteArray ModrinthPackExportTask::generateIndex()
|
QByteArray ModrinthPackExportTask::generateIndex()
|
||||||
{
|
{
|
||||||
QJsonObject obj;
|
QJsonObject out;
|
||||||
obj["formatVersion"] = 1;
|
out["formatVersion"] = 1;
|
||||||
obj["game"] = "minecraft";
|
out["game"] = "minecraft";
|
||||||
obj["name"] = name;
|
out["name"] = name;
|
||||||
obj["versionId"] = version;
|
out["versionId"] = version;
|
||||||
if (!summary.isEmpty())
|
if (!summary.isEmpty())
|
||||||
obj["summary"] = summary;
|
out["summary"] = summary;
|
||||||
|
|
||||||
if (mcInstance) {
|
if (mcInstance) {
|
||||||
auto profile = mcInstance->getPackProfile();
|
auto profile = mcInstance->getPackProfile();
|
||||||
@ -290,30 +290,40 @@ QByteArray ModrinthPackExportTask::generateIndex()
|
|||||||
if (forge != nullptr)
|
if (forge != nullptr)
|
||||||
dependencies["forge"] = forge->m_version;
|
dependencies["forge"] = forge->m_version;
|
||||||
|
|
||||||
obj["dependencies"] = dependencies;
|
out["dependencies"] = dependencies;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonArray files;
|
QJsonArray filesOut;
|
||||||
QMapIterator<QString, ResolvedFile> iterator(resolvedFiles);
|
for (auto iterator = resolvedFiles.constBegin(); iterator != resolvedFiles.constEnd(); iterator++) {
|
||||||
while (iterator.hasNext()) {
|
QJsonObject fileOut;
|
||||||
iterator.next();
|
|
||||||
|
|
||||||
|
QString path = iterator.key();
|
||||||
const ResolvedFile& value = iterator.value();
|
const ResolvedFile& value = iterator.value();
|
||||||
|
|
||||||
QJsonObject file;
|
// detect disabled mod
|
||||||
file["path"] = iterator.key();
|
const QFileInfo pathInfo(path);
|
||||||
file["downloads"] = QJsonArray({ iterator.value().url });
|
if (pathInfo.suffix() == "disabled") {
|
||||||
|
// rename it
|
||||||
|
path = pathInfo.dir().filePath(pathInfo.completeBaseName());
|
||||||
|
// ...and make it optional
|
||||||
|
QJsonObject env;
|
||||||
|
env["client"] = "optional";
|
||||||
|
env["server"] = "optional";
|
||||||
|
fileOut["env"] = env;
|
||||||
|
}
|
||||||
|
|
||||||
|
fileOut["path"] = path;
|
||||||
|
fileOut["downloads"] = QJsonArray{ iterator.value().url };
|
||||||
|
|
||||||
QJsonObject hashes;
|
QJsonObject hashes;
|
||||||
hashes["sha1"] = value.sha1;
|
hashes["sha1"] = value.sha1;
|
||||||
hashes["sha512"] = value.sha512;
|
hashes["sha512"] = value.sha512;
|
||||||
|
fileOut["hashes"] = hashes;
|
||||||
|
|
||||||
file["hashes"] = hashes;
|
fileOut["fileSize"] = value.size;
|
||||||
file["fileSize"] = value.size;
|
filesOut << fileOut;
|
||||||
|
|
||||||
files << file;
|
|
||||||
}
|
}
|
||||||
obj["files"] = files;
|
out["files"] = filesOut;
|
||||||
|
|
||||||
return QJsonDocument(obj).toJson(QJsonDocument::Compact);
|
return QJsonDocument(out).toJson(QJsonDocument::Compact);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user