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 257eb4b17..5a7c68898 100644 --- a/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt +++ b/src/main/java/de/bixilon/minosoft/data/text/BaseComponent.kt @@ -93,7 +93,8 @@ class BaseComponent : ChatComponent { val with: MutableList = mutableListOf() json["with"].toJsonList()?.let { withArray -> for (part in withArray) { - with.add(part ?: continue) + if (part == null) continue + with += ChatComponent.of(raw = part, translator, component, restricted = restrictedMode) } } val fallback = json["fallback"]?.toString() diff --git a/src/test/java/de/bixilon/minosoft/data/text/ChatComponentTest.kt b/src/test/java/de/bixilon/minosoft/data/text/ChatComponentTest.kt index 1f93cab0d..00e180b7d 100644 --- a/src/test/java/de/bixilon/minosoft/data/text/ChatComponentTest.kt +++ b/src/test/java/de/bixilon/minosoft/data/text/ChatComponentTest.kt @@ -14,6 +14,7 @@ package de.bixilon.minosoft.data.text import de.bixilon.kutil.url.URLUtil.toURL +import de.bixilon.minosoft.data.language.lang.Language import de.bixilon.minosoft.data.text.ChatComponent.Companion.chat import de.bixilon.minosoft.data.text.events.click.OpenFileClickEvent import de.bixilon.minosoft.data.text.events.click.OpenURLClickEvent @@ -234,6 +235,17 @@ internal class ChatComponentTest { assertEquals(text, expected) } + @Test + fun `Nested translations`() { + val language = Language("en_US", mutableMapOf( + "gameMode.changed" to "Dein Spielmodus wurde zu %s geändert", + "gameMode.creative" to "Kreativmodus", + )) + val text = ChatComponent.of("""{"translate":"gameMode.changed","with":[{"translate":"gameMode.creative"}]}""", translator = language) + val expected = BaseComponent(TextComponent("Dein Spielmodus wurde zu "), TextComponent("Kreativmodus"), TextComponent(" geändert")) + assertEquals(text, expected) + } + private fun assertEquals(expected: ChatComponent, actual: ChatComponent) { when (expected) { is BaseComponent -> {