diff options
-rw-r--r-- | api/logic/minecraft/legacy/LegacyUpdate.cpp | 23 | ||||
-rw-r--r-- | application/MultiMC.cpp | 7 | ||||
-rw-r--r-- | application/MultiMC.h | 1 |
3 files changed, 22 insertions, 9 deletions
diff --git a/api/logic/minecraft/legacy/LegacyUpdate.cpp b/api/logic/minecraft/legacy/LegacyUpdate.cpp index 337a3e4e..e263d0de 100644 --- a/api/logic/minecraft/legacy/LegacyUpdate.cpp +++ b/api/logic/minecraft/legacy/LegacyUpdate.cpp @@ -164,6 +164,20 @@ void LegacyUpdate::lwjglStart() { LegacyInstance *inst = (LegacyInstance *)m_inst; + auto list = std::dynamic_pointer_cast<LWJGLVersionList>(ENV.getVersionList("org.lwjgl.legacy")); + if (!list->isLoaded()) + { + setStatus(tr("Checking the LWJGL version list...")); + list->loadList(); + auto task = list->getLoadTask(); + connect(task.get(), &Task::succeeded, this, &LegacyUpdate::lwjglStart); + connect(task.get(), &Task::failed, this, [&](const QString & error) + { + emitFailed(tr("Failed to refresh LWJGL list: %1.").arg(error)); + }); + return; + } + lwjglVersion = inst->lwjglVersion(); lwjglTargetPath = FS::PathCombine(inst->lwjglFolder(), lwjglVersion); lwjglNativesPath = FS::PathCombine(lwjglTargetPath, "natives"); @@ -176,18 +190,11 @@ void LegacyUpdate::lwjglStart() return; } - auto list = std::dynamic_pointer_cast<LWJGLVersionList>(ENV.getVersionList("org.lwjgl.legacy")); - if (!list->isLoaded()) - { - emitFailed("Too soon! Let the LWJGL list load :)"); - return; - } - setStatus(tr("Downloading new LWJGL...")); auto version = std::dynamic_pointer_cast<LWJGLVersion>(list->findVersion(lwjglVersion)); if (!version) { - emitFailed("Game update failed: the selected LWJGL version is invalid."); + emitFailed(QString("Game update failed: the selected LWJGL version is invalid: %1").arg(lwjglVersion)); return; } diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp index 495b14a0..c78a536e 100644 --- a/application/MultiMC.cpp +++ b/application/MultiMC.cpp @@ -350,10 +350,10 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv) initIcons(); initThemes(); - // make sure we have at least some minecraft versions before we init instances initInstances(); initAccounts(); initNetwork(); + initLegacyLwjgl(); // now we have network, download translation updates m_translations->downloadIndex(); @@ -859,6 +859,11 @@ void MultiMC::initMCEdit() m_mcedit.reset(new MCEditTool(m_settings)); } +void MultiMC::initLegacyLwjgl() +{ + auto list = lwjgllist(); +} + std::shared_ptr<TranslationsModel> MultiMC::translations() { return m_translations; diff --git a/application/MultiMC.h b/application/MultiMC.h index de768a98..2fa8e8c3 100644 --- a/application/MultiMC.h +++ b/application/MultiMC.h @@ -185,6 +185,7 @@ private: void initAccounts(); void initMCEdit(); void initAnalytics(); + void initLegacyLwjgl(); void shutdownAnalytics(); bool createSetupWizard(); void performMainStartupAction(); |