diff --git a/launcher/Application.cpp b/launcher/Application.cpp index e5601ff4e..7bed94c07 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -872,13 +872,13 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->reset("MetaURLOverride"); // Resource URL - m_settings->registerSetting("ResourceURL", BuildConfig.DEFAULT_RESOURCE_BASE); + m_settings->registerSetting({ "ResourceURLOverride", "ResourceURL" }, ""); - QUrl resourceUrl(m_settings->get("ResourceURL").toString()); + QUrl resourceUrl(m_settings->get("ResourceURLOverride").toString()); // get rid of invalid resource urls if (!resourceUrl.isValid() || (resourceUrl.scheme() != "http" && resourceUrl.scheme() != "https")) - m_settings->reset("ResourceURL"); + m_settings->reset("ResourceURLOverride"); } m_settings->registerSetting("CloseAfterLaunch", false); diff --git a/launcher/minecraft/AssetsUtils.cpp b/launcher/minecraft/AssetsUtils.cpp index 410d1e689..8185f9dc9 100644 --- a/launcher/minecraft/AssetsUtils.cpp +++ b/launcher/minecraft/AssetsUtils.cpp @@ -52,6 +52,7 @@ #include "Application.h" #include "net/NetRequest.h" +#include "update/AssetUpdateTask.h" namespace { QSet collectPathsFromDir(QString dirPath) @@ -298,7 +299,7 @@ QString AssetObject::getLocalPath() QUrl AssetObject::getUrl() { - auto resourceURL = APPLICATION->settings()->get("ResourceURL").toString(); + auto resourceURL = AssetUpdateTask::resourceUrl(); return resourceURL + getRelPath(); } diff --git a/launcher/minecraft/update/AssetUpdateTask.cpp b/launcher/minecraft/update/AssetUpdateTask.cpp index 533f2ed56..22cc6e18a 100644 --- a/launcher/minecraft/update/AssetUpdateTask.cpp +++ b/launcher/minecraft/update/AssetUpdateTask.cpp @@ -73,7 +73,7 @@ void AssetUpdateTask::assetIndexFinished() auto job = index.getDownloadJob(); if (job) { - QString resourceURL = APPLICATION->settings()->get("ResourceURL").toString(); + QString resourceURL = resourceUrl(); QString source = tr("Mojang"); if (resourceURL != BuildConfig.DEFAULT_RESOURCE_BASE) { source = QUrl(resourceURL).host(); @@ -111,3 +111,12 @@ bool AssetUpdateTask::abort() } return true; } + +QString AssetUpdateTask::resourceUrl() +{ + if (const QString urlOverride = APPLICATION->settings()->get("ResourceURLOverride").toString(); !urlOverride.isEmpty()) { + return urlOverride; + } + + return BuildConfig.DEFAULT_RESOURCE_BASE; +} diff --git a/launcher/minecraft/update/AssetUpdateTask.h b/launcher/minecraft/update/AssetUpdateTask.h index 88fac0ac5..56aecc293 100644 --- a/launcher/minecraft/update/AssetUpdateTask.h +++ b/launcher/minecraft/update/AssetUpdateTask.h @@ -13,6 +13,9 @@ class AssetUpdateTask : public Task { bool canAbort() const override; + public: + static QString resourceUrl(); + private slots: void assetIndexFinished(); void assetIndexFailed(QString reason); diff --git a/launcher/ui/pages/global/APIPage.cpp b/launcher/ui/pages/global/APIPage.cpp index ebe93e5b4..adc779daf 100644 --- a/launcher/ui/pages/global/APIPage.cpp +++ b/launcher/ui/pages/global/APIPage.cpp @@ -80,6 +80,7 @@ APIPage::APIPage(QWidget* parent) : QWidget(parent), ui(new Ui::APIPage) ui->msaClientID->setValidator(new QRegularExpressionValidator(s_validMSAClientID, ui->msaClientID)); ui->metaURL->setPlaceholderText(BuildConfig.META_URL); + ui->resourceURL->setPlaceholderText(BuildConfig.DEFAULT_RESOURCE_BASE); ui->userAgentLineEdit->setPlaceholderText(BuildConfig.USER_AGENT); loadSettings(); @@ -136,7 +137,7 @@ void APIPage::loadSettings() ui->msaClientID->setText(msaClientID); QString metaURL = s->get("MetaURLOverride").toString(); ui->metaURL->setText(metaURL); - QString resourceURL = s->get("ResourceURL").toString(); + QString resourceURL = s->get("ResourceURLOverride").toString(); ui->resourceURL->setText(resourceURL); QString flameKey = s->get("FlameKeyOverride").toString(); ui->flameKey->setText(flameKey); @@ -185,7 +186,7 @@ void APIPage::applySettings() } s->set("MetaURLOverride", metaURL.toString()); - s->set("ResourceURL", resourceURL.toString()); + s->set("ResourceURLOverride", resourceURL.toString()); QString flameKey = ui->flameKey->text(); s->set("FlameKeyOverride", flameKey); QString modrinthToken = ui->modrinthToken->text();