GH-3602 Create .minecraft before running pre-launch commands
This commit is contained in:
parent
0a869fc9ed
commit
0c98589a7f
@ -226,8 +226,8 @@ set(MINECRAFT_SOURCES
|
|||||||
|
|
||||||
minecraft/launch/ClaimAccount.cpp
|
minecraft/launch/ClaimAccount.cpp
|
||||||
minecraft/launch/ClaimAccount.h
|
minecraft/launch/ClaimAccount.h
|
||||||
minecraft/launch/CreateServerResourcePacksFolder.cpp
|
minecraft/launch/CreateGameFolders.cpp
|
||||||
minecraft/launch/CreateServerResourcePacksFolder.h
|
minecraft/launch/CreateGameFolders.h
|
||||||
minecraft/launch/ModMinecraftJar.cpp
|
minecraft/launch/ModMinecraftJar.cpp
|
||||||
minecraft/launch/ModMinecraftJar.h
|
minecraft/launch/ModMinecraftJar.h
|
||||||
minecraft/launch/DirectJavaLaunch.cpp
|
minecraft/launch/DirectJavaLaunch.cpp
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include "MinecraftInstance.h"
|
#include "MinecraftInstance.h"
|
||||||
#include <minecraft/launch/CreateServerResourcePacksFolder.h>
|
#include <minecraft/launch/CreateGameFolders.h>
|
||||||
#include <minecraft/launch/ExtractNatives.h>
|
#include <minecraft/launch/ExtractNatives.h>
|
||||||
#include <minecraft/launch/PrintInstanceInfo.h>
|
#include <minecraft/launch/PrintInstanceInfo.h>
|
||||||
#include <settings/Setting.h>
|
#include <settings/Setting.h>
|
||||||
@ -38,6 +38,7 @@
|
|||||||
#include "MinecraftUpdate.h"
|
#include "MinecraftUpdate.h"
|
||||||
#include "MinecraftLoadAndCheck.h"
|
#include "MinecraftLoadAndCheck.h"
|
||||||
#include <minecraft/gameoptions/GameOptions.h>
|
#include <minecraft/gameoptions/GameOptions.h>
|
||||||
|
#include <minecraft/update/FoldersTask.h>
|
||||||
|
|
||||||
#define IBUS "@im=ibus"
|
#define IBUS "@im=ibus"
|
||||||
|
|
||||||
@ -810,6 +811,11 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt
|
|||||||
return process;
|
return process;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// create the .minecraft folder and server-resource-packs (workaround for Minecraft bug MCL-3732)
|
||||||
|
{
|
||||||
|
process->appendStep(new CreateGameFolders(pptr));
|
||||||
|
}
|
||||||
|
|
||||||
// run pre-launch command if that's needed
|
// run pre-launch command if that's needed
|
||||||
if(getPreLaunchCommand().size())
|
if(getPreLaunchCommand().size())
|
||||||
{
|
{
|
||||||
@ -834,7 +840,7 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt
|
|||||||
process->appendStep(new ModMinecraftJar(pptr));
|
process->appendStep(new ModMinecraftJar(pptr));
|
||||||
}
|
}
|
||||||
|
|
||||||
// if there are any jar mods
|
// Scan mods folders for mods
|
||||||
{
|
{
|
||||||
process->appendStep(new ScanModFolders(pptr));
|
process->appendStep(new ScanModFolders(pptr));
|
||||||
}
|
}
|
||||||
@ -844,11 +850,6 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt
|
|||||||
process->appendStep(new PrintInstanceInfo(pptr, session));
|
process->appendStep(new PrintInstanceInfo(pptr, session));
|
||||||
}
|
}
|
||||||
|
|
||||||
// create the server-resource-packs folder (workaround for Minecraft bug MCL-3732)
|
|
||||||
{
|
|
||||||
process->appendStep(new CreateServerResourcePacksFolder(pptr));
|
|
||||||
}
|
|
||||||
|
|
||||||
// extract native jars if needed
|
// extract native jars if needed
|
||||||
{
|
{
|
||||||
process->appendStep(new ExtractNatives(pptr));
|
process->appendStep(new ExtractNatives(pptr));
|
||||||
|
28
api/logic/minecraft/launch/CreateGameFolders.cpp
Normal file
28
api/logic/minecraft/launch/CreateGameFolders.cpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#include "CreateGameFolders.h"
|
||||||
|
#include "minecraft/MinecraftInstance.h"
|
||||||
|
#include "launch/LaunchTask.h"
|
||||||
|
#include "FileSystem.h"
|
||||||
|
|
||||||
|
CreateGameFolders::CreateGameFolders(LaunchTask* parent): LaunchStep(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CreateGameFolders::executeTask()
|
||||||
|
{
|
||||||
|
auto instance = m_parent->instance();
|
||||||
|
std::shared_ptr<MinecraftInstance> minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(instance);
|
||||||
|
|
||||||
|
if(!FS::ensureFolderPathExists(minecraftInstance->gameRoot()))
|
||||||
|
{
|
||||||
|
emit logLine("Couldn't create the main game folder", MessageLevel::Error);
|
||||||
|
emitFailed("Couldn't create the main game folder");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HACK: this is a workaround for MCL-3732 - 'server-resource-packs' folder is created.
|
||||||
|
if(!FS::ensureFolderPathExists(FS::PathCombine(minecraftInstance->gameRoot(), "server-resource-packs")))
|
||||||
|
{
|
||||||
|
emit logLine("Couldn't create the 'server-resource-packs' folder", MessageLevel::Error);
|
||||||
|
}
|
||||||
|
emitSucceeded();
|
||||||
|
}
|
@ -19,13 +19,13 @@
|
|||||||
#include <LoggedProcess.h>
|
#include <LoggedProcess.h>
|
||||||
#include <minecraft/auth/AuthSession.h>
|
#include <minecraft/auth/AuthSession.h>
|
||||||
|
|
||||||
// HACK: this is a workaround for MCL-3732 - 'server-resource-packs' folder is created.
|
// Create the main .minecraft for the instance and any other necessary folders
|
||||||
class CreateServerResourcePacksFolder: public LaunchStep
|
class CreateGameFolders: public LaunchStep
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit CreateServerResourcePacksFolder(LaunchTask *parent);
|
explicit CreateGameFolders(LaunchTask *parent);
|
||||||
virtual ~CreateServerResourcePacksFolder() {};
|
virtual ~CreateGameFolders() {};
|
||||||
|
|
||||||
virtual void executeTask();
|
virtual void executeTask();
|
||||||
virtual bool canAbort() const
|
virtual bool canAbort() const
|
@ -1,19 +0,0 @@
|
|||||||
#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->gameRoot(), "server-resource-packs")))
|
|
||||||
{
|
|
||||||
emit logLine(tr("Couldn't create the 'server-resource-packs' folder"), MessageLevel::Error);
|
|
||||||
}
|
|
||||||
emitSucceeded();
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user