From 7307a22000c4617be882c8ec1dc0ffc69be66f81 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 8 May 2023 14:35:38 +0200 Subject: [PATCH] text: BaseComponent outsource with translation formatting --- .../minosoft/data/text/BaseComponent.kt | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt b/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt index 5a7c68898..aef9eb93e 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt @@ -14,6 +14,8 @@ package de.bixilon.minosoft.data.text import de.bixilon.kutil.cast.CastUtil.nullCast +import de.bixilon.kutil.cast.CastUtil.unsafeCast +import de.bixilon.kutil.json.JsonObject import de.bixilon.kutil.json.JsonUtil.toJsonList import de.bixilon.kutil.json.JsonUtil.toJsonObject import de.bixilon.kutil.primitive.BooleanUtil.toBoolean @@ -90,15 +92,9 @@ class BaseComponent : ChatComponent { parseExtra() json["translate"]?.toString()?.let { - val with: MutableList = mutableListOf() - json["with"].toJsonList()?.let { withArray -> - for (part in withArray) { - if (part == null) continue - with += ChatComponent.of(raw = part, translator, component, restricted = restrictedMode) - } - } + val with: Array = json.with(translator, component, restrictedMode) ?: emptyArray() val fallback = json["fallback"]?.toString() - this += translator?.forceTranslate(it.toResourceLocation(), component, restrictedMode, fallback, *with.toTypedArray()) ?: ChatComponent.of(json["with"], translator, component, restrictedMode) + this += translator?.forceTranslate(it.toResourceLocation(), component, restrictedMode, fallback, data = with.unsafeCast()) ?: ChatComponent.of(json["with"], translator, component, restrictedMode) } } @@ -276,4 +272,15 @@ class BaseComponent : ChatComponent { } } } + + private fun JsonObject.with(translator: Translator?, parent: TextComponent, restricted: Boolean): Array? { + val with = this["with"]?.toJsonList() ?: return null + val parts: MutableList = mutableListOf() + for (part in with) { + if (part == null) continue + parts += ChatComponent.of(raw = part, translator, parent, restricted = restricted) + } + + return parts.toTypedArray() + } }