diff --git a/src/main/java/net/fabricmc/loom/util/FileSystemUtil.java b/src/main/java/net/fabricmc/loom/util/FileSystemUtil.java index d0f5f154..a031ffa0 100644 --- a/src/main/java/net/fabricmc/loom/util/FileSystemUtil.java +++ b/src/main/java/net/fabricmc/loom/util/FileSystemUtil.java @@ -72,15 +72,15 @@ public final class FileSystemUtil { } public static Delegate getJarFileSystem(File file, boolean create) throws IOException { - return getJarFileSystem(file.toURI(), create); + return new Delegate(FileSystemReference.openJar(file.toPath(), create)); } public static Delegate getJarFileSystem(Path path, boolean create) throws IOException { - return getJarFileSystem(path.toUri(), create); + return new Delegate(FileSystemReference.openJar(path, create)); } public static Delegate getJarFileSystem(Path path) throws IOException { - return getJarFileSystem(path, false); + return new Delegate(FileSystemReference.openJar(path)); } public static Delegate getJarFileSystem(URI uri, boolean create) throws IOException { diff --git a/src/main/java/net/fabricmc/loom/util/ModUtils.java b/src/main/java/net/fabricmc/loom/util/ModUtils.java index e5896a45..31298d95 100644 --- a/src/main/java/net/fabricmc/loom/util/ModUtils.java +++ b/src/main/java/net/fabricmc/loom/util/ModUtils.java @@ -47,7 +47,7 @@ public final class ModUtils { @Nullable public static JsonObject getFabricModJson(Path path) { try { - return ZipUtils.unpackGson(path, "fabric.mod.json", JsonObject.class); + return ZipUtils.unpackGsonNullable(path, "fabric.mod.json", JsonObject.class); } catch (IOException e) { throw new UncheckedIOException("Failed to extract fabric.mod.json from " + path, e); } diff --git a/src/main/java/net/fabricmc/loom/util/ZipUtils.java b/src/main/java/net/fabricmc/loom/util/ZipUtils.java index 4428ef92..f6214aed 100644 --- a/src/main/java/net/fabricmc/loom/util/ZipUtils.java +++ b/src/main/java/net/fabricmc/loom/util/ZipUtils.java @@ -112,6 +112,15 @@ public class ZipUtils { return LoomGradlePlugin.GSON.fromJson(new String(bytes, StandardCharsets.UTF_8), clazz); } + @Nullable + public static T unpackGsonNullable(Path zip, String path, Class clazz) throws IOException { + try { + return unpackGson(zip, path, clazz); + } catch (NoSuchFileException e) { + return null; + } + } + public static T unpackJackson(Path zip, String path, Class clazz) throws IOException { final byte[] bytes = unpack(zip, path); return LoomGradlePlugin.OBJECT_MAPPER.readValue(new String(bytes, StandardCharsets.UTF_8), clazz);