From c51512f94036b7d13b98cb02b8e8c1e549e7b448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Wed, 27 Sep 2017 15:39:13 +0200 Subject: NOISSUE use classparser for importing Legacy instances with undecided Minecraft versions --- api/logic/CMakeLists.txt | 2 +- api/logic/minecraft/legacy/LegacyInstance.cpp | 4 ++-- api/logic/minecraft/legacy/LegacyUpgradeTask.cpp | 16 ++++++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) (limited to 'api') diff --git a/api/logic/CMakeLists.txt b/api/logic/CMakeLists.txt index a99d22ab..38b15286 100644 --- a/api/logic/CMakeLists.txt +++ b/api/logic/CMakeLists.txt @@ -448,7 +448,7 @@ set_target_properties(MultiMC_logic PROPERTIES CXX_VISIBILITY_PRESET hidden VISI generate_export_header(MultiMC_logic) # Link -target_link_libraries(MultiMC_logic xz-embedded MultiMC_unpack200 systeminfo MultiMC_quazip ${NBT_NAME} ${ZLIB_LIBRARIES}) +target_link_libraries(MultiMC_logic xz-embedded MultiMC_unpack200 systeminfo MultiMC_quazip MultiMC_classparser ${NBT_NAME} ${ZLIB_LIBRARIES}) qt5_use_modules(MultiMC_logic Core Xml Network Concurrent) # Mark and export headers diff --git a/api/logic/minecraft/legacy/LegacyInstance.cpp b/api/logic/minecraft/legacy/LegacyInstance.cpp index 21acf675..0b69acf2 100644 --- a/api/logic/minecraft/legacy/LegacyInstance.cpp +++ b/api/logic/minecraft/legacy/LegacyInstance.cpp @@ -31,8 +31,8 @@ LegacyInstance::LegacyInstance(SettingsObjectPtr globalSettings, SettingsObjectP { settings->registerSetting("NeedsRebuild", true); settings->registerSetting("ShouldUpdate", false); - settings->registerSetting("JarVersion", "Unknown"); - settings->registerSetting("IntendedJarVersion", ""); + settings->registerSetting("JarVersion", QString()); + settings->registerSetting("IntendedJarVersion", QString()); /* * custom base jar has no default. it is determined in code... see the accessor methods for *it diff --git a/api/logic/minecraft/legacy/LegacyUpgradeTask.cpp b/api/logic/minecraft/legacy/LegacyUpgradeTask.cpp index cb0572ed..e41d87cb 100644 --- a/api/logic/minecraft/legacy/LegacyUpgradeTask.cpp +++ b/api/logic/minecraft/legacy/LegacyUpgradeTask.cpp @@ -8,6 +8,7 @@ #include "LegacyInstance.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/MinecraftProfile.h" +#include "classparser.h" LegacyUpgradeTask::LegacyUpgradeTask(SettingsObjectPtr settings, const QString & stagingPath, InstancePtr origInstance, const QString & newName) { @@ -50,7 +51,6 @@ static QString decideVersion(const QString& currentVersion, const QString& inten return intendedVersion; } } - // TODO: possibly add fallback to the old jar/classfile analysis method from MultiMC4 return QString(); } @@ -74,9 +74,17 @@ void LegacyUpgradeTask::copyFinished() QString preferredVersionNumber = decideVersion(legacyInst->currentVersionId(), legacyInst->intendedVersionId()); if(preferredVersionNumber.isNull()) { - // FIXME: let the user decide - emitFailed(tr("Could not decide Minecraft version.")); - return; + // try to decide version based on the jar(s?) + preferredVersionNumber = classparser::GetMinecraftJarVersion(legacyInst->baseJar()); + if(preferredVersionNumber.isNull()) + { + preferredVersionNumber = classparser::GetMinecraftJarVersion(legacyInst->runnableJar()); + if(preferredVersionNumber.isNull()) + { + emitFailed(tr("Could not decide Minecraft version.")); + return; + } + } } inst->setComponentVersion("net.minecraft", preferredVersionNumber); -- cgit v1.2.3