Make it update the instance when it creates it, so you can install forge
right away
This commit is contained in:
parent
712b87c643
commit
c7dbc14885
@ -521,7 +521,7 @@ void MainWindow::on_actionAddInstance_triggered()
|
|||||||
newInstance->setName(newInstDlg.instName());
|
newInstance->setName(newInstDlg.instName());
|
||||||
newInstance->setIconKey(newInstDlg.iconKey());
|
newInstance->setIconKey(newInstDlg.iconKey());
|
||||||
MMC->instances()->add(InstancePtr(newInstance));
|
MMC->instances()->add(InstancePtr(newInstance));
|
||||||
return;
|
break;
|
||||||
|
|
||||||
case InstanceFactory::InstExists:
|
case InstanceFactory::InstExists:
|
||||||
{
|
{
|
||||||
@ -544,6 +544,77 @@ void MainWindow::on_actionAddInstance_triggered()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Copy-pasta to make it so you can't play without a real account
|
||||||
|
std::shared_ptr<MojangAccountList> accounts = MMC->accounts();
|
||||||
|
MojangAccountPtr account = accounts->activeAccount();
|
||||||
|
if (accounts->count() <= 0)
|
||||||
|
{
|
||||||
|
// Tell the user they need to log in at least one account in order to play.
|
||||||
|
auto reply = CustomMessageBox::selectable(this, tr("No Accounts"),
|
||||||
|
tr("In order to use MultiMC, you must have at least one Mojang or Minecraft account logged in to MultiMC."
|
||||||
|
"Would you like to open the account manager to add an account now?"),
|
||||||
|
QMessageBox::Information, QMessageBox::Yes | QMessageBox::No)->exec();
|
||||||
|
|
||||||
|
if (reply == QMessageBox::Yes)
|
||||||
|
{
|
||||||
|
// Open the account manager.
|
||||||
|
on_actionManageAccounts_triggered();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (account.get() == nullptr)
|
||||||
|
{
|
||||||
|
// If no default account is set, ask the user which one to use.
|
||||||
|
AccountSelectDialog selectDialog(tr("Which account would you like to use?"),
|
||||||
|
AccountSelectDialog::GlobalDefaultCheckbox, this);
|
||||||
|
|
||||||
|
selectDialog.exec();
|
||||||
|
|
||||||
|
// Launch the instance with the selected account.
|
||||||
|
account = selectDialog.selectedAccount();
|
||||||
|
|
||||||
|
// If the user said to use the account as default, do that.
|
||||||
|
if (selectDialog.useAsGlobalDefault() && account.get() != nullptr)
|
||||||
|
accounts->setActiveAccount(account->username());
|
||||||
|
}
|
||||||
|
|
||||||
|
// if no account is selected, we bail
|
||||||
|
if (!account.get())
|
||||||
|
return;
|
||||||
|
|
||||||
|
// do the login. if the account has an access token, try to refresh it first.
|
||||||
|
if(account->accountStatus() != NotVerified)
|
||||||
|
{
|
||||||
|
// We'll need to validate the access token to make sure the account is still logged in.
|
||||||
|
ProgressDialog progDialog(this);
|
||||||
|
auto task = account->login();
|
||||||
|
progDialog.exec(task.get());
|
||||||
|
|
||||||
|
auto status = account->accountStatus();
|
||||||
|
if(status != NotVerified)
|
||||||
|
{
|
||||||
|
ProgressDialog loadDialog(this);
|
||||||
|
auto update = newInstance->doUpdate(false);
|
||||||
|
connect(update.get(), &Task::failed , [this](QString reason) {
|
||||||
|
QString error = QString("Initial instance load failed: %1").arg(reason);
|
||||||
|
CustomMessageBox::selectable(this, tr("Error"), error, QMessageBox::Warning)->show();
|
||||||
|
});
|
||||||
|
loadDialog.exec(update.get());
|
||||||
|
}
|
||||||
|
// revert from online to verified.
|
||||||
|
account->downgrade();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (loginWithPassword(account, tr("Your account is currently not logged in. Please enter your password to log in again.")))
|
||||||
|
{
|
||||||
|
ProgressDialog loadDialog(this);
|
||||||
|
auto update = newInstance->doUpdate(false);
|
||||||
|
connect(update.get(), &Task::failed , [this](QString reason) {
|
||||||
|
QString error = QString("Instance load failed: %1").arg(reason);
|
||||||
|
CustomMessageBox::selectable(this, tr("Error"), error, QMessageBox::Warning)->show();
|
||||||
|
});
|
||||||
|
loadDialog.exec(update.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionCopyInstance_triggered()
|
void MainWindow::on_actionCopyInstance_triggered()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user