Try to import neoforged packs from FTB

Maybe this will work, maybe it will not.
It's better than importing them completely wrong though.
This commit is contained in:
Petr Mrázek 2024-03-10 04:41:30 +01:00
parent 2c9e7b75f4
commit d22707c7fc
3 changed files with 16 additions and 1 deletions

View File

@ -186,6 +186,7 @@ void resolveModloader(QString mcVersion, ModLoader &loader) {
{ {
QJsonDocument doc = Json::requireDocument(data); QJsonDocument doc = Json::requireDocument(data);
QJsonObject root = Json::requireObject(doc, "version.json"); QJsonObject root = Json::requireObject(doc, "version.json");
bool isProbablyNeoforge = false;
for (auto library: Json::ensureArray(root, "libraries", {})) for (auto library: Json::ensureArray(root, "libraries", {}))
{ {
if (!library.isObject()) if (!library.isObject())
@ -197,6 +198,10 @@ void resolveModloader(QString mcVersion, ModLoader &loader) {
GradleSpecifier name = Json::requireString(libraryObject, "name"); GradleSpecifier name = Json::requireString(libraryObject, "name");
auto artifactPrefix = name.artifactPrefix(); auto artifactPrefix = name.artifactPrefix();
if(artifactPrefix.startsWith("net.neoforged.fancymodloader:")) {
isProbablyNeoforge = true;
break;
}
if(artifactPrefix == "net.minecraftforge:forge") { if(artifactPrefix == "net.minecraftforge:forge") {
QString libraryVersion = name.version(); QString libraryVersion = name.version();
loader.type = ModLoaderType::Forge; loader.type = ModLoaderType::Forge;
@ -231,7 +236,12 @@ void resolveModloader(QString mcVersion, ModLoader &loader) {
for (auto arg: gameArgs) { for (auto arg: gameArgs) {
QString value = Json::ensureValueString(arg, QString()); QString value = Json::ensureValueString(arg, QString());
if(versionIsNext) { if(versionIsNext) {
if(isProbablyNeoforge) {
loader.type = ModLoaderType::NeoForge;
}
else {
loader.type = ModLoaderType::Forge; loader.type = ModLoaderType::Forge;
}
loader.version = value; loader.version = value;
return; return;
} }

View File

@ -25,6 +25,7 @@ enum class ModLoaderType {
Unresolved, Unresolved,
None, None,
Forge, Forge,
NeoForge,
Fabric, Fabric,
Quilt Quilt
}; };

View File

@ -62,6 +62,10 @@ void PackInstallTask::copyFinished() {
components->setComponentVersion("net.minecraftforge", modloader.version, true); components->setComponentVersion("net.minecraftforge", modloader.version, true);
break; break;
} }
case ModLoaderType::NeoForge: {
components->setComponentVersion("net.neoforged", modloader.version, true);
break;
}
case ModLoaderType::Fabric: { case ModLoaderType::Fabric: {
components->setComponentVersion("net.fabricmc.fabric-loader", modloader.version, true); components->setComponentVersion("net.fabricmc.fabric-loader", modloader.version, true);
break; break;