diff --git a/common/src/main/java/com/adamcalculator/dynamicpack/PackUtil.java b/common/src/main/java/com/adamcalculator/dynamicpack/PackUtil.java index 02875b8..cb15b60 100644 --- a/common/src/main/java/com/adamcalculator/dynamicpack/PackUtil.java +++ b/common/src/main/java/com/adamcalculator/dynamicpack/PackUtil.java @@ -38,7 +38,7 @@ public static String readString(Path path) throws IOException { return Files.readString(path, StandardCharsets.UTF_8); } - public static void openPackFileSystem(File pack, Consumer consumer) throws IOException { + public static void openPackFileSystem(File pack, Consumer consumer) throws Exception { if (!pack.exists()) { throw new FileNotFoundException(pack.getCanonicalPath()); } @@ -52,8 +52,16 @@ public static void openPackFileSystem(File pack, Consumer consumer) throws env.put("create", "true"); URI uri = URI.create("jar:" + pack.toPath().toUri()); + Exception ex = null; try (FileSystem fs = FileSystems.newFileSystem(uri, env)) { - consumer.accept(fs.getPath("")); + try { + consumer.accept(fs.getPath("")); + } catch (Exception e) { + ex = e; + } + } + if (ex != null) { + throw ex; } } else { diff --git a/common/src/main/java/com/adamcalculator/dynamicpack/pack/DynamicRepoRemote.java b/common/src/main/java/com/adamcalculator/dynamicpack/pack/DynamicRepoRemote.java index 3c4a3a7..ed1d1de 100644 --- a/common/src/main/java/com/adamcalculator/dynamicpack/pack/DynamicRepoRemote.java +++ b/common/src/main/java/com/adamcalculator/dynamicpack/pack/DynamicRepoRemote.java @@ -107,7 +107,7 @@ public String getCurrentPackContentHash(String id) { @Override - public boolean sync(PackSyncProgress progress, boolean manually) throws IOException { + public boolean sync(PackSyncProgress progress, boolean manually) throws Exception { AtomicBoolean returnValue = new AtomicBoolean(false); PackUtil.openPackFileSystem(parent.getLocation(), path -> { try { diff --git a/common/src/main/java/com/adamcalculator/dynamicpack/pack/ModrinthRemote.java b/common/src/main/java/com/adamcalculator/dynamicpack/pack/ModrinthRemote.java index 1235d31..f3400ac 100644 --- a/common/src/main/java/com/adamcalculator/dynamicpack/pack/ModrinthRemote.java +++ b/common/src/main/java/com/adamcalculator/dynamicpack/pack/ModrinthRemote.java @@ -94,7 +94,7 @@ public boolean checkUpdateAvailable() throws IOException { } @Override - public boolean sync(PackSyncProgress progress, boolean manually) throws IOException { + public boolean sync(PackSyncProgress progress, boolean manually) throws Exception { progress.textLog("getting latest version on modrinth..."); ModrinthRemote.LatestModrinthVersion latest = getLatest(); diff --git a/common/src/main/java/com/adamcalculator/dynamicpack/pack/Pack.java b/common/src/main/java/com/adamcalculator/dynamicpack/pack/Pack.java index 5bd1f6e..fd770bf 100644 --- a/common/src/main/java/com/adamcalculator/dynamicpack/pack/Pack.java +++ b/common/src/main/java/com/adamcalculator/dynamicpack/pack/Pack.java @@ -107,8 +107,12 @@ public void sync(PackSyncProgress progress, boolean manually) throws Exception { setLatestException(null); } catch (Exception e) { isSyncing = false; - checkSafePackMinecraftMeta(); setLatestException(e); + try { + checkSafePackMinecraftMeta(); + } catch (Exception e2) { + Out.error("Error while check safe pack meta", e); + } throw e; } } @@ -144,7 +148,7 @@ private void checkNetwork() { } } - private void checkSafePackMinecraftMeta() throws IOException { + private void checkSafePackMinecraftMeta() throws Exception { PackUtil.openPackFileSystem(location, path -> { Path mcmeta = path.resolve(DynamicPackModBase.MINECRAFT_META); boolean safe = PackUtil.isPathFileExists(mcmeta); diff --git a/common/src/main/java/com/adamcalculator/dynamicpack/pack/Remote.java b/common/src/main/java/com/adamcalculator/dynamicpack/pack/Remote.java index 1435582..bf3f756 100644 --- a/common/src/main/java/com/adamcalculator/dynamicpack/pack/Remote.java +++ b/common/src/main/java/com/adamcalculator/dynamicpack/pack/Remote.java @@ -4,7 +4,6 @@ import org.json.JSONObject; import java.io.IOException; -import java.security.NoSuchAlgorithmException; import java.util.HashMap; import java.util.function.Supplier; @@ -28,5 +27,5 @@ public static void initRemoteTypes() { public abstract boolean checkUpdateAvailable() throws IOException; - public abstract boolean sync(PackSyncProgress progress, boolean manually) throws IOException, NoSuchAlgorithmException; + public abstract boolean sync(PackSyncProgress progress, boolean manually) throws Exception; } diff --git a/common/src/test/java/tests/PackUtilTest.java b/common/src/test/java/tests/PackUtilTest.java index 70b6db2..0439453 100644 --- a/common/src/test/java/tests/PackUtilTest.java +++ b/common/src/test/java/tests/PackUtilTest.java @@ -11,7 +11,7 @@ public class PackUtilTest { @Test - public void test() throws IOException { + public void test() throws Exception { PackUtil.openPackFileSystem(new File("tests_files/filedir"), new Consumer() { @Override public void accept(Path path) {