From f8efe9effd27bee18bced64385fc1ad9b05b68bd Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal002@users.noreply.github.com> Date: Fri, 19 Apr 2024 11:24:36 +0200 Subject: Feature + Fix: Player Chat Rework (#1483) Co-authored-by: CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- .../hannibal2/skyhanni/features/chat/Translator.kt | 1 + .../features/chat/playerchat/PlayerChatModifier.kt | 61 +++------------------- 2 files changed, 7 insertions(+), 55 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/features/chat') diff --git a/src/main/java/at/hannibal2/skyhanni/features/chat/Translator.kt b/src/main/java/at/hannibal2/skyhanni/features/chat/Translator.kt index 4e02f89f3..8e61f4b6c 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/chat/Translator.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/chat/Translator.kt @@ -31,6 +31,7 @@ class Translator { if (!isEnabled()) return val message = event.message + // TODO use PlayerAllChatEvent and other player chat events if (message.getPlayerNameFromChatMessage() == null) return val editedComponent = event.chatComponent.transformIf({ siblings.isNotEmpty() }) { siblings.last() } 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 087769645..4aabeaf6c 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 @@ -2,12 +2,9 @@ package at.hannibal2.skyhanni.features.chat.playerchat import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator -import at.hannibal2.skyhanni.events.LorenzChatEvent -import at.hannibal2.skyhanni.features.dungeon.DungeonMilestonesDisplay +import at.hannibal2.skyhanni.data.hypixel.chat.event.SystemMessageEvent import at.hannibal2.skyhanni.features.misc.MarkedPlayerManager -import at.hannibal2.skyhanni.utils.StringUtils.matches -import net.minecraft.util.ChatComponentText -import net.minecraft.util.IChatComponent +import at.hannibal2.skyhanni.utils.StringUtils import net.minecraftforge.fml.common.eventhandler.SubscribeEvent class PlayerChatModifier { @@ -18,44 +15,13 @@ class PlayerChatModifier { 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 - patterns.add("(?:§7 )?§7(\\w{2,16})§7§r".toRegex()) // nons user chat } @SubscribeEvent - fun onChat(event: LorenzChatEvent) { - val foundCommands = mutableListOf() - val message = event.chatComponent + fun onChat(event: SystemMessageEvent) { + val newMessage = cutMessage(event.chatComponent.formattedText) - addComponent(foundCommands, event.chatComponent) - for (sibling in message.siblings) { - addComponent(foundCommands, sibling) - } - - val size = foundCommands.size - if (size > 1) { - return - } - val original = event.chatComponent.formattedText - val newText = cutMessage(original) - if (original == newText) return - - val text = ChatComponentText(newText) - if (size == 1) { - val chatStyle = foundCommands[0].chatStyle - text.chatStyle.chatClickEvent = chatStyle.chatClickEvent - text.chatStyle.chatHoverEvent = chatStyle.chatHoverEvent - } - event.chatComponent = text - } - - private fun addComponent(foundCommands: MutableList, message: IChatComponent) { - val clickEvent = message.chatStyle.chatClickEvent - if (clickEvent != null) { - if (foundCommands.size == 1 && foundCommands[0].chatStyle.chatClickEvent.value == clickEvent.value) { - return - } - foundCommands.add(message) - } + event.chatComponent = StringUtils.replaceIfNeeded(event.chatComponent, newMessage) ?: return } private fun cutMessage(input: String): String { @@ -67,24 +33,9 @@ class PlayerChatModifier { } string = string.replace("§[7ab6]((?:\\w+){2,16})'s", "§b$1's") string = string.replace("§[7ab6]((?:\\w+){2,16}) (§.)", "§b$1 $2") - - // TODO remove workaround - if (!DungeonMilestonesDisplay.milestonePattern.matches(input)) { - // all players same color in chat - string = string.replace("§r§7: ", "§r§f: ") - } } - if (config.chatFilter && string.contains("§r§f: ") && PlayerChatFilter.shouldChatFilter(string)) { - string = string.replace("§r§f: ", "§r§7: ") - } - - if (MarkedPlayerManager.config.highlightInChat) { - val color = MarkedPlayerManager.config.chatColor.getChatColor() - for (markedPlayer in MarkedPlayerManager.playerNamesToMark) { - string = string.replace(markedPlayer, "$color$markedPlayer§r") - } - } + string = MarkedPlayerManager.replaceInChat(string) return string } -- cgit