mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-08-03 19:37:45 -04:00
chore: update link and sync with other providers changes
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
22dfeec865
commit
9359c4833d
@ -173,6 +173,7 @@ class Config {
|
|||||||
QString TRANSLATION_FILES_URL;
|
QString TRANSLATION_FILES_URL;
|
||||||
|
|
||||||
QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/";
|
QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/";
|
||||||
|
QString FTB_API_BASE_URL = "https://api.feed-the-beast.com/v1/modpacks/public";
|
||||||
|
|
||||||
QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/";
|
QString LEGACY_FTB_CDN_BASE_URL = "https://dist.creeper.host/FTB2/";
|
||||||
|
|
||||||
|
@ -999,7 +999,6 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
|
|||||||
m_metacache->addBase("FTBPacks", QDir("cache/FTBPacks").absolutePath());
|
m_metacache->addBase("FTBPacks", QDir("cache/FTBPacks").absolutePath());
|
||||||
m_metacache->addBase("TechnicPacks", QDir("cache/TechnicPacks").absolutePath());
|
m_metacache->addBase("TechnicPacks", QDir("cache/TechnicPacks").absolutePath());
|
||||||
m_metacache->addBase("FlamePacks", QDir("cache/FlamePacks").absolutePath());
|
m_metacache->addBase("FlamePacks", QDir("cache/FlamePacks").absolutePath());
|
||||||
m_metacache->addBase("ModpacksCHPacks", QDir("cache/ModpacksCHPacks").absolutePath());
|
|
||||||
m_metacache->addBase("FlameMods", QDir("cache/FlameMods").absolutePath());
|
m_metacache->addBase("FlameMods", QDir("cache/FlameMods").absolutePath());
|
||||||
m_metacache->addBase("ModrinthPacks", QDir("cache/ModrinthPacks").absolutePath());
|
m_metacache->addBase("ModrinthPacks", QDir("cache/ModrinthPacks").absolutePath());
|
||||||
m_metacache->addBase("ModrinthModpacks", QDir("cache/ModrinthModpacks").absolutePath());
|
m_metacache->addBase("ModrinthModpacks", QDir("cache/ModrinthModpacks").absolutePath());
|
||||||
|
@ -533,6 +533,11 @@ set(FTB_SOURCES
|
|||||||
modplatform/import_ftb/PackInstallTask.cpp
|
modplatform/import_ftb/PackInstallTask.cpp
|
||||||
modplatform/import_ftb/PackHelpers.h
|
modplatform/import_ftb/PackHelpers.h
|
||||||
modplatform/import_ftb/PackHelpers.cpp
|
modplatform/import_ftb/PackHelpers.cpp
|
||||||
|
|
||||||
|
modplatform/ftb/FTBPackInstallTask.h
|
||||||
|
modplatform/ftb/FTBPackInstallTask.cpp
|
||||||
|
modplatform/ftb/FTBPackManifest.h
|
||||||
|
modplatform/ftb/FTBPackManifest.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FLAME_SOURCES
|
set(FLAME_SOURCES
|
||||||
@ -566,13 +571,6 @@ set(MODRINTH_SOURCES
|
|||||||
modplatform/modrinth/ModrinthPackExportTask.h
|
modplatform/modrinth/ModrinthPackExportTask.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(MODPACKSCH_SOURCES
|
|
||||||
modplatform/modpacksch/FTBPackInstallTask.h
|
|
||||||
modplatform/modpacksch/FTBPackInstallTask.cpp
|
|
||||||
modplatform/modpacksch/FTBPackManifest.h
|
|
||||||
modplatform/modpacksch/FTBPackManifest.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
set(PACKWIZ_SOURCES
|
set(PACKWIZ_SOURCES
|
||||||
modplatform/packwiz/Packwiz.h
|
modplatform/packwiz/Packwiz.h
|
||||||
modplatform/packwiz/Packwiz.cpp
|
modplatform/packwiz/Packwiz.cpp
|
||||||
@ -785,7 +783,6 @@ set(LOGIC_SOURCES
|
|||||||
${FTB_SOURCES}
|
${FTB_SOURCES}
|
||||||
${FLAME_SOURCES}
|
${FLAME_SOURCES}
|
||||||
${MODRINTH_SOURCES}
|
${MODRINTH_SOURCES}
|
||||||
${MODPACKSCH_SOURCES}
|
|
||||||
${PACKWIZ_SOURCES}
|
${PACKWIZ_SOURCES}
|
||||||
${TECHNIC_SOURCES}
|
${TECHNIC_SOURCES}
|
||||||
${ATLAUNCHER_SOURCES}
|
${ATLAUNCHER_SOURCES}
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "Json.h"
|
#include "Json.h"
|
||||||
#include "minecraft/MinecraftInstance.h"
|
#include "minecraft/MinecraftInstance.h"
|
||||||
#include "minecraft/PackProfile.h"
|
#include "minecraft/PackProfile.h"
|
||||||
|
#include "modplatform/flame/FileResolvingTask.h"
|
||||||
#include "modplatform/flame/PackManifest.h"
|
#include "modplatform/flame/PackManifest.h"
|
||||||
#include "net/ChecksumValidator.h"
|
#include "net/ChecksumValidator.h"
|
||||||
#include "settings/INISettingsObject.h"
|
#include "settings/INISettingsObject.h"
|
||||||
@ -50,7 +51,7 @@
|
|||||||
#include "BuildConfig.h"
|
#include "BuildConfig.h"
|
||||||
#include "ui/dialogs/BlockedModsDialog.h"
|
#include "ui/dialogs/BlockedModsDialog.h"
|
||||||
|
|
||||||
namespace ModpacksCH {
|
namespace FTB {
|
||||||
|
|
||||||
PackInstallTask::PackInstallTask(Modpack pack, QString version, QWidget* parent)
|
PackInstallTask::PackInstallTask(Modpack pack, QString version, QWidget* parent)
|
||||||
: m_pack(std::move(pack)), m_versionName(std::move(version)), m_parent(parent)
|
: m_pack(std::move(pack)), m_versionName(std::move(version)), m_parent(parent)
|
||||||
@ -78,7 +79,7 @@ void PackInstallTask::executeTask()
|
|||||||
|
|
||||||
// Find pack version
|
// Find pack version
|
||||||
auto version_it = std::find_if(m_pack.versions.constBegin(), m_pack.versions.constEnd(),
|
auto version_it = std::find_if(m_pack.versions.constBegin(), m_pack.versions.constEnd(),
|
||||||
[this](ModpacksCH::VersionInfo const& a) { return a.name == m_versionName; });
|
[this](FTB::VersionInfo const& a) { return a.name == m_versionName; });
|
||||||
|
|
||||||
if (version_it == m_pack.versions.constEnd()) {
|
if (version_it == m_pack.versions.constEnd()) {
|
||||||
emitFailed(tr("Failed to find pack version %1").arg(m_versionName));
|
emitFailed(tr("Failed to find pack version %1").arg(m_versionName));
|
||||||
@ -87,9 +88,9 @@ void PackInstallTask::executeTask()
|
|||||||
|
|
||||||
auto version = *version_it;
|
auto version = *version_it;
|
||||||
|
|
||||||
auto netJob = makeShared<NetJob>("ModpacksCH::VersionFetch", APPLICATION->network());
|
auto netJob = makeShared<NetJob>("FTB::VersionFetch", APPLICATION->network());
|
||||||
|
|
||||||
auto searchUrl = QString(BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/%1/%2").arg(m_pack.id).arg(version.id);
|
auto searchUrl = QString(BuildConfig.FTB_API_BASE_URL + "/modpack/%1/%2").arg(m_pack.id).arg(version.id);
|
||||||
m_response.reset(new QByteArray());
|
m_response.reset(new QByteArray());
|
||||||
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), m_response));
|
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), m_response));
|
||||||
|
|
||||||
@ -111,16 +112,15 @@ void PackInstallTask::onManifestDownloadSucceeded()
|
|||||||
QJsonParseError parse_error{};
|
QJsonParseError parse_error{};
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
|
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
|
||||||
if (parse_error.error != QJsonParseError::NoError) {
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
qWarning() << "Error while parsing JSON response from ModpacksCH at " << parse_error.offset
|
qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString();
|
||||||
<< " reason: " << parse_error.errorString();
|
|
||||||
qWarning() << *m_response;
|
qWarning() << *m_response;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ModpacksCH::Version version;
|
FTB::Version version;
|
||||||
try {
|
try {
|
||||||
auto obj = Json::requireObject(doc);
|
auto obj = Json::requireObject(doc);
|
||||||
ModpacksCH::loadVersion(version, obj);
|
FTB::loadVersion(version, obj);
|
||||||
} catch (const JSONValidationError& e) {
|
} catch (const JSONValidationError& e) {
|
||||||
emitFailed(tr("Could not understand pack manifest:\n") + e.cause());
|
emitFailed(tr("Could not understand pack manifest:\n") + e.cause());
|
||||||
return;
|
return;
|
||||||
@ -151,8 +151,6 @@ void PackInstallTask::resolveMods()
|
|||||||
flameFile.projectId = file.curseforge.project_id;
|
flameFile.projectId = file.curseforge.project_id;
|
||||||
flameFile.fileId = file.curseforge.file_id;
|
flameFile.fileId = file.curseforge.file_id;
|
||||||
|
|
||||||
// flame_file.hash = file.sha1;
|
|
||||||
|
|
||||||
manifest.files.insert(flameFile.fileId, flameFile);
|
manifest.files.insert(flameFile.fileId, flameFile);
|
||||||
m_fileIds.append(flameFile.fileId);
|
m_fileIds.append(flameFile.fileId);
|
||||||
} else {
|
} else {
|
||||||
@ -160,7 +158,7 @@ void PackInstallTask::resolveMods()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_modIdResolverTask.reset(new Flame::FileResolvingTask(APPLICATION->network(), manifest));
|
m_modIdResolverTask.reset(new Flame::FileResolvingTask(manifest));
|
||||||
|
|
||||||
connect(m_modIdResolverTask.get(), &Flame::FileResolvingTask::succeeded, this, &PackInstallTask::onResolveModsSucceeded);
|
connect(m_modIdResolverTask.get(), &Flame::FileResolvingTask::succeeded, this, &PackInstallTask::onResolveModsSucceeded);
|
||||||
connect(m_modIdResolverTask.get(), &Flame::FileResolvingTask::failed, this, &PackInstallTask::onResolveModsFailed);
|
connect(m_modIdResolverTask.get(), &Flame::FileResolvingTask::failed, this, &PackInstallTask::onResolveModsFailed);
|
||||||
@ -279,7 +277,7 @@ void PackInstallTask::createInstance()
|
|||||||
|
|
||||||
instance.setName(name());
|
instance.setName(name());
|
||||||
instance.setIconKey(m_instIcon);
|
instance.setIconKey(m_instIcon);
|
||||||
instance.setManagedPack("modpacksch", QString::number(m_pack.id), m_pack.name, QString::number(m_version.id), m_version.name);
|
instance.setManagedPack("ftb", QString::number(m_pack.id), m_pack.name, QString::number(m_version.id), m_version.name);
|
||||||
|
|
||||||
instance.saveNow();
|
instance.saveNow();
|
||||||
|
|
||||||
@ -385,4 +383,4 @@ void PackInstallTask::copyBlockedMods()
|
|||||||
setAbortable(true);
|
setAbortable(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace ModpacksCH
|
} // namespace FTB
|
@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
namespace ModpacksCH {
|
namespace FTB {
|
||||||
|
|
||||||
class PackInstallTask final : public InstanceTask {
|
class PackInstallTask final : public InstanceTask {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -97,4 +97,4 @@ class PackInstallTask final : public InstanceTask {
|
|||||||
QWidget* m_parent;
|
QWidget* m_parent;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ModpacksCH
|
} // namespace FTB
|
@ -38,20 +38,20 @@
|
|||||||
|
|
||||||
#include "Json.h"
|
#include "Json.h"
|
||||||
|
|
||||||
static void loadSpecs(ModpacksCH::Specs& s, QJsonObject& obj)
|
static void loadSpecs(FTB::Specs& s, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
s.id = Json::requireInteger(obj, "id");
|
s.id = Json::requireInteger(obj, "id");
|
||||||
s.minimum = Json::requireInteger(obj, "minimum");
|
s.minimum = Json::requireInteger(obj, "minimum");
|
||||||
s.recommended = Json::requireInteger(obj, "recommended");
|
s.recommended = Json::requireInteger(obj, "recommended");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadTag(ModpacksCH::Tag& t, QJsonObject& obj)
|
static void loadTag(FTB::Tag& t, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
t.id = Json::requireInteger(obj, "id");
|
t.id = Json::requireInteger(obj, "id");
|
||||||
t.name = Json::requireString(obj, "name");
|
t.name = Json::requireString(obj, "name");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadArt(ModpacksCH::Art& a, QJsonObject& obj)
|
static void loadArt(FTB::Art& a, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
a.id = Json::requireInteger(obj, "id");
|
a.id = Json::requireInteger(obj, "id");
|
||||||
a.url = Json::requireString(obj, "url");
|
a.url = Json::requireString(obj, "url");
|
||||||
@ -60,11 +60,11 @@ static void loadArt(ModpacksCH::Art& a, QJsonObject& obj)
|
|||||||
a.height = Json::requireInteger(obj, "height");
|
a.height = Json::requireInteger(obj, "height");
|
||||||
a.compressed = Json::requireBoolean(obj, "compressed");
|
a.compressed = Json::requireBoolean(obj, "compressed");
|
||||||
a.sha1 = Json::requireString(obj, "sha1");
|
a.sha1 = Json::requireString(obj, "sha1");
|
||||||
a.size = Json::requireInteger(obj, "size");
|
a.size = Json::ensureInteger(obj, "size");
|
||||||
a.updated = Json::requireInteger(obj, "updated");
|
a.updated = Json::requireInteger(obj, "updated");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadAuthor(ModpacksCH::Author& a, QJsonObject& obj)
|
static void loadAuthor(FTB::Author& a, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
a.id = Json::requireInteger(obj, "id");
|
a.id = Json::requireInteger(obj, "id");
|
||||||
a.name = Json::requireString(obj, "name");
|
a.name = Json::requireString(obj, "name");
|
||||||
@ -73,7 +73,7 @@ static void loadAuthor(ModpacksCH::Author& a, QJsonObject& obj)
|
|||||||
a.updated = Json::requireInteger(obj, "updated");
|
a.updated = Json::requireInteger(obj, "updated");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadVersionInfo(ModpacksCH::VersionInfo& v, QJsonObject& obj)
|
static void loadVersionInfo(FTB::VersionInfo& v, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
v.id = Json::requireInteger(obj, "id");
|
v.id = Json::requireInteger(obj, "id");
|
||||||
v.name = Json::requireString(obj, "name");
|
v.name = Json::requireString(obj, "name");
|
||||||
@ -83,7 +83,7 @@ static void loadVersionInfo(ModpacksCH::VersionInfo& v, QJsonObject& obj)
|
|||||||
loadSpecs(v.specs, specs);
|
loadSpecs(v.specs, specs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModpacksCH::loadModpack(ModpacksCH::Modpack& m, QJsonObject& obj)
|
void FTB::loadModpack(FTB::Modpack& m, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
m.id = Json::requireInteger(obj, "id");
|
m.id = Json::requireInteger(obj, "id");
|
||||||
m.name = Json::requireString(obj, "name");
|
m.name = Json::requireString(obj, "name");
|
||||||
@ -95,39 +95,39 @@ void ModpacksCH::loadModpack(ModpacksCH::Modpack& m, QJsonObject& obj)
|
|||||||
m.installs = Json::requireInteger(obj, "installs");
|
m.installs = Json::requireInteger(obj, "installs");
|
||||||
m.plays = Json::requireInteger(obj, "plays");
|
m.plays = Json::requireInteger(obj, "plays");
|
||||||
m.updated = Json::requireInteger(obj, "updated");
|
m.updated = Json::requireInteger(obj, "updated");
|
||||||
m.refreshed = Json::requireInteger(obj, "refreshed");
|
m.refreshed = Json::ensureInteger(obj, "refreshed");
|
||||||
auto artArr = Json::requireArray(obj, "art");
|
auto artArr = Json::requireArray(obj, "art");
|
||||||
for (QJsonValueRef artRaw : artArr) {
|
for (QJsonValueRef artRaw : artArr) {
|
||||||
auto artObj = Json::requireObject(artRaw);
|
auto artObj = Json::requireObject(artRaw);
|
||||||
ModpacksCH::Art art;
|
FTB::Art art;
|
||||||
loadArt(art, artObj);
|
loadArt(art, artObj);
|
||||||
m.art.append(art);
|
m.art.append(art);
|
||||||
}
|
}
|
||||||
auto authorArr = Json::requireArray(obj, "authors");
|
auto authorArr = Json::requireArray(obj, "authors");
|
||||||
for (QJsonValueRef authorRaw : authorArr) {
|
for (QJsonValueRef authorRaw : authorArr) {
|
||||||
auto authorObj = Json::requireObject(authorRaw);
|
auto authorObj = Json::requireObject(authorRaw);
|
||||||
ModpacksCH::Author author;
|
FTB::Author author;
|
||||||
loadAuthor(author, authorObj);
|
loadAuthor(author, authorObj);
|
||||||
m.authors.append(author);
|
m.authors.append(author);
|
||||||
}
|
}
|
||||||
auto versionArr = Json::requireArray(obj, "versions");
|
auto versionArr = Json::requireArray(obj, "versions");
|
||||||
for (QJsonValueRef versionRaw : versionArr) {
|
for (QJsonValueRef versionRaw : versionArr) {
|
||||||
auto versionObj = Json::requireObject(versionRaw);
|
auto versionObj = Json::requireObject(versionRaw);
|
||||||
ModpacksCH::VersionInfo version;
|
FTB::VersionInfo version;
|
||||||
loadVersionInfo(version, versionObj);
|
loadVersionInfo(version, versionObj);
|
||||||
m.versions.append(version);
|
m.versions.append(version);
|
||||||
}
|
}
|
||||||
auto tagArr = Json::requireArray(obj, "tags");
|
auto tagArr = Json::requireArray(obj, "tags");
|
||||||
for (QJsonValueRef tagRaw : tagArr) {
|
for (QJsonValueRef tagRaw : tagArr) {
|
||||||
auto tagObj = Json::requireObject(tagRaw);
|
auto tagObj = Json::requireObject(tagRaw);
|
||||||
ModpacksCH::Tag tag;
|
FTB::Tag tag;
|
||||||
loadTag(tag, tagObj);
|
loadTag(tag, tagObj);
|
||||||
m.tags.append(tag);
|
m.tags.append(tag);
|
||||||
}
|
}
|
||||||
m.updated = Json::requireInteger(obj, "updated");
|
m.updated = Json::requireInteger(obj, "updated");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadVersionTarget(ModpacksCH::VersionTarget& a, QJsonObject& obj)
|
static void loadVersionTarget(FTB::VersionTarget& a, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
a.id = Json::requireInteger(obj, "id");
|
a.id = Json::requireInteger(obj, "id");
|
||||||
a.name = Json::requireString(obj, "name");
|
a.name = Json::requireString(obj, "name");
|
||||||
@ -136,7 +136,7 @@ static void loadVersionTarget(ModpacksCH::VersionTarget& a, QJsonObject& obj)
|
|||||||
a.updated = Json::requireInteger(obj, "updated");
|
a.updated = Json::requireInteger(obj, "updated");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void loadVersionFile(ModpacksCH::VersionFile& a, QJsonObject& obj)
|
static void loadVersionFile(FTB::VersionFile& a, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
a.id = Json::requireInteger(obj, "id");
|
a.id = Json::requireInteger(obj, "id");
|
||||||
a.type = Json::requireString(obj, "type");
|
a.type = Json::requireString(obj, "type");
|
||||||
@ -145,7 +145,7 @@ static void loadVersionFile(ModpacksCH::VersionFile& a, QJsonObject& obj)
|
|||||||
a.version = Json::requireString(obj, "version");
|
a.version = Json::requireString(obj, "version");
|
||||||
a.url = Json::ensureString(obj, "url"); // optional
|
a.url = Json::ensureString(obj, "url"); // optional
|
||||||
a.sha1 = Json::requireString(obj, "sha1");
|
a.sha1 = Json::requireString(obj, "sha1");
|
||||||
a.size = Json::requireInteger(obj, "size");
|
a.size = Json::ensureInteger(obj, "size");
|
||||||
a.clientOnly = Json::requireBoolean(obj, "clientonly");
|
a.clientOnly = Json::requireBoolean(obj, "clientonly");
|
||||||
a.serverOnly = Json::requireBoolean(obj, "serveronly");
|
a.serverOnly = Json::requireBoolean(obj, "serveronly");
|
||||||
a.optional = Json::requireBoolean(obj, "optional");
|
a.optional = Json::requireBoolean(obj, "optional");
|
||||||
@ -155,7 +155,7 @@ static void loadVersionFile(ModpacksCH::VersionFile& a, QJsonObject& obj)
|
|||||||
a.curseforge.file_id = Json::ensureInteger(curseforgeObj, "file");
|
a.curseforge.file_id = Json::ensureInteger(curseforgeObj, "file");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModpacksCH::loadVersion(ModpacksCH::Version& m, QJsonObject& obj)
|
void FTB::loadVersion(FTB::Version& m, QJsonObject& obj)
|
||||||
{
|
{
|
||||||
m.id = Json::requireInteger(obj, "id");
|
m.id = Json::requireInteger(obj, "id");
|
||||||
m.parent = Json::requireInteger(obj, "parent");
|
m.parent = Json::requireInteger(obj, "parent");
|
||||||
@ -164,20 +164,20 @@ void ModpacksCH::loadVersion(ModpacksCH::Version& m, QJsonObject& obj)
|
|||||||
m.installs = Json::requireInteger(obj, "installs");
|
m.installs = Json::requireInteger(obj, "installs");
|
||||||
m.plays = Json::requireInteger(obj, "plays");
|
m.plays = Json::requireInteger(obj, "plays");
|
||||||
m.updated = Json::requireInteger(obj, "updated");
|
m.updated = Json::requireInteger(obj, "updated");
|
||||||
m.refreshed = Json::requireInteger(obj, "refreshed");
|
m.refreshed = Json::ensureInteger(obj, "refreshed");
|
||||||
auto specs = Json::requireObject(obj, "specs");
|
auto specs = Json::requireObject(obj, "specs");
|
||||||
loadSpecs(m.specs, specs);
|
loadSpecs(m.specs, specs);
|
||||||
auto targetArr = Json::requireArray(obj, "targets");
|
auto targetArr = Json::requireArray(obj, "targets");
|
||||||
for (QJsonValueRef targetRaw : targetArr) {
|
for (QJsonValueRef targetRaw : targetArr) {
|
||||||
auto versionObj = Json::requireObject(targetRaw);
|
auto versionObj = Json::requireObject(targetRaw);
|
||||||
ModpacksCH::VersionTarget target;
|
FTB::VersionTarget target;
|
||||||
loadVersionTarget(target, versionObj);
|
loadVersionTarget(target, versionObj);
|
||||||
m.targets.append(target);
|
m.targets.append(target);
|
||||||
}
|
}
|
||||||
auto fileArr = Json::requireArray(obj, "files");
|
auto fileArr = Json::requireArray(obj, "files");
|
||||||
for (QJsonValueRef fileRaw : fileArr) {
|
for (QJsonValueRef fileRaw : fileArr) {
|
||||||
auto fileObj = Json::requireObject(fileRaw);
|
auto fileObj = Json::requireObject(fileRaw);
|
||||||
ModpacksCH::VersionFile file;
|
FTB::VersionFile file;
|
||||||
loadVersionFile(file, fileObj);
|
loadVersionFile(file, fileObj);
|
||||||
m.files.append(file);
|
m.files.append(file);
|
||||||
}
|
}
|
@ -42,7 +42,7 @@
|
|||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
|
|
||||||
namespace ModpacksCH {
|
namespace FTB {
|
||||||
|
|
||||||
struct Specs {
|
struct Specs {
|
||||||
int id;
|
int id;
|
||||||
@ -152,6 +152,6 @@ struct VersionChangelog {
|
|||||||
void loadModpack(Modpack& m, QJsonObject& obj);
|
void loadModpack(Modpack& m, QJsonObject& obj);
|
||||||
|
|
||||||
void loadVersion(Version& m, QJsonObject& obj);
|
void loadVersion(Version& m, QJsonObject& obj);
|
||||||
} // namespace ModpacksCH
|
} // namespace FTB
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(ModpacksCH::Modpack)
|
Q_DECLARE_METATYPE(FTB::Modpack)
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include "modplatform/modpacksch/FTBPackManifest.h"
|
#include "modplatform/ftb/FTBPackManifest.h"
|
||||||
|
|
||||||
#include "StringUtils.h"
|
#include "StringUtils.h"
|
||||||
|
|
||||||
@ -66,14 +66,14 @@ bool FilterModel::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParen
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto index = sourceModel()->index(sourceRow, 0, sourceParent);
|
auto index = sourceModel()->index(sourceRow, 0, sourceParent);
|
||||||
auto pack = sourceModel()->data(index, Qt::UserRole).value<ModpacksCH::Modpack>();
|
auto pack = sourceModel()->data(index, Qt::UserRole).value<FTB::Modpack>();
|
||||||
return pack.name.contains(m_searchTerm, Qt::CaseInsensitive);
|
return pack.name.contains(m_searchTerm, Qt::CaseInsensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FilterModel::lessThan(const QModelIndex& left, const QModelIndex& right) const
|
bool FilterModel::lessThan(const QModelIndex& left, const QModelIndex& right) const
|
||||||
{
|
{
|
||||||
ModpacksCH::Modpack leftPack = sourceModel()->data(left, Qt::UserRole).value<ModpacksCH::Modpack>();
|
FTB::Modpack leftPack = sourceModel()->data(left, Qt::UserRole).value<FTB::Modpack>();
|
||||||
ModpacksCH::Modpack rightPack = sourceModel()->data(right, Qt::UserRole).value<ModpacksCH::Modpack>();
|
FTB::Modpack rightPack = sourceModel()->data(right, Qt::UserRole).value<FTB::Modpack>();
|
||||||
|
|
||||||
if (m_currentSorting == ByPlays) {
|
if (m_currentSorting == ByPlays) {
|
||||||
return leftPack.plays < rightPack.plays;
|
return leftPack.plays < rightPack.plays;
|
||||||
|
@ -45,7 +45,7 @@ QVariant ListModel::data(const QModelIndex& index, int role) const
|
|||||||
return QString("INVALID INDEX %1").arg(pos);
|
return QString("INVALID INDEX %1").arg(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
ModpacksCH::Modpack pack = m_modpacks.at(pos);
|
FTB::Modpack pack = m_modpacks.at(pos);
|
||||||
if (role == Qt::DisplayRole) {
|
if (role == Qt::DisplayRole) {
|
||||||
return pack.name;
|
return pack.name;
|
||||||
} else if (role == Qt::ToolTipRole) {
|
} else if (role == Qt::ToolTipRole) {
|
||||||
@ -80,7 +80,7 @@ QVariant ListModel::data(const QModelIndex& index, int role) const
|
|||||||
void ListModel::getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback)
|
void ListModel::getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback)
|
||||||
{
|
{
|
||||||
if (m_logoMap.contains(logo)) {
|
if (m_logoMap.contains(logo)) {
|
||||||
callback(APPLICATION->metacache()->resolveEntry("ModpacksCHPacks", QString("logos/%1").arg(logo))->getFullPath());
|
callback(APPLICATION->metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(logo))->getFullPath());
|
||||||
} else {
|
} else {
|
||||||
requestLogo(logo, logoUrl);
|
requestLogo(logo, logoUrl);
|
||||||
}
|
}
|
||||||
@ -95,7 +95,7 @@ void ListModel::request()
|
|||||||
endResetModel();
|
endResetModel();
|
||||||
|
|
||||||
auto netJob = makeShared<NetJob>("Ftb::Request", APPLICATION->network());
|
auto netJob = makeShared<NetJob>("Ftb::Request", APPLICATION->network());
|
||||||
auto url = QString(BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/all");
|
auto url = QString(BuildConfig.FTB_API_BASE_URL + "/modpack/all");
|
||||||
m_response.reset(new QByteArray());
|
m_response.reset(new QByteArray());
|
||||||
netJob->addNetAction(Net::Download::makeByteArray(QUrl(url), m_response));
|
netJob->addNetAction(Net::Download::makeByteArray(QUrl(url), m_response));
|
||||||
m_jobPtr = netJob;
|
m_jobPtr = netJob;
|
||||||
@ -119,8 +119,7 @@ void ListModel::requestFinished()
|
|||||||
QJsonParseError parse_error{};
|
QJsonParseError parse_error{};
|
||||||
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
|
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
|
||||||
if (parse_error.error != QJsonParseError::NoError) {
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
qWarning() << "Error while parsing JSON response from ModpacksCH at " << parse_error.offset
|
qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString();
|
||||||
<< " reason: " << parse_error.errorString();
|
|
||||||
qWarning() << *m_response;
|
qWarning() << *m_response;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -146,7 +145,7 @@ void ListModel::requestFailed(QString)
|
|||||||
void ListModel::requestPack()
|
void ListModel::requestPack()
|
||||||
{
|
{
|
||||||
auto netJob = makeShared<NetJob>("Ftb::Search", APPLICATION->network());
|
auto netJob = makeShared<NetJob>("Ftb::Search", APPLICATION->network());
|
||||||
auto searchUrl = QString(BuildConfig.MODPACKSCH_API_BASE_URL + "public/modpack/%1").arg(m_currentPack);
|
auto searchUrl = QString(BuildConfig.FTB_API_BASE_URL + "/modpack/%1").arg(m_currentPack);
|
||||||
m_response.reset(new QByteArray());
|
m_response.reset(new QByteArray());
|
||||||
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), m_response));
|
netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), m_response));
|
||||||
m_jobPtr = netJob;
|
m_jobPtr = netJob;
|
||||||
@ -168,27 +167,26 @@ void ListModel::packRequestFinished()
|
|||||||
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
|
QJsonDocument doc = QJsonDocument::fromJson(*m_response, &parse_error);
|
||||||
|
|
||||||
if (parse_error.error != QJsonParseError::NoError) {
|
if (parse_error.error != QJsonParseError::NoError) {
|
||||||
qWarning() << "Error while parsing JSON response from ModpacksCH at " << parse_error.offset
|
qWarning() << "Error while parsing JSON response from FTB at " << parse_error.offset << " reason: " << parse_error.errorString();
|
||||||
<< " reason: " << parse_error.errorString();
|
|
||||||
qWarning() << *m_response;
|
qWarning() << *m_response;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto obj = doc.object();
|
auto obj = doc.object();
|
||||||
|
|
||||||
ModpacksCH::Modpack pack;
|
FTB::Modpack pack;
|
||||||
try {
|
try {
|
||||||
ModpacksCH::loadModpack(pack, obj);
|
FTB::loadModpack(pack, obj);
|
||||||
} catch (const JSONValidationError& e) {
|
} catch (const JSONValidationError& e) {
|
||||||
qDebug() << QString::fromUtf8(*m_response);
|
qDebug() << QString::fromUtf8(*m_response);
|
||||||
qWarning() << "Error while reading pack manifest from ModpacksCH: " << e.cause();
|
qWarning() << "Error while reading pack manifest from FTB: " << e.cause();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Since there is no guarantee that packs have a version, this will just
|
// Since there is no guarantee that packs have a version, this will just
|
||||||
// ignore those "dud" packs.
|
// ignore those "dud" packs.
|
||||||
if (pack.versions.empty()) {
|
if (pack.versions.empty()) {
|
||||||
qWarning() << "ModpacksCH Pack " << pack.id << " ignored. reason: lacking any versions";
|
qWarning() << "FTB Pack " << pack.id << " ignored. reason: lacking any versions";
|
||||||
} else {
|
} else {
|
||||||
beginInsertRows(QModelIndex(), m_modpacks.size(), m_modpacks.size());
|
beginInsertRows(QModelIndex(), m_modpacks.size(), m_modpacks.size());
|
||||||
m_modpacks.append(pack);
|
m_modpacks.append(pack);
|
||||||
@ -231,9 +229,9 @@ void ListModel::requestLogo(QString logo, QString url)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("ModpacksCHPacks", QString("logos/%1").arg(logo));
|
MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("FTBPacks", QString("logos/%1").arg(logo));
|
||||||
|
|
||||||
auto job = makeShared<NetJob>(QString("ModpacksCH Icon Download %1").arg(logo), APPLICATION->network());
|
auto job = makeShared<NetJob>(QString("FTB Icon Download %1").arg(logo), APPLICATION->network());
|
||||||
job->setAskRetry(false);
|
job->setAskRetry(false);
|
||||||
job->addNetAction(Net::Download::makeCached(QUrl(url), entry));
|
job->addNetAction(Net::Download::makeCached(QUrl(url), entry));
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
|
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include "modplatform/modpacksch/FTBPackManifest.h"
|
#include "modplatform/ftb/FTBPackManifest.h"
|
||||||
#include "net/NetJob.h"
|
#include "net/NetJob.h"
|
||||||
|
|
||||||
namespace Ftb {
|
namespace Ftb {
|
||||||
@ -31,8 +31,8 @@ struct Logo {
|
|||||||
bool failed = false;
|
bool failed = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef QMap<QString, Logo> LogoMap;
|
using LogoMap = QMap<QString, Logo>;
|
||||||
typedef std::function<void(QString)> LogoCallback;
|
using LogoCallback = std::function<void(QString)>;
|
||||||
|
|
||||||
class ListModel : public QAbstractListModel {
|
class ListModel : public QAbstractListModel {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -70,7 +70,7 @@ class ListModel : public QAbstractListModel {
|
|||||||
private:
|
private:
|
||||||
bool m_aborted = false;
|
bool m_aborted = false;
|
||||||
|
|
||||||
QList<ModpacksCH::Modpack> m_modpacks;
|
QList<FTB::Modpack> m_modpacks;
|
||||||
LogoMap m_logoMap;
|
LogoMap m_logoMap;
|
||||||
|
|
||||||
NetJob::Ptr m_jobPtr;
|
NetJob::Ptr m_jobPtr;
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
|
|
||||||
#include "modplatform/modpacksch/FTBPackInstallTask.h"
|
#include "modplatform/ftb/FTBPackInstallTask.h"
|
||||||
#include "ui/dialogs/NewInstanceDialog.h"
|
#include "ui/dialogs/NewInstanceDialog.h"
|
||||||
|
|
||||||
#include "Markdown.h"
|
#include "Markdown.h"
|
||||||
@ -130,7 +130,7 @@ void FtbPage::suggestCurrent()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_dialog->setSuggestedPack(m_selected.name, m_selectedVersion, new ModpacksCH::PackInstallTask(m_selected, m_selectedVersion, this));
|
m_dialog->setSuggestedPack(m_selected.name, m_selectedVersion, new FTB::PackInstallTask(m_selected, m_selectedVersion, this));
|
||||||
for (auto art : m_selected.art) {
|
for (auto art : m_selected.art) {
|
||||||
if (art.type == "square") {
|
if (art.type == "square") {
|
||||||
auto editedLogoName = "ftb_" + m_selected.safeName;
|
auto editedLogoName = "ftb_" + m_selected.safeName;
|
||||||
@ -162,7 +162,7 @@ void FtbPage::onSelectionChanged(QModelIndex first, QModelIndex second)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_selected = m_filterModel->data(first, Qt::UserRole).value<ModpacksCH::Modpack>();
|
m_selected = m_filterModel->data(first, Qt::UserRole).value<FTB::Modpack>();
|
||||||
|
|
||||||
QString output = markdownToHTML(m_selected.description.toUtf8());
|
QString output = markdownToHTML(m_selected.description.toUtf8());
|
||||||
m_ui->packDescription->setHtml(output);
|
m_ui->packDescription->setHtml(output);
|
||||||
@ -185,3 +185,13 @@ void FtbPage::onVersionSelectionChanged(QString data)
|
|||||||
m_selectedVersion = data;
|
m_selectedVersion = data;
|
||||||
suggestCurrent();
|
suggestCurrent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString FtbPage::getSerachTerm() const
|
||||||
|
{
|
||||||
|
return m_ui->searchEdit->text();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FtbPage::setSearchTerm(QString term)
|
||||||
|
{
|
||||||
|
m_ui->searchEdit->setText(term);
|
||||||
|
}
|
@ -43,6 +43,7 @@
|
|||||||
#include "Application.h"
|
#include "Application.h"
|
||||||
#include "tasks/Task.h"
|
#include "tasks/Task.h"
|
||||||
#include "ui/pages/BasePage.h"
|
#include "ui/pages/BasePage.h"
|
||||||
|
#include "ui/pages/modplatform/ModpackProviderBasePage.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class FtbPage;
|
class FtbPage;
|
||||||
@ -50,7 +51,7 @@ class FtbPage;
|
|||||||
|
|
||||||
class NewInstanceDialog;
|
class NewInstanceDialog;
|
||||||
|
|
||||||
class FtbPage : public QWidget, public BasePage {
|
class FtbPage : public QWidget, public ModpackProviderBasePage {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -68,6 +69,11 @@ class FtbPage : public QWidget, public BasePage {
|
|||||||
|
|
||||||
bool eventFilter(QObject* watched, QEvent* event) override;
|
bool eventFilter(QObject* watched, QEvent* event) override;
|
||||||
|
|
||||||
|
/** Programatically set the term in the search bar. */
|
||||||
|
virtual void setSearchTerm(QString) override;
|
||||||
|
/** Get the current term in the search bar. */
|
||||||
|
[[nodiscard]] virtual QString getSerachTerm() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void suggestCurrent();
|
void suggestCurrent();
|
||||||
|
|
||||||
@ -84,7 +90,7 @@ class FtbPage : public QWidget, public BasePage {
|
|||||||
Ftb::ListModel* m_listModel = nullptr;
|
Ftb::ListModel* m_listModel = nullptr;
|
||||||
Ftb::FilterModel* m_filterModel = nullptr;
|
Ftb::FilterModel* m_filterModel = nullptr;
|
||||||
|
|
||||||
ModpacksCH::Modpack m_selected;
|
FTB::Modpack m_selected;
|
||||||
QString m_selectedVersion;
|
QString m_selectedVersion;
|
||||||
|
|
||||||
bool m_initialised{ false };
|
bool m_initialised{ false };
|
||||||
|
Loading…
x
Reference in New Issue
Block a user