From b537cabbe02587ff8eb8d9182af7fe24deb01048 Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Mon, 19 Jun 2023 16:27:43 +0700 Subject: [PATCH] improve filter (mabe) --- .../chomens_bot/commands/FilterCommand.java | 2 + .../chomens_bot/plugins/FilterPlugin.java | 52 +++++++++++++++++-- 2 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/FilterCommand.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/FilterCommand.java index f74bc096..711e6bc0 100644 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/FilterCommand.java +++ b/src/main/java/land/chipmunk/chayapak/chomens_bot/commands/FilterCommand.java @@ -37,6 +37,8 @@ public class FilterCommand implements Command { public List alias() { final List aliases = new ArrayList<>(); aliases.add("filterplayer"); + aliases.add("ban"); + aliases.add("blacklist"); return aliases; } diff --git a/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/FilterPlugin.java b/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/FilterPlugin.java index 03466b9d..103a6078 100644 --- a/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/FilterPlugin.java +++ b/src/main/java/land/chipmunk/chayapak/chomens_bot/plugins/FilterPlugin.java @@ -3,6 +3,7 @@ package land.chipmunk.chayapak.chomens_bot.plugins; import land.chipmunk.chayapak.chomens_bot.Bot; import land.chipmunk.chayapak.chomens_bot.data.chat.MutablePlayerListEntry; import land.chipmunk.chayapak.chomens_bot.data.FilteredPlayer; +import land.chipmunk.chayapak.chomens_bot.data.chat.PlayerMessage; import land.chipmunk.chayapak.chomens_bot.util.UUIDUtilities; import lombok.Getter; import net.kyori.adventure.text.Component; @@ -23,7 +24,19 @@ public class FilterPlugin extends PlayersPlugin.Listener { bot.players().addListener(this); - bot.executor().scheduleAtFixedRate(this::kick, 0, 5, TimeUnit.SECONDS); + bot.chat().addListener(new ChatPlugin.Listener() { + @Override + public void commandSpyMessageReceived(PlayerMessage message) { + FilterPlugin.this.commandSpyMessageReceived(message); + } + + @Override + public void playerMessageReceived(PlayerMessage message) { + FilterPlugin.this.playerMessageReceived(message); + } + }); + + bot.executor().scheduleAtFixedRate(this::kick, 0, 10, TimeUnit.SECONDS); } private FilteredPlayer getPlayer (String name) { @@ -73,11 +86,37 @@ public class FilterPlugin extends PlayersPlugin.Listener { if (player == null) return; - bot.core().run("essentials:mute " + target.profile().getIdAsString() + " 10y"); - bot.core().run("minecraft:execute run deop " + UUIDUtilities.selector(target.profile().getId())); + deOp(target); + mute(target); + bot.exploits().kick(target.profile().getId()); } + public void commandSpyMessageReceived (PlayerMessage message) { + final FilteredPlayer player = getPlayer(message.sender().profile().getName()); + + if (player == null) return; + + deOp(message.sender()); + } + + public void playerMessageReceived (PlayerMessage message) { + final FilteredPlayer player = getPlayer(message.sender().profile().getName()); + + if (player == null) return; + + deOp(message.sender()); + mute(message.sender()); + } + + private void mute (MutablePlayerListEntry target) { + bot.core().run("essentials:mute " + target.profile().getIdAsString() + " 10y"); + } + + private void deOp (MutablePlayerListEntry target) { + bot.core().run("minecraft:execute run deop " + UUIDUtilities.selector(target.profile().getId())); + } + public void kick () { for (MutablePlayerListEntry target : bot.players().list()) { final FilteredPlayer player = getPlayer(target.profile().getName()); @@ -90,6 +129,13 @@ public class FilterPlugin extends PlayersPlugin.Listener { public void add (String playerName, boolean regex, boolean ignoreCase) { filteredPlayers.add(new FilteredPlayer(playerName, regex, ignoreCase)); + + final MutablePlayerListEntry target = bot.players().getEntry(playerName); // fix not working for regex and ignorecase + + if (target == null) return; + + deOp(target); + mute(target); } public FilteredPlayer remove (int index) {