From d7e5c10b512ed33dad4451f2ba92052109b2090a Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Sat, 5 Aug 2023 11:44:40 -0400 Subject: [PATCH] Fix remaining offline visibility checks (#5466) Purpur added a new self-referencing method that we don't implement with our stub class. This will prevent Player#canSee from being called for offline players (it would be false anyway). --- .../src/main/java/com/earth2me/essentials/Essentials.java | 2 +- .../src/main/java/com/earth2me/essentials/PlayerList.java | 6 +++--- .../src/main/java/com/earth2me/essentials/User.java | 2 +- .../com/earth2me/essentials/commands/Commandkick.java | 2 +- .../com/earth2me/essentials/commands/Commandnear.java | 2 +- .../com/earth2me/essentials/commands/Commandrealname.java | 2 +- .../com/earth2me/essentials/commands/Commandspeed.java | 2 +- .../essentials/commands/EssentialsLoopCommand.java | 8 ++++---- .../essentials/commands/EssentialsToggleCommand.java | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java index d1509185834..f0b54c94cee 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Essentials.java @@ -1052,7 +1052,7 @@ public boolean canInteractWith(final User interactor, final User interactee) { return true; } - return interactor.getBase().canSee(interactee.getBase()); + return !interactee.isHiddenFrom(interactor.getBase()); } //This will create a new user if there is not a match. diff --git a/Essentials/src/main/java/com/earth2me/essentials/PlayerList.java b/Essentials/src/main/java/com/earth2me/essentials/PlayerList.java index b92021913eb..a0017885dc6 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/PlayerList.java +++ b/Essentials/src/main/java/com/earth2me/essentials/PlayerList.java @@ -55,9 +55,9 @@ public static String listSummary(final IEssentials ess, final User user, final b int playerHidden = 0; int hiddenCount = 0; for (final User onlinePlayer : ess.getOnlineUsers()) { - if (onlinePlayer.isHidden() || (user != null && !user.getBase().canSee(onlinePlayer.getBase()))) { + if (onlinePlayer.isHidden() || (user != null && onlinePlayer.isHiddenFrom(user.getBase()))) { playerHidden++; - if (showHidden || user != null && user.getBase().canSee(onlinePlayer.getBase())) { + if (showHidden || user != null && !onlinePlayer.isHiddenFrom(user.getBase())) { hiddenCount++; } } @@ -75,7 +75,7 @@ public static String listSummary(final IEssentials ess, final User user, final b public static Map> getPlayerLists(final IEssentials ess, final IUser sender, final boolean showHidden) { final Map> playerList = new HashMap<>(); for (final User onlineUser : ess.getOnlineUsers()) { - if ((sender == null && !showHidden && onlineUser.isHidden()) || (sender != null && !showHidden && !sender.getBase().canSee(onlineUser.getBase()))) { + if ((sender == null && !showHidden && onlineUser.isHidden()) || (sender != null && !showHidden && onlineUser.isHiddenFrom(sender.getBase()))) { continue; } final String group = FormatUtil.stripFormat(FormatUtil.stripEssentialsFormat(onlineUser.getGroup().toLowerCase())); diff --git a/Essentials/src/main/java/com/earth2me/essentials/User.java b/Essentials/src/main/java/com/earth2me/essentials/User.java index cb835a1240c..216a20ab1f4 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/User.java +++ b/Essentials/src/main/java/com/earth2me/essentials/User.java @@ -709,7 +709,7 @@ public void setHidden(final boolean hidden) { } public boolean isHidden(final Player player) { - return hidden || !player.canSee(getBase()); + return hidden || isHiddenFrom(player); } @Override diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkick.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkick.java index a9ceca8cc21..b762ee7c8e8 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkick.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandkick.java @@ -28,7 +28,7 @@ public void run(final Server server, final CommandSource sender, final String co final User user = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null; if (user != null) { - if (target.isHidden(sender.getPlayer()) && !user.canInteractVanished() && !sender.getPlayer().canSee(target.getBase())) { + if (target.isHidden(sender.getPlayer()) && !user.canInteractVanished() && target.isHiddenFrom(sender.getPlayer())) { throw new PlayerNotFoundException(); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnear.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnear.java index c829a143b79..ca85d217079 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnear.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnear.java @@ -87,7 +87,7 @@ private String getLocal(final User user, final long radius) { final Queue nearbyPlayers = new PriorityQueue<>((o1, o2) -> (int) (o1.getLocation().distanceSquared(loc) - o2.getLocation().distanceSquared(loc))); for (final User player : ess.getOnlineUsers()) { - if (!player.equals(user) && !player.isAuthorized("essentials.near.exclude") && (!player.isHidden(user.getBase()) || showHidden || user.getBase().canSee(player.getBase()))) { + if (!player.equals(user) && !player.isAuthorized("essentials.near.exclude") && (!player.isHidden(user.getBase()) || showHidden || !player.isHiddenFrom(user.getBase()))) { final Location playerLoc = player.getLocation(); if (playerLoc.getWorld() != world) { continue; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandrealname.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandrealname.java index ed53615b0fd..485291bdc35 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandrealname.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandrealname.java @@ -25,7 +25,7 @@ protected void run(final Server server, final CommandSource sender, final String final boolean skipHidden = sender.isPlayer() && !ess.getUser(sender.getPlayer()).canInteractVanished(); boolean foundUser = false; for (final User u : ess.getOnlineUsers()) { - if (skipHidden && u.isHidden(sender.getPlayer()) && !sender.getPlayer().canSee(u.getBase())) { + if (skipHidden && u.isHidden(sender.getPlayer()) && u.isHiddenFrom(sender.getPlayer())) { continue; } u.setDisplayNick(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java index c47b73bc71f..aba64e29d40 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java @@ -67,7 +67,7 @@ private void speedOtherPlayers(final Server server, final CommandSource sender, final List matchedPlayers = server.matchPlayer(name); for (final Player matchPlayer : matchedPlayers) { final User player = ess.getUser(matchPlayer); - if (skipHidden && player.isHidden(sender.getPlayer()) && !sender.getPlayer().canSee(matchPlayer)) { + if (skipHidden && player.isHidden(sender.getPlayer()) && player.isHiddenFrom(sender.getPlayer())) { continue; } foundUser = true; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsLoopCommand.java b/Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsLoopCommand.java index ae5f26df03c..4c48caa3e55 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsLoopCommand.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsLoopCommand.java @@ -44,7 +44,7 @@ protected void loopOfflinePlayersConsumer(final Server server, final CommandSour } else if (matchWildcards && searchTerm.contentEquals("*")) { final boolean skipHidden = sender.isPlayer() && !ess.getUser(sender.getPlayer()).canInteractVanished(); for (final User onlineUser : ess.getOnlineUsers()) { - if (skipHidden && onlineUser.isHidden(sender.getPlayer()) && !sender.getPlayer().canSee(onlineUser.getBase())) { + if (skipHidden && onlineUser.isHidden(sender.getPlayer()) && onlineUser.isHiddenFrom(sender.getPlayer())) { continue; } userConsumer.accept(onlineUser); @@ -81,7 +81,7 @@ protected void loopOnlinePlayersConsumer(final Server server, final CommandSourc if (matchWildcards && (searchTerm.contentEquals("**") || searchTerm.contentEquals("*"))) { for (final User onlineUser : ess.getOnlineUsers()) { - if (skipHidden && onlineUser.isHidden(sender.getPlayer()) && !sender.getPlayer().canSee(onlineUser.getBase())) { + if (skipHidden && onlineUser.isHidden(sender.getPlayer()) && onlineUser.isHiddenFrom(sender.getPlayer())) { continue; } userConsumer.accept(onlineUser); @@ -96,7 +96,7 @@ protected void loopOnlinePlayersConsumer(final Server server, final CommandSourc if (matchedPlayers.isEmpty()) { final String matchText = searchTerm.toLowerCase(Locale.ENGLISH); for (final User player : ess.getOnlineUsers()) { - if (skipHidden && player.isHidden(sender.getPlayer()) && !sender.getPlayer().canSee(player.getBase())) { + if (skipHidden && player.isHidden(sender.getPlayer()) && player.isHiddenFrom(sender.getPlayer())) { continue; } final String displayName = FormatUtil.stripFormat(player.getDisplayName()).toLowerCase(Locale.ENGLISH); @@ -108,7 +108,7 @@ protected void loopOnlinePlayersConsumer(final Server server, final CommandSourc } else { for (final Player matchPlayer : matchedPlayers) { final User player = ess.getUser(matchPlayer); - if (skipHidden && player.isHidden(sender.getPlayer()) && !sender.getPlayer().canSee(matchPlayer)) { + if (skipHidden && player.isHidden(sender.getPlayer()) && player.isHiddenFrom(sender.getPlayer())) { continue; } foundUser = true; diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsToggleCommand.java b/Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsToggleCommand.java index dee5ed24a01..5d8ff2a89dd 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsToggleCommand.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/EssentialsToggleCommand.java @@ -51,7 +51,7 @@ protected void toggleOtherPlayers(final Server server, final CommandSource sende final List matchedPlayers = server.matchPlayer(args[0]); for (final Player matchPlayer : matchedPlayers) { final User player = ess.getUser(matchPlayer); - if (skipHidden && player.isHidden(sender.getPlayer()) && !sender.getPlayer().canSee(matchPlayer)) { + if (skipHidden && player.isHidden(sender.getPlayer()) && player.isHiddenFrom(sender.getPlayer())) { continue; } foundUser = true;