diff --git a/api/logic/minecraft/ComponentUpdateTask.cpp b/api/logic/minecraft/ComponentUpdateTask.cpp
index 37cc488d..15003160 100644
--- a/api/logic/minecraft/ComponentUpdateTask.cpp
+++ b/api/logic/minecraft/ComponentUpdateTask.cpp
@@ -586,6 +586,15 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly)
{
component->m_version = "3.1.2";
}
+ else if (add.uid == "net.fabricmc.intermediary")
+ {
+ auto minecraft = std::find_if(components.begin(), components.end(), [](ComponentPtr & cmp){
+ return cmp->getID() == "net.minecraft";
+ });
+ if(minecraft != components.end()) {
+ component->m_version = (*minecraft)->getVersion();
+ }
+ }
}
// HACK HACK HACK HACK FIXME: this is a placeholder for deciding what version to use. For now, it is hardcoded.
// ############################################################################################################
diff --git a/application/pages/instance/VersionPage.cpp b/application/pages/instance/VersionPage.cpp
index cbe4a31c..699a5c10 100644
--- a/application/pages/instance/VersionPage.cpp
+++ b/application/pages/instance/VersionPage.cpp
@@ -180,6 +180,7 @@ void VersionPage::packageCurrent(const QModelIndex ¤t, const QModelIndex &
void VersionPage::updateVersionControls()
{
+ ui->fabricBtn->setEnabled(true);
ui->forgeBtn->setEnabled(true);
ui->liteloaderBtn->setEnabled(true);
updateButtons();
@@ -187,6 +188,7 @@ void VersionPage::updateVersionControls()
void VersionPage::disableVersionControls()
{
+ ui->fabricBtn->setEnabled(false);
ui->forgeBtn->setEnabled(false);
ui->liteloaderBtn->setEnabled(false);
ui->reloadBtn->setEnabled(false);
@@ -389,6 +391,33 @@ void VersionPage::on_forgeBtn_clicked()
}
}
+void VersionPage::on_fabricBtn_clicked()
+{
+ auto vlist = ENV.metadataIndex()->get("net.fabricmc.fabric-loader");
+ if(!vlist)
+ {
+ return;
+ }
+ VersionSelectDialog vselect(vlist.get(), tr("Select Fabric Loader version"), this);
+ vselect.setEmptyString(tr("No Fabric Loader versions are currently available."));
+ vselect.setEmptyErrorString(tr("Couldn't load or download the Fabric Loader version lists!"));
+
+ auto currentVersion = m_profile->getComponentVersion("net.fabricmc.fabric-loader");
+ if(!currentVersion.isEmpty())
+ {
+ vselect.setCurrentVersion(currentVersion);
+ }
+
+ if (vselect.exec() && vselect.selectedVersion())
+ {
+ auto vsn = vselect.selectedVersion();
+ m_profile->setComponentVersion("net.fabricmc.fabric-loader", vsn->descriptor());
+ m_profile->resolve(Net::Mode::Online);
+ preselect(m_profile->rowCount(QModelIndex())-1);
+ m_container->refreshContainer();
+ }
+}
+
void VersionPage::on_addEmptyBtn_clicked()
{
NewComponentDialog compdialog(QString(), QString(), this);
diff --git a/application/pages/instance/VersionPage.h b/application/pages/instance/VersionPage.h
index 5432e009..4957c9ea 100644
--- a/application/pages/instance/VersionPage.h
+++ b/application/pages/instance/VersionPage.h
@@ -49,6 +49,7 @@ public:
virtual bool shouldDisplay() const override;
private slots:
+ void on_fabricBtn_clicked();
void on_forgeBtn_clicked();
void on_addEmptyBtn_clicked();
void on_liteloaderBtn_clicked();
diff --git a/application/pages/instance/VersionPage.ui b/application/pages/instance/VersionPage.ui
index cfb13f94..40061a3a 100644
--- a/application/pages/instance/VersionPage.ui
+++ b/application/pages/instance/VersionPage.ui
@@ -170,6 +170,16 @@
+ -
+
+
+ Install the Minecraft Forge package.
+
+
+ Install Fabric
+
+
+
-
@@ -298,6 +308,7 @@
+ tabWidget
packageView
changeVersionBtn
moveUpBtn
@@ -307,6 +318,7 @@
editBtn
revertBtn
forgeBtn
+ fabricBtn
liteloaderBtn
modBtn
jarmodBtn
@@ -314,7 +326,6 @@
addEmptyBtn
reloadBtn
downloadBtn
- tabWidget