summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-07-23 13:36:31 +0200
committerPetr Mrázek <peterix@gmail.com>2016-08-01 21:15:08 +0200
commit42a98c366129bba97464f7ac3771b547d6cae804 (patch)
tree991d31460727edd6a34e18ebeb91253e6e86d1f4 /api
parent1f2bed2ef119094bdc156aa3a206b93dea5081d1 (diff)
downloadMultiMC-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.txt2
-rw-r--r--api/logic/minecraft/MinecraftInstance.cpp7
-rw-r--r--api/logic/minecraft/launch/CreateServerResourcePacksFolder.cpp19
-rw-r--r--api/logic/minecraft/launch/CreateServerResourcePacksFolder.h35
-rw-r--r--api/logic/minecraft/launch/DirectJavaLaunch.cpp6
-rw-r--r--api/logic/minecraft/launch/LauncherPartLaunch.cpp7
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);