Skip to content

Commit

Permalink
GH-1778: Fix placement of modded Minecraft.jar in OneSix instances.
Browse files Browse the repository at this point in the history
  • Loading branch information
peterix committed Jan 10, 2017
1 parent 12c3683 commit 858b490
Show file tree
Hide file tree
Showing 7 changed files with 21 additions and 11 deletions.
5 changes: 5 additions & 0 deletions api/logic/minecraft/MinecraftInstance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
3 changes: 3 additions & 0 deletions api/logic/minecraft/MinecraftInstance.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ class MULTIMC_LOGIC_EXPORT MinecraftInstance: public BaseInstance
/// 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
{
Expand Down
9 changes: 2 additions & 7 deletions api/logic/minecraft/legacy/LegacyInstance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
1 change: 0 additions & 1 deletion api/logic/minecraft/legacy/LegacyInstance.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ class MULTIMC_LOGIC_EXPORT LegacyInstance : public MinecraftInstance
QString savesDir() const;
QString texturePacksDir() const;
QString jarModsDir() const;
QString binDir() const;
QString loaderModsDir() const;
QString coreModsDir() const;
QString resourceDir() const;
Expand Down
2 changes: 1 addition & 1 deletion api/logic/minecraft/legacy/LegacyUpdate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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.");
Expand Down
8 changes: 6 additions & 2 deletions api/logic/minecraft/onesix/OneSixInstance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
{
Expand Down Expand Up @@ -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())
{
Expand Down
4 changes: 4 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 858b490

Please sign in to comment.