mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-15 02:15:34 -04:00
chat: allow nested translations
This should fix some bugs in 1.19 where chat messages appear missing. Yes, it will crash with a StackOverflow when using it arbitrary :)
This commit is contained in:
parent
ceebf63c3c
commit
030ea52a6c
@ -93,7 +93,8 @@ class BaseComponent : ChatComponent {
|
||||
val with: MutableList<Any> = 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()
|
||||
|
@ -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 -> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user