diff --git a/src/main/java/com/cleanroommc/discovery/CleanroomModDiscoverer.java b/src/main/java/com/cleanroommc/discovery/CleanroomModDiscoverer.java index 25df633e4..38b665581 100644 --- a/src/main/java/com/cleanroommc/discovery/CleanroomModDiscoverer.java +++ b/src/main/java/com/cleanroommc/discovery/CleanroomModDiscoverer.java @@ -601,20 +601,7 @@ private boolean recordMod(String modId, File source) { private void parseMcmodInfo(File file, Gson gson, InputStream stream, Set ids) { try { - JsonElement root = gson.fromJson(new InputStreamReader(stream, StandardCharsets.UTF_8), JsonElement.class); - if (root instanceof JsonArray rootArray) { - for (JsonElement element : rootArray) { - if (element instanceof JsonObject mod && mod.has("modid")) { - ids.add(mod.get("modid").getAsString()); - } - } - } else if (root instanceof JsonObject rootObject && rootObject.get("modList") instanceof JsonArray modList) { - for (JsonElement element : modList) { - if (element instanceof JsonObject mod && mod.has("modid")) { - ids.add(mod.get("modid").getAsString()); - } - } - } + ids.addAll(MetadataCollection.from(stream, file.getName()).getIds()); } catch (Throwable t) { CleanroomLog.get().error("Failed to parse mcmod.info for {}", file.getName(), t); } finally { diff --git a/src/main/java/net/minecraftforge/fml/common/MetadataCollection.java b/src/main/java/net/minecraftforge/fml/common/MetadataCollection.java index c2a03cb38..333901a66 100644 --- a/src/main/java/net/minecraftforge/fml/common/MetadataCollection.java +++ b/src/main/java/net/minecraftforge/fml/common/MetadataCollection.java @@ -24,6 +24,7 @@ import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.util.Map; +import java.util.Set; import net.minecraftforge.fml.common.versioning.ArtifactVersion; import net.minecraftforge.fml.common.versioning.VersionParser; @@ -106,6 +107,10 @@ public ModMetadata getMetadataForId(String modId, Map extraData) return metadatas.get(modId); } + public Set getIds() { + return metadatas.keySet(); + } + public static class ArtifactVersionAdapter extends TypeAdapter {