From 1dbc4e16f7dfa990de3f03af71d576b8e50b4bca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Mon, 8 Jan 2018 00:59:47 +0100 Subject: [PATCH] NOISSUE remove the jar-modded jar after the instance finishes --- .../minecraft/launch/ModMinecraftJar.cpp | 30 ++++++++++++++----- api/logic/minecraft/launch/ModMinecraftJar.h | 3 ++ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/api/logic/minecraft/launch/ModMinecraftJar.cpp b/api/logic/minecraft/launch/ModMinecraftJar.cpp index 9b5d3b20..15bb7bb3 100644 --- a/api/logic/minecraft/launch/ModMinecraftJar.cpp +++ b/api/logic/minecraft/launch/ModMinecraftJar.cpp @@ -35,15 +35,11 @@ void ModMinecraftJar::executeTask() { emitFailed(tr("Couldn't create the bin folder for Minecraft.jar")); } + auto finalJarPath = QDir(m_inst->binRoot()).absoluteFilePath("minecraft.jar"); - QFile finalJar(finalJarPath); - if(finalJar.exists()) + if(!removeJar()) { - if(!finalJar.remove()) - { - emitFailed(tr("Couldn't remove stale jar file: %1").arg(finalJarPath)); - return; - } + emitFailed(tr("Couldn't remove stale jar file: %1").arg(finalJarPath)); } // create temporary modded jar, if needed @@ -64,3 +60,23 @@ void ModMinecraftJar::executeTask() } emitSucceeded(); } + +void ModMinecraftJar::finalize() +{ + removeJar(); +} + +bool ModMinecraftJar::removeJar() +{ + auto m_inst = std::dynamic_pointer_cast(m_parent->instance()); + auto finalJarPath = QDir(m_inst->binRoot()).absoluteFilePath("minecraft.jar"); + QFile finalJar(finalJarPath); + if(finalJar.exists()) + { + if(!finalJar.remove()) + { + return false; + } + } + return true; +} diff --git a/api/logic/minecraft/launch/ModMinecraftJar.h b/api/logic/minecraft/launch/ModMinecraftJar.h index ab8d7dca..1f038600 100644 --- a/api/logic/minecraft/launch/ModMinecraftJar.h +++ b/api/logic/minecraft/launch/ModMinecraftJar.h @@ -30,4 +30,7 @@ public: { return false; } + void finalize() override; +private: + bool removeJar(); };