diff options
Diffstat (limited to 'api/logic/minecraft')
-rw-r--r-- | api/logic/minecraft/launch/ModMinecraftJar.cpp | 30 | ||||
-rw-r--r-- | 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<MinecraftInstance>(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(); }; |