diff --git a/api/logic/minecraft/ComponentList.cpp b/api/logic/minecraft/ComponentList.cpp
index b4ab21515..dc7f3614f 100644
--- a/api/logic/minecraft/ComponentList.cpp
+++ b/api/logic/minecraft/ComponentList.cpp
@@ -743,42 +743,6 @@ Component * ComponentList::getComponent(int index)
return d->components[index].get();
}
-bool ComponentList::isVanilla()
-{
- for(auto patchptr: d->components)
- {
- if(patchptr->isCustom())
- return false;
- }
- return true;
-}
-
-bool ComponentList::revertToVanilla()
-{
- // remove patches, if present
- auto VersionPatchesCopy = d->components;
- for(auto & it: VersionPatchesCopy)
- {
- if (!it->isCustom())
- {
- continue;
- }
- if(it->isRevertible() || it->isRemovable())
- {
- if(!remove(it->getID()))
- {
- qWarning() << "Couldn't remove" << it->getID() << "from profile!";
- invalidateLaunchProfile();
- scheduleSave();
- return false;
- }
- }
- }
- invalidateLaunchProfile();
- scheduleSave();
- return true;
-}
-
QVariant ComponentList::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
diff --git a/api/logic/minecraft/ComponentList.h b/api/logic/minecraft/ComponentList.h
index 3b53a9fe4..6d380fe96 100644
--- a/api/logic/minecraft/ComponentList.h
+++ b/api/logic/minecraft/ComponentList.h
@@ -59,12 +59,6 @@ public:
/// call this to explicitly mark the component list as loaded - this is used to build a new component list from scratch.
void buildingFromScratch();
- /// is this version unchanged by the user?
- bool isVanilla();
-
- /// remove any customizations on top of whatever 'vanilla' means
- bool revertToVanilla();
-
/// install more jar mods
void installJarMods(QStringList selectedFiles);
diff --git a/api/logic/minecraft/MinecraftInstance.cpp b/api/logic/minecraft/MinecraftInstance.cpp
index 49db5b75b..2fda79bf0 100644
--- a/api/logic/minecraft/MinecraftInstance.cpp
+++ b/api/logic/minecraft/MinecraftInstance.cpp
@@ -398,14 +398,8 @@ QStringList MinecraftInstance::processMinecraftArgs(AuthSessionPtr session) cons
// blatant self-promotion.
token_mapping["profile_name"] = token_mapping["version_name"] = "MultiMC5";
- if(m_components->isVanilla())
- {
- token_mapping["version_type"] = profile->getMinecraftVersionType();
- }
- else
- {
- token_mapping["version_type"] = "custom";
- }
+
+ token_mapping["version_type"] = profile->getMinecraftVersionType();
QString absRootDir = QDir(minecraftRoot()).absolutePath();
token_mapping["game_directory"] = absRootDir;
diff --git a/application/pages/VersionPage.cpp b/application/pages/VersionPage.cpp
index 50cc825f8..57e1709b4 100644
--- a/application/pages/VersionPage.cpp
+++ b/application/pages/VersionPage.cpp
@@ -324,6 +324,19 @@ void VersionPage::on_changeVersionBtn_clicked()
if (!vselect.exec() || !vselect.selectedVersion())
return;
+ qDebug() << "Change" << uid << "to" << vselect.selectedVersion()->descriptor();
+ bool important = false;
+ if(uid == "net.minecraft")
+ {
+ important = true;
+ }
+ m_profile->setComponentVersion(uid, vselect.selectedVersion()->descriptor(), important);
+ m_profile->resolve(Net::Mode::Online);
+ m_container->refreshContainer();
+}
+
+void VersionPage::on_downloadBtn_clicked()
+{
if (!MMC->accounts()->anyAccountIsValid())
{
CustomMessageBox::selectable(
@@ -334,44 +347,16 @@ void VersionPage::on_changeVersionBtn_clicked()
return;
}
- qDebug() << "Change" << uid << "to" << vselect.selectedVersion()->descriptor();
- bool important = false;
- if(uid == "net.minecraft")
- {
- important = true;
- if (!m_profile->isVanilla())
- {
- auto result = CustomMessageBox::selectable(
- this, tr("Are you sure?"),
- tr("This will remove any library/version customization you did previously. "
- "This includes things like Forge install and similar."),
- QMessageBox::Warning, QMessageBox::Ok | QMessageBox::Abort,
- QMessageBox::Abort)->exec();
-
- if (result != QMessageBox::Ok)
- return;
- m_profile->revertToVanilla();
- reloadComponentList();
- }
- }
- m_profile->setComponentVersion(uid, vselect.selectedVersion()->descriptor(), important);
- doUpdate();
- m_container->refreshContainer();
-}
-
-int VersionPage::doUpdate()
-{
auto updateTask = m_inst->createUpdateTask(Net::Mode::Online);
if (!updateTask)
{
- return 1;
+ return;
}
ProgressDialog tDialog(this);
connect(updateTask.get(), SIGNAL(failed(QString)), SLOT(onGameUpdateError(QString)));
int ret = tDialog.execWithTask(updateTask.get());
updateButtons();
m_container->refreshContainer();
- return ret;
}
void VersionPage::on_forgeBtn_clicked()
diff --git a/application/pages/VersionPage.h b/application/pages/VersionPage.h
index d4b65983f..0003fe69f 100644
--- a/application/pages/VersionPage.h
+++ b/application/pages/VersionPage.h
@@ -62,6 +62,7 @@ private slots:
void on_editBtn_clicked();
void on_modBtn_clicked();
void on_customizeBtn_clicked();
+ void on_downloadBtn_clicked();
void updateVersionControls();
void disableVersionControls();
diff --git a/application/pages/VersionPage.ui b/application/pages/VersionPage.ui
index 1d2adff75..d54dd8403 100644
--- a/application/pages/VersionPage.ui
+++ b/application/pages/VersionPage.ui
@@ -6,8 +6,8 @@
0
0
- 693
- 833
+ 870
+ 1008
@@ -234,6 +234,16 @@
+ -
+
+
+ Download the files needed to launch the instance now.
+
+
+ Download All
+
+
+
-
@@ -300,6 +310,7 @@
jarBtn
addEmptyBtn
reloadBtn
+ downloadBtn
tabWidget