From a22f2364742b5d061160c32c5b2f144d6cb75ce1 Mon Sep 17 00:00:00 2001 From: My-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com> Date: Sat, 26 Apr 2025 01:09:09 -0400 Subject: [PATCH 1/2] UTextComponent: fix inconsistencies in `toFormattedString` --- .../gg/essential/universal/utils/textUtils.kt | 65 ++++++------------- 1 file changed, 21 insertions(+), 44 deletions(-) diff --git a/src/main/kotlin/gg/essential/universal/utils/textUtils.kt b/src/main/kotlin/gg/essential/universal/utils/textUtils.kt index 509592a..9ccd4a9 100644 --- a/src/main/kotlin/gg/essential/universal/utils/textUtils.kt +++ b/src/main/kotlin/gg/essential/universal/utils/textUtils.kt @@ -3,59 +3,30 @@ package gg.essential.universal.utils import net.minecraft.util.IChatComponent //#if MC>=11600 -//$$ import net.minecraft.util.ICharacterConsumer //$$ import net.minecraft.util.text.Color //$$ import net.minecraft.util.text.Style //$$ import net.minecraft.util.text.TextFormatting +//$$ import java.util.Optional //#endif //#if MC>=11602 -//$$ private class TextBuilder(private val isFormatted: Boolean) : ICharacterConsumer { -//$$ private val builder = StringBuilder() -//$$ private var cachedStyle: Style? = null +//$$ private val colorToFormatChar = TextFormatting.values().mapNotNull { format -> +//$$ Color.fromTextFormatting(format)?.let { it to format } +//$$ }.toMap() //$$ -//$$ override fun accept(index: Int, style: Style, codePoint: Int): Boolean { -//$$ if (isFormatted && style != cachedStyle) { -//$$ cachedStyle = style -//$$ builder.append(formatString(style)) -//$$ } -//$$ -//$$ builder.append(codePoint.toChar()) -//$$ return true -//$$ } -//$$ -//$$ fun getString() = builder.toString() -//$$ -//$$ private fun formatString(style: Style): String { -//$$ val builder = StringBuilder("§r") -//$$ -//$$ when { -//$$ style.bold -> builder.append("§l") -//$$ style.italic -> builder.append("§o") -//$$ style.underlined -> builder.append("§n") -//$$ style.strikethrough -> builder.append("§m") -//$$ style.obfuscated -> builder.append("§k") -//$$ } -//$$ -//$$ style.color?.let(colorToFormatChar::get)?.let { -//$$ builder.append(it) -//$$ } -//$$ return builder.toString() -//$$ } -//$$ -//$$ companion object { -//$$ private val colorToFormatChar = TextFormatting.values().mapNotNull { format -> -//$$ Color.fromTextFormatting(format)?.let { it to format } -//$$ }.toMap() -//$$ } +//$$ private fun formatString(style: Style): String = buildString { +//$$ style.color?.let(colorToFormatChar::get)?.let(::append) +//$$ if (style.isBold) append("§l") +//$$ if (style.isItalic) append("§o") +//$$ if (style.isUnderlined) append("§n") +//$$ if (style.isObfuscated) append("§k") +//$$ if (style.isStrikethrough) append("§m") //$$ } //#endif fun IChatComponent.toUnformattedString(): String { //#if MC>=11600 - //$$ val builder = TextBuilder(false) - //$$ func_241878_f().accept(builder) - //$$ return builder.getString() + //$$ return string //#else return unformattedText //#endif @@ -63,9 +34,15 @@ fun IChatComponent.toUnformattedString(): String { fun IChatComponent.toFormattedString(): String { //#if MC>=11600 - //$$ val builder = TextBuilder(true) - //$$ func_241878_f().accept(builder) - //$$ return builder.getString() + //$$ return buildString { + //$$ append(formatString(style)) + //$$ this@toFormattedString.visit { + //$$ append(it) + //$$ Optional.empty() + //$$ } + //$$ append("§r") + //$$ siblings.forEach { append(it.toFormattedString()) } + //$$ } //#else return formattedText //#endif From 42dbd9113bea74d8255ac9255c20b65f64244d56 Mon Sep 17 00:00:00 2001 From: My-Name-Is-Jeff <37018278+My-Name-Is-Jeff@users.noreply.github.com> Date: Sat, 26 Apr 2025 02:20:28 -0400 Subject: [PATCH 2/2] fix mapping issues I accidentally used yarn instead of MCP --- .../kotlin/gg/essential/universal/utils/textUtils.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/gg/essential/universal/utils/textUtils.kt b/src/main/kotlin/gg/essential/universal/utils/textUtils.kt index 9ccd4a9..7e9a512 100644 --- a/src/main/kotlin/gg/essential/universal/utils/textUtils.kt +++ b/src/main/kotlin/gg/essential/universal/utils/textUtils.kt @@ -16,11 +16,11 @@ import net.minecraft.util.IChatComponent //$$ //$$ private fun formatString(style: Style): String = buildString { //$$ style.color?.let(colorToFormatChar::get)?.let(::append) -//$$ if (style.isBold) append("§l") -//$$ if (style.isItalic) append("§o") -//$$ if (style.isUnderlined) append("§n") -//$$ if (style.isObfuscated) append("§k") -//$$ if (style.isStrikethrough) append("§m") +//$$ if (style.bold) append("§l") +//$$ if (style.italic) append("§o") +//$$ if (style.underlined) append("§n") +//$$ if (style.obfuscated) append("§k") +//$$ if (style.strikethrough) append("§m") //$$ } //#endif @@ -36,7 +36,7 @@ fun IChatComponent.toFormattedString(): String { //#if MC>=11600 //$$ return buildString { //$$ append(formatString(style)) - //$$ this@toFormattedString.visit { + //$$ this@toFormattedString.getComponent { //$$ append(it) //$$ Optional.empty() //$$ }