Add "Babric" and "BTA (Babric)" filters as shown on Modrinth (#3961)

This commit is contained in:
Alexandru Ionut Tripon 2025-07-22 13:30:33 +03:00 committed by GitHub
commit a7f3cbb6f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 85 additions and 10 deletions

View File

@ -31,7 +31,7 @@ static const QMap<QString, IndexedVersionType::VersionType> s_indexed_version_ty
{ "alpha", IndexedVersionType::VersionType::Alpha } { "alpha", IndexedVersionType::VersionType::Alpha }
}; };
static const QList<ModLoaderType> loaderList = { NeoForge, Forge, Cauldron, LiteLoader, Quilt, Fabric }; static const QList<ModLoaderType> loaderList = { NeoForge, Forge, Cauldron, LiteLoader, Quilt, Fabric, Babric, BTA };
QList<ModLoaderType> modLoaderTypesToList(ModLoaderTypes flags) QList<ModLoaderType> modLoaderTypesToList(ModLoaderTypes flags)
{ {
@ -129,6 +129,10 @@ auto getModLoaderAsString(ModLoaderType type) -> const QString
return "quilt"; return "quilt";
case DataPack: case DataPack:
return "datapack"; return "datapack";
case Babric:
return "babric";
case BTA:
return "bta-babric";
default: default:
break; break;
} }
@ -149,6 +153,10 @@ auto getModLoaderFromString(QString type) -> ModLoaderType
return Fabric; return Fabric;
if (type == "quilt") if (type == "quilt")
return Quilt; return Quilt;
if (type == "babric")
return Babric;
if (type == "bta-babric")
return BTA;
return {}; return {};
} }

View File

@ -36,7 +36,9 @@ enum ModLoaderType {
LiteLoader = 1 << 3, LiteLoader = 1 << 3,
Fabric = 1 << 4, Fabric = 1 << 4,
Quilt = 1 << 5, Quilt = 1 << 5,
DataPack = 1 << 6 DataPack = 1 << 6,
Babric = 1 << 7,
BTA = 1 << 8
}; };
Q_DECLARE_FLAGS(ModLoaderTypes, ModLoaderType) Q_DECLARE_FLAGS(ModLoaderTypes, ModLoaderType)
QList<ModLoaderType> modLoaderTypesToList(ModLoaderTypes flags); QList<ModLoaderType> modLoaderTypesToList(ModLoaderTypes flags);

View File

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

View File

@ -91,6 +91,10 @@ void PackInstallTask::copySettings()
break; break;
case ModPlatform::DataPack: case ModPlatform::DataPack:
break; break;
case ModPlatform::Babric:
break;
case ModPlatform::BTA:
break;
} }
components->saveNow(); components->saveNow();

View File

@ -43,7 +43,7 @@ class ModrinthAPI : public NetworkResourceAPI {
{ {
QStringList l; QStringList l;
for (auto loader : { ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Fabric, ModPlatform::Quilt, ModPlatform::LiteLoader, for (auto loader : { ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Fabric, ModPlatform::Quilt, ModPlatform::LiteLoader,
ModPlatform::DataPack }) { ModPlatform::DataPack, ModPlatform::Babric, ModPlatform::BTA }) {
if (types & loader) { if (types & loader) {
l << getModLoaderAsString(loader); l << getModLoaderAsString(loader);
} }
@ -202,7 +202,7 @@ 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); ModPlatform::DataPack | ModPlatform::Babric | ModPlatform::BTA);
} }
[[nodiscard]] std::optional<QString> getDependencyURL(DependencySearchArgs const& args) const override [[nodiscard]] std::optional<QString> getDependencyURL(DependencySearchArgs const& args) const override

View File

@ -149,10 +149,16 @@ ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, bool extended)
connect(ui->forge, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged); connect(ui->forge, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged);
connect(ui->fabric, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged); connect(ui->fabric, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged);
connect(ui->quilt, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged); connect(ui->quilt, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged);
if (extended)
connect(ui->liteLoader, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged); connect(ui->liteLoader, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged);
else connect(ui->babric, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged);
ui->liteLoader->setVisible(false); connect(ui->btaBabric, &QCheckBox::stateChanged, this, &ModFilterWidget::onLoadersFilterChanged);
connect(ui->showMoreButton, &QPushButton::clicked, this, &ModFilterWidget::onShowMoreClicked);
if (!extended) {
ui->showMoreButton->setVisible(false);
ui->extendedModLoadersWidget->setVisible(false);
}
if (extended) { if (extended) {
connect(ui->clientSide, &QCheckBox::stateChanged, this, &ModFilterWidget::onSideFilterChanged); connect(ui->clientSide, &QCheckBox::stateChanged, this, &ModFilterWidget::onSideFilterChanged);
@ -279,6 +285,10 @@ void ModFilterWidget::onLoadersFilterChanged()
loaders |= ModPlatform::Quilt; loaders |= ModPlatform::Quilt;
if (ui->liteLoader->isChecked()) if (ui->liteLoader->isChecked())
loaders |= ModPlatform::LiteLoader; loaders |= ModPlatform::LiteLoader;
if (ui->babric->isChecked())
loaders |= ModPlatform::Babric;
if (ui->btaBabric->isChecked())
loaders |= ModPlatform::BTA;
m_filter_changed = loaders != m_filter->loaders; m_filter_changed = loaders != m_filter->loaders;
m_filter->loaders = loaders; m_filter->loaders = loaders;
if (m_filter_changed) if (m_filter_changed)
@ -381,4 +391,10 @@ void ModFilterWidget::onReleaseFilterChanged()
emit filterChanged(); emit filterChanged();
} }
void ModFilterWidget::onShowMoreClicked()
{
ui->extendedModLoadersWidget->setVisible(true);
ui->showMoreButton->setVisible(false);
}
#include "ModFilterWidget.moc" #include "ModFilterWidget.moc"

View File

@ -110,6 +110,7 @@ class ModFilterWidget : public QTabWidget {
void onShowAllVersionsChanged(); void onShowAllVersionsChanged();
void onOpenSourceFilterChanged(); void onOpenSourceFilterChanged();
void onReleaseFilterChanged(); void onReleaseFilterChanged();
void onShowMoreClicked();
private: private:
Ui::ModFilterWidget* ui; Ui::ModFilterWidget* ui;

View File

@ -121,6 +121,31 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="showMoreButton">
<property name="text">
<string>Show More</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="extendedModLoadersWidget" native="true">
<property name="visible">
<bool>false</bool>
</property>
<layout class="QVBoxLayout" name="extendedModLoadersLayout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item> <item>
<widget class="QCheckBox" name="liteLoader"> <widget class="QCheckBox" name="liteLoader">
<property name="text"> <property name="text">
@ -128,6 +153,23 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QCheckBox" name="babric">
<property name="text">
<string>Babric</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="btaBabric">
<property name="text">
<string>BTA (Babric)</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>