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 351eeb7..ae97c19 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/MessageTypeGenerator.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/MessageTypeGenerator.kt @@ -8,8 +8,6 @@ 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 import net.minecraft.text.Style import net.minecraft.util.registry.Registry import java.util.* @@ -19,7 +17,7 @@ object MessageTypeGenerator : Generator( allowedFail = true, allowEmpty = true, ) { - private val DEFAULT_FONT = Util.MAPPER.convertValue>(Style.DEFAULT_FONT_ID, JSON_MAP_TYPE) + private val DEFAULT_FONT = getField(Style::class.java, "DEFAULT_FONT_ID")?.get(null)?.let { Util.MAPPER.convertValue>(it, JSON_MAP_TYPE) } val registry = getField(getClass("net.minecraft.util.registry.BuiltinRegistries"), "MESSAGE_TYPE")?.get(null) as Registry? @@ -37,28 +35,28 @@ object MessageTypeGenerator : Generator( json["id"] = registry.getRawId(type) getField(messageTypeClass, "chat")?.get(type)?.serializeChat()?.let { json["chat"] = it } - getField(messageTypeClass, "narration")?.get(type)?.nullCast()?.serialize()?.let { json["narration"] = it } + getField(messageTypeClass, "narration")?.get(type)?.nullCast()?.serializeDecoration()?.let { json["narration"] = it } this.data[identifier.toString()] = json } } private fun Any.serializeChat(): Map? { - if (this is Decoration) { - return this.serialize() + if (this::class.java.simpleName == "Decoration") { + return this.serializeDecoration() } - return getField(this::class.java, "decoration")?.nullCast>()?.get()?.serialize() + return getField(this::class.java, "decoration")?.get(this)?.nullCast>()?.get()?.serializeDecoration() } - fun Decoration.serialize(): Map { + fun Any.serializeDecoration(): Map { return mapOf( - "translation_key" to translationKey, - "parameters" to parameters.serialize(), - "style" to Util.MAPPER.convertValue>(style, JSON_MAP_TYPE).trimStyle(), + "translation_key" to getField(this::class.java, "translationKey")?.get(this), + "parameters" to getField(this::class.java, "parameters")?.get(this)?.nullCast>>()?.serializeParameter(), + "style" to Util.MAPPER.convertValue>(getField(this::class.java, "style")?.get(this), JSON_MAP_TYPE).trimStyle(), ) } - fun Collection.serialize(): List { + fun Collection>.serializeParameter(): List { val output: MutableList = mutableListOf() for (entry in this) {