summaryrefslogtreecommitdiffstats
path: root/logic/OneSixInstance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'logic/OneSixInstance.cpp')
-rw-r--r--logic/OneSixInstance.cpp59
1 files changed, 49 insertions, 10 deletions
diff --git a/logic/OneSixInstance.cpp b/logic/OneSixInstance.cpp
index ae172f21..10411c56 100644
--- a/logic/OneSixInstance.cpp
+++ b/logic/OneSixInstance.cpp
@@ -36,6 +36,10 @@ OneSixInstance::OneSixInstance(const QString &rootDir, SettingsObject *settings,
d->m_settings->registerSetting("ShouldUpdate", false);
d->version.reset(new OneSixVersion(this, this));
d->vanillaVersion.reset(new OneSixVersion(this, this));
+}
+
+void OneSixInstance::init()
+{
if (QDir(instanceRoot()).exists("version.json"))
{
reloadVersion();
@@ -192,12 +196,10 @@ MinecraftProcess *OneSixInstance::prepareForLaunch(AuthSessionPtr session)
auto libs = version->getActiveNormalLibs();
for (auto lib : libs)
{
- QFileInfo fi(QString("libraries/") + lib->storagePath());
- launchScript += "cp " + fi.absoluteFilePath() + "\n";
+ launchScript += "cp " + librariesPath().absoluteFilePath(lib->storagePath()) + "\n";
}
- QString targetstr = "versions/" + version->id + "/" + version->id + ".jar";
- QFileInfo fi(targetstr);
- launchScript += "cp " + fi.absoluteFilePath() + "\n";
+ QString targetstr = version->id + "/" + version->id + ".jar";
+ launchScript += "cp " + versionsPath().absoluteFilePath(targetstr) + "\n";
}
launchScript += "mainClass " + version->mainClass + "\n";
@@ -228,7 +230,7 @@ MinecraftProcess *OneSixInstance::prepareForLaunch(AuthSessionPtr session)
launchScript += "ext " + finfo.absoluteFilePath() + "\n";
}
launchScript += "natives " + natives_dir.absolutePath() + "\n";
- launchScript += "launch onesix\n";
+ launchScript += "launcher onesix\n";
// create the process and set its parameters
MinecraftProcess *proc = new MinecraftProcess(this);
@@ -318,12 +320,20 @@ bool OneSixInstance::reloadVersion(QWidget *widgetParent)
{
I_D(OneSixInstance);
- bool ret = d->version->reload(widgetParent);
+ bool ret = d->version->reload(widgetParent, false, externalPatches());
if (ret)
{
- ret = d->vanillaVersion->reload(widgetParent, true);
+ ret = d->vanillaVersion->reload(widgetParent, true, externalPatches());
+ }
+ if (ret)
+ {
+ setFlags(flags() & ~VersionBrokenFlag);
+ emit versionReloaded();
+ }
+ else
+ {
+ setFlags(flags() | VersionBrokenFlag);
}
- emit versionReloaded();
return ret;
}
@@ -359,8 +369,14 @@ QString OneSixInstance::defaultCustomBaseJar() const
bool OneSixInstance::menuActionEnabled(QString action_name) const
{
+ if (flags() & VersionBrokenFlag)
+ {
+ return false;
+ }
if (action_name == "actionChangeInstLWJGLVersion")
+ {
return false;
+ }
return true;
}
@@ -369,11 +385,34 @@ QString OneSixInstance::getStatusbarDescription()
QString descr = "OneSix : " + intendedVersionId();
if (versionIsCustom())
{
- descr + " (custom)";
+ descr += " (custom)";
+ }
+ if (flags() & VersionBrokenFlag)
+ {
+ descr += " (broken)";
}
return descr;
}
+QDir OneSixInstance::librariesPath() const
+{
+ return QDir::current().absoluteFilePath("libraries");
+}
+QDir OneSixInstance::versionsPath() const
+{
+ return QDir::current().absoluteFilePath("versions");
+}
+
+QStringList OneSixInstance::externalPatches() const
+{
+ return QStringList();
+}
+
+bool OneSixInstance::providesVersionFile() const
+{
+ return false;
+}
+
QString OneSixInstance::loaderModsDir() const
{
return PathCombine(minecraftRoot(), "mods");