mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-19 04:15:14 -04:00
fix ChatMessageType reading in 1.19 + tests
This commit is contained in:
parent
48dbfdd780
commit
09aabd4075
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2022 Moritz Zwerger
|
||||
* Copyright (C) 2020-2023 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
@ -16,9 +16,10 @@ package de.bixilon.minosoft.data.registries.chat
|
||||
import de.bixilon.kutil.json.JsonObject
|
||||
import de.bixilon.kutil.json.JsonUtil.asJsonList
|
||||
import de.bixilon.kutil.json.JsonUtil.asJsonObject
|
||||
import de.bixilon.kutil.json.JsonUtil.toJsonObject
|
||||
import de.bixilon.minosoft.data.text.ChatComponent
|
||||
|
||||
class TypeProperties(
|
||||
data class TypeProperties(
|
||||
val translationKey: String,
|
||||
val parameters: List<ChatParameter>,
|
||||
val style: Map<String, Any>,
|
||||
@ -37,17 +38,19 @@ class TypeProperties(
|
||||
companion object {
|
||||
|
||||
fun deserialize(data: JsonObject): TypeProperties {
|
||||
val key = data["translation_key"]!!.toString()
|
||||
val decoration = data["decoration"]?.toJsonObject() ?: data
|
||||
|
||||
val key = decoration["translation_key"]!!.toString()
|
||||
var parameters: List<ChatParameter> = emptyList()
|
||||
|
||||
data["parameters"]?.asJsonList()?.let {
|
||||
decoration["parameters"]?.asJsonList()?.let {
|
||||
val list: MutableList<ChatParameter> = mutableListOf()
|
||||
for (entry in it) {
|
||||
list += ChatParameter[entry.toString()]
|
||||
}
|
||||
parameters = list
|
||||
}
|
||||
val style = data["style"]?.asJsonObject() ?: emptyMap()
|
||||
val style = decoration["style"]?.asJsonObject() ?: emptyMap()
|
||||
|
||||
return TypeProperties(key, parameters, style)
|
||||
}
|
||||
|
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Minosoft
|
||||
* Copyright (C) 2020-2023 Moritz Zwerger
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
* This software is not affiliated with Mojang AB, the original developer of Minecraft.
|
||||
*/
|
||||
|
||||
package de.bixilon.minosoft.data.registries.chat
|
||||
|
||||
import de.bixilon.minosoft.data.chat.ChatTextPositions
|
||||
import de.bixilon.minosoft.data.registries.identified.Namespaces.minosoft
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertNull
|
||||
|
||||
class ChatMessageTypeTest {
|
||||
|
||||
@Test
|
||||
fun decode1_19() {
|
||||
val data = mutableMapOf(
|
||||
"chat" to mutableMapOf(
|
||||
"decoration" to mutableMapOf(
|
||||
"translation_key" to "chat.type.text",
|
||||
"style" to emptyMap<String, Any>(),
|
||||
"parameters" to listOf("sender", "content")
|
||||
)
|
||||
)
|
||||
)
|
||||
val type = ChatMessageType.deserialize(null, minosoft("empty"), data)
|
||||
assertEquals(type.chat, TypeProperties("chat.type.text", listOf(ChatParameter.SENDER, ChatParameter.CONTENT), emptyMap()))
|
||||
assertEquals(type.position, ChatTextPositions.CHAT)
|
||||
assertNull(type.narration)
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user