diff --git a/src/main/java/de/bixilon/minosoft/data/registries/identified/ResourceLocation.kt b/src/main/java/de/bixilon/minosoft/data/registries/identified/ResourceLocation.kt index 762510306..8463e4e36 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/identified/ResourceLocation.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/identified/ResourceLocation.kt @@ -44,15 +44,16 @@ open class ResourceLocation( // throw IllegalArgumentException("Path '$path' is not allowed!") } - /** - * Adds a prefix to the path of this resource location. - * - * @param prefix The prefix to add - */ fun prefix(prefix: String): ResourceLocation { + if (path.startsWith(prefix)) return this return ResourceLocation(namespace, prefix + path) } + fun suffix(suffix: String): ResourceLocation { + if (path.endsWith(suffix)) return this + return ResourceLocation(namespace, path + suffix) + } + /** * @return If the namespace is "minecraft", the path is returned. Otherwise, the full string is returned. */ diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/loader/FontLoader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/loader/FontLoader.kt index fb8966ad8..cf8cbd127 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/loader/FontLoader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/loader/FontLoader.kt @@ -31,7 +31,7 @@ import de.bixilon.minosoft.util.nbt.tag.NBTUtil.listCast object FontLoader { - fun load(context: RenderContext, fontIndex: ResourceLocation, latch: AbstractLatch): Font? { + fun load(context: RenderContext, fontIndex: ResourceLocation, latch: AbstractLatch?): Font? { val fontIndex = context.connection.assetsManager.getOrNull(fontIndex)?.readJsonObject() ?: return null val providersRaw = fontIndex["providers"].listCast>()!! diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/ReferenceFontType.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/ReferenceFontType.kt index b0ba67d79..c28bce8ee 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/ReferenceFontType.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/font/types/ReferenceFontType.kt @@ -14,28 +14,17 @@ package de.bixilon.minosoft.gui.rendering.font.types import de.bixilon.kutil.json.JsonObject -import de.bixilon.minosoft.assets.util.InputStreamUtil.readJsonObject import de.bixilon.minosoft.data.registries.identified.Namespaces.minecraft import de.bixilon.minosoft.gui.rendering.RenderContext +import de.bixilon.minosoft.gui.rendering.font.loader.FontLoader import de.bixilon.minosoft.gui.rendering.font.types.factory.FontTypeFactory -import de.bixilon.minosoft.gui.rendering.font.types.factory.FontTypes import de.bixilon.minosoft.util.KUtil.toResourceLocation -import de.bixilon.minosoft.util.logging.Log -import de.bixilon.minosoft.util.logging.LogLevels -import de.bixilon.minosoft.util.logging.LogMessageType object ReferenceFontType : FontTypeFactory { override val identifier = minecraft("reference") override fun build(context: RenderContext, data: JsonObject): FontType? { - val id = data["id"]?.toResourceLocation()?.prefix("font/") ?: throw IllegalArgumentException("id missing!") - val factory = FontTypes[id] - if (factory == null) { - Log.log(LogMessageType.ASSETS, LogLevels.WARN) { "Unknown font type $id" } - return null - } - - return factory.build(context, context.connection.assetsManager[id].readJsonObject()) + val index = data["id"]?.toResourceLocation()?.prefix("font/")?.suffix(".json") ?: throw IllegalArgumentException("id missing!") + return FontLoader.load(context, index, null) } - }