From 452dbb3cce331546b560e34493b0c03768ee9f3d Mon Sep 17 00:00:00 2001 From: Dustin Weckenbrock Date: Fri, 23 Jan 2026 21:51:03 +0100 Subject: [PATCH 1/5] refactor(vanish): update player vanish methods to use UUIDs instead of Player objects --- .../command/commands/VanishCommand.java | 4 +- .../listener/PlayerAdvancementListener.java | 2 +- .../listener/PlayerConnectionListener.java | 6 +- .../listener/PlayerVanishListener.java | 4 +- .../listener/VanishNoPacketListener.java | 2 +- .../VanishSilentContainerFeature.java | 4 +- .../service/BukkitPlayerVanishService.java | 89 ++++++++++++------- .../DelegatedBlueMapVanishService.java | 47 +++++----- .../stardust/service/LuckPermsService.java | 6 +- 9 files changed, 90 insertions(+), 74 deletions(-) diff --git a/src/main/java/net/onelitefeather/stardust/command/commands/VanishCommand.java b/src/main/java/net/onelitefeather/stardust/command/commands/VanishCommand.java index d15071b7..48269dd2 100644 --- a/src/main/java/net/onelitefeather/stardust/command/commands/VanishCommand.java +++ b/src/main/java/net/onelitefeather/stardust/command/commands/VanishCommand.java @@ -71,7 +71,7 @@ public void commandVanishToggleProperty( toggleProperty(commandSender, target, property); return; } - if (stardustPlugin.getUserService().getVanishService().canSee((Player) commandSender, target)) { + if (stardustPlugin.getUserService().getVanishService().canSee(((Player) commandSender).getUniqueId(), target.getUniqueId())) { toggleProperty(commandSender, target, property); } } @@ -114,7 +114,7 @@ public void toggleVanish(CommandSender commandSender, Player target) { .arguments(stardustPlugin.getPrefix())); return; } - stardustPlugin.getUserService().getVanishService().toggle(target); + stardustPlugin.getUserService().getVanishService().toggle(target.getUniqueId()); } catch (Exception e) { stardustPlugin.getLogger().throwing(VanishCommand.class.getSimpleName(), "toggleVanish", e); } diff --git a/src/main/java/net/onelitefeather/stardust/listener/PlayerAdvancementListener.java b/src/main/java/net/onelitefeather/stardust/listener/PlayerAdvancementListener.java index 6ce404ec..9cce0fe7 100644 --- a/src/main/java/net/onelitefeather/stardust/listener/PlayerAdvancementListener.java +++ b/src/main/java/net/onelitefeather/stardust/listener/PlayerAdvancementListener.java @@ -15,7 +15,7 @@ public PlayerAdvancementListener(StardustPlugin plugin) { @EventHandler public void onPlayerAdvancement(PlayerAdvancementCriterionGrantEvent event) { var player = event.getPlayer(); - if (plugin.getUserService().getVanishService().isVanished(player)) { + if (plugin.getUserService().getVanishService().isVanished(player.getUniqueId())) { event.setCancelled(true); } } diff --git a/src/main/java/net/onelitefeather/stardust/listener/PlayerConnectionListener.java b/src/main/java/net/onelitefeather/stardust/listener/PlayerConnectionListener.java index d4105745..098db02f 100644 --- a/src/main/java/net/onelitefeather/stardust/listener/PlayerConnectionListener.java +++ b/src/main/java/net/onelitefeather/stardust/listener/PlayerConnectionListener.java @@ -1,7 +1,5 @@ package net.onelitefeather.stardust.listener; -import org.bukkit.event.Listener; - import net.kyori.adventure.text.Component; import net.onelitefeather.stardust.StardustPlugin; import net.onelitefeather.stardust.user.User; @@ -57,7 +55,7 @@ public void onPlayerQuit(PlayerQuitEvent event) { } else { event.quitMessage(Component.translatable("listener.quit-message").arguments(player.displayName())); } - stardustPlugin.getUserService().getVanishService().handlePlayerQuit(player); + stardustPlugin.getUserService().getVanishService().handlePlayerQuit(player.getUniqueId()); } catch (Exception e) { stardustPlugin.getLogger().log(Level.SEVERE, "Something went wrong during the quit process", e); } @@ -65,7 +63,7 @@ public void onPlayerQuit(PlayerQuitEvent event) { private void joinMessage(PlayerJoinEvent event) { Player player = event.getPlayer(); - boolean isVanished = stardustPlugin.getUserService().getVanishService().handlePlayerJoin(player); + boolean isVanished = stardustPlugin.getUserService().getVanishService().handlePlayerJoin(player.getUniqueId()); if (isVanished) { event.joinMessage(null); } else { diff --git a/src/main/java/net/onelitefeather/stardust/listener/PlayerVanishListener.java b/src/main/java/net/onelitefeather/stardust/listener/PlayerVanishListener.java index 8e62cc5e..b1686bdd 100644 --- a/src/main/java/net/onelitefeather/stardust/listener/PlayerVanishListener.java +++ b/src/main/java/net/onelitefeather/stardust/listener/PlayerVanishListener.java @@ -44,7 +44,7 @@ public PlayerVanishListener(StardustPlugin stardustPlugin) { } private boolean isVanished(Player player) { - return stardustPlugin.getUserService().getVanishService().isVanished(player); + return stardustPlugin.getUserService().getVanishService().isVanished(player.getUniqueId()); } @EventHandler @@ -245,7 +245,7 @@ public void handleGameEvent(BlockReceiveGameEvent event) { } if (resultPlayer == null) return; - event.setCancelled(stardustPlugin.getUserService().getVanishService().isVanished(resultPlayer)); + event.setCancelled(stardustPlugin.getUserService().getVanishService().isVanished(resultPlayer.getUniqueId())); } @EventHandler diff --git a/src/main/java/net/onelitefeather/stardust/listener/VanishNoPacketListener.java b/src/main/java/net/onelitefeather/stardust/listener/VanishNoPacketListener.java index 242ab186..094998f2 100644 --- a/src/main/java/net/onelitefeather/stardust/listener/VanishNoPacketListener.java +++ b/src/main/java/net/onelitefeather/stardust/listener/VanishNoPacketListener.java @@ -49,6 +49,6 @@ private boolean isVanished(WrapperPlayServerPlayerInfo.PlayerData data) { if (userProfile == null) return false; var user = this.stardustPlugin.getUserService().getUser(userProfile.getUUID()); if (user == null) return false; - return this.stardustPlugin.getUserService().getVanishService().isVanished(user.getBase()); + return this.stardustPlugin.getUserService().getVanishService().isVanished(user.getUniqueId()); } } diff --git a/src/main/java/net/onelitefeather/stardust/listener/VanishSilentContainerFeature.java b/src/main/java/net/onelitefeather/stardust/listener/VanishSilentContainerFeature.java index c26bde33..dae663f3 100644 --- a/src/main/java/net/onelitefeather/stardust/listener/VanishSilentContainerFeature.java +++ b/src/main/java/net/onelitefeather/stardust/listener/VanishSilentContainerFeature.java @@ -35,7 +35,7 @@ public void handleInventoryClick(InventoryClickEvent event) { if (!(event.getWhoClicked() instanceof Player whoClicked)) return; Inventory clickedInventory = event.getInventory(); - if (stardustPlugin.getUserService().getVanishService().isVanished(whoClicked)) { + if (stardustPlugin.getUserService().getVanishService().isVanished(whoClicked.getUniqueId())) { Inventory inventory = silentContainerLooter.get(whoClicked); if (inventory == null) return; boolean canInteract = whoClicked.hasPermission("stardust.vanish.silentopen.interact"); @@ -52,7 +52,7 @@ public void handlePlayerInteract(PlayerInteractEvent event) { BlockState blockState = event.getClickedBlock().getState(); boolean hasPermission = player.hasPermission("stardust.vanish.silentopen"); - boolean vanished = stardustPlugin.getUserService().getVanishService().isVanished(player); + boolean vanished = stardustPlugin.getUserService().getVanishService().isVanished(player.getUniqueId()); if (blockState instanceof EnderChest) { boolean useInteractBlock = vanished && !player.isSneaking() || player.isSneaking(); diff --git a/src/main/java/net/onelitefeather/stardust/service/BukkitPlayerVanishService.java b/src/main/java/net/onelitefeather/stardust/service/BukkitPlayerVanishService.java index 55b7e30c..b71a005b 100644 --- a/src/main/java/net/onelitefeather/stardust/service/BukkitPlayerVanishService.java +++ b/src/main/java/net/onelitefeather/stardust/service/BukkitPlayerVanishService.java @@ -11,7 +11,9 @@ import org.bukkit.entity.Player; import org.bukkit.persistence.PersistentDataType; -public class BukkitPlayerVanishService implements PlayerVanishService { +import java.util.UUID; + +public class BukkitPlayerVanishService implements PlayerVanishService { private static final String VANISH_PERMISSION = "stardust.command.vanish"; private final StardustPlugin plugin; @@ -26,78 +28,91 @@ public BukkitPlayerVanishService(UserService userService, StardustPlugin plugin) } @Override - public void hidePlayer(Player player) { + public void hidePlayer(UUID playerId) { + Player player = plugin.getServer().getPlayer(playerId); + if (player == null) return; + plugin.getServer().getScheduler().getMainThreadExecutor(plugin) .execute(() -> plugin.getServer().getOnlinePlayers().forEach(onlinePlayer -> { - - if (!canSee(onlinePlayer, player)) { + if (!canSee(onlinePlayer.getUniqueId(), playerId)) { onlinePlayer.hidePlayer(plugin, player); } })); } @Override - public void showPlayer(Player player) { + public void showPlayer(UUID playerId) { + Player player = plugin.getServer().getPlayer(playerId); + if (player == null) return; + plugin.getServer().getScheduler().getMainThreadExecutor(plugin) .execute(() -> plugin.getServer().getOnlinePlayers().forEach(onlinePlayer -> { - onlinePlayer.showPlayer(plugin, player); onlinePlayer.sendMessage(Component.translatable("listener.join-message").arguments(player.displayName())); })); } @Override - public boolean toggle(Player player) { - - var currentState = isVanished(player); + public boolean toggle(UUID playerId) { + Player player = plugin.getServer().getPlayer(playerId); + if (player == null) return false; + var currentState = isVanished(playerId); if (currentState) { - showPlayer(player); + showPlayer(playerId); sendReappearedMessage(player); } else { - hidePlayer(player); + hidePlayer(playerId); sendDisappearedMessage(player); } var newState = !currentState; - setVanished(player, newState); + setVanished(playerId, newState); togglePlayerProperties(player, newState); return newState; } @Override - public boolean isVanished(Player player) { - var vanished = player.getPersistentDataContainer().get(vanishedKey, PersistentDataType.BOOLEAN); - if (vanished == null) return false; + public boolean isVanished(UUID playerId) { - var user = userService.getUser(player.getUniqueId()); + var user = userService.getUser(playerId); if (user == null) return false; - return user.isVanished() || vanished; + + Player player = plugin.getServer().getPlayer(playerId); + var vanished = player != null && Boolean.TRUE.equals(player.getPersistentDataContainer().get(vanishedKey, PersistentDataType.BOOLEAN)); + return Boolean.logicalAnd(user.isVanished(), vanished); } @Override - public void setVanished(Player player, boolean vanished) { + public void setVanished(UUID playerId, boolean vanished) { - var user = userService.getUser(player.getUniqueId()); + var user = userService.getUser(playerId); if (user == null) return; this.userService.setUserProperty(user, UserPropertyType.VANISHED, vanished); - player.getPersistentDataContainer().set(vanishedKey, PersistentDataType.BOOLEAN, vanished); + + Player player = plugin.getServer().getPlayer(playerId); + if (player != null) { + player.getPersistentDataContainer().set(vanishedKey, PersistentDataType.BOOLEAN, vanished); + } } @Override - public boolean handlePlayerJoin(Player player) { + public boolean handlePlayerJoin(UUID playerId) { - player.getServer().getOnlinePlayers().stream().filter(this::isVanished).forEach(this::hidePlayer); + Player player = plugin.getServer().getPlayer(playerId); + if (player == null) return false; + + player.getServer().getOnlinePlayers().stream().map(Player::getUniqueId).filter(this::isVanished).forEach(this::hidePlayer); if (handleAutoVanish(player)) return true; - if (isVanished(player)) { + if (isVanished(playerId)) { if (!player.hasPermission("stardust.command.vanish")) { - setVanished(player, false); - showPlayer(player); + setVanished(playerId, false); + showPlayer(playerId); togglePlayerProperties(player, false); return true; } @@ -105,7 +120,7 @@ public boolean handlePlayerJoin(Player player) { player.sendMessage(Component.translatable("vanish.join.self").arguments(plugin.getPrefix())); broadcastMessage(player, Component.translatable("vanish.join.silently").arguments(vanishDisplayName(player))); - hidePlayer(player); + hidePlayer(playerId); togglePlayerProperties(player, true); } @@ -113,15 +128,22 @@ public boolean handlePlayerJoin(Player player) { } @Override - public void handlePlayerQuit(Player player) { - if (!isVanished(player)) return; + public void handlePlayerQuit(UUID playerId) { + var player = plugin.getServer().getPlayer(playerId); + if (player == null) return; + if (!isVanished(playerId)) return; broadcastMessage(player, Component.translatable("vanish.quit.silently") .arguments(plugin.getPrefix(), vanishDisplayName(player))); } @Override - public boolean canSee(Player player, Player target) { + public boolean canSee(UUID playerId, UUID targetId) { + + Player player = plugin.getServer().getPlayer(playerId); + Player target = plugin.getServer().getPlayer(targetId); + if (player == null) return false; + if (!isGroupWeightBased()) return player.hasPermission(VANISH_SEE_OTHERS_PERMISSION); var playerGroupPriority = plugin.getLuckPermsService().getGroupPriority(player); var targetGroupPriority = plugin.getLuckPermsService().getGroupPriority(target); @@ -129,8 +151,9 @@ public boolean canSee(Player player, Player target) { } @Override - public boolean isVanishPermitted(Player player) { - return player.hasPermission(VANISH_PERMISSION); + public boolean isVanishPermitted(UUID playerId) { + Player player = plugin.getServer().getPlayer(playerId); + return player != null && player.hasPermission(VANISH_PERMISSION); } private void sendReappearedMessage(Player player) { @@ -176,8 +199,8 @@ private boolean handleAutoVanish(Player player) { if (player.hasPermission("stardust.vanish.auto")) { var displayName = vanishDisplayName(player); - setVanished(player, true); - hidePlayer(player); + setVanished(player.getUniqueId(), true); + hidePlayer(player.getUniqueId()); togglePlayerProperties(player, true); player.sendMessage(Component.translatable("vanish.join.self").arguments(plugin.getPrefix())); diff --git a/src/main/java/net/onelitefeather/stardust/service/DelegatedBlueMapVanishService.java b/src/main/java/net/onelitefeather/stardust/service/DelegatedBlueMapVanishService.java index 153c150d..3e107ad6 100644 --- a/src/main/java/net/onelitefeather/stardust/service/DelegatedBlueMapVanishService.java +++ b/src/main/java/net/onelitefeather/stardust/service/DelegatedBlueMapVanishService.java @@ -2,59 +2,54 @@ import de.bluecolored.bluemap.api.BlueMapAPI; import net.onelitefeather.stardust.api.PlayerVanishService; -import org.bukkit.entity.Player; -public final class DelegatedBlueMapVanishService implements PlayerVanishService { +import java.util.UUID; - private final PlayerVanishService delegate; - - public DelegatedBlueMapVanishService(PlayerVanishService delegate) { - this.delegate = delegate; - } +public record DelegatedBlueMapVanishService(PlayerVanishService delegate) implements PlayerVanishService { @Override - public void hidePlayer(Player player) { - this.delegate.hidePlayer(player); + public void hidePlayer(UUID playerId) { + this.delegate.hidePlayer(playerId); } @Override - public void showPlayer(Player player) { - this.delegate.showPlayer(player); + public void showPlayer(UUID playerId) { + this.delegate.showPlayer(playerId); } @Override - public boolean toggle(Player player) { - return this.delegate.toggle(player); + public boolean toggle(UUID playerId) { + return this.delegate.toggle(playerId); } @Override - public boolean isVanished(Player player) { - return this.delegate.isVanished(player); + public boolean isVanished(UUID playerId) { + return this.delegate.isVanished(playerId); } @Override - public void setVanished(Player player, boolean vanished) { - BlueMapAPI.getInstance().map(BlueMapAPI::getWebApp).ifPresent(api -> api.setPlayerVisibility(player.getUniqueId(), !vanished)); - this.delegate.setVanished(player, vanished); + public void setVanished(UUID playerId, boolean vanished) { + this.delegate.setVanished(playerId, vanished); + BlueMapAPI.getInstance().map(BlueMapAPI::getWebApp).ifPresent(api -> api.setPlayerVisibility(playerId, !vanished)); } @Override - public boolean handlePlayerJoin(Player player) { - return this.delegate.handlePlayerJoin(player); + public boolean handlePlayerJoin(UUID playerId) { + return this.delegate.handlePlayerJoin(playerId); } @Override - public void handlePlayerQuit(Player player) { - this.delegate.handlePlayerQuit(player); + public void handlePlayerQuit(UUID playerId) { + this.delegate.handlePlayerQuit(playerId); } @Override - public boolean canSee(Player player, Player target) { - return this.delegate.canSee(player, target); + public boolean canSee(UUID playerId, UUID targetId) { + return this.delegate.canSee(playerId, targetId); } @Override - public boolean isVanishPermitted(Player player) { - return this.delegate.isVanishPermitted(player); + public boolean isVanishPermitted(UUID playerId) { + return this.delegate.isVanishPermitted(playerId); } } diff --git a/src/main/java/net/onelitefeather/stardust/service/LuckPermsService.java b/src/main/java/net/onelitefeather/stardust/service/LuckPermsService.java index d0cdc2d4..f703028c 100644 --- a/src/main/java/net/onelitefeather/stardust/service/LuckPermsService.java +++ b/src/main/java/net/onelitefeather/stardust/service/LuckPermsService.java @@ -46,10 +46,10 @@ private void subscribeToEvents() { private void disableVanish(User user) { Player player = Bukkit.getPlayer(user.getUniqueId()); if (player == null) return; - if (plugin.getUserService().getVanishService().isVanishPermitted(player)) return; + if (plugin.getUserService().getVanishService().isVanishPermitted(player.getUniqueId())) return; - if (!plugin.getUserService().getVanishService().isVanished(player)) return; - plugin.getUserService().getVanishService().toggle(player); + if (!plugin.getUserService().getVanishService().isVanished(player.getUniqueId())) return; + plugin.getUserService().getVanishService().toggle(player.getUniqueId()); } public void unsubscribeEvents() { From 72ccab065e48040a04777d042b553033a503c15d Mon Sep 17 00:00:00 2001 From: Dustin Weckenbrock Date: Fri, 23 Jan 2026 21:52:03 +0100 Subject: [PATCH 2/5] refactor(vanish): update player vanish methods to use UUIDs instead of Player objects --- .../stardust/api/PlayerVanishService.java | 43 +++++++++---------- .../stardust/service/UserService.java | 4 +- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/main/java/net/onelitefeather/stardust/api/PlayerVanishService.java b/src/main/java/net/onelitefeather/stardust/api/PlayerVanishService.java index 17364201..44a32bd7 100644 --- a/src/main/java/net/onelitefeather/stardust/api/PlayerVanishService.java +++ b/src/main/java/net/onelitefeather/stardust/api/PlayerVanishService.java @@ -1,61 +1,60 @@ package net.onelitefeather.stardust.api; -import org.bukkit.entity.Player; +import java.util.UUID; -public interface PlayerVanishService

{ +public interface PlayerVanishService { /** * Hides a player for other players * - * @param player to be hide + * @param playerId to be hidden */ - void hidePlayer(P player); + void hidePlayer(UUID playerId); /** * Shows a player for other players * - * @param player to be shown to other player + * @param playerId to be shown to other players */ - void showPlayer(P player); + void showPlayer(UUID playerId); - /** - * Toggle vanish status of a player - * - * @param player be affected + /* + * @param playerId to be affected + * @return new vanish state */ - boolean toggle(P player); + boolean toggle(UUID playerId); /** - * Check if the player in vanish + * Check if the player is vanished * * @return the current status */ - boolean isVanished(P player); + boolean isVanished(UUID playerId); /** * Set a user explicit the vanish status * - * @param player to be affected - * @param vanished status of the user + * @param playerId to be affected + * @param vanished status of the user */ - void setVanished(P player, boolean vanished); + void setVanished(UUID playerId, boolean vanished); /** * Handles if a player joining the server * - * @param player be affected + * @param playerId to be affected * @return true if the player is vanished */ - boolean handlePlayerJoin(P player); + boolean handlePlayerJoin(UUID playerId); /** * Handles if a player quits the server * - * @param player be affected + * @param playerId to be affected */ - void handlePlayerQuit(P player); + void handlePlayerQuit(UUID playerId); - boolean canSee(P player, P target); + boolean canSee(UUID viewerId, UUID targetId); - boolean isVanishPermitted(P player); + boolean isVanishPermitted(UUID playerId); } diff --git a/src/main/java/net/onelitefeather/stardust/service/UserService.java b/src/main/java/net/onelitefeather/stardust/service/UserService.java index d385e44e..59b43b0e 100644 --- a/src/main/java/net/onelitefeather/stardust/service/UserService.java +++ b/src/main/java/net/onelitefeather/stardust/service/UserService.java @@ -25,7 +25,7 @@ public final class UserService { private final StardustPlugin plugin; private final BukkitTask userTask; - private final PlayerVanishService vanishService; + private final PlayerVanishService vanishService; private final DatabaseConnectionService databaseService; public UserService(StardustPlugin plugin) { @@ -39,7 +39,7 @@ public UserService(StardustPlugin plugin) { this.databaseService = plugin.getDatabaseService(); } - public PlayerVanishService getVanishService() { + public PlayerVanishService getVanishService() { return vanishService; } From e224105ebf236ba43d5a55dd83088665ec6e242e Mon Sep 17 00:00:00 2001 From: Dustin Weckenbrock Date: Fri, 23 Jan 2026 21:53:55 +0100 Subject: [PATCH 3/5] chore(build): Bump runServer minecraft version to 1.21.10 for testing purposes --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index f033a7ba..6688bcad 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -58,7 +58,7 @@ tasks { finalizedBy(rootProject.tasks.jacocoTestReport) } runServer { - minecraftVersion("1.21.4") + minecraftVersion("1.21.10") jvmArgs("-Dcom.mojang.eula.agree=true") } jacocoTestReport { From d1a4fa70327d6c03828d83e66581012160abd5f2 Mon Sep 17 00:00:00 2001 From: Dustin Weckenbrock Date: Tue, 27 Jan 2026 18:17:06 +0100 Subject: [PATCH 4/5] refactor(vanish): optimize player visibility handling --- .../service/BukkitPlayerVanishService.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/onelitefeather/stardust/service/BukkitPlayerVanishService.java b/src/main/java/net/onelitefeather/stardust/service/BukkitPlayerVanishService.java index b71a005b..9b6ec4ef 100644 --- a/src/main/java/net/onelitefeather/stardust/service/BukkitPlayerVanishService.java +++ b/src/main/java/net/onelitefeather/stardust/service/BukkitPlayerVanishService.java @@ -12,8 +12,10 @@ import org.bukkit.persistence.PersistentDataType; import java.util.UUID; +import java.util.function.Consumer; +import java.util.function.Predicate; -public class BukkitPlayerVanishService implements PlayerVanishService { +public final class BukkitPlayerVanishService implements PlayerVanishService { private static final String VANISH_PERMISSION = "stardust.command.vanish"; private final StardustPlugin plugin; @@ -32,12 +34,13 @@ public void hidePlayer(UUID playerId) { Player player = plugin.getServer().getPlayer(playerId); if (player == null) return; - plugin.getServer().getScheduler().getMainThreadExecutor(plugin) - .execute(() -> plugin.getServer().getOnlinePlayers().forEach(onlinePlayer -> { - if (!canSee(onlinePlayer.getUniqueId(), playerId)) { - onlinePlayer.hidePlayer(plugin, player); - } - })); + Predicate cannotSeePredicate = onlinePlayer -> !canSee(onlinePlayer.getUniqueId(), playerId); + Consumer hideAction = onlinePlayer -> onlinePlayer.hidePlayer(plugin, player); + + plugin.getServer() + .getScheduler() + .getMainThreadExecutor(plugin) + .execute(() -> plugin.getServer().getOnlinePlayers().stream().filter(cannotSeePredicate).forEach(hideAction)); } @Override @@ -45,7 +48,9 @@ public void showPlayer(UUID playerId) { Player player = plugin.getServer().getPlayer(playerId); if (player == null) return; - plugin.getServer().getScheduler().getMainThreadExecutor(plugin) + plugin.getServer() + .getScheduler() + .getMainThreadExecutor(plugin) .execute(() -> plugin.getServer().getOnlinePlayers().forEach(onlinePlayer -> { onlinePlayer.showPlayer(plugin, player); onlinePlayer.sendMessage(Component.translatable("listener.join-message").arguments(player.displayName())); From d4a576654c51b46060390a6e01060d4b7bd39f22 Mon Sep 17 00:00:00 2001 From: Dustin Weckenbrock Date: Tue, 27 Jan 2026 18:18:14 +0100 Subject: [PATCH 5/5] refactor(vanish): add missing documentation --- .../onelitefeather/stardust/api/PlayerVanishService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/net/onelitefeather/stardust/api/PlayerVanishService.java b/src/main/java/net/onelitefeather/stardust/api/PlayerVanishService.java index 44a32bd7..8a29a212 100644 --- a/src/main/java/net/onelitefeather/stardust/api/PlayerVanishService.java +++ b/src/main/java/net/onelitefeather/stardust/api/PlayerVanishService.java @@ -56,5 +56,11 @@ public interface PlayerVanishService { boolean canSee(UUID viewerId, UUID targetId); + /** + * Check if a player has permission to vanish + * + * @param playerId to be checked + * @return true if the player has permission to vanish + */ boolean isVanishPermitted(UUID playerId); }