From 2ee6402c1a97ffb09db0ac46a7776dd1f8c90f1b Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Mon, 22 Jul 2024 17:23:00 +0200 Subject: [PATCH] Cache own message pattern for better performance --- .../wurstclient/hacks/ChatTranslatorHack.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/wurstclient/hacks/ChatTranslatorHack.java b/src/main/java/net/wurstclient/hacks/ChatTranslatorHack.java index f72e9931..db92042b 100644 --- a/src/main/java/net/wurstclient/hacks/ChatTranslatorHack.java +++ b/src/main/java/net/wurstclient/hacks/ChatTranslatorHack.java @@ -40,6 +40,9 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener + " might not work correctly on some servers.", true); + private Pattern ownMessagePattern; + private String lastUsername; + public ChatTranslatorHack() { super("ChatTranslator"); @@ -82,15 +85,22 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener private boolean isOwnMessage(String message) { - // Escape username for regex - String playerName = Pattern.quote(MC.getSession().getUsername()); + updateOwnMessagePattern(); + return ownMessagePattern.matcher(message).find(); + } + + private void updateOwnMessagePattern() + { + String username = MC.getSession().getUsername(); + if(username.equals(lastUsername)) + return; - // Allow up to 2 ranks before the username String rankPattern = "(?:\\[[^\\]]+\\] ?){0,2}"; + String namePattern = Pattern.quote(username); + String regex = "^" + rankPattern + "[<\\[]?" + namePattern + "[>\\]:]"; - // Build regex and check if it matches - String regex = "^" + rankPattern + "[<\\[]?" + playerName + "[>\\]:]"; - return Pattern.compile(regex).matcher(message).find(); + ownMessagePattern = Pattern.compile(regex); + lastUsername = username; } private void showTranslated(String message, Language fromLang,