aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-10-30 04:41:40 +0100
committerGitHub <noreply@github.com>2024-10-30 14:41:40 +1100
commit2f4eda4736bd368afd5037ff221e5447ea93113c (patch)
tree65c85c38bbae8e4fec68dc07ce27d681326fc514 /src/main/java
parent79adf7aa070fbfaa23241c9b5b8495628650ef68 (diff)
downloadSkyHanni-2f4eda4736bd368afd5037ff221e5447ea93113c.tar.gz
SkyHanni-2f4eda4736bd368afd5037ff221e5447ea93113c.tar.bz2
SkyHanni-2f4eda4736bd368afd5037ff221e5447ea93113c.zip
Backend: getFormattedTextCompat method (#2811)
Co-authored-by: Cal <cwolfson58@gmail.com>
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/compat/TextCompat.kt53
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/compat/World.kt23
2 files changed, 55 insertions, 21 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/compat/TextCompat.kt b/src/main/java/at/hannibal2/skyhanni/utils/compat/TextCompat.kt
new file mode 100644
index 000000000..f34efe473
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/utils/compat/TextCompat.kt
@@ -0,0 +1,53 @@
+package at.hannibal2.skyhanni.utils.compat
+
+import net.minecraft.util.IChatComponent
+//#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
+
+fun IChatComponent.getDirectlyContainedText() =
+//#if MC < 1.16
+ this.unformattedTextForChat
+//#elseif MC < 1.20
+//$$ this.contents
+//#else
+//$$ (this.content as? PlainTextContent)?.string().orEmpty()
+//#endif
+
+fun IChatComponent.getFormattedTextCompat() =
+//#if MC < 1.16
+ this.formattedText
+//#else
+//$$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
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..6402e44b4 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/compat/World.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/compat/World.kt
@@ -6,7 +6,6 @@ import net.minecraft.entity.Entity
import net.minecraft.entity.item.EntityArmorStand
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.potion.Potion
-import net.minecraft.util.IChatComponent
fun WorldClient.getLoadedPlayers(): List<EntityPlayer> =
//#if MC < 1.14
@@ -15,18 +14,17 @@ fun WorldClient.getLoadedPlayers(): List<EntityPlayer> =
//$$ this.players()
//#endif
-
fun Entity.getNameAsString(): String =
this.name
//#if MC >= 1.14
-//$$ .getString()
+//$$ .string
//#endif
fun EntityArmorStand.getArmorOrFullInventory() =
//#if MC < 1.12
this.inventory
//#else
-//$$ this.getArmorInventoryList()
+//$$ this.armorInventoryList
//#endif
fun Minecraft.isOnMainThread() =
@@ -36,21 +34,6 @@ fun Minecraft.isOnMainThread() =
//$$ this.isSameThread
//#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()
-//$$ }
-//#endif
-
object Effects {
val invisibility =
//#if MC <1.12
@@ -59,5 +42,3 @@ object Effects {
//$$ net.minecraft.init.PotionTypes.INVISIBILITY
//#endif
}
-
-