fix: implement PR suggestions
Some stylistic changes, and get hashes from the mod providers when building the metadata.
This commit is contained in:
parent
96e36f0604
commit
e17b6804a7
@ -644,7 +644,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
|
||||
m_settings->registerSetting("MCLaunchMethod", "LauncherPart");
|
||||
|
||||
// Minecraft mods
|
||||
m_settings->registerSetting("DontUseModMetadata", false);
|
||||
m_settings->registerSetting("ModMetadataDisabled", false);
|
||||
|
||||
// Minecraft offline player name
|
||||
m_settings->registerSetting("LastOfflinePlayerName", "");
|
||||
|
@ -10,7 +10,7 @@ ModFolderLoadTask::ModFolderLoadTask(QDir& mods_dir, QDir& index_dir)
|
||||
|
||||
void ModFolderLoadTask::run()
|
||||
{
|
||||
if (!APPLICATION->settings()->get("DontUseModMetadata").toBool()) {
|
||||
if (!APPLICATION->settings()->get("ModMetadataDisabled").toBool()) {
|
||||
// Read metadata first
|
||||
getFromMetadata();
|
||||
}
|
||||
@ -34,14 +34,9 @@ void ModFolderLoadTask::run()
|
||||
void ModFolderLoadTask::getFromMetadata()
|
||||
{
|
||||
m_index_dir.refresh();
|
||||
for (auto entry : m_index_dir.entryList()) {
|
||||
// QDir::Filter::NoDotAndDotDot seems to exclude all files for some reason...
|
||||
if (entry == "." || entry == "..")
|
||||
continue;
|
||||
|
||||
for (auto entry : m_index_dir.entryList(QDir::Files)) {
|
||||
auto metadata = Metadata::get(m_index_dir, entry);
|
||||
// TODO: Don't simply return. Instead, show to the user that the metadata is there, but
|
||||
// it's not currently 'installed' (i.e. there's no JAR file yet).
|
||||
|
||||
if(!metadata.isValid()){
|
||||
return;
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
namespace ModPlatform {
|
||||
|
||||
enum class Provider{
|
||||
enum class Provider {
|
||||
MODRINTH,
|
||||
FLAME
|
||||
};
|
||||
@ -33,6 +33,7 @@ struct IndexedVersion {
|
||||
QString date;
|
||||
QString fileName;
|
||||
QVector<QString> loaders = {};
|
||||
QString hash;
|
||||
};
|
||||
|
||||
struct IndexedPack {
|
||||
|
@ -6,6 +6,8 @@
|
||||
#include "modplatform/flame/FlameAPI.h"
|
||||
#include "net/NetJob.h"
|
||||
|
||||
static ModPlatform::ProviderCapabilities ProviderCaps;
|
||||
|
||||
void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||
{
|
||||
pack.addonId = Json::requireInteger(obj, "id");
|
||||
@ -60,6 +62,12 @@ void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack,
|
||||
file.downloadUrl = Json::requireString(obj, "downloadUrl");
|
||||
file.fileName = Json::requireString(obj, "fileName");
|
||||
|
||||
auto hash_list = Json::ensureArray(obj, "hashes");
|
||||
if(!hash_list.isEmpty()){
|
||||
if(hash_list.contains(ProviderCaps.hashType(ModPlatform::Provider::FLAME)))
|
||||
file.hash = Json::requireString(hash_list, "value");
|
||||
}
|
||||
|
||||
unsortedVersions.append(file);
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "net/NetJob.h"
|
||||
|
||||
static ModrinthAPI api;
|
||||
static ModPlatform::ProviderCapabilities ProviderCaps;
|
||||
|
||||
void Modrinth::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
|
||||
{
|
||||
@ -95,6 +96,9 @@ void Modrinth::loadIndexedPackVersions(ModPlatform::IndexedPack& pack,
|
||||
if (parent.contains("url")) {
|
||||
file.downloadUrl = Json::requireString(parent, "url");
|
||||
file.fileName = Json::requireString(parent, "filename");
|
||||
auto hash_list = Json::requireObject(parent, "hashes");
|
||||
if(hash_list.contains(ProviderCaps.hashType(ModPlatform::Provider::MODRINTH)))
|
||||
file.hash = Json::requireString(hash_list, ProviderCaps.hashType(ModPlatform::Provider::MODRINTH));
|
||||
|
||||
unsortedVersions.append(file);
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ auto V1::createModFormat(QDir& index_dir, ModPlatform::IndexedPack& mod_pack, Mo
|
||||
|
||||
mod.url = mod_version.downloadUrl;
|
||||
mod.hash_format = ProviderCaps.hashType(mod_pack.provider);
|
||||
mod.hash = ""; // FIXME
|
||||
mod.hash = mod_version.hash;
|
||||
|
||||
mod.provider = mod_pack.provider;
|
||||
mod.file_id = mod_pack.addonId;
|
||||
|
@ -345,7 +345,7 @@ void LauncherPage::applySettings()
|
||||
}
|
||||
|
||||
// Mods
|
||||
s->set("DontUseModMetadata", ui->metadataDisableBtn->isChecked());
|
||||
s->set("ModMetadataDisabled", ui->metadataDisableBtn->isChecked());
|
||||
}
|
||||
void LauncherPage::loadSettings()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user