aboutsummaryrefslogtreecommitdiff
path: root/logic
diff options
context:
space:
mode:
authorForkk <forkk@forkk.net>2014-01-02 13:38:20 -0600
committerForkk <forkk@forkk.net>2014-01-02 13:38:20 -0600
commit17f1864a71b69b9df14d8e06ed48a65e678d09c9 (patch)
tree4d98a2b3493a26017150d6ba8c5ae0419de3de7d /logic
parent4495e20cd7f7f2ab062f3b60f19ac4b79f32c350 (diff)
parentaa5f2c8120cc23de0d57c9f0280512adb9a531b3 (diff)
downloadPrismLauncher-17f1864a71b69b9df14d8e06ed48a65e678d09c9.tar.gz
PrismLauncher-17f1864a71b69b9df14d8e06ed48a65e678d09c9.tar.bz2
PrismLauncher-17f1864a71b69b9df14d8e06ed48a65e678d09c9.zip
Merge branch 'develop' of github.com:MultiMC/MultiMC5 into feature_news
Conflicts: CMakeLists.txt gui/MainWindow.h
Diffstat (limited to 'logic')
-rw-r--r--logic/BaseInstance.cpp73
-rw-r--r--logic/BaseInstance.h3
-rw-r--r--logic/InstanceFactory.cpp100
-rw-r--r--logic/InstanceFactory.h11
-rw-r--r--logic/JavaChecker.cpp2
-rw-r--r--logic/JavaUtils.cpp4
-rw-r--r--logic/LegacyFTBInstance.cpp16
-rw-r--r--logic/LegacyFTBInstance.h13
-rw-r--r--logic/LegacyInstance.cpp13
-rw-r--r--logic/LegacyUpdate.cpp23
-rw-r--r--logic/LiteLoaderInstaller.cpp102
-rw-r--r--logic/LiteLoaderInstaller.h39
-rw-r--r--logic/Mod.cpp141
-rw-r--r--logic/Mod.h32
-rw-r--r--logic/ModList.cpp225
-rw-r--r--logic/ModList.h18
-rw-r--r--logic/OneSixFTBInstance.cpp120
-rw-r--r--logic/OneSixFTBInstance.h20
-rw-r--r--logic/OneSixInstance.cpp4
-rw-r--r--logic/OneSixLibrary.h6
-rw-r--r--logic/OneSixUpdate.cpp14
-rw-r--r--logic/assets/AssetsMigrateTask.cpp143
-rw-r--r--logic/assets/AssetsMigrateTask.h18
-rw-r--r--logic/assets/AssetsUtils.cpp83
-rw-r--r--logic/assets/AssetsUtils.h2
-rw-r--r--logic/auth/MojangAccount.cpp26
-rw-r--r--logic/auth/MojangAccount.h2
-rw-r--r--logic/auth/YggdrasilTask.cpp36
-rw-r--r--logic/auth/YggdrasilTask.h2
-rw-r--r--logic/auth/flows/AuthenticateTask.cpp4
-rw-r--r--logic/auth/flows/RefreshTask.cpp4
-rw-r--r--logic/auth/flows/ValidateTask.cpp4
-rw-r--r--logic/icons/IconList.cpp351
-rw-r--r--logic/icons/IconList.h (renamed from logic/lists/IconList.h)33
-rw-r--r--logic/icons/MMCIcon.cpp89
-rw-r--r--logic/icons/MMCIcon.h52
-rw-r--r--logic/lists/ForgeVersionList.cpp205
-rw-r--r--logic/lists/ForgeVersionList.h14
-rw-r--r--logic/lists/IconList.cpp271
-rw-r--r--logic/lists/InstanceList.cpp226
-rw-r--r--logic/lists/InstanceList.h16
-rw-r--r--logic/lists/JavaVersionList.cpp13
-rw-r--r--logic/lists/JavaVersionList.h1
-rw-r--r--logic/lists/MinecraftVersionList.cpp2
-rw-r--r--logic/net/ForgeXzDownload.cpp44
-rw-r--r--logic/net/MD5EtagDownload.cpp38
-rw-r--r--logic/net/MD5EtagDownload.h8
-rw-r--r--logic/net/URLConstants.h2
-rw-r--r--logic/tasks/SequentialTask.cpp77
-rw-r--r--logic/tasks/SequentialTask.h32
-rw-r--r--logic/tasks/ThreadTask.cpp41
-rw-r--r--logic/tasks/ThreadTask.h25
-rw-r--r--logic/updater/DownloadUpdateTask.cpp436
-rw-r--r--logic/updater/DownloadUpdateTask.h49
-rw-r--r--logic/updater/UpdateChecker.cpp73
-rw-r--r--logic/updater/UpdateChecker.h11
56 files changed, 2567 insertions, 845 deletions
diff --git a/logic/BaseInstance.cpp b/logic/BaseInstance.cpp
index 6f8222b7..ac66a8d5 100644
--- a/logic/BaseInstance.cpp
+++ b/logic/BaseInstance.cpp
@@ -27,6 +27,7 @@
#include "pathutils.h"
#include "lists/MinecraftVersionList.h"
+#include "logic/icons/IconList.h"
BaseInstance::BaseInstance(BaseInstancePrivate *d_in, const QString &rootDir,
SettingsObject *settings_obj, QObject *parent)
@@ -36,10 +37,11 @@ BaseInstance::BaseInstance(BaseInstancePrivate *d_in, const QString &rootDir,
d->m_settings = settings_obj;
d->m_rootDir = rootDir;
- settings().registerSetting(new Setting("name", "Unnamed Instance"));
- settings().registerSetting(new Setting("iconKey", "default"));
- settings().registerSetting(new Setting("notes", ""));
- settings().registerSetting(new Setting("lastLaunchTime", 0));
+ settings().registerSetting("name", "Unnamed Instance");
+ settings().registerSetting("iconKey", "default");
+ connect(MMC->icons().get(), SIGNAL(iconUpdated(QString)), SLOT(iconUpdated(QString)));
+ settings().registerSetting("notes", "");
+ settings().registerSetting("lastLaunchTime", 0);
/*
* custom base jar has no default. it is determined in code... see the accessor methods for
@@ -48,54 +50,45 @@ BaseInstance::BaseInstance(BaseInstancePrivate *d_in, const QString &rootDir,
* for instances that DO NOT have the CustomBaseJar setting (legacy instances),
* [.]minecraft/bin/mcbackup.jar is the default base jar
*/
- settings().registerSetting(new Setting("UseCustomBaseJar", true));
- settings().registerSetting(new Setting("CustomBaseJar", ""));
+ settings().registerSetting("UseCustomBaseJar", true);
+ settings().registerSetting("CustomBaseJar", "");
auto globalSettings = MMC->settings();
// Java Settings
- settings().registerSetting(new Setting("OverrideJava", false));
- settings().registerSetting(
- new OverrideSetting("JavaPath", globalSettings->getSetting("JavaPath")));
- settings().registerSetting(
- new OverrideSetting("JvmArgs", globalSettings->getSetting("JvmArgs")));
+ settings().registerSetting("OverrideJava", false);
+ settings().registerOverride(globalSettings->getSetting("JavaPath"));
+ settings().registerOverride(globalSettings->getSetting("JvmArgs"));
// Custom Commands
- settings().registerSetting(new Setting("OverrideCommands", false));
- settings().registerSetting(new OverrideSetting(
- "PreLaunchCommand", globalSettings->getSetting("PreLaunchCommand")));
- settings().registerSetting(
- new OverrideSetting("PostExitCommand", globalSettings->getSetting("PostExitCommand")));
+ settings().registerSetting({"OverrideCommands","OverrideLaunchCmd"}, false);
+ settings().registerOverride(globalSettings->getSetting("PreLaunchCommand"));
+ settings().registerOverride(globalSettings->getSetting("PostExitCommand"));
// Window Size
- settings().registerSetting(new Setting("OverrideWindow", false));
- settings().registerSetting(
- new OverrideSetting("LaunchMaximized", globalSettings->getSetting("LaunchMaximized")));
- settings().registerSetting(new OverrideSetting(
- "MinecraftWinWidth", globalSettings->getSetting("MinecraftWinWidth")));
- settings().registerSetting(new OverrideSetting(
- "MinecraftWinHeight", globalSettings->getSetting("MinecraftWinHeight")));
+ settings().registerSetting("OverrideWindow", false);
+ settings().registerOverride(globalSettings->getSetting("LaunchMaximized"));
+ settings().registerOverride(globalSettings->getSetting("MinecraftWinWidth"));
+ settings().registerOverride(globalSettings->getSetting("MinecraftWinHeight"));
// Memory
- settings().registerSetting(new Setting("OverrideMemory", false));
- settings().registerSetting(
- new OverrideSetting("MinMemAlloc", globalSettings->getSetting("MinMemAlloc")));
- settings().registerSetting(
- new OverrideSetting("MaxMemAlloc", globalSettings->getSetting("MaxMemAlloc")));
- settings().registerSetting(
- new OverrideSetting("PermGen", globalSettings->getSetting("PermGen")));
-
- // Auto login
- settings().registerSetting(new Setting("OverrideLogin", false));
- settings().registerSetting(
- new OverrideSetting("AutoLogin", globalSettings->getSetting("AutoLogin")));
+ settings().registerSetting("OverrideMemory", false);
+ settings().registerOverride(globalSettings->getSetting("MinMemAlloc"));
+ settings().registerOverride(globalSettings->getSetting("MaxMemAlloc"));
+ settings().registerOverride(globalSettings->getSetting("PermGen"));
// Console
- settings().registerSetting(new Setting("OverrideConsole", false));
- settings().registerSetting(
- new OverrideSetting("ShowConsole", globalSettings->getSetting("ShowConsole")));
- settings().registerSetting(new OverrideSetting(
- "AutoCloseConsole", globalSettings->getSetting("AutoCloseConsole")));
+ settings().registerSetting("OverrideConsole", false);
+ settings().registerOverride(globalSettings->getSetting("ShowConsole"));
+ settings().registerOverride(globalSettings->getSetting("AutoCloseConsole"));
+}
+
+void BaseInstance::iconUpdated(QString key)
+{
+ if(iconKey() == key)
+ {
+ emit propertiesChanged(this);
+ }
}
void BaseInstance::nuke()
diff --git a/logic/BaseInstance.h b/logic/BaseInstance.h
index 5f426676..01d6dc7d 100644
--- a/logic/BaseInstance.h
+++ b/logic/BaseInstance.h
@@ -184,6 +184,9 @@ signals:
*/
void nuked(BaseInstance *inst);
+protected slots:
+ void iconUpdated(QString key);
+
protected:
std::shared_ptr<BaseInstancePrivate> inst_d;
};
diff --git a/logic/InstanceFactory.cpp b/logic/InstanceFactory.cpp
index 66b271d0..1f1a5879 100644
--- a/logic/InstanceFactory.cpp
+++ b/logic/InstanceFactory.cpp
@@ -20,7 +20,9 @@
#include "BaseInstance.h"
#include "LegacyInstance.h"
+#include "LegacyFTBInstance.h"
#include "OneSixInstance.h"
+#include "OneSixFTBInstance.h"
#include "NostalgiaInstance.h"
#include "BaseVersion.h"
#include "MinecraftVersion.h"
@@ -43,7 +45,7 @@ InstanceFactory::InstLoadError InstanceFactory::loadInstance(BaseInstance *&inst
{
auto m_settings = new INISettingsObject(PathCombine(instDir, "instance.cfg"));
- m_settings->registerSetting(new Setting("InstanceType", "Legacy"));
+ m_settings->registerSetting("InstanceType", "Legacy");
QString inst_type = m_settings->get("InstanceType").toString();
@@ -60,6 +62,14 @@ InstanceFactory::InstLoadError InstanceFactory::loadInstance(BaseInstance *&inst
{
inst = new NostalgiaInstance(instDir, m_settings, this);
}
+ else if (inst_type == "LegacyFTB")
+ {
+ inst = new LegacyFTBInstance(instDir, m_settings, this);
+ }
+ else if (inst_type == "OneSixFTB")
+ {
+ inst = new OneSixFTBInstance(instDir, m_settings, this);
+ }
else
{
return InstanceFactory::UnknownLoadError;
@@ -69,7 +79,8 @@ InstanceFactory::InstLoadError InstanceFactory::loadInstance(BaseInstance *&inst
InstanceFactory::InstCreateError InstanceFactory::createInstance(BaseInstance *&inst,
BaseVersionPtr version,
- const QString &instDir)
+ const QString &instDir,
+ const InstType type)
{
QDir rootDir(instDir);
@@ -83,34 +94,65 @@ InstanceFactory::InstCreateError InstanceFactory::createInstance(BaseInstance *&
return InstanceFactory::NoSuchVersion;
auto m_settings = new INISettingsObject(PathCombine(instDir, "instance.cfg"));
- m_settings->registerSetting(new Setting("InstanceType", "Legacy"));
+ m_settings->registerSetting("InstanceType", "Legacy");
- switch (mcVer->type)
+ if (type == NormalInst)
{
- case MinecraftVersion::Legacy:
- m_settings->set("InstanceType", "Legacy");
- inst = new LegacyInstance(instDir, m_settings, this);
- inst->setIntendedVersionId(version->descriptor());
- inst->setShouldUseCustomBaseJar(false);
- break;
- case MinecraftVersion::OneSix:
- m_settings->set("InstanceType", "OneSix");
- inst = new OneSixInstance(instDir, m_settings, this);
- inst->setIntendedVersionId(version->descriptor());
- inst->setShouldUseCustomBaseJar(false);
- break;
- case MinecraftVersion::Nostalgia:
- m_settings->set("InstanceType", "Nostalgia");
- inst = new NostalgiaInstance(instDir, m_settings, this);
- inst->setIntendedVersionId(version->descriptor());
- inst->setShouldUseCustomBaseJar(false);
- break;
- default:
+ switch (mcVer->type)
+ {
+ case MinecraftVersion::Legacy:
+ m_settings->set("InstanceType", "Legacy");
+ inst = new LegacyInstance(instDir, m_settings, this);
+ inst->setIntendedVersionId(version->descriptor());
+ inst->setShouldUseCustomBaseJar(false);
+ break;
+ case MinecraftVersion::OneSix:
+ m_settings->set("InstanceType", "OneSix");
+ inst = new OneSixInstance(instDir, m_settings, this);
+ inst->setIntendedVersionId(version->descriptor());
+ inst->setShouldUseCustomBaseJar(false);
+ break;
+ case MinecraftVersion::Nostalgia:
+ m_settings->set("InstanceType", "Nostalgia");
+ inst = new NostalgiaInstance(instDir, m_settings, this);
+ inst->setIntendedVersionId(version->descriptor());
+ inst->setShouldUseCustomBaseJar(false);
+ break;
+ default:
+ {
+ delete m_settings;
+ return InstanceFactory::NoSuchVersion;
+ }
+ }
+ }
+ else if (type == FTBInstance)
+ {
+ switch (mcVer->type)
+ {
+ case MinecraftVersion::Legacy:
+ m_settings->set("InstanceType", "LegacyFTB");
+ inst = new LegacyFTBInstance(instDir, m_settings, this);
+ inst->setIntendedVersionId(version->descriptor());
+ inst->setShouldUseCustomBaseJar(false);
+ break;
+ case MinecraftVersion::OneSix:
+ m_settings->set("InstanceType", "OneSixFTB");
+ inst = new OneSixFTBInstance(instDir, m_settings, this);
+ inst->setIntendedVersionId(version->descriptor());
+ inst->setShouldUseCustomBaseJar(false);
+ break;
+ default:
+ {
+ delete m_settings;
+ return InstanceFactory::NoSuchVersion;
+ }
+ }
+ }
+ else
{
delete m_settings;
return InstanceFactory::NoSuchVersion;
}
- }
// FIXME: really, how do you even know?
return InstanceFactory::NoCreateError;
@@ -128,7 +170,17 @@ InstanceFactory::InstCreateError InstanceFactory::copyInstance(BaseInstance *&ne
rootDir.removeRecursively();
return InstanceFactory::CantCreateDir;
}
+ auto m_settings = new INISettingsObject(PathCombine(instDir, "instance.cfg"));
+ m_settings->registerSetting("InstanceType", "Legacy");
+ QString inst_type = m_settings->get("InstanceType").toString();
+
+ if(inst_type == "OneSixFTB")
+ m_settings->set("InstanceType", "OneSix");
+ if(inst_type == "LegacyFTB")
+ m_settings->set("InstanceType", "Legacy");
+
auto error = loadInstance(newInstance, instDir);
+
switch (error)
{
case NoLoadError:
diff --git a/logic/InstanceFactory.h b/logic/InstanceFactory.h
index 01e5af7e..5ff4c7ec 100644
--- a/logic/InstanceFactory.h
+++ b/logic/InstanceFactory.h
@@ -55,18 +55,25 @@ public:
CantCreateDir
};
+ enum InstType
+ {
+ NormalInst,
+ FTBInstance
+ };
+
/*!
* \brief Creates a stub instance
*
* \param inst Pointer to store the created instance in.
- * \param inst Game version to use for the instance
+ * \param version Game version to use for the instance
* \param instDir The new instance's directory.
+ * \param type The type of instance to create
* \return An InstCreateError error code.
* - InstExists if the given instance directory is already an instance.
* - CantCreateDir if the given instance directory cannot be created.
*/
InstCreateError createInstance(BaseInstance *&inst, BaseVersionPtr version,
- const QString &instDir);
+ const QString &instDir, const InstType type = NormalInst);
/*!
* \brief Creates a copy of an existing instance with a new name
diff --git a/logic/JavaChecker.cpp b/logic/JavaChecker.cpp
index 2b94fbb6..113974ff 100644
--- a/logic/JavaChecker.cpp
+++ b/logic/JavaChecker.cpp
@@ -99,6 +99,7 @@ void JavaChecker::error(QProcess::ProcessError err)
if(err == QProcess::FailedToStart)
{
killTimer.stop();
+ checkerJar.remove();
JavaCheckResult result;
{
@@ -116,6 +117,5 @@ void JavaChecker::timeout()
if(process)
{
process->kill();
- process.reset();
}
}
diff --git a/logic/JavaUtils.cpp b/logic/JavaUtils.cpp
index e1b3bc64..cf47df6f 100644
--- a/logic/JavaUtils.cpp
+++ b/logic/JavaUtils.cpp
@@ -177,10 +177,10 @@ QList<QString> JavaUtils::FindJavaPaths()
#elif OSX
QList<QString> JavaUtils::FindJavaPaths()
{
- QLOG_INFO() << "OS X Java detection incomplete - defaulting to \"java\"";
-
QList<QString> javas;
javas.append(this->GetDefaultJava()->path);
+ javas.append("/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java");
+ javas.append("/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java");
return javas;
}
diff --git a/logic/LegacyFTBInstance.cpp b/logic/LegacyFTBInstance.cpp
new file mode 100644
index 00000000..84d5a900
--- /dev/null
+++ b/logic/LegacyFTBInstance.cpp
@@ -0,0 +1,16 @@
+#include "LegacyFTBInstance.h"
+
+LegacyFTBInstance::LegacyFTBInstance(const QString &rootDir, SettingsObject *settings, QObject *parent) :
+ LegacyInstance(rootDir, settings, parent)
+{
+}
+
+QString LegacyFTBInstance::getStatusbarDescription()
+{
+ return "Legacy FTB: " + intendedVersionId();
+}
+
+bool LegacyFTBInstance::menuActionEnabled(QString action_name) const
+{
+ return false;
+}
diff --git a/logic/LegacyFTBInstance.h b/logic/LegacyFTBInstance.h
new file mode 100644
index 00000000..2ae72797
--- /dev/null
+++ b/logic/LegacyFTBInstance.h
@@ -0,0 +1,13 @@
+#pragma once
+
+#include "LegacyInstance.h"
+
+class LegacyFTBInstance : public LegacyInstance
+{
+ Q_OBJECT
+public:
+ explicit LegacyFTBInstance(const QString &rootDir, SettingsObject *settings,
+ QObject *parent = 0);
+ virtual QString getStatusbarDescription();
+ virtual bool menuActionEnabled(QString action_name) const;
+};
diff --git a/logic/LegacyInstance.cpp b/logic/LegacyInstance.cpp
index fef27bcd..0bc0961e 100644
--- a/logic/LegacyInstance.cpp
+++ b/logic/LegacyInstance.cpp
@@ -27,7 +27,7 @@
#include "logic/MinecraftProcess.h"
#include "logic/LegacyUpdate.h"
-#include "logic/lists/IconList.h"
+#include "logic/icons/IconList.h"
#include "gui/dialogs/LegacyModEditDialog.h"
@@ -37,11 +37,11 @@ LegacyInstance::LegacyInstance(const QString &rootDir, SettingsObject *settings,
QObject *parent)
: BaseInstance(new LegacyInstancePrivate(), rootDir, settings, parent)
{
- settings->registerSetting(new Setting("NeedsRebuild", true));
- settings->registerSetting(new Setting("ShouldUpdate", false));
- settings->registerSetting(new Setting("JarVersion", "Unknown"));
- settings->registerSetting(new Setting("LwjglVersion", "2.9.0"));
- settings->registerSetting(new Setting("IntendedJarVersion", ""));
+ settings->registerSetting("NeedsRebuild", true);
+ settings->registerSetting("ShouldUpdate", false);
+ settings->registerSetting("JarVersion", "Unknown");
+ settings->registerSetting("LwjglVersion", "2.9.0");
+ settings->registerSetting("IntendedJarVersion", "");
}
std::shared_ptr<Task> LegacyInstance::doUpdate(bool only_prepare)
@@ -150,6 +150,7 @@ std::shared_ptr<ModList> LegacyInstance::jarModList()
void LegacyInstance::jarModsChanged()
{
+ QLOG_INFO() << "Jar mods of instance " << name() << " have changed. Jar will be rebuilt.";
setShouldRebuild(true);
}
diff --git a/logic/LegacyUpdate.cpp b/logic/LegacyUpdate.cpp
index e71b270e..cb3598a7 100644
--- a/logic/LegacyUpdate.cpp
+++ b/logic/LegacyUpdate.cpp
@@ -76,7 +76,7 @@ void LegacyUpdate::lwjglStart()
return;
}
- setStatus("Downloading new LWJGL.");
+ setStatus(tr("Downloading new LWJGL..."));
auto version = list->getVersion(lwjglVersion);
if (!version)
{
@@ -144,7 +144,7 @@ void LegacyUpdate::lwjglFinished(QNetworkReply *reply)
saveMe.open(QIODevice::WriteOnly);
saveMe.write(m_reply->readAll());
saveMe.close();
- setStatus("Installing new LWJGL...");
+ setStatus(tr("Installing new LWJGL..."));
extractLwjgl();
jarStart();
}
@@ -220,7 +220,7 @@ void LegacyUpdate::extractLwjgl()
// Now if destFileName is still empty, go to the next file.
if (!destFileName.isEmpty())
{
- setStatus("Installing new LWJGL - Extracting " + name);
+ setStatus(tr("Installing new LWJGL - extracting ") + name + "...");
QFile output(destFileName);
output.open(QIODevice::WriteOnly);
output.write(file.readAll()); // FIXME: wste of memory!?
@@ -250,7 +250,7 @@ void LegacyUpdate::jarStart()
return;
}
- setStatus("Checking for jar updates...");
+ setStatus(tr("Checking for jar updates..."));
// Make directories
QDir binDir(inst->binDir());
if (!binDir.exists() && !binDir.mkpath("."))
@@ -260,7 +260,7 @@ void LegacyUpdate::jarStart()
}
// Build a list of URLs that will need to be downloaded.
- setStatus("Downloading new minecraft.jar");
+ setStatus(tr("Downloading new minecraft.jar ..."));
QString version_id = inst->intendedVersionId();
QString localPath = version_id + "/" + version_id + ".jar";
@@ -294,7 +294,7 @@ void LegacyUpdate::jarFailed()
bool LegacyUpdate::MergeZipFiles(QuaZip *into, QFileInfo from, QSet<QString> &contained,
MetainfAction metainf)
{
- setStatus("Installing mods - Adding " + from.fileName());
+ setStatus(tr("Installing mods: Adding ") + from.fileName() + " ...");
QuaZip modZip(from.filePath());
modZip.open(QuaZip::mdUnzip);
@@ -380,7 +380,7 @@ void LegacyUpdate::ModTheJar()
return;
}
- setStatus("Installing mods - backing up minecraft.jar...");
+ setStatus(tr("Installing mods: Backing up minecraft.jar ..."));
if (!baseJar.exists() && !QFile::copy(runnableJar.filePath(), baseJar.filePath()))
{
emitFailed("It seems both the active and base jar are gone. A fresh base jar will "
@@ -405,7 +405,7 @@ void LegacyUpdate::ModTheJar()
}
// TaskStep(); // STEP 1
- setStatus("Installing mods - Opening minecraft.jar");
+ setStatus(tr("Installing mods: Opening minecraft.jar ..."));
QuaZip zipOut(runnableJar.filePath());
if (!zipOut.open(QuaZip::mdCreate))
@@ -419,10 +419,15 @@ void LegacyUpdate::ModTheJar()
QSet<QString> addedFiles;
// Modify the jar
- setStatus("Installing mods - Adding mod files...");
+ setStatus(tr("Installing mods: Adding mod files..."));
for (int i = modList->size() - 1; i >= 0; i--)
{
auto &mod = modList->operator[](i);
+
+ // do not merge disabled mods.
+ if(!mod.enabled())
+ continue;
+
if (mod.type() == Mod::MOD_ZIPFILE)
{
if (!MergeZipFiles(&zipOut, mod.filename(), addedFiles, LegacyUpdate::KeepMetainf))
diff --git a/logic/LiteLoaderInstaller.cpp b/logic/LiteLoaderInstaller.cpp
new file mode 100644
index 00000000..07fffff3
--- /dev/null
+++ b/logic/LiteLoaderInstaller.cpp
@@ -0,0 +1,102 @@
+/* Copyright 2013 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "LiteLoaderInstaller.h"
+
+#include "OneSixVersion.h"
+#include "OneSixLibrary.h"
+
+QMap<QString, QString> LiteLoaderInstaller::m_launcherWrapperVersionMapping;
+
+LiteLoaderInstaller::LiteLoaderInstaller(const QString &mcVersion) : m_mcVersion(mcVersion)
+{
+ if (m_launcherWrapperVersionMapping.isEmpty())
+ {
+ m_launcherWrapperVersionMapping["1.6.2"] = "1.3";
+ m_launcherWrapperVersionMapping["1.6.4"] = "1.8";
+ //m_launcherWrapperVersionMapping["1.7.2"] = "1.8";
+ //m_launcherWrapperVersionMapping["1.7.4"] = "1.8";
+ }
+}
+
+bool LiteLoaderInstaller::canApply() const
+{
+ return m_launcherWrapperVersionMapping.contains(m_mcVersion);
+}
+
+bool LiteLoaderInstaller::apply(std::shared_ptr<OneSixVersion> to)
+{
+ to->externalUpdateStart();
+
+ applyLaunchwrapper(to);
+ applyLiteLoader(to);