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

View File

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

View File

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