void MainWindow::checkSetDefaultJava() { bool askForJava = false; { QString currentHostName = QHostInfo::localHostName(); QString oldHostName = MMC->settings()->get("LastHostname").toString(); if (currentHostName != oldHostName) { MMC->settings()->set("LastHostname", currentHostName); askForJava = true; } } { QString currentJavaPath = MMC->settings()->get("JavaPath").toString(); if (currentJavaPath.isEmpty()) { askForJava = true; } } if (askForJava) { QLOG_DEBUG() << "Java path needs resetting, showing Java selection dialog..."; JavaVersionPtr java; VersionSelectDialog vselect(MMC->javalist().get(), tr("Select a Java version"), this, false); vselect.setResizeOn(2); vselect.exec(); if (vselect.selectedVersion()) java = std::dynamic_pointer_cast<JavaVersion>(vselect.selectedVersion()); else { CustomMessageBox::selectable( this, tr("Invalid version selected"), tr("You didn't select a valid Java version, so MultiMC will " "select the default. " "You can change this in the settings dialog."), QMessageBox::Warning)->show(); JavaUtils ju; java = ju.GetDefaultJava(); } if (java) MMC->settings()->set("JavaPath", java->path); else MMC->settings()->set("JavaPath", QString("java")); } }
void InstanceSettingsPage::on_javaDetectBtn_clicked() { JavaVersionPtr java; VersionSelectDialog vselect(MMC->javalist().get(), tr("Select a Java version"), this, true); vselect.setResizeOn(2); vselect.exec(); if (vselect.result() == QDialog::Accepted && vselect.selectedVersion()) { java = std::dynamic_pointer_cast<JavaVersion>(vselect.selectedVersion()); ui->javaPathTextBox->setText(java->path); } }
void MainWindow::on_actionChangeInstMCVersion_triggered() { if (view->selectionModel()->selectedIndexes().count() < 1) return; VersionSelectDialog vselect(m_selectedInstance->versionList().get(), tr("Change Minecraft version"), this); vselect.setFuzzyFilter(1, "*OneSix*"); if (!vselect.exec() || !vselect.selectedVersion()) return; if (!MMC->accounts()->anyAccountIsValid()) { CustomMessageBox::selectable( this, tr("Error"), tr("MultiMC cannot download Minecraft or update instances unless you have at least " "one account added.\nPlease add your Mojang or Minecraft account."), QMessageBox::Warning)->show(); return; } if (m_selectedInstance->versionIsCustom()) { 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_selectedInstance->setIntendedVersionId(vselect.selectedVersion()->descriptor()); auto updateTask = m_selectedInstance->doUpdate(); if (!updateTask) { return; } ProgressDialog tDialog(this); connect(updateTask.get(), SIGNAL(failed(QString)), SLOT(onGameUpdateError(QString))); tDialog.exec(updateTask.get()); }
void LegacyJarModPage::on_addForgeBtn_clicked() { VersionSelectDialog vselect(MMC->forgelist().get(), tr("Select Forge version"), this); vselect.setExactFilter(1, m_inst->intendedVersionId()); if (vselect.exec() && vselect.selectedVersion()) { ForgeVersionPtr forge = std::dynamic_pointer_cast<ForgeVersion>(vselect.selectedVersion()); if (!forge) return; auto entry = MMC->metacache()->resolveEntry("minecraftforge", forge->filename()); if (entry->stale) { NetJob *fjob = new NetJob("Forge download"); fjob->addNetAction(CacheDownload::make(forge->universal_url, entry)); ProgressDialog dlg(this); dlg.exec(fjob); if (dlg.result() == QDialog::Accepted) { m_jarmods->stopWatching(); m_jarmods->installMod(QFileInfo(entry->getFullPath())); m_jarmods->startWatching(); } else { // failed to download forge :/ } } else { m_jarmods->stopWatching(); m_jarmods->installMod(QFileInfo(entry->getFullPath())); m_jarmods->startWatching(); } } }
void OneSixModEditDialog::on_forgeBtn_clicked() { VersionSelectDialog vselect(MMC->forgelist().get(), tr("Select Forge version"), this); vselect.setFilter(1, m_inst->currentVersionId()); if (vselect.exec() && vselect.selectedVersion()) { if (m_inst->versionIsCustom()) { auto reply = QMessageBox::question( this, tr("Revert?"), tr("This will revert any " "changes you did to the version up to this point. Is that " "OK?"), QMessageBox::Yes | QMessageBox::No); if (reply == QMessageBox::Yes) { m_inst->revertCustomVersion(); m_inst->customizeVersion(); { m_version = m_inst->getFullVersion(); main_model->setSourceModel(m_version.get()); updateVersionControls(); } } else return; } else { m_inst->customizeVersion(); m_version = m_inst->getFullVersion(); main_model->setSourceModel(m_version.get()); updateVersionControls(); } ForgeVersionPtr forgeVersion = std::dynamic_pointer_cast<ForgeVersion>(vselect.selectedVersion()); if (!forgeVersion) return; auto entry = MMC->metacache()->resolveEntry("minecraftforge", forgeVersion->filename); if (entry->stale) { NetJob *fjob = new NetJob("Forge download"); fjob->addNetAction(CacheDownload::make(forgeVersion->installer_url, entry)); ProgressDialog dlg(this); dlg.exec(fjob); if (dlg.result() == QDialog::Accepted) { // install QString forgePath = entry->getFullPath(); ForgeInstaller forge(forgePath, forgeVersion->universal_url); if (!forge.apply(m_version)) { // failure notice } } else { // failed to download forge :/ } } else { // install QString forgePath = entry->getFullPath(); ForgeInstaller forge(forgePath, forgeVersion->universal_url); if (!forge.apply(m_version)) { // failure notice } } } }