Fix data pack filtering

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad 2025-03-25 19:23:35 +00:00
parent 46c348a7b4
commit 82978ee34d
No known key found for this signature in database
GPG key ID: 5E39D70B4C93C38E
5 changed files with 22 additions and 10 deletions

View file

@ -122,11 +122,13 @@ auto getModLoaderAsString(ModLoaderType type) -> const QString
case Cauldron: case Cauldron:
return "cauldron"; return "cauldron";
case LiteLoader: case LiteLoader:
return "liteloader"; return "liteloader";
case Fabric: case Fabric:
return "fabric"; return "fabric";
case Quilt: case Quilt:
return "quilt"; return "quilt";
case DataPack:
return "datapack";
default: default:
break; break;
} }

View file

@ -30,7 +30,15 @@ class QIODevice;
namespace ModPlatform { namespace ModPlatform {
enum ModLoaderType { NeoForge = 1 << 0, Forge = 1 << 1, Cauldron = 1 << 2, LiteLoader = 1 << 3, Fabric = 1 << 4, Quilt = 1 << 5 }; enum ModLoaderType {
NeoForge = 1 << 0,
Forge = 1 << 1,
Cauldron = 1 << 2,
LiteLoader = 1 << 3,
Fabric = 1 << 4,
Quilt = 1 << 5,
DataPack = 1 << 6
};
Q_DECLARE_FLAGS(ModLoaderTypes, ModLoaderType) Q_DECLARE_FLAGS(ModLoaderTypes, ModLoaderType)
QList<ModLoaderType> modLoaderTypesToList(ModLoaderTypes flags); QList<ModLoaderType> modLoaderTypesToList(ModLoaderTypes flags);

View file

@ -68,6 +68,8 @@ class FlameAPI : public NetworkResourceAPI {
return 5; return 5;
case ModPlatform::NeoForge: case ModPlatform::NeoForge:
return 6; return 6;
case ModPlatform::DataPack:
break; // not supported
} }
return 0; return 0;
} }

View file

@ -42,8 +42,8 @@ class ModrinthAPI : public NetworkResourceAPI {
static auto getModLoaderStrings(const ModPlatform::ModLoaderTypes types) -> const QStringList static auto getModLoaderStrings(const ModPlatform::ModLoaderTypes types) -> const QStringList
{ {
QStringList l; QStringList l;
for (auto loader : for (auto loader : { ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Fabric, ModPlatform::Quilt, ModPlatform::LiteLoader,
{ ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Fabric, ModPlatform::Quilt, ModPlatform::LiteLoader }) { ModPlatform::DataPack }) {
if (types & loader) { if (types & loader) {
l << getModLoaderAsString(loader); l << getModLoaderAsString(loader);
} }
@ -103,12 +103,13 @@ class ModrinthAPI : public NetworkResourceAPI {
{ {
switch (type) { switch (type) {
case ModPlatform::ResourceType::MOD: case ModPlatform::ResourceType::MOD:
case ModPlatform::ResourceType::DATA_PACK:
return "mod"; return "mod";
case ModPlatform::ResourceType::RESOURCE_PACK: case ModPlatform::ResourceType::RESOURCE_PACK:
return "resourcepack"; return "resourcepack";
case ModPlatform::ResourceType::SHADER_PACK: case ModPlatform::ResourceType::SHADER_PACK:
return "shader"; return "shader";
case ModPlatform::ResourceType::DATA_PACK:
return "datapack";
case ModPlatform::ResourceType::MODPACK: case ModPlatform::ResourceType::MODPACK:
return "modpack"; return "modpack";
default: default:
@ -127,8 +128,6 @@ class ModrinthAPI : public NetworkResourceAPI {
facets_list.append(QString("[%1]").arg(getModLoaderFilters(args.loaders.value()))); facets_list.append(QString("[%1]").arg(getModLoaderFilters(args.loaders.value())));
if (args.versions.has_value() && !args.versions.value().empty()) if (args.versions.has_value() && !args.versions.value().empty())
facets_list.append(QString("[%1]").arg(getGameVersionsArray(args.versions.value()))); facets_list.append(QString("[%1]").arg(getGameVersionsArray(args.versions.value())));
if (args.type == ModPlatform::ResourceType::DATA_PACK)
facets_list.append("[\"categories:datapack\"]");
if (args.side.has_value()) { if (args.side.has_value()) {
auto side = getSideFilters(args.side.value()); auto side = getSideFilters(args.side.value());
if (!side.isEmpty()) if (!side.isEmpty())
@ -200,7 +199,8 @@ class ModrinthAPI : public NetworkResourceAPI {
static inline auto validateModLoaders(ModPlatform::ModLoaderTypes loaders) -> bool static inline auto validateModLoaders(ModPlatform::ModLoaderTypes loaders) -> bool
{ {
return loaders & (ModPlatform::NeoForge | ModPlatform::Forge | ModPlatform::Fabric | ModPlatform::Quilt | ModPlatform::LiteLoader); return loaders & (ModPlatform::NeoForge | ModPlatform::Forge | ModPlatform::Fabric | ModPlatform::Quilt | ModPlatform::LiteLoader |
ModPlatform::DataPack);
} }
[[nodiscard]] std::optional<QString> getDependencyURL(DependencySearchArgs const& args) const override [[nodiscard]] std::optional<QString> getDependencyURL(DependencySearchArgs const& args) const override

View file

@ -18,13 +18,13 @@ DataPackResourceModel::DataPackResourceModel(BaseInstance const& base_inst, Reso
ResourceAPI::SearchArgs DataPackResourceModel::createSearchArguments() ResourceAPI::SearchArgs DataPackResourceModel::createSearchArguments()
{ {
auto sort = getCurrentSortingMethodByIndex(); auto sort = getCurrentSortingMethodByIndex();
return { ModPlatform::ResourceType::DATA_PACK, m_next_search_offset, m_search_term, sort }; return { ModPlatform::ResourceType::DATA_PACK, m_next_search_offset, m_search_term, sort, ModPlatform::ModLoaderType::DataPack };
} }
ResourceAPI::VersionSearchArgs DataPackResourceModel::createVersionsArguments(QModelIndex& entry) ResourceAPI::VersionSearchArgs DataPackResourceModel::createVersionsArguments(QModelIndex& entry)
{ {
auto& pack = m_packs[entry.row()]; auto& pack = m_packs[entry.row()];
return { *pack }; return { *pack, {}, ModPlatform::ModLoaderType::DataPack };
} }
ResourceAPI::ProjectInfoArgs DataPackResourceModel::createInfoArguments(QModelIndex& entry) ResourceAPI::ProjectInfoArgs DataPackResourceModel::createInfoArguments(QModelIndex& entry)