From 156d8d935b9670558ca69996db595920705a1cd8 Mon Sep 17 00:00:00 2001 From: axenodev Date: Sat, 24 Jan 2026 13:45:06 +0100 Subject: [PATCH] feat: Implement player auto-completion for friends, friend requests, and online players, and enhance join/quit event handling, all with vanish status consideration. --- .../core/commands/autocomplete/OnlinePlayerAutoComplete.java | 3 +++ .../features/friend/autocomplete/FriendsAutoComplete.java | 3 +++ .../friend/autocomplete/FriendsRequestAutoComplete.java | 3 +++ .../fr/openmc/core/listeners/JoinQuitMessageListener.java | 4 ++-- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/openmc/core/commands/autocomplete/OnlinePlayerAutoComplete.java b/src/main/java/fr/openmc/core/commands/autocomplete/OnlinePlayerAutoComplete.java index fa54b2957..180f7781d 100644 --- a/src/main/java/fr/openmc/core/commands/autocomplete/OnlinePlayerAutoComplete.java +++ b/src/main/java/fr/openmc/core/commands/autocomplete/OnlinePlayerAutoComplete.java @@ -11,10 +11,13 @@ public class OnlinePlayerAutoComplete implements SuggestionProvider { + public static final String VANISH_META_KEY = "omcstaff.vanished"; + @Override public @NotNull List getSuggestions(@NotNull ExecutionContext context) { return Bukkit.getOnlinePlayers().stream() .map(Player::getName) + .filter(name -> !context.actor().requirePlayer().hasMetadata(VANISH_META_KEY)) .toList(); } } diff --git a/src/main/java/fr/openmc/core/features/friend/autocomplete/FriendsAutoComplete.java b/src/main/java/fr/openmc/core/features/friend/autocomplete/FriendsAutoComplete.java index 54ad5b295..42f6e4780 100644 --- a/src/main/java/fr/openmc/core/features/friend/autocomplete/FriendsAutoComplete.java +++ b/src/main/java/fr/openmc/core/features/friend/autocomplete/FriendsAutoComplete.java @@ -13,11 +13,14 @@ public class FriendsAutoComplete implements SuggestionProvider { + public static final String VANISH_META_KEY = "omcstaff.vanished"; + @Override public @NotNull List getSuggestions(@NotNull ExecutionContext context) { List friendsUUIDs = getFriendsAsync(context.actor().requirePlayer().getUniqueId()).join(); return friendsUUIDs.stream() .map(uuid -> CacheOfflinePlayer.getOfflinePlayer(uuid).getName()) + .filter(name -> !context.actor().requirePlayer().hasMetadata(VANISH_META_KEY)) .toList(); } } diff --git a/src/main/java/fr/openmc/core/features/friend/autocomplete/FriendsRequestAutoComplete.java b/src/main/java/fr/openmc/core/features/friend/autocomplete/FriendsRequestAutoComplete.java index ed0e859fd..8b67febab 100644 --- a/src/main/java/fr/openmc/core/features/friend/autocomplete/FriendsRequestAutoComplete.java +++ b/src/main/java/fr/openmc/core/features/friend/autocomplete/FriendsRequestAutoComplete.java @@ -14,6 +14,8 @@ public class FriendsRequestAutoComplete implements SuggestionProvider { + public static final String VANISH_META_KEY = "omcstaff.vanished"; + @Override public @NotNull List getSuggestions(@NotNull ExecutionContext context) { Player sender = context.actor().requirePlayer(); @@ -24,6 +26,7 @@ public class FriendsRequestAutoComplete implements SuggestionProvider CacheOfflinePlayer.getOfflinePlayer(uuid).getName()) + .filter(name -> !sender.hasMetadata(VANISH_META_KEY)) .toList(); } } diff --git a/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java b/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java index b11327637..cf8010bf8 100644 --- a/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java +++ b/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java @@ -46,7 +46,7 @@ public void onPlayerJoin(PlayerJoinEvent event) { FriendManager.getFriendsAsync(player.getUniqueId()).thenAccept(friendsUUIDS -> { for (UUID friendUUID : friendsUUIDS) { final Player friend = player.getServer().getPlayer(friendUUID); - if (friend != null && friend.isOnline()) { + if (friend != null && friend.isOnline() && !friend.hasMetadata(VANISH_META_KEY)) { MessagesManager.sendMessage(friend, Component.text("§aVotre ami §r" + "§r" + LuckPermsHook.getFormattedPAPIPrefix(player) + player.getName() +" §as'est connecté(e)"), Prefix.FRIEND, MessageType.NONE, true); } } @@ -105,7 +105,7 @@ public void onPlayerQuit(PlayerQuitEvent event) { FriendManager.getFriendsAsync(player.getUniqueId()).thenAccept(friendsUUIDS -> { for (UUID friendUUID : friendsUUIDS) { final Player friend = player.getServer().getPlayer(friendUUID); - if (friend != null && friend.isOnline()) { + if (friend != null && friend.isOnline() && !friend.hasMetadata(VANISH_META_KEY)) { MessagesManager.sendMessage(friend, Component.text("§cVotre ami §e" + "§r" + LuckPermsHook.getFormattedPAPIPrefix(player) + player.getName() +" §cs'est déconnecté(e)"), Prefix.FRIEND, MessageType.NONE, true); } }