From f36ef92c5df4a8257b17758a6170bfd6b2b6ffab Mon Sep 17 00:00:00 2001 From: CalMWolfs <94038482+CalMWolfs@users.noreply.github.com> Date: Mon, 16 Oct 2023 20:13:09 +1100 Subject: Fix: Chat symbols (#567) Hopefully fixed all chat symbol issues and removed the chat symbols on private messages. #567 --- .../at/hannibal2/skyhanni/utils/StringUtils.kt | 34 +++++++++++++--------- 1 file changed, 21 insertions(+), 13 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/utils') diff --git a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt index 2e0a57c53..187407cbf 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt @@ -15,8 +15,8 @@ import java.util.regex.Matcher import java.util.regex.Pattern object StringUtils { - private val playerChatPattern = ".*§[f7]: .*".toPattern() - private val chatUsernamePattern = "^(?:\\[\\d+] )?(?:\\S )?(?:\\[\\w.+] )?(?\\w+)(?: \\[.+?])?\$".toPattern() + private val playerChatPattern = "(?.*?)(?:§[f7r])*: .*".toPattern() + private val chatUsernamePattern = "^(?:§\\w\\[§\\w\\d+§\\w] )?(?:(?:§\\w)+\\S )?(?(?:§\\w\\[\\w.+] )?(?:§\\w)?(?\\w+))(?: (?:§\\w)?\\[.+?])?".toPattern() private val whiteSpaceResetPattern = "^(?:\\s|§r)*|(?:\\s|§r)*$".toPattern() private val resetPattern = "(?i)§R".toPattern() @@ -201,24 +201,32 @@ object StringUtils { } fun String.getPlayerNameFromChatMessage(): String? { - if (!playerChatPattern.matcher(this).matches()) return null + val matcher = matchPlayerChatMessage(this) ?: return null + return matcher.group("username") + } - var username = this.removeColor().split(":")[0] + fun String.getPlayerNameAndRankFromChatMessage(): String? { + val matcher = matchPlayerChatMessage(this) ?: return null + return matcher.group("rankedName") + } + + private fun matchPlayerChatMessage(string: String): Matcher? { + var username = "" + var matcher = playerChatPattern.matcher(string) + if (matcher.matches()) { + username = matcher.group("important").removeResets() + } + if (username == "") return null if (username.contains(">")) { username = username.substring(username.indexOf('>') + 1).trim() } - if (username.startsWith("From ")) { - username = username.removePrefix("From ") - } - if (username.startsWith("To ")) { - username = username.removePrefix("To ") - } - val matcher = chatUsernamePattern.matcher(username) + username = username.removePrefix("§dFrom ") + username = username.removePrefix("§dTo ") - if (!matcher.matches()) return null - return matcher.group("username") + matcher = chatUsernamePattern.matcher(username) + return if (matcher.matches()) matcher else null } fun String.convertToFormatted(): String { -- cgit