diff --git a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/MessageTypeGenerator.kt b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/MessageTypeGenerator.kt index 0217b7c..351eeb7 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/MessageTypeGenerator.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/MessageTypeGenerator.kt @@ -6,6 +6,7 @@ import de.bixilon.pixlyzer.util.ReflectionUtil.getField import de.bixilon.pixlyzer.util.Util import de.bixilon.pixlyzer.util.Util.JSON_MAP_TYPE import de.bixilon.pixlyzer.util.Util.compound +import de.bixilon.pixlyzer.util.Util.mapCast import de.bixilon.pixlyzer.util.Util.nullCast import net.minecraft.text.Decoration import net.minecraft.text.Decoration.Parameter @@ -42,14 +43,14 @@ object MessageTypeGenerator : Generator( } } - private fun Any.serializeChat(): Map? { + private fun Any.serializeChat(): Map? { if (this is Decoration) { return this.serialize() } return getField(this::class.java, "decoration")?.nullCast>()?.get()?.serialize() } - fun Decoration.serialize(): Map { + fun Decoration.serialize(): Map { return mapOf( "translation_key" to translationKey, "parameters" to parameters.serialize(), @@ -67,8 +68,11 @@ object MessageTypeGenerator : Generator( return output } - fun MutableMap.trimStyle(): Map { - removeIf("empty") { it == true } + fun MutableMap.trimStyle(): Map? { + if (this["empty"] == true) { + return null + } + remove("empty") removeIf("underlined") { it == false } removeIf("strikethrough") { it == false } removeIf("bold") { it == false } @@ -76,6 +80,15 @@ object MessageTypeGenerator : Generator( removeIf("obfuscated") { it == false } removeIf("font") { it == DEFAULT_FONT } + this.remove("color")?.mapCast()?.let { color -> + val name = color["name"] + if (name != null) { + this["color"] = name + return@let + } + this["color"] = color["hexCode"]!! + } + return this }