propagate side as enum instead of Qstring (#3544)

This commit is contained in:
timoreo
2025-07-09 10:01:51 +02:00
committed by GitHub
18 changed files with 89 additions and 131 deletions

View File

@@ -69,18 +69,20 @@ class ModrinthAPI : public NetworkResourceAPI {
return l.join(',');
}
static auto getSideFilters(QString side) -> const QString
static QString getSideFilters(ModPlatform::Side side)
{
if (side.isEmpty()) {
return {};
switch (side) {
case ModPlatform::Side::ClientSide:
return QString("\"client_side:required\",\"client_side:optional\"],[\"server_side:optional\",\"server_side:unsupported\"");
case ModPlatform::Side::ServerSide:
return QString("\"server_side:required\",\"server_side:optional\"],[\"client_side:optional\",\"client_side:unsupported\"");
case ModPlatform::Side::UniversalSide:
return QString("\"client_side:required\"],[\"server_side:required\"");
case ModPlatform::Side::NoSide:
// fallthrough
default:
return {};
}
if (side == "both")
return QString("\"client_side:required\"],[\"server_side:required\"");
if (side == "client")
return QString("\"client_side:required\",\"client_side:optional\"],[\"server_side:optional\",\"server_side:unsupported\"");
if (side == "server")
return QString("\"server_side:required\",\"server_side:optional\"],[\"client_side:optional\",\"client_side:unsupported\"");
return {};
}
[[nodiscard]] static inline QString mapMCVersionFromModrinth(QString v)

View File

@@ -28,6 +28,7 @@
#include "minecraft/PackProfile.h"
#include "minecraft/mod/MetadataHandler.h"
#include "minecraft/mod/ModFolderModel.h"
#include "modplatform/ModIndex.h"
#include "modplatform/helpers/HashUtils.h"
#include "tasks/Task.h"
@@ -289,7 +290,7 @@ QByteArray ModrinthPackExportTask::generateIndex()
// a server side mod does not imply that the mod does not work on the client
// however, if a mrpack mod is marked as server-only it will not install on the client
if (iterator->side == Metadata::ModSide::ClientSide)
if (iterator->side == ModPlatform::Side::ClientSide)
env["server"] = "unsupported";
fileOut["env"] = env;

View File

@@ -23,6 +23,7 @@
#include "BaseInstance.h"
#include "MMCZip.h"
#include "minecraft/MinecraftInstance.h"
#include "modplatform/ModIndex.h"
#include "modplatform/modrinth/ModrinthAPI.h"
#include "tasks/Task.h"
@@ -45,7 +46,7 @@ class ModrinthPackExportTask : public Task {
struct ResolvedFile {
QString sha1, sha512, url;
qint64 size;
Metadata::ModSide side;
ModPlatform::Side side;
};
static const QStringList PREFIXES;

View File

@@ -63,11 +63,11 @@ void Modrinth::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
auto server = shouldDownloadOnSide(Json::ensureString(obj, "server_side"));
if (server && client) {
pack.side = "both";
pack.side = ModPlatform::Side::UniversalSide;
} else if (server) {
pack.side = "server";
pack.side = ModPlatform::Side::ServerSide;
} else if (client) {
pack.side = "client";
pack.side = ModPlatform::Side::ClientSide;
}
// Modrinth can have more data than what's provided by the basic search :)