diff options
| author | Petr Mrázek <peterix@gmail.com> | 2014-04-23 02:27:40 +0200 |
|---|---|---|
| committer | Petr Mrázek <peterix@gmail.com> | 2014-06-09 01:38:29 +0200 |
| commit | aade36860c373268857ca821c14a13f38c880b1a (patch) | |
| tree | 464b804216c7eadc00941daa33a1713c8071a088 /logic | |
| parent | 3a0cdf2d3dde6192694ca34429ab277608357c2a (diff) | |
| download | PrismLauncher-aade36860c373268857ca821c14a13f38c880b1a.tar.gz PrismLauncher-aade36860c373268857ca821c14a13f38c880b1a.tar.bz2 PrismLauncher-aade36860c373268857ca821c14a13f38c880b1a.zip | |
Begin the transformation!
Nuke all the things.
Diffstat (limited to 'logic')
| -rw-r--r-- | logic/BaseInstaller.h | 2 | ||||
| -rw-r--r-- | logic/BaseVersion.h | 4 | ||||
| -rw-r--r-- | logic/InstanceFactory.cpp | 52 | ||||
| -rw-r--r-- | logic/LegacyInstance.cpp | 11 | ||||
| -rw-r--r-- | logic/LegacyUpdate.cpp | 65 | ||||
| -rw-r--r-- | logic/LegacyUpdate.h | 9 | ||||
| -rw-r--r-- | logic/MinecraftVersion.h | 45 | ||||
| -rw-r--r-- | logic/NostalgiaInstance.cpp | 36 | ||||
| -rw-r--r-- | logic/NostalgiaInstance.h | 29 | ||||
| -rw-r--r-- | logic/OneSixFTBInstance.cpp | 4 | ||||
| -rw-r--r-- | logic/OneSixInstance.cpp | 64 | ||||
| -rw-r--r-- | logic/OneSixInstance.h | 11 | ||||
| -rw-r--r-- | logic/OneSixInstance_p.h | 3 | ||||
| -rw-r--r-- | logic/OneSixLibrary.h | 2 | ||||
| -rw-r--r-- | logic/OneSixUpdate.cpp | 2 | ||||
| -rw-r--r-- | logic/OneSixVersionBuilder.cpp | 10 | ||||
| -rw-r--r-- | logic/OneSixVersionBuilder.h | 5 | ||||
| -rw-r--r-- | logic/VersionFile.cpp | 84 | ||||
| -rw-r--r-- | logic/VersionFile.h | 19 | ||||
| -rw-r--r-- | logic/VersionFinal.cpp | 75 | ||||
| -rw-r--r-- | logic/VersionFinal.h | 32 | ||||
| -rw-r--r-- | logic/forge/ForgeData.cpp | 62 | ||||
| -rw-r--r-- | logic/forge/ForgeData.h | 21 | ||||
| -rw-r--r-- | logic/forge/ForgeInstaller.cpp (renamed from logic/ForgeInstaller.cpp) | 180 | ||||
| -rw-r--r-- | logic/forge/ForgeInstaller.h (renamed from logic/ForgeInstaller.h) | 20 | ||||
| -rw-r--r-- | logic/forge/ForgeMirror.h (renamed from logic/net/ForgeMirror.h) | 0 | ||||
| -rw-r--r-- | logic/forge/ForgeMirrors.cpp (renamed from logic/net/ForgeMirrors.cpp) | 0 | ||||
| -rw-r--r-- | logic/forge/ForgeMirrors.h (renamed from logic/net/ForgeMirrors.h) | 8 | ||||
| -rw-r--r-- | logic/forge/ForgeVersion.cpp | 55 | ||||
| -rw-r--r-- | logic/forge/ForgeVersion.h | 31 | ||||
| -rw-r--r-- | logic/forge/ForgeVersionList.cpp (renamed from logic/lists/ForgeVersionList.cpp) | 26 | ||||
| -rw-r--r-- | logic/forge/ForgeVersionList.h (renamed from logic/lists/ForgeVersionList.h) | 51 | ||||
| -rw-r--r-- | logic/forge/ForgeXzDownload.cpp (renamed from logic/net/ForgeXzDownload.cpp) | 0 | ||||
| -rw-r--r-- | logic/forge/ForgeXzDownload.h (renamed from logic/net/ForgeXzDownload.h) | 4 | ||||
| -rw-r--r-- | logic/forge/LegacyForge.cpp (renamed from logic/LegacyForge.cpp) | 0 | ||||
| -rw-r--r-- | logic/forge/LegacyForge.h (renamed from logic/LegacyForge.h) | 2 | ||||
| -rw-r--r-- | logic/lists/MinecraftVersionList.cpp | 16 | ||||
| -rw-r--r-- | logic/liteloader/LiteLoaderInstaller.cpp (renamed from logic/LiteLoaderInstaller.cpp) | 8 | ||||
| -rw-r--r-- | logic/liteloader/LiteLoaderInstaller.h (renamed from logic/LiteLoaderInstaller.h) | 5 | ||||
| -rw-r--r-- | logic/liteloader/LiteLoaderVersionList.cpp (renamed from logic/lists/LiteLoaderVersionList.cpp) | 0 | ||||
| -rw-r--r-- | logic/liteloader/LiteLoaderVersionList.h (renamed from logic/lists/LiteLoaderVersionList.h) | 4 | ||||
| -rw-r--r-- | logic/net/NetJob.h | 2 |
42 files changed, 616 insertions, 443 deletions
diff --git a/logic/BaseInstaller.h b/logic/BaseInstaller.h index d59833cc..9531fbff 100644 --- a/logic/BaseInstaller.h +++ b/logic/BaseInstaller.h @@ -29,7 +29,7 @@ class BaseInstaller { public: BaseInstaller(); - + virtual ~BaseInstaller(){}; bool isApplied(OneSixInstance *on); virtual bool add(OneSixInstance *to); diff --git a/logic/BaseVersion.h b/logic/BaseVersion.h index 43f5942a..ed63f551 100644 --- a/logic/BaseVersion.h +++ b/logic/BaseVersion.h @@ -16,6 +16,8 @@ #pragma once #include <memory> +#include <QString> +#include <QMetaType> /*! * An abstract base class for versions. @@ -52,4 +54,4 @@ struct BaseVersion typedef std::shared_ptr<BaseVersion> BaseVersionPtr; -Q_DECLARE_METATYPE(BaseVersionPtr)
\ No newline at end of file +Q_DECLARE_METATYPE(BaseVersionPtr) diff --git a/logic/InstanceFactory.cpp b/logic/InstanceFactory.cpp index 95fd855b..955a3f5b 100644 --- a/logic/InstanceFactory.cpp +++ b/logic/InstanceFactory.cpp @@ -23,7 +23,6 @@ #include "LegacyFTBInstance.h" #include "OneSixInstance.h" #include "OneSixFTBInstance.h" -#include "NostalgiaInstance.h" #include "OneSixInstance.h" #include "BaseVersion.h" #include "MinecraftVersion.h" @@ -51,7 +50,7 @@ InstanceFactory::InstLoadError InstanceFactory::loadInstance(InstancePtr &inst, QString inst_type = m_settings->get("InstanceType").toString(); // FIXME: replace with a map lookup, where instance classes register their types - if (inst_type == "OneSix") + if (inst_type == "OneSix" || inst_type == "Nostalgia") { inst.reset(new OneSixInstance(instDir, m_settings, this)); } @@ -59,10 +58,6 @@ InstanceFactory::InstLoadError InstanceFactory::loadInstance(InstancePtr &inst, { inst.reset(new LegacyInstance(instDir, m_settings, this)); } - else if (inst_type == "Nostalgia") - { - inst.reset(new NostalgiaInstance(instDir, m_settings, this)); - } else if (inst_type == "LegacyFTB") { inst.reset(new LegacyFTBInstance(instDir, m_settings, this)); @@ -98,55 +93,26 @@ InstanceFactory::InstCreateError InstanceFactory::createInstance(InstancePtr &in if (type == NormalInst) { - switch (mcVer->type) - { - case MinecraftVersion::Legacy: - // TODO new instance type - m_settings->set("InstanceType", "Legacy"); - inst.reset(new LegacyInstance(instDir, m_settings, this)); - inst->setIntendedVersionId(version->descriptor()); - inst->setShouldUseCustomBaseJar(false); - break; - case MinecraftVersion::OneSix: - m_settings->set("InstanceType", "OneSix"); - inst.reset(new OneSixInstance(instDir, m_settings, this)); - inst->setIntendedVersionId(version->descriptor()); - inst->setShouldUseCustomBaseJar(false); - break; - case MinecraftVersion::Nostalgia: - m_settings->set("InstanceType", "Nostalgia"); - inst.reset(new NostalgiaInstance(instDir, m_settings, this)); - inst->setIntendedVersionId(version->descriptor()); - inst->setShouldUseCustomBaseJar(false); - break; - default: - { - delete m_settings; - return InstanceFactory::NoSuchVersion; - } - } + m_settings->set("InstanceType", "OneSix"); + inst.reset(new OneSixInstance(instDir, m_settings, this)); + inst->setIntendedVersionId(version->descriptor()); + inst->setShouldUseCustomBaseJar(false); } else if (type == FTBInstance) { - switch (mcVer->type) + if(mcVer->usesLegacyLauncher()) { - case MinecraftVersion::Legacy: m_settings->set("InstanceType", "LegacyFTB"); inst.reset(new LegacyFTBInstance(instDir, m_settings, this)); inst->setIntendedVersionId(version->descriptor()); inst->setShouldUseCustomBaseJar(false); - break; - case MinecraftVersion::OneSix: + } + else + { m_settings->set("InstanceType", "OneSixFTB"); inst.reset(new OneSixFTBInstance(instDir, m_settings, this)); inst->setIntendedVersionId(version->descriptor()); inst->setShouldUseCustomBaseJar(false); - break; - default: - { - delete m_settings; - return InstanceFactory::NoSuchVersion; - } } } else diff --git a/logic/LegacyInstance.cpp b/logic/LegacyInstance.cpp index 6648e059..bc4d2cfc 100644 --- a/logic/LegacyInstance.cpp +++ b/logic/LegacyInstance.cpp @@ -29,8 +29,6 @@ #include "logic/LegacyUpdate.h" #include "logic/icons/IconList.h" -#include "gui/dialogs/LegacyModEditDialog.h" - LegacyInstance::LegacyInstance(const QString &rootDir, SettingsObject *settings, QObject *parent) : BaseInstance(new LegacyInstancePrivate(), rootDir, settings, parent) @@ -138,7 +136,7 @@ std::shared_ptr<ModList> LegacyInstance::texturePackList() QDialog *LegacyInstance::createModEditDialog(QWidget *parent) { - return new LegacyModEditDialog(this, parent); + return nullptr; } QString LegacyInstance::jarModsDir() const @@ -280,10 +278,7 @@ QString LegacyInstance::getStatusbarDescription() { if (flags().contains(VersionBrokenFlag)) { - return "Legacy : " + intendedVersionId() + " (broken)"; + return tr("Legacy : %1 (broken)").arg(intendedVersionId()); } - if (shouldUpdate()) - return "Legacy : " + currentVersionId() + " -> " + intendedVersionId(); - else - return "Legacy : " + currentVersionId(); + return tr("Legacy : %1").arg(intendedVersionId()); } diff --git a/logic/LegacyUpdate.cpp b/logic/LegacyUpdate.cpp index 15c99234..6816df40 100644 --- a/logic/LegacyUpdate.cpp +++ b/logic/LegacyUpdate.cpp @@ -30,52 +30,6 @@ LegacyUpdate::LegacyUpdate(BaseInstance *inst, QObject *parent) : Task(parent), m_inst(inst) { - // 1.3 - 1.3.2 - auto libs13 = QList<FMLlib>{ - {"argo-2.25.jar", "bb672829fde76cb163004752b86b0484bd0a7f4b", false}, - {"guava-12.0.1.jar", "b8e78b9af7bf45900e14c6f958486b6ca682195f", false}, - {"asm-all-4.0.jar", "98308890597acb64047f7e896638e0d98753ae82", false}}; - - fmlLibsMapping["1.3.2"] = libs13; - - auto libs14 = QList<FMLlib>{ - {"argo-2.25.jar", "bb672829fde76cb163004752b86b0484bd0a7f4b", false}, - {"guava-12.0.1.jar", "b8e78b9af7bf45900e14c6f958486b6ca682195f", false}, - {"asm-all-4.0.jar", "98308890597acb64047f7e896638e0d98753ae82", false}, - {"bcprov-jdk15on-147.jar", "b6f5d9926b0afbde9f4dbe3db88c5247be7794bb", false}}; - - fmlLibsMapping["1.4"] = libs14; - fmlLibsMapping["1.4.1"] = libs14; - fmlLibsMapping["1.4.2"] = libs14; - fmlLibsMapping["1.4.3"] = libs14; - fmlLibsMapping["1.4.4"] = libs14; - fmlLibsMapping["1.4.5"] = libs14; - fmlLibsMapping["1.4.6"] = libs14; - fmlLibsMapping["1.4.7"] = libs14; - - fmlLibsMapping["1.5"] = QList<FMLlib>{ - {"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51", false}, - {"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", false}, - {"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58", false}, - {"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", true}, - {"deobfuscation_data_1.5.zip", "5f7c142d53776f16304c0bbe10542014abad6af8", false}, - {"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85", true}}; - - fmlLibsMapping["1.5.1"] = QList<FMLlib>{ - {"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51", false}, - {"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", false}, - {"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58", false}, - {"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", true}, - {"deobfuscation_data_1.5.1.zip", "22e221a0d89516c1f721d6cab056a7e37471d0a6", false}, - {"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85", true}}; - - fmlLibsMapping["1.5.2"] = QList<FMLlib>{ - {"argo-small-3.2.jar", "58912ea2858d168c50781f956fa5b59f0f7c6b51", false}, - {"guava-14.0-rc3.jar", "931ae21fa8014c3ce686aaa621eae565fefb1a6a", false}, - {"asm-all-4.1.jar", "054986e962b88d8660ae4566475658469595ef58", false}, - {"bcprov-jdk15on-148.jar", "960dea7c9181ba0b17e8bab0c06a43f0a5f04e65", true}, - {"deobfuscation_data_1.5.2.zip", "446e55cd986582c70fcf12cb27bc00114c5adfd9", false}, - {"scala-library.jar", "458d046151ad179c85429ed7420ffb1eaf6ddf85", true}}; } void LegacyUpdate::executeTask() @@ -110,6 +64,7 @@ void LegacyUpdate::fmllibsStart() bool forge_present = false; QString version = inst->intendedVersionId(); + auto & fmlLibsMapping = g_forgeData.fmlLibsMapping; if (!fmlLibsMapping.contains(version)) { lwjglStart(); @@ -152,7 +107,7 @@ void LegacyUpdate::fmllibsStart() // now check the lib folder inside the instance for files. for (auto &lib : libList) { - QFileInfo libInfo(PathCombine(inst->libDir(), lib.name)); + QFileInfo libInfo(PathCombine(inst->libDir(), lib.filename)); if (libInfo.exists()) continue; fmlLibsToProcess.append(lib); @@ -171,9 +126,9 @@ void LegacyUpdate::fmllibsStart() auto metacache = MMC->metacache(); for (auto &lib : fmlLibsToProcess) { - auto entry = metacache->resolveEntry("fmllibs", lib.name); - QString urlString = lib.ours ? URLConstants::FMLLIBS_OUR_BASE_URL + lib.name - : URLConstants::FMLLIBS_FORGE_BASE_URL + lib.name; + auto entry = metacache->resolveEntry("fmllibs", lib.filename); + QString urlString = lib.ours ? URLConstants::FMLLIBS_OUR_BASE_URL + lib.filename + : URLConstants::FMLLIBS_FORGE_BASE_URL + lib.filename; dljob->addNetAction(CacheDownload::make(QUrl(urlString), entry)); } @@ -196,16 +151,16 @@ void LegacyUpdate::fmllibsFinished() for (auto &lib : fmlLibsToProcess) { progress(index, fmlLibsToProcess.size()); - auto entry = metacache->resolveEntry("fmllibs", lib.name); - auto path = PathCombine(inst->libDir(), lib.name); + auto entry = metacache->resolveEntry("fmllibs", lib.filename); + auto path = PathCombine(inst->libDir(), lib.filename); if(!ensureFilePathExists(path)) { emitFailed(tr("Failed creating FML library folder inside the instance.")); return; } - if (!QFile::copy(entry->getFullPath(), PathCombine(inst->libDir(), lib.name))) + if (!QFile::copy(entry->getFullPath(), PathCombine(inst->libDir(), lib.filename))) { - emitFailed(tr("Failed copying Forge/FML library: %1.").arg(lib.name)); + emitFailed(tr("Failed copying Forge/FML library: %1.").arg(lib.filename)); return; } index++; @@ -265,8 +220,6 @@ void LegacyUpdate::lwjglStart() connect(rep, SIGNAL(downloadProgress(qint64, qint64)), SIGNAL(progress(qint64, qint64))); connect(worker.get(), SIGNAL(finished(QNetworkReply *)), SLOT(lwjglFinished(QNetworkReply *))); - // connect(rep, SIGNAL(error(QNetworkReply::NetworkError)), - // SLOT(downloadError(QNetworkReply::NetworkError))); } void LegacyUpdate::lwjglFinished(QNetworkReply *reply) diff --git a/logic/LegacyUpdate.h b/logic/LegacyUpdate.h index 5b073cb7..1550ec34 100644 --- a/logic/LegacyUpdate.h +++ b/logic/LegacyUpdate.h @@ -21,19 +21,13 @@ #include "logic/net/NetJob.h" #include "logic/tasks/Task.h" +#include "logic/forge/ForgeData.h" class MinecraftVersion; class BaseInstance; class QuaZip; class Mod; -struct FMLlib -{ - QString name; - QString checksum; - bool ours; -}; - class LegacyUpdate : public Task { Q_OBJECT @@ -84,5 +78,4 @@ private: NetJobPtr legacyDownloadJob; BaseInstance *m_inst = nullptr; QList<FMLlib> fmlLibsToProcess; - QMap<QString, QList<FMLlib>> fmlLibsMapping; }; diff --git a/logic/MinecraftVersion.h b/logic/MinecraftVersion.h index 504381a8..6cbfebbe 100644 --- a/logic/MinecraftVersion.h +++ b/logic/MinecraftVersion.h @@ -17,6 +17,7 @@ #include "BaseVersion.h" #include <QStringList> +#include <QSet> struct MinecraftVersion : public BaseVersion { @@ -29,13 +30,8 @@ struct MinecraftVersion : public BaseVersion /// The URL that this version will be downloaded from. maybe. QString download_url; - /// This version's type. Used internally to identify what kind of version this is. - enum VersionType - { - OneSix, - Legacy, - Nostalgia - } type; + /// extra features enabled for this Minecraft version. Mostly for compatibility + QSet <QString> features; /// is this the latest version? bool is_latest = false; @@ -47,6 +43,11 @@ struct MinecraftVersion : public BaseVersion QString m_descriptor; + bool usesLegacyLauncher() + { + return features.contains("legacy"); + } + virtual QString descriptor() { return m_descriptor; @@ -59,31 +60,21 @@ struct MinecraftVersion : public BaseVersion virtual QString typeString() const { - QStringList pre_final; - if (is_latest == true) + if (is_latest && is_snapshot) { - pre_final.append("Latest"); + return QObject::tr("Latest snapshot"); } - switch (type) + else if(is_latest) { - case OneSix: - pre_final.append("OneSix"); - break; - case Legacy: - pre_final.append("Legacy"); - break; - case Nostalgia: - pre_final.append("Nostalgia"); - break; - - default: - pre_final.append(QString("Type(%1)").arg(type)); - break; + return QObject::tr("Latest release"); + } + else if(is_snapshot) + { + return QObject::tr("Old snapshot"); } - if (is_snapshot == true) + else { - pre_final.append("Snapshot"); + return QObject::tr("Regular release"); } - return pre_final.join(' '); } }; diff --git a/logic/NostalgiaInstance.cpp b/logic/NostalgiaInstance.cpp deleted file mode 100644 index 52820725..00000000 --- a/logic/NostalgiaInstance.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright 2013 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "NostalgiaInstance.h" - -NostalgiaInstance::NostalgiaInstance(const QString &rootDir, SettingsObject *settings, - QObject *parent) - : OneSixInstance(rootDir, settings, parent) -{ -} - -QString NostalgiaInstance::getStatusbarDescription() -{ - if (flags().contains(VersionBrokenFlag)) - { - return "Nostalgia : " + intendedVersionId() + " (broken)"; - } - return "Nostalgia : " + intendedVersionId(); -} - -bool NostalgiaInstance::menuActionEnabled(QString action_name) const -{ - return false; -} diff --git a/logic/NostalgiaInstance.h b/logic/NostalgiaInstance.h deleted file mode 100644 index f95531d2..00000000 --- a/logic/NostalgiaInstance.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright 2013 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "OneSixInstance.h" - -class NostalgiaInstance : public OneSixInstance -{ - Q_OBJECT -public: - explicit NostalgiaInstance(const QString &rootDir, SettingsObject *settings, - QObject *parent = 0); - virtual ~NostalgiaInstance() {}; - virtual QString getStatusbarDescription(); - virtual bool menuActionEnabled(QString action_name) const; -}; diff --git a/logic/OneSixFTBInstance.cpp b/logic/OneSixFTBInstance.cpp index 172830bb..34118111 100644 --- a/logic/OneSixFTBInstance.cpp +++ b/logic/OneSixFTBInstance.cpp @@ -3,8 +3,8 @@ #include "VersionFinal.h" #include "OneSixLibrary.h" #include "tasks/SequentialTask.h" -#include "ForgeInstaller.h" -#include "lists/ForgeVersionList.h" +#include "forge/ForgeInstaller.h" +#include "forge/ForgeVersionList.h" #include "OneSixInstance_p.h" #include "OneSixVersionBuilder.h" #include "MultiMC.h" diff --git a/logic/OneSixInstance.cpp b/logic/OneSixInstance.cpp index 6f3018cb..dc452188 100644 --- a/logic/OneSixInstance.cpp +++ b/logic/OneSixInstance.cpp @@ -26,7 +26,7 @@ #include "MultiMC.h" #include "icons/IconList.h" #include "MinecraftProcess.h" -#include "gui/dialogs/OneSixModEditDialog.h" +#include "gui/dialogs/InstanceEditDialog.h" #include <MMCError.h> OneSixInstance::OneSixInstance(const QString &rootDir, SettingsObject *settings, QObject *parent) @@ -36,7 +36,6 @@ OneSixInstance::OneSixInstance(const QString &rootDir, SettingsObject *settings, d->m_settings->registerSetting("IntendedVersion", ""); d->m_settings->registerSetting("ShouldUpdate", false); d->version.reset(new VersionFinal(this, this)); - d->vanillaVersion.reset(new VersionFinal(this, this)); } void OneSixInstance::init() @@ -260,6 +259,17 @@ std::shared_ptr<ModList> OneSixInstance::loaderModList() return d->loader_mod_list; } +std::shared_ptr<ModList> OneSixInstance::coreModList() +{ + I_D(OneSixInstance); + if (!d->core_mod_list) + { + d->core_mod_list.reset(new ModList(coreModsDir())); + } + d->core_mod_list->update(); + return d->core_mod_list; +} + std::shared_ptr<ModList> OneSixInstance::resourcePackList() { I_D(OneSixInstance); @@ -273,7 +283,7 @@ std::shared_ptr<ModList> OneSixInstance::resourcePackList() QDialog *OneSixInstance::createModEditDialog(QWidget *parent) { - return new OneSixModEditDialog(this, parent); + return new InstanceEditDialog(this, parent); } bool OneSixInstance::setIntendedVersionId(QString version) @@ -307,10 +317,13 @@ bool OneSixInstance::shouldUpdate() const bool OneSixInstance::versionIsCustom() { - QDir patches(PathCombine(instanceRoot(), "patches/")); - return (patches.exists() && patches.count() >= 0) - || QFile::exists(PathCombine(instanceRoot(), "custom.json")) - || QFile::exists(PathCombine(instanceRoot(), "user.json")); + I_D(const OneSixInstance); + auto ver = d->version; + if(ver) + { + return !ver->isVanilla(); + } + return false; } bool OneSixInstance::versionIsFTBPack() @@ -335,15 +348,13 @@ void OneSixInstance::reloadVersion() try { - d->version->reload(false, externalPatches()); - d->vanillaVersion->reload(true, externalPatches()); + d->version->reload(externalPatches()); d->m_flags.remove(VersionBrokenFlag); emit versionReloaded(); } catch(MMCError & error) { d->version->clear(); - d->vanillaVersion->clear(); d->m_flags.insert(VersionBrokenFlag); //TODO: rethrow to show some error message(s)? emit versionReloaded(); @@ -355,7 +366,6 @@ void OneSixInstance::clearVersion() { I_D(OneSixInstance); d->version->clear(); - d->vanillaVersion->clear(); emit versionReloaded(); } @@ -365,12 +375,6 @@ std::shared_ptr<VersionFinal> OneSixInstance::getFullVersion() const return d->version; } -std::shared_ptr<VersionFinal> OneSixInstance::getVanillaVersion() const -{ - I_D(const OneSixInstance); - return d->vanillaVersion; -} - QString OneSixInstance::defaultBaseJar() const { return "versions/" + intendedVersionId() + "/" + intendedVersionId() + ".jar"; @@ -396,16 +400,24 @@ bool OneSixInstance::menuActionEnabled(QString action_name) const QString OneSixInstance::getStatusbarDescription() { - QString descr = "OneSix : " + intendedVersionId(); + QStringList traits; if (versionIsCustom()) { - descr += " (custom)"; + traits.append(tr("custom")); } if (flags().contains(VersionBrokenFlag)) { - descr += " (broken)"; + traits.append(tr("broken")); + } + + if(traits.size()) + { + return tr("Minecraft %1 (%2)").arg(intendedVersionId()).arg(traits.join(", ")); + } + else + { + return tr("Minecraft %1").arg(intendedVersionId()); } - return descr; } QDir OneSixInstance::librariesPath() const @@ -449,6 +461,11 @@ QString OneSixInstance::loaderModsDir() const return PathCombine(minecraftRoot(), "mods"); } +QString OneSixInstance::coreModsDir() const +{ + return PathCombine(minecraftRoot(), "coremods"); +} + QString OneSixInstance::resourcePacksDir() const { return PathCombine(minecraftRoot(), "resourcepacks"); @@ -458,3 +475,8 @@ QString OneSixInstance::instanceConfigFolder() const { return PathCombine(minecraftRoot(), "config"); } + +QString OneSixInstance::jarModsDir() const +{ + return PathCombine(instanceRoot(), "jarmods"); +} diff --git a/logic/OneSixInstance.h b/logic/OneSixInstance.h index 13a392c2..b26ff752 100644 --- a/logic/OneSixInstance.h +++ b/logic/OneSixInstance.h @@ -32,11 +32,14 @@ public: ////// Mod Lists ////// std::shared_ptr<ModList> loaderModList(); + std::shared_ptr<ModList> coreModList(); std::shared_ptr<ModList> resourcePackList(); - ////// Directories ////// + ////// Directories and files ////// + QString jarModsDir() const; QString resourcePacksDir() const; QString loaderModsDir() const; + QString coreModsDir() const; virtual QString instanceConfigFolder() const override; virtual std::shared_ptr<Task> doUpdate() override; @@ -60,14 +63,16 @@ public: * throws various exceptions :3 */ void reloadVersion(); + /// clears all version information in preparation for an update void clearVersion(); + /// get the current full version info std::shared_ptr<VersionFinal> getFullVersion() const; - /// gets the current version info, but only for version.json - std::shared_ptr<VersionFinal> getVanillaVersion() const; + /// is the current version original, or custom? virtual bool versionIsCustom() override; + /// does this instance have an FTB pack patch inside? bool versionIsFTBPack(); diff --git a/logic/OneSixInstance_p.h b/logic/OneSixInstance_p.h index c70de07c..e75a8da3 100644 --- a/logic/OneSixInstance_p.h +++ b/logic/OneSixInstance_p.h @@ -24,7 +24,8 @@ class OneSixInstancePrivate : public BaseInstancePrivate public: virtual ~OneSixInstancePrivate() {}; std::shared_ptr<VersionFinal> version; - std::shared_ptr<VersionFinal> vanillaVersion; + std::shared_ptr<ModList> jar_mod_list; std::shared_ptr<ModList> loader_mod_list; + std::shared_ptr<ModList> core_mod_list; std::shared_ptr<ModList> resource_pack_list; }; diff --git a/logic/OneSixLibrary.h b/logic/OneSixLibrary.h index 61d4c8e2..1c7169ce 100644 --- a/logic/OneSixLibrary.h +++ b/logic/OneSixLibrary.h @@ -41,7 +41,7 @@ private |
