From 377c0e933ac264dc3203c621cfb775df8ed14023 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Thu, 4 Apr 2024 22:29:45 +0900 Subject: [PATCH] Detect neoforge.mods.toml on NeoForge --- .../java/dev/architectury/loom/metadata/ModMetadataFiles.java | 3 ++- src/main/java/dev/architectury/loom/metadata/ModsToml.java | 1 + .../java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/dev/architectury/loom/metadata/ModMetadataFiles.java b/src/main/java/dev/architectury/loom/metadata/ModMetadataFiles.java index ab98500fa..275e37227 100644 --- a/src/main/java/dev/architectury/loom/metadata/ModMetadataFiles.java +++ b/src/main/java/dev/architectury/loom/metadata/ModMetadataFiles.java @@ -25,7 +25,8 @@ public final class ModMetadataFiles { private static final Map> SINGLE_FILE_METADATA_TYPES = ImmutableMap.>builder() .put(QuiltModJson.FILE_NAME, QuiltModJson::of) .put(ArchitecturyCommonJson.FILE_NAME, ArchitecturyCommonJson::of) - .put(ModsToml.FILE_PATH, onError(ModsToml::of, "Could not load mods.toml", () -> new ErroringModMetadataFile("mods.toml"))) + .put(ModsToml.FILE_PATH, onError(ModsToml::of, "Could not load mods.toml", () -> new ErroringModMetadataFile(ModsToml.FILE_PATH))) + .put(ModsToml.NEOFORGE_FILE_PATH, onError(ModsToml::of, "Could not load mods.toml", () -> new ErroringModMetadataFile(ModsToml.NEOFORGE_FILE_PATH))) .build(); private static Function onError(Function fn, String message, Supplier onError) { diff --git a/src/main/java/dev/architectury/loom/metadata/ModsToml.java b/src/main/java/dev/architectury/loom/metadata/ModsToml.java index cd698a74f..31b811515 100644 --- a/src/main/java/dev/architectury/loom/metadata/ModsToml.java +++ b/src/main/java/dev/architectury/loom/metadata/ModsToml.java @@ -24,6 +24,7 @@ public final class ModsToml implements ModMetadataFile { public static final String FILE_PATH = "META-INF/mods.toml"; + public static final String NEOFORGE_FILE_PATH = "META-INF/neoforge.mods.toml"; private final Config config; private ModsToml(Config config) { diff --git a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java index f1b414db4..7a5296e45 100644 --- a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java +++ b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonFactory.java @@ -177,7 +177,7 @@ public static boolean isModJar(File file, ModPlatform platform) { public static boolean isModJar(Path input, ModPlatform platform) { if (platform.isForgeLike()) { - return ZipUtils.contains(input, "META-INF/mods.toml"); + return ZipUtils.contains(input, "META-INF/mods.toml") || (platform == ModPlatform.NEOFORGE && ZipUtils.contains(input, "META-INF/neoforge.mods.toml")); } else if (platform == ModPlatform.QUILT) { return ZipUtils.contains(input, "quilt.mod.json") || isModJar(input, ModPlatform.FABRIC); } @@ -201,7 +201,7 @@ public static boolean containsMod(FileSystemUtil.Delegate fs, ModPlatform platfo } if (platform.isForgeLike()) { - return Files.exists(fs.getPath("META-INF/mods.toml")); + return Files.exists(fs.getPath("META-INF/mods.toml")) || (platform == ModPlatform.NEOFORGE && Files.exists(fs.getPath("META-INF/neoforge.mods.toml"))); } else if (platform == ModPlatform.QUILT) { return Files.exists(fs.getPath("quilt.mod.json")) || containsMod(fs, ModPlatform.FABRIC); }