diff options
| author | Linnea Gräf <nea@nea.moe> | 2024-10-24 14:11:25 +0200 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2024-10-24 15:44:48 +0200 |
| commit | c1abe20e27b53834759c98b66cbf1ae17c4da36a (patch) | |
| tree | 1f1ba22287e563e887015c298b767824b2e767ce /src | |
| parent | 2e7e0e801551d2a904b4c095a09ee5f349bbd29b (diff) | |
| download | SkyHanni-c1abe20e27b53834759c98b66cbf1ae17c4da36a.tar.gz SkyHanni-c1abe20e27b53834759c98b66cbf1ae17c4da36a.tar.bz2 SkyHanni-c1abe20e27b53834759c98b66cbf1ae17c4da36a.zip | |
Fix getFormattedTextCompat method
This method allows getting 1.8.9 like formattedtext on 1.21
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/utils/compat/World.kt | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/compat/World.kt b/src/main/java/at/hannibal2/skyhanni/utils/compat/World.kt index 7916eb4e5..827e7d3cf 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/compat/World.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/compat/World.kt @@ -1,5 +1,13 @@ package at.hannibal2.skyhanni.utils.compat +//#if MC > 1.16 +//$$import net.minecraft.ChatFormatting +//$$import net.minecraft.network.chat.TextColor +//#endif +//#if MC > 1.20 +//$$import net.minecraft.text.MutableText +//$$import net.minecraft.text.PlainTextContent +//#endif import net.minecraft.client.Minecraft import net.minecraft.client.multiplayer.WorldClient import net.minecraft.entity.Entity @@ -36,19 +44,44 @@ fun Minecraft.isOnMainThread() = //$$ this.isSameThread //#endif +fun IChatComponent.getDirectlyContainedText() = +//#if MC < 1.16 + this.unformattedTextForChat +//#elseif MC < 1.20 +//$$ this.contents +//#else +//$$ (this.content as? PlainTextContent)?.string() ?: "" +//#endif fun IChatComponent.getFormattedTextCompat() = //#if MC < 1.16 this.formattedText //#else -//$$ run { -//$$ val sb = StringBuilder() -//$$ for (component in iterator()) { -//$$ sb.append(component.style.formattingCode) -//$$ sb.append(component.unformattedComponentText) -//$$ sb.append("§r") -//$$ } -//$$ sb.toString() -//$$ } +//$$run { +//$$ val sb = StringBuilder() +//$$ for (component in iterator()) { +//$$ sb.append(component.style.color?.toChatFormatting()?.toString() ?: "§r") +//$$ sb.append(component.getDirectlyContainedText()) +//$$ sb.append("§r") +//$$ } +//$$ sb.toString() +//$$} +//$$ +//$$private val textColorLUT = ChatFormatting.entries +//$$ .mapNotNull { formatting -> formatting.color?.let { it to formatting } } +//$$ .toMap() +//$$ +//$$fun TextColor.toChatFormatting(): ChatFormatting? { +//$$ return textColorLUT[this.value] +//$$} +//$$ +//$$fun Component.iterator(): Sequence<Component> { +//$$ return sequenceOf(this) + siblings.asSequence().flatMap { it.iterator() } // TODO: in theory we want to properly inherit styles here +//$$} +//#endif +//#if MC > 1.20 +//$$fun MutableText.withColor(formatting: Formatting): Text { +//$$ return this.styled { it.withColor(formatting) } +//$$} //#endif object Effects { |
