summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2018-03-23 23:38:08 +0100
committerPetr Mrázek <peterix@gmail.com>2018-03-23 23:39:18 +0100
commita1c713811c5a2f514f7255436cfad836e0cf426b (patch)
tree20aa682894caf9c3af901d64f103569ae79ab5e2
parent106155dd627d8e333260e2460d4c9c558b49b21f (diff)
downloadMultiMC-a1c713811c5a2f514f7255436cfad836e0cf426b.tar
MultiMC-a1c713811c5a2f514f7255436cfad836e0cf426b.tar.gz
MultiMC-a1c713811c5a2f514f7255436cfad836e0cf426b.tar.lz
MultiMC-a1c713811c5a2f514f7255436cfad836e0cf426b.tar.xz
MultiMC-a1c713811c5a2f514f7255436cfad836e0cf426b.zip
NOISSUE preserve minecraft.jar while migrating Legacy instances
It can be manually modded. It must be preserved when it's the only jar around.
-rw-r--r--api/logic/minecraft/legacy/LegacyInstance.cpp20
-rw-r--r--api/logic/minecraft/legacy/LegacyInstance.h3
-rw-r--r--api/logic/minecraft/legacy/LegacyUpgradeTask.cpp6
3 files changed, 26 insertions, 3 deletions
diff --git a/api/logic/minecraft/legacy/LegacyInstance.cpp b/api/logic/minecraft/legacy/LegacyInstance.cpp
index 6e318458..5338763c 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 4a8bc436..7ab89509 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 6cda3e4d..9fc6d92b 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);