summaryrefslogtreecommitdiffstats
path: root/api/logic/minecraft/onesix/update
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2017-07-24 09:01:37 +0200
committerPetr Mrázek <peterix@gmail.com>2017-09-09 19:19:05 +0200
commit13628e7a8260b9407b0d44069f5bc1ecab585f35 (patch)
tree162a0d8b597154c1a00c649d44b3bf8fd1e10d2b /api/logic/minecraft/onesix/update
parentb29382c748353856053f07b4756fa98f854244e1 (diff)
downloadMultiMC-13628e7a8260b9407b0d44069f5bc1ecab585f35.tar
MultiMC-13628e7a8260b9407b0d44069f5bc1ecab585f35.tar.gz
MultiMC-13628e7a8260b9407b0d44069f5bc1ecab585f35.tar.lz
MultiMC-13628e7a8260b9407b0d44069f5bc1ecab585f35.tar.xz
MultiMC-13628e7a8260b9407b0d44069f5bc1ecab585f35.zip
NOISSUE merging of strategy into profile, onesix into minecraft
Diffstat (limited to 'api/logic/minecraft/onesix/update')
-rw-r--r--api/logic/minecraft/onesix/update/AssetUpdateTask.cpp99
-rw-r--r--api/logic/minecraft/onesix/update/AssetUpdateTask.h26
-rw-r--r--api/logic/minecraft/onesix/update/FMLLibrariesTask.cpp133
-rw-r--r--api/logic/minecraft/onesix/update/FMLLibrariesTask.h28
-rw-r--r--api/logic/minecraft/onesix/update/FoldersTask.cpp21
-rw-r--r--api/logic/minecraft/onesix/update/FoldersTask.h15
-rw-r--r--api/logic/minecraft/onesix/update/LibrariesTask.cpp94
-rw-r--r--api/logic/minecraft/onesix/update/LibrariesTask.h25
8 files changed, 0 insertions, 441 deletions
diff --git a/api/logic/minecraft/onesix/update/AssetUpdateTask.cpp b/api/logic/minecraft/onesix/update/AssetUpdateTask.cpp
deleted file mode 100644
index 21600ff0..00000000
--- a/api/logic/minecraft/onesix/update/AssetUpdateTask.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-#include "Env.h"
-#include "AssetUpdateTask.h"
-#include "minecraft/onesix/OneSixInstance.h"
-#include "net/ChecksumValidator.h"
-#include "minecraft/AssetsUtils.h"
-
-AssetUpdateTask::AssetUpdateTask(OneSixInstance * inst)
-{
- m_inst = inst;
-}
-void AssetUpdateTask::executeTask()
-{
- setStatus(tr("Updating assets index..."));
- auto profile = m_inst->getMinecraftProfile();
- auto assets = profile->getMinecraftAssets();
- QUrl indexUrl = assets->url;
- QString localPath = assets->id + ".json";
- auto job = new NetJob(tr("Asset index for %1").arg(m_inst->name()));
-
- auto metacache = ENV.metacache();
- auto entry = metacache->resolveEntry("asset_indexes", localPath);
- entry->setStale(true);
- auto hexSha1 = assets->sha1.toLatin1();
- qDebug() << "Asset index SHA1:" << hexSha1;
- auto dl = Net::Download::makeCached(indexUrl, entry);
- auto rawSha1 = QByteArray::fromHex(assets->sha1.toLatin1());
- dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, rawSha1));
- job->addNetAction(dl);
-
- downloadJob.reset(job);
-
- connect(downloadJob.get(), &NetJob::succeeded, this, &AssetUpdateTask::assetIndexFinished);
- connect(downloadJob.get(), &NetJob::failed, this, &AssetUpdateTask::assetIndexFailed);
- connect(downloadJob.get(), &NetJob::progress, this, &AssetUpdateTask::progress);
-
- qDebug() << m_inst->name() << ": Starting asset index download";
- downloadJob->start();
-}
-
-bool AssetUpdateTask::canAbort() const
-{
- return true;
-}
-
-void AssetUpdateTask::assetIndexFinished()
-{
- AssetsIndex index;
- qDebug() << m_inst->name() << ": Finished asset index download";
-
- auto profile = m_inst->getMinecraftProfile();
- auto assets = profile->getMinecraftAssets();
-
- QString asset_fname = "assets/indexes/" + assets->id + ".json";
- // FIXME: this looks like a job for a generic validator based on json schema?
- if (!AssetsUtils::loadAssetsIndexJson(assets->id, asset_fname, &index))
- {
- auto metacache = ENV.metacache();
- auto entry = metacache->resolveEntry("asset_indexes", assets->id + ".json");
- metacache->evictEntry(entry);
- emitFailed(tr("Failed to read the assets index!"));
- }
-
- auto job = index.getDownloadJob();
- if(job)
- {
- setStatus(tr("Getting the assets files from Mojang..."));
- downloadJob = job;
- connect(downloadJob.get(), &NetJob::succeeded, this, &AssetUpdateTask::emitSucceeded);
- connect(downloadJob.get(), &NetJob::failed, this, &AssetUpdateTask::assetsFailed);
- connect(downloadJob.get(), &NetJob::progress, this, &AssetUpdateTask::progress);
- downloadJob->start();
- return;
- }
- emitSucceeded();
-}
-
-void AssetUpdateTask::assetIndexFailed(QString reason)
-{
- qDebug() << m_inst->name() << ": Failed asset index download";
- emitFailed(tr("Failed to download the assets index:\n%1").arg(reason));
-}
-
-void AssetUpdateTask::assetsFailed(QString reason)
-{
- emitFailed(tr("Failed to download assets:\n%1").arg(reason));
-}
-
-bool AssetUpdateTask::abort()
-{
- if(downloadJob)
- {
- return downloadJob->abort();
- }
- else
- {
- qWarning() << "Prematurely aborted FMLLibrariesTask";
- }
- return true;
-}
diff --git a/api/logic/minecraft/onesix/update/AssetUpdateTask.h b/api/logic/minecraft/onesix/update/AssetUpdateTask.h
deleted file mode 100644
index 3b500189..00000000
--- a/api/logic/minecraft/onesix/update/AssetUpdateTask.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-#include "tasks/Task.h"
-#include "net/NetJob.h"
-class OneSixInstance;
-
-class AssetUpdateTask : public Task
-{
- Q_OBJECT
-public:
- AssetUpdateTask(OneSixInstance * inst);
- void executeTask() override;
-
- bool canAbort() const override;
-
-private slots:
- void assetIndexFinished();
- void assetIndexFailed(QString reason);
- void assetsFailed(QString reason);
-
-public slots:
- bool abort() override;
-
-private:
- OneSixInstance *m_inst;
- NetJobPtr downloadJob;
-};
diff --git a/api/logic/minecraft/onesix/update/FMLLibrariesTask.cpp b/api/logic/minecraft/onesix/update/FMLLibrariesTask.cpp
deleted file mode 100644
index 13310e92..00000000
--- a/api/logic/minecraft/onesix/update/FMLLibrariesTask.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-#include "Env.h"
-#include <FileSystem.h>
-#include <minecraft/VersionFilterData.h>
-#include "FMLLibrariesTask.h"
-#include "minecraft/onesix/OneSixInstance.h"
-
-
-FMLLibrariesTask::FMLLibrariesTask(OneSixInstance * inst)
-{
- m_inst = inst;
-}
-void FMLLibrariesTask::executeTask()
-{
- // Get the mod list
- OneSixInstance *inst = (OneSixInstance *)m_inst;
- std::shared_ptr<MinecraftProfile> profile = inst->getMinecraftProfile();
- bool forge_present = false;
-
- if (!profile->hasTrait("legacyFML"))
- {
- emitSucceeded();
- return;
- }
-
- QString version = inst->intendedVersionId();
- auto &fmlLibsMapping = g_VersionFilterData.fmlLibsMapping;
- if (!fmlLibsMapping.contains(version))
- {
- emitSucceeded();
- return;
- }
-
- auto &libList = fmlLibsMapping[version];
-
- // determine if we need some libs for FML or forge
- setStatus(tr("Checking for FML libraries..."));
- forge_present = (profile->versionPatch("net.minecraftforge") != nullptr);
- // we don't...
- if (!forge_present)
- {
- emitSucceeded();
- return;
- }
-
- // now check the lib folder inside the instance for files.
- for (auto &lib : libList)
- {
- QFileInfo libInfo(FS::PathCombine(inst->FMLlibDir(), lib.filename));
- if (libInfo.exists())
- continue;
- fmlLibsToProcess.append(lib);
- }
-
- // if everything is in place, there's nothing to do here...
- if (fmlLibsToProcess.isEmpty())
- {
- emitSucceeded();
- return;
- }
-
- // download missing libs to our place
- setStatus(tr("Dowloading FML libraries..."));
- auto dljob = new NetJob("FML libraries");
- auto metacache = ENV.metacache();
- for (auto &lib : fmlLibsToProcess)
- {
- 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(Net::Download::makeCached(QUrl(urlString), entry));
- }
-
- connect(dljob, &NetJob::succeeded, this, &FMLLibrariesTask::fmllibsFinished);
- connect(dljob, &NetJob::failed, this, &FMLLibrariesTask::fmllibsFailed);
- connect(dljob, &NetJob::progress, this, &FMLLibrariesTask::progress);
- downloadJob.reset(dljob);
- downloadJob->start();
-}
-
-bool FMLLibrariesTask::canAbort() const
-{
- return true;
-}
-
-void FMLLibrariesTask::fmllibsFinished()
-{
- downloadJob.reset();
- if (!fmlLibsToProcess.isEmpty())
- {
- setStatus(tr("Copying FML libraries into the instance..."));
- OneSixInstance *inst = (OneSixInstance *)m_inst;
- auto metacache = ENV.metacache();
- int index = 0;
- for (auto &lib : fmlLibsToProcess)
- {
- progress(index, fmlLibsToProcess.size());
- auto entry = metacache->resolveEntry("fmllibs", lib.filename);
- auto path = FS::PathCombine(inst->FMLlibDir(), lib.filename);
- if (!FS::ensureFilePathExists(path))
- {
- emitFailed(tr("Failed creating FML library folder inside the instance."));
- return;
- }
- if (!QFile::copy(entry->getFullPath(), FS::PathCombine(inst->FMLlibDir(), lib.filename)))
- {
- emitFailed(tr("Failed copying Forge/FML library: %1.").arg(lib.filename));
- return;
- }
- index++;
- }
- progress(index, fmlLibsToProcess.size());
- }
- emitSucceeded();
-}
-void FMLLibrariesTask::fmllibsFailed(QString reason)
-{
- QStringList failed = downloadJob->getFailedFiles();
- QString failed_all = failed.join("\n");
- emitFailed(tr("Failed to download the following files:\n%1\n\nReason:%2\nPlease try again.").arg(failed_all, reason));
-}
-
-bool FMLLibrariesTask::abort()
-{
- if(downloadJob)
- {
- return downloadJob->abort();
- }
- else
- {
- qWarning() << "Prematurely aborted FMLLibrariesTask";
- }
- return true;
-}
diff --git a/api/logic/minecraft/onesix/update/FMLLibrariesTask.h b/api/logic/minecraft/onesix/update/FMLLibrariesTask.h
deleted file mode 100644
index 616053d7..00000000
--- a/api/logic/minecraft/onesix/update/FMLLibrariesTask.h
+++ /dev/null
@@ -1,28 +0,0 @@
-#pragma once
-#include "tasks/Task.h"
-#include "net/NetJob.h"
-class OneSixInstance;
-
-class FMLLibrariesTask : public Task
-{
- Q_OBJECT
-public:
- FMLLibrariesTask(OneSixInstance * inst);
-
- void executeTask() override;
-
- bool canAbort() const override;
-
-private slots:
- void fmllibsFinished();
- void fmllibsFailed(QString reason);
-
-public slots:
- bool abort() override;
-
-private:
- OneSixInstance *m_inst;
- NetJobPtr downloadJob;
- QList<FMLlib> fmlLibsToProcess;
-};
-
diff --git a/api/logic/minecraft/onesix/update/FoldersTask.cpp b/api/logic/minecraft/onesix/update/FoldersTask.cpp
deleted file mode 100644
index d478560c..00000000
--- a/api/logic/minecraft/onesix/update/FoldersTask.cpp
+++ /dev/null
@@ -1,21 +0,0 @@
-#include "FoldersTask.h"
-#include "minecraft/onesix/OneSixInstance.h"
-#include <QDir>
-
-FoldersTask::FoldersTask(OneSixInstance * inst)
- :Task()
-{
- m_inst = inst;
-}
-
-void FoldersTask::executeTask()
-{
- // Make directories
- QDir mcDir(m_inst->minecraftRoot());
- if (!mcDir.exists() && !mcDir.mkpath("."))
- {
- emitFailed(tr("Failed to create folder for minecraft binaries."));
- return;
- }
- emitSucceeded();
-}
diff --git a/api/logic/minecraft/onesix/update/FoldersTask.h b/api/logic/minecraft/onesix/update/FoldersTask.h
deleted file mode 100644
index 7cdc5a93..00000000
--- a/api/logic/minecraft/onesix/update/FoldersTask.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#pragma once
-
-#include "tasks/Task.h"
-
-class OneSixInstance;
-class FoldersTask : public Task
-{
- Q_OBJECT
-public:
- FoldersTask(OneSixInstance * inst);
- void executeTask() override;
-private:
- OneSixInstance *m_inst;
-};
-
diff --git a/api/logic/minecraft/onesix/update/LibrariesTask.cpp b/api/logic/minecraft/onesix/update/LibrariesTask.cpp
deleted file mode 100644
index 2cd41ded..00000000
--- a/api/logic/minecraft/onesix/update/LibrariesTask.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-#include "Env.h"
-#include "LibrariesTask.h"
-#include "minecraft/onesix/OneSixInstance.h"
-
-LibrariesTask::LibrariesTask(OneSixInstance * inst)
-{
- m_inst = inst;
-}
-
-void LibrariesTask::executeTask()
-{
- setStatus(tr("Getting the library files from Mojang..."));
- qDebug() << m_inst->name() << ": downloading libraries";
- OneSixInstance *inst = (OneSixInstance *)m_inst;
- inst->reloadProfile();
- if(inst->hasVersionBroken())
- {
- emitFailed(tr("Failed to load the version description files - check the instance for errors."));
- return;
- }
-
- // Build a list of URLs that will need to be downloaded.
- std::shared_ptr<MinecraftProfile> profile = inst->getMinecraftProfile();
-
- auto job = new NetJob(tr("Libraries for instance %1").arg(inst->name()));
- downloadJob.reset(job);
-
- auto metacache = ENV.metacache();
- QList<LibraryPtr> brokenLocalLibs;
- QStringList failedFiles;
- auto createJob = [&](const LibraryPtr & lib)
- {
- if(!lib)
- {
- emitFailed(tr("Null jar is specified in the metadata, aborting."));
- return;
- }
- auto dls = lib->getDownloads(currentSystem, metacache.get(), failedFiles, inst->getLocalLibraryPath());
- for(auto dl : dls)
- {
- downloadJob->addNetAction(dl);
- }
- };
- auto createJobs = [&](const QList<LibraryPtr> & libs)
- {
- for (auto lib : libs)
- {
- createJob(lib);
- }
- };
- createJobs(profile->getLibraries());
- createJobs(profile->getNativeLibraries());
- createJobs(profile->getJarMods());
- createJob(profile->getMainJar());
-
- // FIXME: this is never filled!!!!
- if (!brokenLocalLibs.empty())
- {
- downloadJob.reset();
- QString failed_all = failedFiles.join("\n");
- emitFailed(tr("Some libraries marked as 'local' are missing their jar "
- "files:\n%1\n\nYou'll have to correct this problem manually. If this is "
- "an externally tracked instance, make sure to run it at least once "
- "outside of MultiMC.").arg(failed_all));
- return;
- }
- connect(downloadJob.get(), &NetJob::succeeded, this, &LibrariesTask::emitSucceeded);
- connect(downloadJob.get(), &NetJob::failed, this, &LibrariesTask::jarlibFailed);
- connect(downloadJob.get(), &NetJob::progress, this, &LibrariesTask::progress);
- downloadJob->start();
-}
-
-bool LibrariesTask::canAbort() const
-{
- return true;
-}
-
-void LibrariesTask::jarlibFailed(QString reason)
-{
- emitFailed(tr("Game update failed: it was impossible to fetch the required libraries.\nReason:\n%1").arg(reason));
-}
-
-bool LibrariesTask::abort()
-{
- if(downloadJob)
- {
- return downloadJob->abort();
- }
- else
- {
- qWarning() << "Prematurely aborted LibrariesTask";
- }
- return true;
-}
diff --git a/api/logic/minecraft/onesix/update/LibrariesTask.h b/api/logic/minecraft/onesix/update/LibrariesTask.h
deleted file mode 100644
index a84975e5..00000000
--- a/api/logic/minecraft/onesix/update/LibrariesTask.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#pragma once
-#include "tasks/Task.h"
-#include "net/NetJob.h"
-class OneSixInstance;
-
-class LibrariesTask : public Task
-{
- Q_OBJECT
-public:
- LibrariesTask(OneSixInstance * inst);
-
- void executeTask() override;
-
- bool canAbort() const override;
-
-private slots:
- void jarlibFailed(QString reason);
-
-public slots:
- bool abort() override;
-
-private:
- OneSixInstance *m_inst;
- NetJobPtr downloadJob;
-};