diff --git a/api/logic/minecraft/legacy/LegacyInstance.cpp b/api/logic/minecraft/legacy/LegacyInstance.cpp index 6e3184585..5338763cc 100644 --- a/api/logic/minecraft/legacy/LegacyInstance.cpp +++ b/api/logic/minecraft/legacy/LegacyInstance.cpp @@ -44,6 +44,26 @@ LegacyInstance::LegacyInstance(SettingsObjectPtr globalSettings, SettingsObjectP settings->registerSetting("CustomBaseJar", ""); } +QString LegacyInstance::mainJarToPreserve() const +{ + bool customJar = m_settings->get("UseCustomBaseJar").toBool(); + if(customJar) + { + auto base = baseJar(); + if(QFile::exists(base)) + { + return base; + } + } + auto runnable = runnableJar(); + if(QFile::exists(runnable)) + { + return runnable; + } + return QString(); +} + + QString LegacyInstance::baseJar() const { bool customJar = m_settings->get("UseCustomBaseJar").toBool(); diff --git a/api/logic/minecraft/legacy/LegacyInstance.h b/api/logic/minecraft/legacy/LegacyInstance.h index 4a8bc436c..7ab895092 100644 --- a/api/logic/minecraft/legacy/LegacyInstance.h +++ b/api/logic/minecraft/legacy/LegacyInstance.h @@ -64,6 +64,9 @@ public: /// the default custom base jar of this instance QString defaultCustomBaseJar() const; + // the main jar that we actually want to keep when migrating the instance + QString mainJarToPreserve() const; + /*! * Whether or not custom base jar is used */ diff --git a/api/logic/minecraft/legacy/LegacyUpgradeTask.cpp b/api/logic/minecraft/legacy/LegacyUpgradeTask.cpp index 6cda3e4da..9fc6d92b2 100644 --- a/api/logic/minecraft/legacy/LegacyUpgradeTask.cpp +++ b/api/logic/minecraft/legacy/LegacyUpgradeTask.cpp @@ -92,10 +92,10 @@ void LegacyUpgradeTask::copyFinished() components->buildingFromScratch(); components->setComponentVersion("net.minecraft", preferredVersionNumber, true); - if(legacyInst->shouldUseCustomBaseJar()) + QString jarPath = legacyInst->mainJarToPreserve(); + if(!jarPath.isNull()) { - QString jarPath = legacyInst->customBaseJar(); - qDebug() << "Base jar is custom! : " << jarPath; + qDebug() << "Preserving base jar! : " << jarPath; // FIXME: handle case when the jar is unreadable? // TODO: check the hash, if it's the same as the upstream jar, do not do this components->installCustomJar(jarPath);