summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--api/logic/minecraft/MinecraftInstance.cpp5
-rw-r--r--api/logic/minecraft/MinecraftInstance.h3
-rw-r--r--api/logic/minecraft/legacy/LegacyInstance.cpp9
-rw-r--r--api/logic/minecraft/legacy/LegacyInstance.h1
-rw-r--r--api/logic/minecraft/legacy/LegacyUpdate.cpp2
-rw-r--r--api/logic/minecraft/onesix/OneSixInstance.cpp8
-rw-r--r--changelog.md4
7 files changed, 21 insertions, 11 deletions
diff --git a/api/logic/minecraft/MinecraftInstance.cpp b/api/logic/minecraft/MinecraftInstance.cpp
index bcbabb1f..7b1aef1e 100644
--- a/api/logic/minecraft/MinecraftInstance.cpp
+++ b/api/logic/minecraft/MinecraftInstance.cpp
@@ -97,6 +97,11 @@ QString MinecraftInstance::minecraftRoot() const
return mcDir.filePath();
}
+QString MinecraftInstance::binRoot() const
+{
+ return FS::PathCombine(minecraftRoot(), "bin");
+}
+
std::shared_ptr< BaseVersionList > MinecraftInstance::versionList() const
{
return ENV.getVersionList("net.minecraft");
diff --git a/api/logic/minecraft/MinecraftInstance.h b/api/logic/minecraft/MinecraftInstance.h
index 8bae17d5..7f967ce0 100644
--- a/api/logic/minecraft/MinecraftInstance.h
+++ b/api/logic/minecraft/MinecraftInstance.h
@@ -19,6 +19,9 @@ public:
/// Path to the instance's minecraft directory.
QString minecraftRoot() const;
+ /// Path to the instance's minecraft/bin directory.
+ QString binRoot() const;
+
////// Mod Lists //////
virtual std::shared_ptr<ModList> resourcePackList() const
{
diff --git a/api/logic/minecraft/legacy/LegacyInstance.cpp b/api/logic/minecraft/legacy/LegacyInstance.cpp
index 85de559c..0987d56f 100644
--- a/api/logic/minecraft/legacy/LegacyInstance.cpp
+++ b/api/logic/minecraft/legacy/LegacyInstance.cpp
@@ -291,11 +291,6 @@ QString LegacyInstance::jarModsDir() const
return FS::PathCombine(instanceRoot(), "instMods");
}
-QString LegacyInstance::binDir() const
-{
- return FS::PathCombine(minecraftRoot(), "bin");
-}
-
QString LegacyInstance::libDir() const
{
return FS::PathCombine(minecraftRoot(), "lib");
@@ -327,7 +322,7 @@ QString LegacyInstance::texturePacksDir() const
QString LegacyInstance::runnableJar() const
{
- return FS::PathCombine(binDir(), "minecraft.jar");
+ return FS::PathCombine(binRoot(), "minecraft.jar");
}
QString LegacyInstance::modListFile() const
@@ -399,7 +394,7 @@ QString LegacyInstance::defaultBaseJar() const
QString LegacyInstance::defaultCustomBaseJar() const
{
- return FS::PathCombine(binDir(), "mcbackup.jar");
+ return FS::PathCombine(binRoot(), "mcbackup.jar");
}
QString LegacyInstance::lwjglFolder() const
diff --git a/api/logic/minecraft/legacy/LegacyInstance.h b/api/logic/minecraft/legacy/LegacyInstance.h
index 6dc11aec..15d1383f 100644
--- a/api/logic/minecraft/legacy/LegacyInstance.h
+++ b/api/logic/minecraft/legacy/LegacyInstance.h
@@ -57,7 +57,6 @@ public:
QString savesDir() const;
QString texturePacksDir() const;
QString jarModsDir() const;
- QString binDir() const;
QString loaderModsDir() const;
QString coreModsDir() const;
QString resourceDir() const;
diff --git a/api/logic/minecraft/legacy/LegacyUpdate.cpp b/api/logic/minecraft/legacy/LegacyUpdate.cpp
index 4ba7f102..fbef47f5 100644
--- a/api/logic/minecraft/legacy/LegacyUpdate.cpp
+++ b/api/logic/minecraft/legacy/LegacyUpdate.cpp
@@ -356,7 +356,7 @@ void LegacyUpdate::jarStart()
setStatus(tr("Checking for jar updates..."));
// Make directories
- QDir binDir(inst->binDir());
+ QDir binDir(inst->binRoot());
if (!binDir.exists() && !binDir.mkpath("."))
{
emitFailed("Failed to create bin folder.");
diff --git a/api/logic/minecraft/onesix/OneSixInstance.cpp b/api/logic/minecraft/onesix/OneSixInstance.cpp
index 1bc0eb77..b471ff3e 100644
--- a/api/logic/minecraft/onesix/OneSixInstance.cpp
+++ b/api/logic/minecraft/onesix/OneSixInstance.cpp
@@ -156,7 +156,7 @@ QString OneSixInstance::mainJarPath() const
auto jarMods = getJarMods();
if (!jarMods.isEmpty())
{
- return QDir(instanceRoot()).absoluteFilePath("minecraft.jar");
+ return QDir(binRoot()).absoluteFilePath("minecraft.jar");
}
else
{
@@ -392,7 +392,11 @@ std::shared_ptr<Task> OneSixInstance::createJarModdingTask()
{
tempJar.remove();
}
- auto finalJarPath = QDir(m_inst->instanceRoot()).absoluteFilePath("minecraft.jar");
+ if(!FS::ensureFolderPathExists(m_inst->binRoot()))
+ {
+ 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())
{
diff --git a/changelog.md b/changelog.md
index c23cd271..946ed504 100644
--- a/changelog.md
+++ b/changelog.md
@@ -146,6 +146,10 @@
This fixes launching of legacy (and legacy FTB) instances.
+- GH-1778: Jar modded Minecraft.jar location breaks mod assumptions
+
+ Some ancient mods require the modded `Minecraft.jar` to be in `.minecraft/bin`, inside the instance. Now it is placed there.
+
## Internals
- Full support for the current Mojang downloads JSON format.