From 769859a6174671deb6d41099c9295a32d88ad569 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 22 Mar 2025 02:44:42 +0100 Subject: [PATCH] Fix bypass permission logic for ignored players in chat Updated the filtering logic to correctly handle the "chat.ignorebypass" permission, ensuring players with bypass permission are not excluded due to ignore settings. Adjusted related conditionals in ChatHandler and ChatListener, and refactored patterns without altering functionality. --- .../com/alttd/chat/handler/ChatHandler.java | 3 ++- .../alttd/chat/listeners/ChatListener.java | 27 ++++++++++--------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java index 23f9fa1..a5863c2 100755 --- a/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java +++ b/galaxy/src/main/java/com/alttd/chat/handler/ChatHandler.java @@ -261,7 +261,8 @@ public class ChatHandler { Stream stream = Bukkit.getServer().getOnlinePlayers().stream() .filter(p -> p.hasPermission(chatChannel.getPermission())); if (!player.hasPermission("chat.ignorebypass")) { - stream = stream.filter(p -> !ChatUserManager.getChatUser(p.getUniqueId()).getIgnoredPlayers().contains(uuid) && !p.hasPermission("chat.ignorebypass")); + stream = stream.filter(receiver -> !ChatUserManager.getChatUser(receiver.getUniqueId()).getIgnoredPlayers().contains(uuid) + || receiver.hasPermission("chat.ignorebypass")); } stream.forEach(p -> p.sendMessage(component)); } diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java index bdf32af..645cb3f 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java @@ -116,7 +116,7 @@ public class ChatListener implements Listener { if (!player.hasPermission("chat.ignorebypass")) { stream = stream.filter(receiver -> !ChatUserManager.getChatUser(receiver.getUniqueId()).getIgnoredPlayers().contains(uuid) - && !receiver.hasPermission("chat.ignorebypass")); + || receiver.hasPermission("chat.ignorebypass")); } Set receivers = stream.collect(Collectors.toSet()); @@ -140,9 +140,9 @@ public class ChatListener implements Listener { String nickName = PlainTextComponentSerializer.plainText().serialize(onlinePlayer.displayName()); Pattern namePattern = Pattern.compile("\\b(? { -// String substring = a.group().substring(1); -// return ; -// }); + // modifiableString.replace(TextReplacementConfig.builder() + // .once() + // .match(escapedNamePattern) + // .replacement((a, b) -> { + // String substring = a.group().substring(1); + // return ; + // }); + if (!ChatUserManager.getChatUser(onlinePlayer.getUniqueId()).getIgnoredPlayers().contains(player.getUniqueId()) - && !player.hasPermission("chat.ignorebypass")) + || player.hasPermission("chat.ignorebypass")) { playersToPing.add(onlinePlayer); + } } else if (nickPattern.matcher(modifiableString.string()).find()) { modifiableString.replace(TextReplacementConfig.builder() .once() @@ -169,8 +171,9 @@ public class ChatListener implements Listener { .replacement(mention.append(onlinePlayerUser.getDisplayName())) .build()); if (!ChatUserManager.getChatUser(onlinePlayer.getUniqueId()).getIgnoredPlayers().contains(player.getUniqueId()) - && !player.hasPermission("chat.ignorebypass")) + || player.hasPermission("chat.ignorebypass")) { playersToPing.add(onlinePlayer); + } } } }