103 lines
2.8 KiB
C++
103 lines
2.8 KiB
C++
/* 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);
|
|
|
|
to->mainClass = "net.minecraft.launchwrapper.Launch";
|
|
if (!to->minecraftArguments.contains(
|
|
" --tweakClass com.mumfrey.liteloader.launch.LiteLoaderTweaker"))
|
|
{
|
|
to->minecraftArguments.append(
|
|
" --tweakClass com.mumfrey.liteloader.launch.LiteLoaderTweaker");
|
|
}
|
|
|
|
to->externalUpdateFinish();
|
|
return to->toOriginalFile();
|
|
}
|
|
|
|
void LiteLoaderInstaller::applyLaunchwrapper(std::shared_ptr<OneSixVersion> to)
|
|
{
|
|
const QString intendedVersion = m_launcherWrapperVersionMapping[m_mcVersion];
|
|
|
|
QMutableListIterator<std::shared_ptr<OneSixLibrary>> it(to->libraries);
|
|
while (it.hasNext())
|
|
{
|
|
it.next();
|
|
if (it.value()->rawName().startsWith("net.minecraft:launchwrapper:"))
|
|
{
|
|
if (it.value()->version() >= intendedVersion)
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
it.remove();
|
|
}
|
|
}
|
|
}
|
|
|
|
std::shared_ptr<OneSixLibrary> lib(new OneSixLibrary(
|
|
"net.minecraft:launchwrapper:" + m_launcherWrapperVersionMapping[m_mcVersion]));
|
|
lib->finalize();
|
|
to->libraries.prepend(lib);
|
|
}
|
|
|
|
void LiteLoaderInstaller::applyLiteLoader(std::shared_ptr<OneSixVersion> to)
|
|
{
|
|
QMutableListIterator<std::shared_ptr<OneSixLibrary>> it(to->libraries);
|
|
while (it.hasNext())
|
|
{
|
|
it.next();
|
|
if (it.value()->rawName().startsWith("com.mumfrey:liteloader:"))
|
|
{
|
|
it.remove();
|
|
}
|
|
}
|
|
|
|
std::shared_ptr<OneSixLibrary> lib(
|
|
new OneSixLibrary("com.mumfrey:liteloader:" + m_mcVersion));
|
|
lib->setBaseUrl("http://dl.liteloader.com/versions/");
|
|
lib->finalize();
|
|
to->libraries.prepend(lib);
|
|
}
|