From dcea6626a39f064d0b1b8787ff8c703890c7d59d Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 23 Nov 2020 17:30:07 +0100 Subject: [PATCH] allow asset aliases, throw FileNotFoundException if asset not found (jar asset) --- .../de/bixilon/minosoft/data/assets/AssetsManager.java | 9 +++++++++ src/main/java/de/bixilon/minosoft/util/Util.java | 9 +++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.java b/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.java index 43bab8e5f..cef2b5aa8 100644 --- a/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.java +++ b/src/main/java/de/bixilon/minosoft/data/assets/AssetsManager.java @@ -71,6 +71,13 @@ public class AssetsManager { return ret; } + private static void initAssetsAliases(JsonObject json) { + for (String key : json.keySet()) { + String value = json.get(key).getAsString(); + assets.put(key, assets.get(value)); + } + } + public static void downloadAllAssets(CountUpAndDownLatch latch) throws IOException { if (assets.size() > 0) { return; @@ -83,6 +90,8 @@ public class AssetsManager { } assets.putAll(verifyAssets(AssetsSource.MOJANG, latch, parseAssetsIndex(ASSETS_INDEX_HASH))); assets.putAll(verifyAssets(AssetsSource.MINOSOFT_GIT, latch, parseAssetsIndex(Util.readJsonAsset("mapping/resources.json")))); + // aliases + initAssetsAliases(Util.readJsonAsset("mapping/assetsAliases.json")); latch.addCount(1); // client jar // download assets generateJarAssets(); diff --git a/src/main/java/de/bixilon/minosoft/util/Util.java b/src/main/java/de/bixilon/minosoft/util/Util.java index ec2cafa20..5ffae4dab 100644 --- a/src/main/java/de/bixilon/minosoft/util/Util.java +++ b/src/main/java/de/bixilon/minosoft/util/Util.java @@ -203,8 +203,13 @@ public final class Util { return json; } - public static InputStreamReader readAsset(String path, Class clazz) { - return new InputStreamReader(clazz.getResourceAsStream("/assets/" + path)); + public static InputStreamReader readAsset(String path, Class clazz) throws FileNotFoundException { + path = "/assets/" + path; + InputStream stream = clazz.getResourceAsStream(path); + if (stream == null) { + throw new FileNotFoundException(String.format("Could not load asset %s", path)); + } + return new InputStreamReader(stream); } public static JsonObject readJsonFromZip(String fileName, ZipFile zipFile) throws IOException {