From 8cbe13c6560c3abe8ef73b8a376bd84dea281cf4 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Mon, 6 Mar 2017 00:39:25 +0100 Subject: NOISSUE remove legacy version blacklist --- api/logic/minecraft/MinecraftVersionList.cpp | 12 ------------ api/logic/minecraft/VersionFilterData.cpp | 2 -- api/logic/minecraft/VersionFilterData.h | 2 -- 3 files changed, 16 deletions(-) diff --git a/api/logic/minecraft/MinecraftVersionList.cpp b/api/logic/minecraft/MinecraftVersionList.cpp index 2c9a8035..29fa840e 100644 --- a/api/logic/minecraft/MinecraftVersionList.cpp +++ b/api/logic/minecraft/MinecraftVersionList.cpp @@ -179,12 +179,6 @@ void MinecraftVersionList::loadBuiltinList() continue; } - if (g_VersionFilterData.legacyBlacklist.contains(versionID)) - { - qWarning() << "Blacklisted legacy version ignored: " << versionID; - continue; - } - // Now, we construct the version object and add it to the list. std::shared_ptr mcVersion(new MinecraftVersion()); mcVersion->m_name = mcVersion->m_descriptor = versionID; @@ -258,12 +252,6 @@ void MinecraftVersionList::loadMojangList(QJsonDocument jsonDoc, VersionSource s continue; } - if (g_VersionFilterData.legacyBlacklist.contains(versionID)) - { - qWarning() << "Blacklisted legacy version ignored: " << versionID; - continue; - } - // Now, we construct the version object and add it to the list. std::shared_ptr mcVersion(new MinecraftVersion()); mcVersion->m_name = mcVersion->m_descriptor = versionID; diff --git a/api/logic/minecraft/VersionFilterData.cpp b/api/logic/minecraft/VersionFilterData.cpp index 0c4a6e3d..60c64473 100644 --- a/api/logic/minecraft/VersionFilterData.cpp +++ b/api/logic/minecraft/VersionFilterData.cpp @@ -58,8 +58,6 @@ VersionFilterData::VersionFilterData() // don't use installers for those. forgeInstallerBlacklist = QSet({"1.5.2"}); - // these won't show up in version lists because they are extremely bad and dangerous - legacyBlacklist = QSet({"rd-160052"}); /* * nothing older than this will be accepted from Mojang servers * (these versions need to be tested by us first) diff --git a/api/logic/minecraft/VersionFilterData.h b/api/logic/minecraft/VersionFilterData.h index f7d4ebe7..f4213e1a 100644 --- a/api/logic/minecraft/VersionFilterData.h +++ b/api/logic/minecraft/VersionFilterData.h @@ -20,8 +20,6 @@ struct VersionFilterData QMap> fmlLibsMapping; // set of minecraft versions for which using forge installers is blacklisted QSet forgeInstallerBlacklist; - // set of 'legacy' versions that will not show up in the version lists. - QSet legacyBlacklist; // no new versions below this date will be accepted from Mojang servers QDateTime legacyCutoffDate; // Libraries that belong to LWJGL -- cgit From 7382360771f78e351740393262358bed3297d44c Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Mon, 6 Mar 2017 01:00:44 +0100 Subject: NOISSUE remove builtin Minecraft versions --- api/logic/minecraft/MinecraftVersionList.cpp | 51 --- api/logic/minecraft/MinecraftVersionList.h | 1 - api/logic/minecraft/VersionFilterData.cpp | 9 +- api/logic/minecraft/VersionFilterData.h | 2 - application/resources/versions/minecraft.json | 587 -------------------------- application/resources/versions/versions.qrc | 2 - 6 files changed, 2 insertions(+), 650 deletions(-) delete mode 100644 application/resources/versions/minecraft.json diff --git a/api/logic/minecraft/MinecraftVersionList.cpp b/api/logic/minecraft/MinecraftVersionList.cpp index 29fa840e..0dc46289 100644 --- a/api/logic/minecraft/MinecraftVersionList.cpp +++ b/api/logic/minecraft/MinecraftVersionList.cpp @@ -26,7 +26,6 @@ #include "ParseUtils.h" #include "ProfileUtils.h" -#include "VersionFilterData.h" #include "onesix/OneSixVersionFormat.h" #include "MojangVersionFormat.h" #include @@ -89,7 +88,6 @@ public: MinecraftVersionList::MinecraftVersionList(QObject *parent) : BaseVersionList(parent) { - loadBuiltinList(); loadCachedList(); } @@ -159,50 +157,6 @@ void MinecraftVersionList::loadCachedList() m_hasLocalIndex = true; } -void MinecraftVersionList::loadBuiltinList() -{ - qDebug() << "Loading builtin version list."; - // grab the version list data from internal resources. - const QJsonDocument doc = - Json::requireDocument(QString(":/versions/minecraft.json"), "builtin version list"); - const QJsonObject root = doc.object(); - - // parse all the versions - for (const auto version : Json::requireArray(root.value("versions"))) - { - QJsonObject versionObj = version.toObject(); - QString versionID = versionObj.value("id").toString(""); - QString versionTypeStr = versionObj.value("type").toString(""); - if (versionID.isEmpty() || versionTypeStr.isEmpty()) - { - qCritical() << "Parsed version is missing ID or type"; - continue; - } - - // Now, we construct the version object and add it to the list. - std::shared_ptr mcVersion(new MinecraftVersion()); - mcVersion->m_name = mcVersion->m_descriptor = versionID; - - // Parse the timestamp. - mcVersion->m_releaseTime = timeFromS3Time(versionObj.value("releaseTime").toString("")); - mcVersion->m_versionFileURL = QString(); - mcVersion->m_versionSource = VersionSource::Builtin; - mcVersion->m_type = versionTypeStr; - mcVersion->m_appletClass = versionObj.value("appletClass").toString(""); - mcVersion->m_mainClass = versionObj.value("mainClass").toString(""); - mcVersion->m_jarChecksum = versionObj.value("checksum").toString(""); - if (versionObj.contains("+traits")) - { - for (auto traitVal : Json::requireArray(versionObj.value("+traits"))) - { - mcVersion->m_traits.insert(Json::requireString(traitVal)); - } - } - m_lookup[versionID] = mcVersion; - m_vlist.append(mcVersion); - } -} - void MinecraftVersionList::loadMojangList(QJsonDocument jsonDoc, VersionSource source) { qDebug() << "Loading" << ((source == VersionSource::Remote) ? "remote" : "local") << "version list."; @@ -259,11 +213,6 @@ void MinecraftVersionList::loadMojangList(QJsonDocument jsonDoc, VersionSource s mcVersion->m_releaseTime = timeFromS3Time(versionObj.value("releaseTime").toString("")); mcVersion->m_updateTime = timeFromS3Time(versionObj.value("time").toString("")); - if (mcVersion->m_releaseTime < g_VersionFilterData.legacyCutoffDate) - { - continue; - } - // depends on where we load the version from -- network request or local file? mcVersion->m_versionSource = source; mcVersion->m_versionFileURL = versionObj.value("url").toString(""); diff --git a/api/logic/minecraft/MinecraftVersionList.h b/api/logic/minecraft/MinecraftVersionList.h index 42333678..fc421966 100644 --- a/api/logic/minecraft/MinecraftVersionList.h +++ b/api/logic/minecraft/MinecraftVersionList.h @@ -34,7 +34,6 @@ class MULTIMC_LOGIC_EXPORT MinecraftVersionList : public BaseVersionList Q_OBJECT private: void sortInternal(); - void loadBuiltinList(); void loadMojangList(QJsonDocument jsonDoc, VersionSource source); void loadCachedList(); void saveCachedList(); diff --git a/api/logic/minecraft/VersionFilterData.cpp b/api/logic/minecraft/VersionFilterData.cpp index 60c64473..5f4ceee6 100644 --- a/api/logic/minecraft/VersionFilterData.cpp +++ b/api/logic/minecraft/VersionFilterData.cpp @@ -58,16 +58,11 @@ VersionFilterData::VersionFilterData() // don't use installers for those. forgeInstallerBlacklist = QSet({"1.5.2"}); - /* - * nothing older than this will be accepted from Mojang servers - * (these versions need to be tested by us first) - */ + + // FIXME: remove, used for deciding when core mods should display legacyCutoffDate = timeFromS3Time("2013-06-25T15:08:56+02:00"); lwjglWhitelist = QSet{"net.java.jinput:jinput", "net.java.jinput:jinput-platform", "net.java.jutils:jutils", "org.lwjgl.lwjgl:lwjgl", "org.lwjgl.lwjgl:lwjgl_util", "org.lwjgl.lwjgl:lwjgl-platform"}; - - // Version list magic - recommendedMinecraftVersion = "1.7.10"; } diff --git a/api/logic/minecraft/VersionFilterData.h b/api/logic/minecraft/VersionFilterData.h index f4213e1a..2408e704 100644 --- a/api/logic/minecraft/VersionFilterData.h +++ b/api/logic/minecraft/VersionFilterData.h @@ -24,7 +24,5 @@ struct VersionFilterData QDateTime legacyCutoffDate; // Libraries that belong to LWJGL QSet lwjglWhitelist; - // Currently recommended minecraft version - QString recommendedMinecraftVersion; }; extern VersionFilterData MULTIMC_LOGIC_EXPORT g_VersionFilterData; diff --git a/application/resources/versions/minecraft.json b/application/resources/versions/minecraft.json deleted file mode 100644 index 9c08a83f..00000000 --- a/application/resources/versions/minecraft.json +++ /dev/null @@ -1,587 +0,0 @@ -{ -"versions": [ - { - "id": "1.5.2", - "checksum": "6897c3287fb971c9f362eb3ab20f5ddd", - "releaseTime": "2013-04-25T17:45:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.5.1", - "checksum": "5c1219d869b87d233de3033688ec7567", - "releaseTime": "2013-03-20T12:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.5", - "checksum": "fd11cbc5b01aae1d62cff0145171f3d9", - "releaseTime": "2013-03-07T00:00:00+02:00", - "type": "snapshot", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.4.7", - "checksum": "8e80fb01b321c6b3c7efca397a3eea35", - "releaseTime": "2012-12-28T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.4.6", - "checksum": "48677dc4c2b98c29918722b5ab27b4fd", - "releaseTime": "2012-12-20T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.4.5", - "checksum": "b15e2b2b6b4629f0d99a95b6b44412a0", - "releaseTime": "2012-11-20T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.4.4", - "checksum": "7aa46c8058cba2f38e9d2ddddcc77c72", - "releaseTime": "2012-11-14T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.4.3", - "checksum": "9cc3295931edb6339f22989fe1b612a6", - "releaseTime": "2012-11-01T00:00:00+02:00", - "type": "snapshot", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.4.2", - "checksum": "771175c01778ea67395bc6919a5a9dc5", - "releaseTime": "2012-10-25T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.4.1", - "checksum": "542621a5298659dc65f383f35170fc4c", - "releaseTime": "2012-10-23T00:00:00+02:00", - "type": "snapshot", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.4", - "checksum": "32a654388b54d3e4bb29c1a46e7d6a12", - "releaseTime": "2012-10-19T00:00:00+02:00", - "type": "snapshot", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.3.2", - "checksum": "969699f13e5bbe7f12e40ac4f32b7d9a", - "releaseTime": "2012-08-16T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.3.1", - "checksum": "266ccbc9798afd2eadf3d6c01b4c562a", - "releaseTime": "2012-08-01T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.3", - "checksum": "a6effac1eaccf5d429aae340cf95ed5d", - "releaseTime": "2012-07-26T00:00:00+02:00", - "type": "snapshot", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.2.5", - "checksum": "8e8778078a175a33603a585257f28563", - "releaseTime": "2012-03-30T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.2.4", - "checksum": "25423eab6d8707f96cc6ad8a21a7250a", - "releaseTime": "2012-03-22T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.2.3", - "checksum": "12f6c4b1bdcc63f029e3c088a364b8e4", - "releaseTime": "2012-03-02T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.2.2", - "checksum": "6189e96efaea11e5164b4a4755574324", - "releaseTime": "2012-03-01T00:00:01+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.2.1", - "checksum": "97067a603eba2b6eb75d3194f81f6bcd", - "releaseTime": "2012-03-01T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.1", - "checksum": "e92302d2acdba7c97e0d8df1e10d2006", - "releaseTime": "2012-01-12T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "1.0", - "checksum": "3820d222b95d0b8c520d9596a756a6e6", - "releaseTime": "2011-11-18T00:00:00+02:00", - "type": "release", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.8.1", - "checksum": "f8c5a2ccd3bc996792bbe436d8cc08bc", - "releaseTime": "2011-09-19T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.8", - "checksum": "a59a9fd4c726a573b0a2bdd10d857f59", - "releaseTime": "2011-09-15T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.7.3", - "checksum": "eae3353fdaa7e10a59b4cb5b45bfa10d", - "releaseTime": "2011-07-08T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.7.2", - "checksum": "dd9215ab1141170d4871f42bff4ab302", - "releaseTime": "2011-07-01T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.7", - "checksum": "682419e9ed1a236c3067822d53cda1e4", - "releaseTime": "2011-06-30T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.6.6", - "checksum": "ce80072464433cd5b05d505aa8ff29d1", - "releaseTime": "2011-05-31T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.6.5", - "checksum": "2aba888864b32038c8d22ee5df71b7c8", - "releaseTime": "2011-05-28T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.6.4", - "checksum": "5c4df6f120336f113180698613853dba", - "releaseTime": "2011-05-26T00:00:04+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.6.3", - "checksum": "efc2becca965e4f8feb5b4210c6a4fd1", - "releaseTime": "2011-05-26T00:00:03+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.6.2", - "checksum": "01330b1c930102a683a4dd8d792e632e", - "releaseTime": "2011-05-26T00:00:02+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.6.1", - "checksum": "a7e82c441a57ef4068c533f4d777336a", - "releaseTime": "2011-05-26T00:00:01+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.6", - "checksum": "d531e221227a65392259d3141893280d", - "releaseTime": "2011-05-26T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.5_01", - "checksum": "d02fa9998e30693d8d989d5f88cf0040", - "releaseTime": "2011-04-20T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.5", - "checksum": "24289130902822d73f8722b52bc07cdb", - "releaseTime": "2011-04-19T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.4_01", - "checksum": "9379e54b581ba4ef3acc3e326e87db91", - "releaseTime": "2011-04-05T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.4", - "checksum": "71e64b61175b371ed148b385f2d14ebf", - "releaseTime": "2011-03-31T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.3_01", - "checksum": "4203826f35e1036f089919032c3d19d1", - "releaseTime": "2011-02-23T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.3b", - "checksum": "de2164df461d028229ed2e101181bbd4", - "releaseTime": "2011-02-22T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.2_02", - "checksum": "1736c5ba4f63a981220c2a18a4120180", - "releaseTime": "2011-01-21T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.2_01", - "checksum": "486d83ec00554b45ffa21af2faa0116a", - "releaseTime": "2011-01-14T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.2", - "checksum": "6426223efe23c3931a4ef89685be3349", - "releaseTime": "2011-01-13T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.1_02", - "checksum": "7d547e495a770c62054ef136add43034", - "releaseTime": "2010-12-22T00:00:01+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.1_01", - "checksum": "1f9331f2bfca81b6ce2acdfc1f105837", - "releaseTime": "2010-12-22T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.0.2", - "checksum": "d200c465b8c167cc8df6537531fc9a48", - "releaseTime": "2010-12-21T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.0_01", - "checksum": "03bd20b870dbbd121de5dca98af4e1ce", - "releaseTime": "2010-12-20T00:00:01+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "b1.0", - "checksum": "5f8733dbbf09b4e7c874661a3c29c239", - "releaseTime": "2010-12-20T00:00:00+02:00", - "type": "old_beta", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.6", - "checksum": "ddd5e39467f28d1ea1a03b4d9e790867", - "releaseTime": "2010-12-03T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.5", - "checksum": "7d3a43037190970ff2e11153b5718b74", - "releaseTime": "2010-12-01T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.4_01", - "checksum": "0a1cc8c668faa6dc93fc418e8b4b097a", - "releaseTime": "2010-11-30T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.3_04", - "checksum": "b2c25a753c82a1cd228ce71469829dc1", - "releaseTime": "2010-11-26T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.3_02", - "checksum": "3ad4808ef2ac3b65d10305315260da03", - "releaseTime": "2010-11-25T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.3_01", - "checksum": "70cbab762b17c5b11fefea9b12564119", - "releaseTime": "2010-11-24T00:00:01+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.3", - "checksum": "25f053114e34b915e675f82d58f08711", - "releaseTime": "2010-11-24T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.2b", - "checksum": "6250fb17f8898c4d970d6bd03c229177", - "releaseTime": "2010-11-10T00:00:01+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.2a", - "checksum": "0f9fe018b344fd9dd849005f9bdca803", - "releaseTime": "2010-11-10T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "texturepacks"] - }, - { - "id": "a1.2.1_01", - "checksum": "0a496e44a7b4e2f493b5893d8e5845bd", - "releaseTime": "2010-11-05T00:00:01+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.2.1", - "checksum": "0a496e44a7b4e2f493b5893d8e5845bd", - "releaseTime": "2010-11-05T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.2.0_02", - "checksum": "f5bcb4d0c0e78bc220f164b89ae9bd60", - "releaseTime": "2010-11-04T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.2.0_01", - "checksum": "b2e9333e967cb89488884c2e5c715d4f", - "releaseTime": "2010-10-31T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.2.0", - "checksum": "44c384dae02390f700458b95d82c3e2a", - "releaseTime": "2010-10-30T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.1.2_01", - "checksum": "94346e1b8f6ad0e4a284314f0e29207b", - "releaseTime": "2010-09-23T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.1.2", - "checksum": "72ba1f834327805cb44164a42b331522", - "releaseTime": "2010-09-20T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.1.0", - "checksum": "891fd93e04f5daaf35d73c58e45c01b1", - "releaseTime": "2010-09-13T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.0.17_04", - "checksum": "16ed7dc58244772847991e504afcf02f", - "releaseTime": "2010-08-23T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.0.17_02", - "checksum": "d89760b0871ef61a55c9f336c0439d58", - "releaseTime": "2010-08-20T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.0.16", - "checksum": "6bbde02c13aed5766275f4398ede6aae", - "releaseTime": "2010-08-12T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.0.15", - "checksum": "ade257d2080d56fa983763f9c701fa14", - "releaseTime": "2010-08-04T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.0.14", - "checksum": "227d0c6fa896a231de6269a074c9a458", - "releaseTime": "2010-07-30T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.0.11", - "checksum": "6f1b1dd157fa0df39760f5be3eab01b0", - "releaseTime": "2010-07-23T00:00:00+02:00", - "type": "old_alpha", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.0.5_01", - "checksum": "ae5f606caa18222e7568819c910ee423", - "releaseTime": "2010-07-13T00:00:00+02:00", - "type": "old_alpha", - "mainClass": "y", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "a1.0.4", - "checksum": "13ce7935c3670e7494e26b2704bfa3e9", - "releaseTime": "2010-07-09T00:00:00+02:00", - "type": "old_alpha", - "mainClass": "ax", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "inf-20100618", - "checksum": "f5f5aa34760facc10486e906a7c60196", - "releaseTime": "2010-06-16T00:00:00+02:00", - "type": "old_alpha", - "mainClass": "net.minecraft.client.d", - "appletClass": "net.minecraft.client.MinecraftApplet", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "c0.30_01c", - "checksum": "fcfd7f83a6b27503cf48202381a5adf2", - "releaseTime": "2009-12-22T00:00:00+02:00", - "type": "old_alpha", - "mainClass": "com.mojang.minecraft.l", - "appletClass": "com.mojang.minecraft.MinecraftApplet", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "c0.0.13a_03", - "checksum": "a9527cb5aef198e0f53e235ebe13dc75", - "releaseTime": "2009-05-22T00:00:00+02:00", - "type": "old_alpha", - "mainClass": "com.mojang.minecraft.c", - "appletClass": "com.mojang.minecraft.MinecraftApplet", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "c0.0.13a", - "checksum": "3617fbf5fbfd2b837ebf5ceb63584908", - "releaseTime": "2009-05-31T00:00:00+02:00", - "type": "old_alpha", - "mainClass": "com.mojang.minecraft.Minecraft", - "appletClass": "com.mojang.minecraft.MinecraftApplet", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "c0.0.11a", - "checksum": "a6e03c2eaf74709facc0d2477648e999", - "releaseTime": "2009-05-17T00:00:00+02:00", - "type": "old_alpha", - "mainClass": "com.mojang.minecraft.Minecraft", - "appletClass": "com.mojang.minecraft.MinecraftApplet", - "+traits": ["legacyLaunch", "no-texturepacks"] - }, - { - "id": "rd-161348", - "checksum": "80882b8936a5c8d91500838a6660b504", - "releaseTime": "2009-05-16T13:48:00+02:00", - "type": "old_alpha", - "mainClass": "com.mojang.minecraft.RubyDung", - "+traits": ["no-texturepacks"] - }, - { - "id": "rd-160052", - "checksum": "24c5cc99a2a612697ed2f7d5d04242fe", - "releaseTime": "2009-05-16T00:52:00+02:00", - "type": "old_alpha", - "mainClass": "com.mojang.rubydung.RubyDung", - "+traits": ["no-texturepacks"] - }, - { - "id": "rd-132328", - "checksum": "70e33a81c541b13a477e68c1207124eb", - "releaseTime": "2009-05-13T23:28:00+02:00", - "type": "old_alpha", - "mainClass": "com.mojang.rubydung.RubyDung", - "+traits": ["no-texturepacks"] - }, - { - "id": "rd-132211", - "checksum": "99fdaea10c494b9c3c3254636b98b799", - "releaseTime": "2009-05-13T22:11:00+02:00", - "type": "old_alpha", - "mainClass": "com.mojang.rubydung.RubyDung", - "+traits": ["no-texturepacks"] - } -] -} diff --git a/application/resources/versions/versions.qrc b/application/resources/versions/versions.qrc index e9621e97..d9596942 100644 --- a/application/resources/versions/versions.qrc +++ b/application/resources/versions/versions.qrc @@ -1,8 +1,6 @@ - - minecraft.json LWJGL/2.9.0.json LWJGL/2.9.1-nightly-20130708-debug3.json -- cgit From 1fbe03f982f130bf675b7f94dd9c06aee62da54f Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Fri, 10 Mar 2017 23:34:03 +0100 Subject: NOISSUE remove unused wonkoclient --- CMakeLists.txt | 1 - wonkoclient/CMakeLists.txt | 10 ------ wonkoclient/WonkoClient.cpp | 84 --------------------------------------------- wonkoclient/WonkoClient.h | 36 ------------------- wonkoclient/main.cpp | 29 ---------------- 5 files changed, 160 deletions(-) delete mode 100644 wonkoclient/CMakeLists.txt delete mode 100644 wonkoclient/WonkoClient.cpp delete mode 100644 wonkoclient/WonkoClient.h delete mode 100644 wonkoclient/main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d3dcac78..86f8e20a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -109,4 +109,3 @@ add_subdirectory(api/logic) add_subdirectory(api/gui) add_subdirectory(application) -add_subdirectory(wonkoclient) diff --git a/wonkoclient/CMakeLists.txt b/wonkoclient/CMakeLists.txt deleted file mode 100644 index 381857e0..00000000 --- a/wonkoclient/CMakeLists.txt +++ /dev/null @@ -1,10 +0,0 @@ -project(wonkoclient) - -SET( SRC_FILES -main.cpp -WonkoClient.cpp -WonkoClient.h -) - -add_executable(MMCClient ${SRC_FILES}) -target_link_libraries(MMCClient MultiMC_logic) diff --git a/wonkoclient/WonkoClient.cpp b/wonkoclient/WonkoClient.cpp deleted file mode 100644 index a45939b3..00000000 --- a/wonkoclient/WonkoClient.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// -// Created by robotbrain on 3/27/16. -// - -#include -#include -#include -#include -#include -#include -#include -#include "WonkoClient.h" - -WonkoClient &WonkoClient::getInstance() { - static WonkoClient instance; - return instance; -} - -void WonkoClient::registerLists() { - ENV.initHttpMetaCache(); - auto mcList = std::make_shared(); - ENV.registerVersionList("net.minecraft", mcList); - runTask(mcList->getLoadTask()); - auto llList = std::make_shared(); - ENV.registerVersionList("com.mumfrey.liteloader", llList); - runTask(llList->getLoadTask()); - auto forgeList = std::make_shared(); - ENV.registerVersionList("net.minecraftforge", forgeList); - runTask(forgeList->getLoadTask()); - auto lwjglList = std::make_shared(); - ENV.registerVersionList("org.lwjgl.legacy", lwjglList); - runTask(lwjglList->getLoadTask()); - auto javaList = std::make_shared(); - ENV.registerVersionList("com.java", javaList); -} - -WonkoClient::WonkoClient() { - m_settings.reset(new INISettingsObject("multimc.cfg", this)); - m_instanceList.reset(new InstanceList(m_settings, ".", this)); -} - -void WonkoClient::runTask(Task *pTask) { - if (pTask == nullptr) - return; - QEventLoop loop; - QObject::connect(pTask, &Task::finished, &loop, &QEventLoop::quit); - pTask->start(); - loop.exec(); - delete pTask; -} - -void WonkoClient::initGlobalSettings() -{ - m_settings->registerSetting("ShowConsole", true); - m_settings->registerSetting("AutoCloseConsole", true); - m_settings->registerSetting("LogPrePostOutput", true); - // Window Size - m_settings->registerSetting({"LaunchMaximized", "MCWindowMaximize"}, false); - m_settings->registerSetting({"MinecraftWinWidth", "MCWindowWidth"}, 854); - m_settings->registerSetting({"MinecraftWinHeight", "MCWindowHeight"}, 480); - - // Memory - m_settings->registerSetting({"MinMemAlloc", "MinMemoryAlloc"}, 512); - m_settings->registerSetting({"MaxMemAlloc", "MaxMemoryAlloc"}, 1024); - m_settings->registerSetting("PermGen", 128); - - // Java Settings - m_settings->registerSetting("JavaPath", ""); - m_settings->registerSetting("JavaTimestamp", 0); - m_settings->registerSetting("JavaArchitecture", ""); - m_settings->registerSetting("JavaVersion", ""); - m_settings->registerSetting("LastHostname", ""); - m_settings->registerSetting("JvmArgs", ""); - - // Wrapper command for launch - m_settings->registerSetting("WrapperCommand", ""); - - // Custom Commands - m_settings->registerSetting({"PreLaunchCommand", "PreLaunchCmd"}, ""); - m_settings->registerSetting({"PostExitCommand", "PostExitCmd"}, ""); - - // Minecraft launch method - m_settings->registerSetting("MCLaunchMethod", "LauncherPart"); -} diff --git a/wonkoclient/WonkoClient.h b/wonkoclient/WonkoClient.h deleted file mode 100644 index e6b35805..00000000 --- a/wonkoclient/WonkoClient.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// Created by robotbrain on 3/27/16. -// - -#pragma once - -#include -#include - -#if defined(MMCC) -#undef MMCC -#endif -#define MMCC (WonkoClient::getInstance()) - -class WonkoClient : public QObject { -Q_OBJECT - -private: - WonkoClient(); - -public: - static WonkoClient &getInstance(); - - void registerLists(); - void initGlobalSettings(); - - std::shared_ptr instances() const { - return m_instanceList; - } - -private: - std::shared_ptr m_instanceList; - std::shared_ptr m_settings; - - void runTask(Task *pTask); -}; diff --git a/wonkoclient/main.cpp b/wonkoclient/main.cpp deleted file mode 100644 index eaf92c5d..00000000 --- a/wonkoclient/main.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// -// Created by robotbrain on 3/26/16. -// - -#include "WonkoClient.h" -#include -#include -#include -#include -#include - -int main(int argc, char *argv[]) -{ - QCoreApplication a(argc, argv); - if (a.arguments().contains("-d")) - { - int i = a.arguments().lastIndexOf("-d") + 1; - if (i < a.arguments().length()) - { - QDir dir = QDir::current(); - dir.cd(a.arguments()[i]); - QDir::setCurrent(dir.absolutePath()); - qDebug() << "Using " << dir.absolutePath(); - } - } - MMCC.initGlobalSettings(); - MMCC.registerLists(); - return a.exec(); -} -- cgit From ab868df50eb6f9f3958bdc0a7ab9199dcdf46b3c Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sat, 11 Mar 2017 01:39:45 +0100 Subject: NOISSUE Wonko is the new Meta And then Wonko was the Meta. --- api/logic/CMakeLists.txt | 50 ++-- api/logic/Env.cpp | 27 +- api/logic/Env.h | 11 +- api/logic/meta/BaseEntity.cpp | 42 +++ api/logic/meta/BaseEntity.h | 53 ++++ api/logic/meta/Index.cpp | 150 +++++++++++ api/logic/meta/Index.h | 72 ++++++ api/logic/meta/Index_test.cpp | 50 ++++ api/logic/meta/Reference.cpp | 48 ++++ api/logic/meta/Reference.h | 44 ++++ api/logic/meta/Util.cpp | 50 ++++ api/logic/meta/Util.h | 31 +++ api/logic/meta/Version.cpp | 105 ++++++++ api/logic/meta/Version.h | 87 +++++++ api/logic/meta/VersionList.cpp | 288 +++++++++++++++++++++ api/logic/meta/VersionList.h | 95 +++++++ api/logic/meta/format/Format.cpp | 84 ++++++ api/logic/meta/format/Format.h | 57 ++++ api/logic/meta/format/FormatV1.cpp | 161 ++++++++++++ api/logic/meta/format/FormatV1.h | 33 +++ api/logic/meta/tasks/LocalLoadTask.cpp | 123 +++++++++ api/logic/meta/tasks/LocalLoadTask.h | 84 ++++++ api/logic/meta/tasks/RemoteLoadTask.cpp | 132 ++++++++++ api/logic/meta/tasks/RemoteLoadTask.h | 95 +++++++ api/logic/wonko/BaseWonkoEntity.cpp | 39 --- api/logic/wonko/BaseWonkoEntity.h | 51 ---- api/logic/wonko/WonkoIndex.cpp | 147 ----------- api/logic/wonko/WonkoIndex.h | 68 ----- api/logic/wonko/WonkoIndex_test.cpp | 50 ---- api/logic/wonko/WonkoReference.cpp | 44 ---- api/logic/wonko/WonkoReference.h | 41 --- api/logic/wonko/WonkoUtil.cpp | 47 ---- api/logic/wonko/WonkoUtil.h | 31 --- api/logic/wonko/WonkoVersion.cpp | 102 -------- api/logic/wonko/WonkoVersion.h | 83 ------ api/logic/wonko/WonkoVersionList.cpp | 283 -------------------- api/logic/wonko/WonkoVersionList.h | 92 ------- api/logic/wonko/format/WonkoFormat.cpp | 80 ------ api/logic/wonko/format/WonkoFormat.h | 54 ---- api/logic/wonko/format/WonkoFormatV1.cpp | 158 ----------- api/logic/wonko/format/WonkoFormatV1.h | 30 --- .../wonko/tasks/BaseWonkoEntityLocalLoadTask.cpp | 117 --------- .../wonko/tasks/BaseWonkoEntityLocalLoadTask.h | 81 ------ .../wonko/tasks/BaseWonkoEntityRemoteLoadTask.cpp | 126 --------- .../wonko/tasks/BaseWonkoEntityRemoteLoadTask.h | 90 ------- application/BuildConfig.cpp.in | 1 - application/BuildConfig.h | 5 - application/CMakeLists.txt | 11 +- application/WonkoGui.cpp | 74 ------ application/WonkoGui.h | 29 --- application/pages/global/MetadataPage.cpp | 242 +++++++++++++++++ application/pages/global/MetadataPage.h | 57 ++++ application/pages/global/MetadataPage.ui | 252 ++++++++++++++++++ application/pages/global/WonkoPage.cpp | 240 ----------------- application/pages/global/WonkoPage.h | 57 ---- application/pages/global/WonkoPage.ui | 252 ------------------ 56 files changed, 2477 insertions(+), 2529 deletions(-) create mode 100644 api/logic/meta/BaseEntity.cpp create mode 100644 api/logic/meta/BaseEntity.h create mode 100644 api/logic/meta/Index.cpp create mode 100644 api/logic/meta/Index.h create mode 100644 api/logic/meta/Index_test.cpp create mode 100644 api/logic/meta/Reference.cpp create mode 100644 api/logic/meta/Reference.h create mode 100644 api/logic/meta/Util.cpp create mode 100644 api/logic/meta/Util.h create mode 100644 api/logic/meta/Version.cpp create mode 100644 api/logic/meta/Version.h create mode 100644 api/logic/meta/VersionList.cpp create mode 100644 api/logic/meta/VersionList.h create mode 100644 api/logic/meta/format/Format.cpp create mode 100644 api/logic/meta/format/Format.h create mode 100644 api/logic/meta/format/FormatV1.cpp create mode 100644 api/logic/meta/format/FormatV1.h create mode 100644 api/logic/meta/tasks/LocalLoadTask.cpp create mode 100644 api/logic/meta/tasks/LocalLoadTask.h create mode 100644 api/logic/meta/tasks/RemoteLoadTask.cpp create mode 100644 api/logic/meta/tasks/RemoteLoadTask.h delete mode 100644 api/logic/wonko/BaseWonkoEntity.cpp delete mode 100644 api/logic/wonko/BaseWonkoEntity.h delete mode 100644 api/logic/wonko/WonkoIndex.cpp delete mode 100644 api/logic/wonko/WonkoIndex.h delete mode 100644 api/logic/wonko/WonkoIndex_test.cpp delete mode 100644 api/logic/wonko/WonkoReference.cpp delete mode 100644 api/logic/wonko/WonkoReference.h delete mode 100644 api/logic/wonko/WonkoUtil.cpp delete mode 100644 api/logic/wonko/WonkoUtil.h delete mode 100644 api/logic/wonko/WonkoVersion.cpp delete mode 100644 api/logic/wonko/WonkoVersion.h delete mode 100644 api/logic/wonko/WonkoVersionList.cpp delete mode 100644 api/logic/wonko/WonkoVersionList.h delete mode 100644 api/logic/wonko/format/WonkoFormat.cpp delete mode 100644 api/logic/wonko/format/WonkoFormat.h delete mode 100644 api/logic/wonko/format/WonkoFormatV1.cpp delete mode 100644 api/logic/wonko/format/WonkoFormatV1.h delete mode 100644 api/logic/wonko/tasks/BaseWonkoEntityLocalLoadTask.cpp delete mode 100644 api/logic/wonko/tasks/BaseWonkoEntityLocalLoadTask.h delete mode 100644 api/logic/wonko/tasks/BaseWonkoEntityRemoteLoadTask.cpp delete mode 100644 api/logic/wonko/tasks/BaseWonkoEntityRemoteLoadTask.h delete mode 100644 application/WonkoGui.cpp delete mode 100644 application/WonkoGui.h create mode 100644 application/pages/global/MetadataPage.cpp create mode 100644 application/pages/global/MetadataPage.h create mode 100644 application/pages/global/MetadataPage.ui delete mode 100644 application/pages/global/WonkoPage.cpp delete mode 100644 application/pages/global/WonkoPage.h delete mode 100644 application/pages/global/WonkoPage.ui diff --git a/api/logic/CMakeLists.txt b/api/logic/CMakeLists.txt index bcf4b65a..1827b497 100644 --- a/api/logic/CMakeLists.txt +++ b/api/logic/CMakeLists.txt @@ -430,32 +430,32 @@ set(TOOLS_SOURCES tools/MCEditTool.h ) -set(WONKO_SOURCES - # Wonko - wonko/tasks/BaseWonkoEntityRemoteLoadTask.cpp - wonko/tasks/BaseWonkoEntityRemoteLoadTask.h - wonko/tasks/BaseWonkoEntityLocalLoadTask.cpp - wonko/tasks/BaseWonkoEntityLocalLoadTask.h - wonko/format/WonkoFormatV1.cpp - wonko/format/WonkoFormatV1.h - wonko/format/WonkoFormat.cpp - wonko/format/WonkoFormat.h - wonko/BaseWonkoEntity.cpp - wonko/BaseWonkoEntity.h - wonko/WonkoVersionList.cpp - wonko/WonkoVersionList.h - wonko/WonkoVersion.cpp - wonko/WonkoVersion.h - wonko/WonkoIndex.cpp - wonko/WonkoIndex.h - wonko/WonkoUtil.cpp - wonko/WonkoUtil.h - wonko/WonkoReference.cpp - wonko/WonkoReference.h +set(META_SOURCES + # Metadata sources + meta/tasks/RemoteLoadTask.cpp + meta/tasks/RemoteLoadTask.h + meta/tasks/LocalLoadTask.cpp + meta/tasks/LocalLoadTask.h + meta/format/FormatV1.cpp + meta/format/FormatV1.h + meta/format/Format.cpp + meta/format/Format.h + meta/BaseEntity.cpp + meta/BaseEntity.h + meta/VersionList.cpp + meta/VersionList.h + meta/Version.cpp + meta/Version.h + meta/Index.cpp + meta/Index.h + meta/Util.cpp + meta/Util.h + meta/Reference.cpp + meta/Reference.h ) -add_unit_test(WonkoIndex - SOURCES wonko/WonkoIndex_test.cpp +add_unit_test(Index + SOURCES meta/Index_test.cpp LIBS MultiMC_logic ) @@ -480,7 +480,7 @@ set(LOGIC_SOURCES ${JAVA_SOURCES} ${TRANSLATIONS_SOURCES} ${TOOLS_SOURCES} - ${WONKO_SOURCES} + ${META_SOURCES} ${ICONS_SOURCES} ) diff --git a/api/logic/Env.cpp b/api/logic/Env.cpp index a6341ebd..903f1d8a 100644 --- a/api/logic/Env.cpp +++ b/api/logic/Env.cpp @@ -7,7 +7,7 @@ #include #include #include "tasks/Task.h" -#include "wonko/WonkoIndex.h" +#include "meta/Index.h" #include @@ -18,8 +18,7 @@ public: shared_qobject_ptr m_metacache; std::shared_ptr m_iconlist; QMap> m_versionLists; - shared_qobject_ptr m_wonkoIndex; - QString m_wonkoRootUrl; + shared_qobject_ptr m_metadataIndex; }; static Env * instance; @@ -99,13 +98,13 @@ void Env::registerVersionList(QString name, std::shared_ptr< BaseVersionList > v d->m_versionLists[name] = vlist; } -shared_qobject_ptr Env::wonkoIndex() +shared_qobject_ptr Env::metadataIndex() { - if (!d->m_wonkoIndex) + if (!d->m_metadataIndex) { - d->m_wonkoIndex.reset(new WonkoIndex()); + d->m_metadataIndex.reset(new Meta::Index()); } - return d->m_wonkoIndex; + return d->m_metadataIndex; } @@ -125,7 +124,7 @@ void Env::initHttpMetaCache() m_metacache->addBase("root", QDir::currentPath()); m_metacache->addBase("translations", QDir("translations").absolutePath()); m_metacache->addBase("icons", QDir("cache/icons").absolutePath()); - m_metacache->addBase("wonko", QDir("cache/wonko").absolutePath()); + m_metacache->addBase("meta", QDir("cache/meta").absolutePath()); m_metacache->Load(); } @@ -191,14 +190,4 @@ void Env::updateProxySettings(QString proxyTypeStr, QString addr, int port, QStr qDebug() << proxyDesc; } -QString Env::wonkoRootUrl() const -{ - return d->m_wonkoRootUrl; -} - -void Env::setWonkoRootUrl(const QString& url) -{ - d->m_wonkoRootUrl = url; -} - -#include "Env.moc" \ No newline at end of file +#include "Env.moc" diff --git a/api/logic/Env.h b/api/logic/Env.h index c72447ce..75ebe4a0 100644 --- a/api/logic/Env.h +++ b/api/logic/Env.h @@ -13,7 +13,11 @@ class QNetworkAccessManager; class HttpMetaCache; class BaseVersionList; class BaseVersion; -class WonkoIndex; + +namespace Meta +{ +class Index; +} #if defined(ENV) #undef ENV @@ -53,10 +57,7 @@ public: void registerIconList(std::shared_ptr iconlist); - shared_qobject_ptr wonkoIndex(); - - QString wonkoRootUrl() const; - void setWonkoRootUrl(const QString &url); + shared_qobject_ptr metadataIndex(); protected: Private * d; diff --git a/api/logic/meta/BaseEntity.cpp b/api/logic/meta/BaseEntity.cpp new file mode 100644 index 00000000..fd44e29c --- /dev/null +++ b/api/logic/meta/BaseEntity.cpp @@ -0,0 +1,42 @@ +/* Copyright 2015-2017 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 "BaseEntity.h" + +#include "Json.h" +#include "Util.h" + +namespace Meta +{ +BaseEntity::~BaseEntity() +{ +} + +void BaseEntity::store() const +{ + Json::write(serialized(), Meta::localDir().absoluteFilePath(localFilename())); +} + +void BaseEntity::notifyLocalLoadComplete() +{ + m_localLoaded = true; + store(); +} +void BaseEntity::notifyRemoteLoadComplete() +{ + m_remoteLoaded = true; + store(); +} +} diff --git a/api/logic/meta/BaseEntity.h b/api/logic/meta/BaseEntity.h new file mode 100644 index 00000000..b7a241c6 --- /dev/null +++ b/api/logic/meta/BaseEntity.h @@ -0,0 +1,53 @@ +/* Copyright 2015-2017 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 +#include + +#include "multimc_logic_export.h" + +class Task; +namespace Meta +{ +class MULTIMC_LOGIC_EXPORT BaseEntity +{ +public: + virtual ~BaseEntity(); + + using Ptr = std::shared_ptr; + + virtual std::unique_ptr remoteUpdateTask() = 0; + virtual std::unique_ptr localUpdateTask() = 0; + virtual void merge(const std::shared_ptr &other) = 0; + + void store() const; + virtual QString localFilename() const = 0; + virtual QJsonObject serialized() const = 0; + + bool isComplete() const { return m_localLoaded || m_remoteLoaded; } + + bool isLocalLoaded() const { return m_localLoaded; } + bool isRemoteLoaded() const { return m_remoteLoaded; } + + void notifyLocalLoadComplete(); + void notifyRemoteLoadComplete(); + +private: + bool m_localLoaded = false; + bool m_remoteLoaded = false; +}; +} diff --git a/api/logic/meta/Index.cpp b/api/logic/meta/Index.cpp new file mode 100644 index 00000000..8a6b1355 --- /dev/null +++ b/api/logic/meta/Index.cpp @@ -0,0 +1,150 @@ +/* Copyright 2015-2017 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 "Index.h" + +#include "VersionList.h" +#include "tasks/LocalLoadTask.h" +#include "tasks/RemoteLoadTask.h" +#include "format/Format.h" + +namespace Meta +{ +Index::Index(QObject *parent) + : QAbstractListModel(parent) +{ +} +Index::Index(const QVector &lists, QObject *parent) + : QAbstractListModel(parent), m_lists(lists) +{ + for (int i = 0; i < m_lists.size(); ++i) + { + m_uids.insert(m_lists.at(i)->uid(), m_lists.at(i)); + connectVersionList(i, m_lists.at(i)); + } +} + +QVariant Index::data(const QModelIndex &index, int role) const +{ + if (index.parent().isValid() || index.row() < 0 || index.row() >= m_lists.size()) + { + return QVariant(); + } + + VersionListPtr list = m_lists.at(index.row()); + switch (role) + { + case Qt::DisplayRole: + switch (index.column()) + { + case 0: return list->humanReadable(); + default: break; + } + case UidRole: return list->uid(); + case NameRole: return list->name(); + case ListPtrRole: return QVariant::fromValue(list); + } + return QVariant(); +} +int Index::rowCount(const QModelIndex &parent) const +{ + return m_lists.size(); +} +int Index::columnCount(const QModelIndex &parent) const +{ + return 1; +} +QVariant Index::headerData(int section, Qt::Orientation orientation, int role) const +{ + if (orientation == Qt::Horizontal && role == Qt::DisplayRole && section == 0) + { + return tr("Name"); + } + else + { + return QVariant(); + } +} + +std::unique_ptr Index::remoteUpdateTask() +{ + return std::unique_ptr(new IndexRemoteLoadTask(this, this)); +} +std::unique_ptr Index::localUpdateTask() +{ + return std::unique_ptr(new IndexLocalLoadTask(this, this)); +} + +QJsonObject Index::serialized() const +{ + return Format::serializeIndex(this); +} + +bool Index::hasUid(const QString &uid) const +{ + return m_uids.contains(uid); +} +VersionListPtr Index::getList(const QString &uid) const +{ + return m_uids.value(uid, nullptr); +} +VersionListPtr Index::getListGuaranteed(const QString &uid) const +{ + return m_uids.value(uid, std::make_shared(uid)); +} + +void Index::merge(const Ptr &other) +{ + const QVector lists = std::dynamic_pointer_cast(other)->m_lists; + // initial load, no need to merge + if (m_lists.isEmpty()) + { + beginResetModel(); + m_lists = lists; + for (int i = 0; i < lists.size(); ++i) + { + m_uids.insert(lists.at(i)->uid(), lists.at(i)); + connectVersionList(i, lists.at(i)); + } + endResetModel(); + } + else + { + for (const VersionListPtr &list : lists) + { + if (m_uids.contains(list->uid())) + { + m_uids[list->uid()]->merge(list); + } + else + { + beginInsertRows(QModelIndex(), m_lists.size(), m_lists.size()); + connectVersionList(m_lists.size(), list); + m_lists.append(list); + m_uids.insert(list->uid(), list); + endInsertRows(); + } + } + } +} + +void Index::connectVersionList(const int row, const VersionListPtr &list) +{ + connect(list.get(), &VersionList::nameChanged, this, [this, row]() + { + emit dataChanged(index(row), index(row), QVector() << Qt::DisplayRole); + }); +} +} diff --git a/api/logic/meta/Index.h b/api/logic/meta/Index.h new file mode 100644 index 00000000..16e95d5a --- /dev/null +++ b/api/logic/meta/Index.h @@ -0,0 +1,72 @@ +/* Copyright 2015-2017 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 +#include + +#include "BaseEntity.h" + +#include "multimc_logic_export.h" + +class Task; + +namespace Meta +{ +using VersionListPtr = std::shared_ptr; + +class MULTIMC_LOGIC_EXPORT Index : public QAbstractListModel, public BaseEntity +{ + Q_OBJECT +public: + explicit Index(QObject *parent = nullptr); + explicit Index(const QVector &lists, QObject *parent = nullptr); + + enum + { + UidRole = Qt::UserRole, + NameRole, + ListPtrRole + }; + + QVariant data(const QModelIndex &index, int role) const override; + int rowCount(const QModelIndex &parent) const override; + int columnCount(const QModelIndex &parent) const override; + QVariant headerData(int section, Qt::Orientation orientation, int role) const override; + + std::unique_ptr remoteUpdateTask() override; + std::unique_ptr localUpdateTask() override; + + QString localFilename() const override { return "index.json"; } + QJsonObject serialized() const override; + + // queries + bool hasUid(const QString &uid) const; + VersionListPtr getList(const QString &uid) const; + VersionListPtr getListGuaranteed(const QString &uid) const; + + QVector lists() const { return m_lists; } + +public: // for usage by parsers only + void merge(const BaseEntity::Ptr &other) override; + +private: + QVector m_lists; + QHash m_uids; + + void connectVersionList(const int row, const VersionListPtr &list); +}; +} diff --git a/api/logic/meta/Index_test.cpp b/api/logic/meta/Index_test.cpp new file mode 100644 index 00000000..d26700ca --- /dev/null +++ b/api/logic/meta/Index_test.cpp @@ -0,0 +1,50 @@ +#include +#include "TestUtil.h" + +#include "meta/Index.h" +#include "meta/VersionList.h" +#include "Env.h" + +class IndexTest : public QObject +{ + Q_OBJECT +private +slots: + void test_isProvidedByEnv() + { + QVERIFY(ENV.metadataIndex()); + QCOMPARE(ENV.metadataIndex(), ENV.metadataIndex()); + } + + void test_providesTasks() + { + QVERIFY(ENV.metadataIndex()->localUpdateTask() != nullptr); + QVERIFY(ENV.metadataIndex()->remoteUpdateTask() != nullptr); + } + + void test_hasUid_and_getList() + { + Meta::Index windex({std::make_shared("list1"), std::make_shared("list2"), std::make_shared("list3")}); + QVERIFY(windex.hasUid("list1")); + QVERIFY(!windex.hasUid("asdf")); + QVERIFY(windex.getList("list2") != nullptr); + QCOMPARE(windex.getList("list2")->uid(), QString("list2")); + QVERIFY(windex.getList("adsf") == nullptr); + } + + void test_merge() + { + Meta::Index windex({std::make_shared("list1"), std::make_shared("list2"), std::make_shared("list3")}); + QCOMPARE(windex.lists().size(), 3); + windex.merge(std::shared_ptr(new Meta::Index({std::make_shared("list1"), std::make_shared("list2"), std::make_shared("list3")}))); + QCOMPARE(windex.lists().size(), 3); + windex.merge(std::shared_ptr(new Meta::Index({std::make_shared("list4"), std::make_shared("list2"), std::make_shared("list5")}))); + QCOMPARE(windex.lists().size(), 5); + windex.merge(std::shared_ptr(new Meta::Index({std::make_shared("list6")}))); + QCOMPARE(windex.lists().size(), 6); + } +}; + +QTEST_GUILESS_MAIN(IndexTest) + +#include "Index_test.moc" diff --git a/api/logic/meta/Reference.cpp b/api/logic/meta/Reference.cpp new file mode 100644 index 00000000..c5cef172 --- /dev/null +++ b/api/logic/meta/Reference.cpp @@ -0,0 +1,48 @@ +/* Copyright 2015-2017 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 "Reference.h" + +namespace Meta +{ +Reference::Reference(const QString &uid) + : m_uid(uid) +{ +} + +QString Reference::uid() const +{ + return m_uid; +} + +QString Reference::version() const +{ + return m_version; +} +void Reference::setVersion(const QString &version) +{ + m_version = version; +} + +bool Reference::operator==(const Reference &other) const +{ + return m_uid == other.m_uid && m_version == other.m_version; +} + +bool Reference::operator!=(const Reference &other) const +{ + return m_uid != other.m_uid || m_version != other.m_version; +} +} diff --git a/api/logic/meta/Reference.h b/api/logic/meta/Reference.h new file mode 100644 index 00000000..027076cc --- /dev/null +++ b/api/logic/meta/Reference.h @@ -0,0 +1,44 @@ +/* Copyright 2015-2017 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 +#include + +#include "multimc_logic_export.h" + +namespace Meta +{ +class MULTIMC_LOGIC_EXPORT Reference +{ +public: + Reference() {} + explicit Reference(const QString &uid); + + QString uid() const; + + QString version() const; + void setVersion(const QString &version); + + bool operator==(const Reference &other) const; + bool operator!=(const Reference &other) const; + +private: + QString m_uid; + QString m_version; +}; +} +Q_DECLARE_METATYPE(Meta::Reference) diff --git a/api/logic/meta/Util.cpp b/api/logic/meta/Util.cpp new file mode 100644 index 00000000..2ccbe5c4 --- /dev/null +++ b/api/logic/meta/Util.cpp @@ -0,0 +1,50 @@ +/* Copyright 2015-2017 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 "Util.h" + +#include +#include + +#include "Env.h" + +namespace Meta +{ +QUrl rootUrl() +{ + return QUrl("https://meta.multimc.org"); +} + +QUrl indexUrl() +{ + return rootUrl().resolved(QStringLiteral("index.json")); +} + +QUrl versionListUrl(const QString &uid) +{ + return rootUrl().resolved(uid + ".json"); +} + +QUrl versionUrl(const QString &uid, const QString &version) +{ + return rootUrl().resolved(uid + "/" + version + ".json"); +} + +QDir localDir() +{ + return QDir("meta"); +} + +} diff --git a/api/logic/meta/Util.h b/api/logic/meta/Util.h new file mode 100644 index 00000000..28163fe4 --- /dev/null +++ b/api/logic/meta/Util.h @@ -0,0 +1,31 @@ +/* Copyright 2015-2017 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 "multimc_logic_export.h" + +class QUrl; +class QString; +class QDir; + +namespace Meta +{ +MULTIMC_LOGIC_EXPORT QUrl rootUrl(); +MULTIMC_LOGIC_EXPORT QUrl indexUrl(); +MULTIMC_LOGIC_EXPORT QUrl versionListUrl(const QString &uid); +MULTIMC_LOGIC_EXPORT QUrl versionUrl(const QString &uid, const QString &version); +MULTIMC_LOGIC_EXPORT QDir localDir(); +} diff --git a/api/logic/meta/Version.cpp b/api/logic/meta/Version.cpp new file mode 100644 index 00000000..039f4fef --- /dev/null +++ b/api/logic/meta/Version.cpp @@ -0,0 +1,105 @@ +/* Copyright 2015-2017 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 "Version.h" + +#include + +#include "tasks/LocalLoadTask.h" +#include "tasks/RemoteLoadTask.h" +#include "format/Format.h" + +namespace Meta +{ +Version::Version(const QString &uid, const QString &version) + : BaseVersion(), m_uid(uid), m_version(version) +{ +} + +QString Version::descriptor() +{ + return m_version; +} +QString Version::name() +{ + return m_version; +} +QString Version::typeString() const +{ + return m_type; +} + +QDateTime Version::time() const +{ + return QDateTime::fromMSecsSinceEpoch(m_time * 1000, Qt::UTC); +} + +std::unique_ptr Version::remoteUpdateTask() +{ + return std::unique_ptr(new VersionRemoteLoadTask(this, this)); +} +std::unique_ptr Version::localUpdateTask() +{ + return std::unique_ptr(new VersionLocalLoadTask(this, this)); +} + +void Version::merge(const std::shared_ptr &other) +{ + VersionPtr version = std::dynamic_pointer_cast(other); + if (m_type != version->m_type) + { + setType(version->m_type); + } + if (m_time != version->m_time) + { + setTime(version->m_time); + } + if (m_requires != version->m_requires) + { + setRequires(version->m_requires); + } + + setData(version->m_data); +} + +QString Version::localFilename() const +{ + return m_uid + '/' + m_version + ".json"; +} +QJsonObject Version::serialized() const +{ + return Format::serializeVersion(this); +} + +void Version::setType(const QString &type) +{ + m_type = type; + emit typeChanged(); +} +void Version::setTime(const qint64 time) +{ + m_time = time; + emit timeChanged(); +} +void Version::setRequires(const QVector &requires) +{ + m_requires = requires; + emit requiresChanged(); +} +void Version::setData(const VersionFilePtr &data) +{ + m_data = data; +} +} diff --git a/api/logic/meta/Version.h b/api/logic/meta/Version.h new file mode 100644 index 00000000..4a791880 --- /dev/null +++ b/api/logic/meta/Version.h @@ -0,0 +1,87 @@ +/* Copyright 2015-2017 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 "BaseVersion.h" + +#include +#include +#include +#include + +#include "minecraft/VersionFile.h" + +#include "BaseEntity.h" +#include "Reference.h" + +#include "multimc_logic_export.h" + +namespace Meta +{ +using VersionPtr = std::shared_ptr; + +class MULTIMC_LOGIC_EXPORT Version : public QObject, public BaseVersion, public BaseEntity +{ + Q_OBJECT + Q_PROPERTY(QString uid READ uid CONSTANT) + Q_PROPERTY(QString version READ version CONSTANT) + Q_PROPERTY(QString type READ type NOTIFY typeChanged) + Q_PROPERTY(QDateTime time READ time NOTIFY timeChanged) + Q_PROPERTY(QVector requires READ requires NOTIFY requiresChanged) +public: + explicit Version(const QString &uid, const QString &version); + + QString descriptor() override; + QString name() override; + QString typeString() const override; + + QString uid() const { return m_uid; } + QString version() const { return m_version; } + QString type() const { return m_type; } + QDateTime time() const; + qint64 rawTime() const { return m_time; } + QVector requires() const { return m_requires; } + VersionFilePtr data() const { return m_data; } + + std::unique_ptr remoteUpdateTask() override; + std::unique_ptr localUpdateTask() override; + void merge(const std::shared_ptr &other) override; + + QString localFilename() const override; + QJsonObject serialized() const override; + +public: // for usage by format parsers only + void setType(const QString &type); + void setTime(const qint64 time); + void setRequires(const QVector &requires); + void setData(const VersionFilePtr &data); + +signals: + void typeChanged(); + void timeChanged(); + void requiresChanged(); + +private: + QString m_uid; + QString m_version; + QString m_type; + qint64 m_time; + QVector m_requires; + VersionFilePtr m_data; +}; +} + +Q_DECLARE_METATYPE(Meta::VersionPtr) diff --git a/api/logic/meta/VersionList.cpp b/api/logic/meta/VersionList.cpp new file mode 100644 index 00000000..11e20c12 --- /dev/null +++ b/api/logic/meta/VersionList.cpp @@ -0,0 +1,288 @@ +/* Copyright 2015-2017 MultiMC Contr