diff options
author | Petr Mrázek <peterix@gmail.com> | 2016-07-23 13:36:31 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2016-08-01 21:15:08 +0200 |
commit | 42a98c366129bba97464f7ac3771b547d6cae804 (patch) | |
tree | 991d31460727edd6a34e18ebeb91253e6e86d1f4 /api | |
parent | 1f2bed2ef119094bdc156aa3a206b93dea5081d1 (diff) | |
download | MultiMC-42a98c366129bba97464f7ac3771b547d6cae804.tar MultiMC-42a98c366129bba97464f7ac3771b547d6cae804.tar.gz MultiMC-42a98c366129bba97464f7ac3771b547d6cae804.tar.lz MultiMC-42a98c366129bba97464f7ac3771b547d6cae804.tar.xz MultiMC-42a98c366129bba97464f7ac3771b547d6cae804.zip |
NOISSUE move creation of server resource pack folder to a separate task
Diffstat (limited to 'api')
-rw-r--r-- | api/logic/CMakeLists.txt | 2 | ||||
-rw-r--r-- | api/logic/minecraft/MinecraftInstance.cpp | 7 | ||||
-rw-r--r-- | api/logic/minecraft/launch/CreateServerResourcePacksFolder.cpp | 19 | ||||
-rw-r--r-- | api/logic/minecraft/launch/CreateServerResourcePacksFolder.h | 35 | ||||
-rw-r--r-- | api/logic/minecraft/launch/DirectJavaLaunch.cpp | 6 | ||||
-rw-r--r-- | api/logic/minecraft/launch/LauncherPartLaunch.cpp | 7 |
6 files changed, 63 insertions, 13 deletions
diff --git a/api/logic/CMakeLists.txt b/api/logic/CMakeLists.txt index 87908363..4514d8c3 100644 --- a/api/logic/CMakeLists.txt +++ b/api/logic/CMakeLists.txt @@ -200,6 +200,8 @@ set(MINECRAFT_SOURCES minecraft/onesix/OneSixProfileStrategy.h minecraft/onesix/OneSixVersionFormat.cpp minecraft/onesix/OneSixVersionFormat.h + minecraft/launch/CreateServerResourcePacksFolder.cpp + minecraft/launch/CreateServerResourcePacksFolder.h minecraft/launch/ModMinecraftJar.cpp minecraft/launch/ModMinecraftJar.h minecraft/launch/DirectJavaLaunch.cpp diff --git a/api/logic/minecraft/MinecraftInstance.cpp b/api/logic/minecraft/MinecraftInstance.cpp index 8cc4f805..f706c16d 100644 --- a/api/logic/minecraft/MinecraftInstance.cpp +++ b/api/logic/minecraft/MinecraftInstance.cpp @@ -1,4 +1,5 @@ #include "MinecraftInstance.h" +#include <minecraft/launch/CreateServerResourcePacksFolder.h> #include <minecraft/launch/ExtractNatives.h> #include <minecraft/launch/PrintInstanceInfo.h> #include <settings/Setting.h> @@ -433,6 +434,12 @@ std::shared_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPtr s process->appendStep(step); } + // create the server-resource-packs folder (workaround for Minecraft bug MCL-3732) + { + auto step = std::make_shared<CreateServerResourcePacksFolder>(pptr); + process->appendStep(step); + } + // extract native jars if needed auto jars = getNativeJars(); if(jars.size()) diff --git a/api/logic/minecraft/launch/CreateServerResourcePacksFolder.cpp b/api/logic/minecraft/launch/CreateServerResourcePacksFolder.cpp new file mode 100644 index 00000000..9f9041d0 --- /dev/null +++ b/api/logic/minecraft/launch/CreateServerResourcePacksFolder.cpp @@ -0,0 +1,19 @@ +#include "CreateServerResourcePacksFolder.h" +#include "minecraft/MinecraftInstance.h" +#include "launch/LaunchTask.h" +#include "FileSystem.h"" + +CreateServerResourcePacksFolder::CreateServerResourcePacksFolder(LaunchTask* parent): LaunchStep(parent) +{ +} + +void CreateServerResourcePacksFolder::executeTask() +{ + auto instance = m_parent->instance(); + std::shared_ptr<MinecraftInstance> minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(instance); + if(!FS::ensureFolderPathExists(FS::PathCombine(minecraftInstance->minecraftRoot(), "server-resource-packs"))) + { + emit logLine(tr("Couldn't create the 'server-resource-packs' folder"), MessageLevel::Error); + } + emitSucceeded(); +} diff --git a/api/logic/minecraft/launch/CreateServerResourcePacksFolder.h b/api/logic/minecraft/launch/CreateServerResourcePacksFolder.h new file mode 100644 index 00000000..d35ccc69 --- /dev/null +++ b/api/logic/minecraft/launch/CreateServerResourcePacksFolder.h @@ -0,0 +1,35 @@ +/* Copyright 2013-2016 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. + */ + +#pragma once + +#include <launch/LaunchStep.h> +#include <launch/LoggedProcess.h> +#include <minecraft/auth/AuthSession.h> + +// HACK: this is a workaround for MCL-3732 - 'server-resource-packs' folder is created. +class CreateServerResourcePacksFolder: public LaunchStep +{ + Q_OBJECT +public: + explicit CreateServerResourcePacksFolder(LaunchTask *parent); + virtual void executeTask(); + virtual bool canAbort() const + { + return false; + } +}; + + diff --git a/api/logic/minecraft/launch/DirectJavaLaunch.cpp b/api/logic/minecraft/launch/DirectJavaLaunch.cpp index c46cdcd4..1f1fb414 100644 --- a/api/logic/minecraft/launch/DirectJavaLaunch.cpp +++ b/api/logic/minecraft/launch/DirectJavaLaunch.cpp @@ -31,12 +31,6 @@ void DirectJavaLaunch::executeTask() std::shared_ptr<MinecraftInstance> minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(instance); QStringList args = minecraftInstance->javaArguments(); - // HACK: this is a workaround for MCL-3732 - 'server-resource-packs' is created. - if(!FS::ensureFolderPathExists(FS::PathCombine(minecraftInstance->minecraftRoot(), "server-resource-packs"))) - { - emit logLine(tr("Couldn't create the 'server-resource-packs' folder"), MessageLevel::Error); - } - args.append("-Djava.library.path=" + minecraftInstance->getNativePath()); auto classPathEntries = minecraftInstance->getClassPath(); diff --git a/api/logic/minecraft/launch/LauncherPartLaunch.cpp b/api/logic/minecraft/launch/LauncherPartLaunch.cpp index 5f233700..bc71fe28 100644 --- a/api/logic/minecraft/launch/LauncherPartLaunch.cpp +++ b/api/logic/minecraft/launch/LauncherPartLaunch.cpp @@ -33,13 +33,6 @@ void LauncherPartLaunch::executeTask() m_launchScript = minecraftInstance->createLaunchScript(m_session); QStringList args = minecraftInstance->javaArguments(); - - // HACK: this is a workaround for MCL-3732 - 'server-resource-packs' is created. - if(!FS::ensureFolderPathExists(FS::PathCombine(minecraftInstance->minecraftRoot(), "server-resource-packs"))) - { - emit logLine(tr("Couldn't create the 'server-resource-packs' folder"), MessageLevel::Error); - } - QString allArgs = args.join(", "); emit logLine("Java Arguments:\n[" + m_parent->censorPrivateInfo(allArgs) + "]\n\n", MessageLevel::MultiMC); |