aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/chat
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-05-03 19:34:32 +0200
committerLinnea Gräf <nea@nea.moe>2024-05-03 19:34:32 +0200
commit9ba9c9bf092b5873ab28162e105574d6c994300e (patch)
tree4d9b3bbdf4da18819e26fa8e9a4d4d5260ccf4dd /src/main/java/at/hannibal2/skyhanni/features/chat
parente210a5849b2c31628489568470580ec0416285e7 (diff)
downloadSkyHanni-feat/styledreplace.tar.gz
SkyHanni-feat/styledreplace.tar.bz2
SkyHanni-feat/styledreplace.zip
Basic styled replacefeat/styledreplace
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/chat')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatModifier.kt38
1 files changed, 25 insertions, 13 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatModifier.kt b/src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatModifier.kt
index 2fbb9630e..b9ef6588e 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatModifier.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatModifier.kt
@@ -4,36 +4,48 @@ import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.data.hypixel.chat.event.SystemMessageEvent
import at.hannibal2.skyhanni.features.misc.MarkedPlayerManager
+import at.hannibal2.skyhanni.utils.ComponentMatcher
+import at.hannibal2.skyhanni.utils.ComponentMatcherUtils.intoSpan
+import at.hannibal2.skyhanni.utils.ComponentMatcherUtils.replace
+import at.hannibal2.skyhanni.utils.ComponentSpan
import at.hannibal2.skyhanni.utils.StringUtils
import net.minecraft.util.ChatComponentText
+import net.minecraft.util.IChatComponent
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import java.util.regex.Pattern
class PlayerChatModifier {
private val config get() = SkyHanniMod.feature.chat.playerMessage
- private val patterns = mutableListOf<Regex>()
-
- init {
- patterns.add("§[ab6]\\[(?:VIP|MVP)(?:§.|\\+)*] {1,2}(?:§[7ab6])?(\\w{2,16})".toRegex()) // ranked player with prefix everywhere
- patterns.add("§[7ab6](\\w{2,16})§r(?!§7x)(?!\$)".toRegex()) // all players without rank prefix in notification messages
- }
+ private val patterns = listOf<Pair<Pattern, ComponentMatcher.() -> IChatComponent>>(
+ "\\[(?:VIP|MVP)(?:§.|\\+)*] {1,2}(?:§[7ab6])?(?<name>\\w{2,16})".toPattern() to {
+ ChatComponentText("§b").appendSibling(componentOrThrow("name"))
+ },
+ "§[7ab6](?<name>\\w{2,16})§r(?!§7x)(?!\$)".toPattern() to {
+ ChatComponentText("§b").appendSibling(componentOrThrow("name"))
+ },
+ "§[7ab6](?<name>\\w{2,16}'s)".toPattern() to {
+ ChatComponentText("§b").appendSibling(componentOrThrow("name"))
+ },
+ "§[7ab6](?<name>\\w{2,16} §.)".toPattern() to {
+ ChatComponentText("§b").appendSibling(componentOrThrow("name"))
+ }
+ )
@SubscribeEvent
fun onChat(event: SystemMessageEvent) {
- val newMessage = cutMessage(event.chatComponent.formattedText)
+ val newMessage = cutMessage(event.chatComponent.intoSpan())
- event.chatComponent = StringUtils.replaceIfNeeded(event.chatComponent, ChatComponentText(newMessage)) ?: return
+ event.chatComponent = StringUtils.replaceIfNeeded(event.chatComponent, newMessage.intoComponent()) ?: return
}
- private fun cutMessage(input: String): String {
+ private fun cutMessage(input: ComponentSpan): ComponentSpan {
var string = input
if (config.playerRankHider) {
- for (pattern in patterns) {
- string = string.replace(pattern, "§b$1")
+ for ((pattern, func) in patterns) {
+ string = string.replace(pattern, func).intoSpan()
}
- string = string.replace("§[7ab6]((?:\\w+){2,16})'s", "§b$1's")
- string = string.replace("§[7ab6]((?:\\w+){2,16}) (§.)", "§b$1 $2")
}
string = MarkedPlayerManager.replaceInChat(string)