0
0
mirror of https://github.com/Wurst-Imperium/Wurst7.git synced 2024-09-19 17:02:13 +02:00

Cache own message pattern for better performance

This commit is contained in:
Alexander01998 2024-07-22 17:23:00 +02:00
parent 0736af357b
commit 2ee6402c1a

View File

@ -40,6 +40,9 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener
+ " might not work correctly on some servers.", + " might not work correctly on some servers.",
true); true);
private Pattern ownMessagePattern;
private String lastUsername;
public ChatTranslatorHack() public ChatTranslatorHack()
{ {
super("ChatTranslator"); super("ChatTranslator");
@ -82,15 +85,22 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener
private boolean isOwnMessage(String message) private boolean isOwnMessage(String message)
{ {
// Escape username for regex updateOwnMessagePattern();
String playerName = Pattern.quote(MC.getSession().getUsername()); 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 rankPattern = "(?:\\[[^\\]]+\\] ?){0,2}";
String namePattern = Pattern.quote(username);
String regex = "^" + rankPattern + "[<\\[]?" + namePattern + "[>\\]:]";
// Build regex and check if it matches ownMessagePattern = Pattern.compile(regex);
String regex = "^" + rankPattern + "[<\\[]?" + playerName + "[>\\]:]"; lastUsername = username;
return Pattern.compile(regex).matcher(message).find();
} }
private void showTranslated(String message, Language fromLang, private void showTranslated(String message, Language fromLang,