Skip to content

Commit d881097

Browse files
committed
apply ignore list to chat messages
1 parent fdb1a5e commit d881097

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

src/main/java/pro/cloudnode/smp/cloudnodemsg/CloudnodeMSG.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import pro.cloudnode.smp.cloudnodemsg.command.MessageCommand;
1010
import pro.cloudnode.smp.cloudnodemsg.command.ReplyCommand;
1111
import pro.cloudnode.smp.cloudnodemsg.command.UnIgnoreCommand;
12+
import pro.cloudnode.smp.cloudnodemsg.listener.AsyncChatListener;
1213

1314
import java.util.Objects;
1415

@@ -32,6 +33,8 @@ public void onEnable() {
3233
Objects.requireNonNull(getCommand("reply")).setExecutor(new ReplyCommand());
3334
Objects.requireNonNull(getCommand("ignore")).setExecutor(new IgnoreCommand());
3435
Objects.requireNonNull(getCommand("unignore")).setExecutor(new UnIgnoreCommand());
36+
37+
getServer().getPluginManager().registerEvents(new AsyncChatListener(), this);
3538
}
3639

3740
@Override
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package pro.cloudnode.smp.cloudnodemsg.listener;
2+
3+
import io.papermc.paper.event.player.AsyncChatEvent;
4+
import net.kyori.adventure.audience.Audience;
5+
import org.bukkit.OfflinePlayer;
6+
import org.bukkit.Server;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.event.EventHandler;
9+
import org.bukkit.event.EventPriority;
10+
import org.bukkit.event.Listener;
11+
import org.jetbrains.annotations.NotNull;
12+
import pro.cloudnode.smp.cloudnodemsg.CloudnodeMSG;
13+
import pro.cloudnode.smp.cloudnodemsg.Permission;
14+
import pro.cloudnode.smp.cloudnodemsg.message.Message;
15+
16+
import java.util.HashSet;
17+
import java.util.Iterator;
18+
import java.util.Set;
19+
20+
public final class AsyncChatListener implements Listener {
21+
@EventHandler (priority = EventPriority.LOWEST)
22+
public void onAsyncChat(final @NotNull AsyncChatEvent event) {
23+
final @NotNull Set<@NotNull Audience> audience = event.viewers();
24+
final @NotNull Iterator<@NotNull Audience> iterator = audience.iterator();
25+
final @NotNull Player sender = event.getPlayer();
26+
27+
while (iterator.hasNext()) {
28+
final @NotNull Audience a = iterator.next();
29+
if (a instanceof final @NotNull Player player) {
30+
final @NotNull Server server = CloudnodeMSG.getInstance().getServer();
31+
final @NotNull HashSet<@NotNull OfflinePlayer> ignored = Message.getIgnored(player).stream().map(server::getOfflinePlayer).collect(HashSet::new, HashSet::add, HashSet::addAll);
32+
33+
if (ignored.contains(sender) && !sender.hasPermission(Permission.IGNORE_IMMUNE)) iterator.remove();
34+
}
35+
}
36+
}
37+
}

0 commit comments

Comments
 (0)