summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/chat
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/chat')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/chat/Translator.kt1
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/chat/playerchat/PlayerChatModifier.kt61
2 files changed, 7 insertions, 55 deletions
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<IChatComponent>()
- 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<IChatComponent>, 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
}