From 156d8d935b9670558ca69996db595920705a1cd8 Mon Sep 17 00:00:00 2001 From: axenodev Date: Sat, 24 Jan 2026 13:45:06 +0100 Subject: [PATCH 1/2] 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); } } From d6c4c688368f9ec4084fd5b1333b56365f4df4ae Mon Sep 17 00:00:00 2001 From: Axeno <93048526+AxenoDev@users.noreply.github.com> Date: Wed, 28 Jan 2026 21:15:30 +0100 Subject: [PATCH 2/2] fix: Replace hardcoded vanish metadata key with a constant from OMCPlugin --- src/main/java/fr/openmc/core/OMCPlugin.java | 2 ++ .../commands/autocomplete/OnlinePlayerAutoComplete.java | 5 ++--- .../friend/autocomplete/FriendsAutoComplete.java | 5 ++--- .../friend/autocomplete/FriendsRequestAutoComplete.java | 5 ++--- .../openmc/core/listeners/JoinQuitMessageListener.java | 9 ++++----- 5 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/main/java/fr/openmc/core/OMCPlugin.java b/src/main/java/fr/openmc/core/OMCPlugin.java index 7974063fc..4999ce1f4 100644 --- a/src/main/java/fr/openmc/core/OMCPlugin.java +++ b/src/main/java/fr/openmc/core/OMCPlugin.java @@ -65,6 +65,8 @@ public class OMCPlugin extends JavaPlugin { @Getter static FileConfiguration configs; + public static final String VANISH_META_KEY = "omcstaff.vanished"; + public static void registerEvents(Listener... listeners) { for (Listener listener : listeners) { instance.getServer().getPluginManager().registerEvents(listener, instance); 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 180f7781d..7c6b39b60 100644 --- a/src/main/java/fr/openmc/core/commands/autocomplete/OnlinePlayerAutoComplete.java +++ b/src/main/java/fr/openmc/core/commands/autocomplete/OnlinePlayerAutoComplete.java @@ -1,5 +1,6 @@ package fr.openmc.core.commands.autocomplete; +import fr.openmc.core.OMCPlugin; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -11,13 +12,11 @@ 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)) + .filter(name -> !context.actor().requirePlayer().hasMetadata(OMCPlugin.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 42f6e4780..6e8b80728 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 @@ -1,5 +1,6 @@ package fr.openmc.core.features.friend.autocomplete; +import fr.openmc.core.OMCPlugin; import fr.openmc.core.utils.cache.CacheOfflinePlayer; import org.jetbrains.annotations.NotNull; import revxrsal.commands.autocomplete.SuggestionProvider; @@ -13,14 +14,12 @@ 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)) + .filter(name -> !context.actor().requirePlayer().hasMetadata(OMCPlugin.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 8b67febab..9895f5230 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 @@ -1,5 +1,6 @@ package fr.openmc.core.features.friend.autocomplete; +import fr.openmc.core.OMCPlugin; import fr.openmc.core.utils.cache.CacheOfflinePlayer; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; @@ -14,8 +15,6 @@ 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(); @@ -26,7 +25,7 @@ public class FriendsRequestAutoComplete implements SuggestionProvider CacheOfflinePlayer.getOfflinePlayer(uuid).getName()) - .filter(name -> !sender.hasMetadata(VANISH_META_KEY)) + .filter(name -> !sender.hasMetadata(OMCPlugin.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 cf8010bf8..2b90029c9 100644 --- a/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java +++ b/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java @@ -27,7 +27,6 @@ public class JoinQuitMessageListener implements Listener { private final double balanceOnJoin; - public static final String VANISH_META_KEY = "omcstaff.vanished"; public static final String JOIN_MESSAGE = "§8[§a§l+§8] §r%s%s"; public static final String QUIT_MESSAGE = "§8[§c§l-§8] §r%s%s"; @@ -46,7 +45,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() && !friend.hasMetadata(VANISH_META_KEY)) { + if (friend != null && friend.isOnline() && !friend.hasMetadata(OMCPlugin.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); } } @@ -74,7 +73,7 @@ public void onPlayerJoin(PlayerJoinEvent event) { } }); - if (!player.hasMetadata(VANISH_META_KEY)) + if (!player.hasMetadata(OMCPlugin.VANISH_META_KEY)) event.joinMessage(Component.text(JOIN_MESSAGE.formatted(LuckPermsHook.getFormattedPAPIPrefix(player), player.getName()))); // Adjust player's spawn location @@ -105,7 +104,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() && !friend.hasMetadata(VANISH_META_KEY)) { + if (friend != null && friend.isOnline() && !friend.hasMetadata(OMCPlugin.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); } } @@ -125,7 +124,7 @@ public void onPlayerQuit(PlayerQuitEvent event) { } } - if (!player.hasMetadata(VANISH_META_KEY)) + if (!player.hasMetadata(OMCPlugin.VANISH_META_KEY)) event.quitMessage(Component.text(QUIT_MESSAGE.formatted(LuckPermsHook.getFormattedPAPIPrefix(player), player.getName()))); }