mirror of
https://github.com/Wurst-Imperium/Wurst7.git
synced 2024-09-19 17:02:13 +02:00
Create FilterOwnMessagesSetting to handle own message detection
This commit is contained in:
parent
2ee6402c1a
commit
2bd08f5220
@ -7,13 +7,11 @@
|
||||
*/
|
||||
package net.wurstclient.hacks;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.wurstclient.Category;
|
||||
import net.wurstclient.SearchTags;
|
||||
import net.wurstclient.events.ChatInputListener;
|
||||
import net.wurstclient.hack.Hack;
|
||||
import net.wurstclient.settings.CheckboxSetting;
|
||||
import net.wurstclient.hacks.chattranslator.FilterOwnMessagesSetting;
|
||||
import net.wurstclient.settings.LanguageSetting;
|
||||
import net.wurstclient.settings.LanguageSetting.Language;
|
||||
import net.wurstclient.util.ChatUtils;
|
||||
@ -32,16 +30,8 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener
|
||||
private final LanguageSetting translateTo =
|
||||
LanguageSetting.withoutAutoDetect("Translate to", Language.ENGLISH);
|
||||
|
||||
private final CheckboxSetting filterOwnMessages = new CheckboxSetting(
|
||||
"Filter own messages",
|
||||
"Won't translate messages that appear to be sent by you.\n"
|
||||
+ "It tries to detect your messages based on common chat formats"
|
||||
+ " like \"<username>\", \"[username]\", or \"username:\". This"
|
||||
+ " might not work correctly on some servers.",
|
||||
true);
|
||||
|
||||
private Pattern ownMessagePattern;
|
||||
private String lastUsername;
|
||||
private final FilterOwnMessagesSetting filterOwnMessages =
|
||||
new FilterOwnMessagesSetting();
|
||||
|
||||
public ChatTranslatorHack()
|
||||
{
|
||||
@ -75,7 +65,8 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener
|
||||
|| message.startsWith(toLang.getPrefix()))
|
||||
return;
|
||||
|
||||
if(filterOwnMessages.isChecked() && isOwnMessage(message))
|
||||
if(filterOwnMessages.isChecked()
|
||||
&& filterOwnMessages.isOwnMessage(message))
|
||||
return;
|
||||
|
||||
Thread.ofVirtual().name("ChatTranslator")
|
||||
@ -83,26 +74,6 @@ public final class ChatTranslatorHack extends Hack implements ChatInputListener
|
||||
.start(() -> showTranslated(message, fromLang, toLang));
|
||||
}
|
||||
|
||||
private boolean isOwnMessage(String message)
|
||||
{
|
||||
updateOwnMessagePattern();
|
||||
return ownMessagePattern.matcher(message).find();
|
||||
}
|
||||
|
||||
private void updateOwnMessagePattern()
|
||||
{
|
||||
String username = MC.getSession().getUsername();
|
||||
if(username.equals(lastUsername))
|
||||
return;
|
||||
|
||||
String rankPattern = "(?:\\[[^\\]]+\\] ?){0,2}";
|
||||
String namePattern = Pattern.quote(username);
|
||||
String regex = "^" + rankPattern + "[<\\[]?" + namePattern + "[>\\]:]";
|
||||
|
||||
ownMessagePattern = Pattern.compile(regex);
|
||||
lastUsername = username;
|
||||
}
|
||||
|
||||
private void showTranslated(String message, Language fromLang,
|
||||
Language toLang)
|
||||
{
|
||||
|
@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) 2014-2024 Wurst-Imperium and contributors.
|
||||
*
|
||||
* This source code is subject to the terms of the GNU General Public
|
||||
* License, version 3. If a copy of the GPL was not distributed with this
|
||||
* file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt
|
||||
*/
|
||||
package net.wurstclient.hacks.chattranslator;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import net.wurstclient.WurstClient;
|
||||
import net.wurstclient.settings.CheckboxSetting;
|
||||
|
||||
public class FilterOwnMessagesSetting extends CheckboxSetting
|
||||
{
|
||||
private Pattern ownMessagePattern;
|
||||
private String lastUsername;
|
||||
|
||||
public FilterOwnMessagesSetting()
|
||||
{
|
||||
super("Filter own messages",
|
||||
"Won't translate messages that appear to be sent by you.\n"
|
||||
+ "It tries to detect your messages based on common chat formats"
|
||||
+ " like \"<username>\", \"[username]\", or \"username:\". This"
|
||||
+ " might not work correctly on some servers.",
|
||||
true);
|
||||
}
|
||||
|
||||
public boolean isOwnMessage(String message)
|
||||
{
|
||||
updateOwnMessagePattern();
|
||||
return ownMessagePattern.matcher(message).find();
|
||||
}
|
||||
|
||||
private void updateOwnMessagePattern()
|
||||
{
|
||||
String username = WurstClient.MC.getSession().getUsername();
|
||||
if(username.equals(lastUsername))
|
||||
return;
|
||||
|
||||
String rankPattern = "(?:\\[[^\\]]+\\] ?){0,2}";
|
||||
String namePattern = Pattern.quote(username);
|
||||
String regex = "^" + rankPattern + "[<\\[]?" + namePattern + "[>\\]:]";
|
||||
|
||||
ownMessagePattern = Pattern.compile(regex);
|
||||
lastUsername = username;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user