From 4850cb09c1bfaaa59be4dba98ac157b4857bf256 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Wed, 11 Oct 2023 23:07:51 +0200 Subject: [PATCH] add .assets file for fallback assets root, provide fallback if root assets not found --- .../de/bixilon/minosoft/assets/file/ResourcesAssetsUtil.kt | 7 +++++-- src/main/resources/assets/.assets | 0 src/main/resources/assets_override/.assets | 0 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/assets/.assets create mode 100644 src/main/resources/assets_override/.assets diff --git a/src/main/java/de/bixilon/minosoft/assets/file/ResourcesAssetsUtil.kt b/src/main/java/de/bixilon/minosoft/assets/file/ResourcesAssetsUtil.kt index bfb791ea8..53483ecec 100644 --- a/src/main/java/de/bixilon/minosoft/assets/file/ResourcesAssetsUtil.kt +++ b/src/main/java/de/bixilon/minosoft/assets/file/ResourcesAssetsUtil.kt @@ -19,7 +19,6 @@ import de.bixilon.minosoft.assets.resource.ResourceAssetsManager import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType -import java.io.FileNotFoundException import java.net.URLDecoder import java.nio.charset.StandardCharsets @@ -27,7 +26,11 @@ import java.nio.charset.StandardCharsets object ResourcesAssetsUtil { fun create(clazz: Class<*>, canUnload: Boolean = true, prefix: String = AssetsManager.DEFAULT_ASSETS_PREFIX): AssetsManager { - val rootResources = clazz.classLoader.getResource(prefix) ?: throw FileNotFoundException("Can not find assets root for $clazz") + val rootResources = clazz.classLoader.getResource(prefix) ?: clazz.classLoader.getResource("$prefix/.assets") + if (rootResources == null) { + Log.log(LogMessageType.OTHER, LogLevels.FATAL) { "Can not find \"$prefix\" assets root for $clazz" } + return ResourceAssetsManager(clazz, prefix) + } return when (rootResources.protocol) { "file" -> DirectoryAssetsManager(rootResources.path.removeSuffix("/").removeSuffix(prefix), canUnload, prefix) // Read them directly from the folder diff --git a/src/main/resources/assets/.assets b/src/main/resources/assets/.assets new file mode 100644 index 000000000..e69de29bb diff --git a/src/main/resources/assets_override/.assets b/src/main/resources/assets_override/.assets new file mode 100644 index 000000000..e69de29bb