package moe.nea.firmament.features.texturepack import java.util.regex.Matcher import util.json.CodecSerializer import kotlinx.serialization.Serializable import net.minecraft.network.chat.Style import net.minecraft.network.chat.Component import net.minecraft.network.chat.ComponentSerialization import moe.nea.firmament.util.directLiteralStringContent import moe.nea.firmament.util.transformEachRecursively @Serializable data class TreeishTextReplacer( val match: StringMatcher, val replacements: List ) { @Serializable data class SubPartReplacement( val match: StringMatcher, val style: @Serializable(StyleSerializer::class) Style? = null, val replace: @Serializable(TextSerializer::class) Component, ) object TextSerializer : CodecSerializer(ComponentSerialization.CODEC) object StyleSerializer : CodecSerializer