package moe.nea.firmament.features.texturepack import java.util.regex.Matcher import util.json.CodecSerializer import kotlinx.serialization.Serializable import net.minecraft.text.Style import net.minecraft.text.Text import net.minecraft.text.TextCodecs 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) Text, ) object TextSerializer : CodecSerializer(TextCodecs.CODEC) object StyleSerializer : CodecSerializer