From d9e26b1b862ea1f76c9f036d23a5b7eca1108474 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Fri, 16 Jun 2023 16:11:34 +0200 Subject: [PATCH] fix reference font provider --- .../registries/identified/ResourceLocation.kt | 11 ++++++----- .../gui/rendering/font/loader/FontLoader.kt | 2 +- .../rendering/font/types/ReferenceFontType.kt | 17 +++-------------- 3 files changed, 10 insertions(+), 20 deletions(-) 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) } - }