From 425b5300674a80e99537bf0a0cc99847b1ef3ca3 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 1 Dec 2024 14:39:34 +0100 Subject: [PATCH 1/3] Add vanish permission check for player tab suggestions --- .../bridge/litecommand/argument/PlayerArgument.java | 5 +++-- .../core/feature/vanish/VanishPermissionConstant.java | 6 ++++++ .../core/feature/vanish/VanishService.java | 11 +++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishPermissionConstant.java diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java b/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java index e43a971f4..4bd5f29df 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java @@ -50,9 +50,10 @@ public SuggestionResult suggest( Argument argument, SuggestionContext context ) { + CommandSender sender = invocation.sender(); return this.server.getOnlinePlayers().stream() - .filter(player -> !this.vanishService.isVanished(player.getUniqueId())) - .map(player -> player.getName()) + .filter(player -> this.vanishService.canSeeVanished(sender) || !this.vanishService.isVanished(player.getUniqueId())) + .map(Player::getName) .collect(SuggestionResult.collector()); } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishPermissionConstant.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishPermissionConstant.java new file mode 100644 index 000000000..028bab220 --- /dev/null +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishPermissionConstant.java @@ -0,0 +1,6 @@ +package com.eternalcode.core.feature.vanish; + +class VanishPermissionConstant { + + static final String VANISH_SEE_PERMISSION = "eternalcore.vanish.see"; +} diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java index 1b9c9ab7f..462161233 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java @@ -1,9 +1,11 @@ package com.eternalcode.core.feature.vanish; +import com.eternalcode.annotations.scan.feature.FeatureDocs; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Service; import java.util.UUID; import org.bukkit.Server; +import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.metadata.MetadataValue; @@ -34,4 +36,13 @@ public boolean isVanished(Player player) { } return false; } + + @FeatureDocs( + name = "Vanish tabulation", + description = "EternalCore prevents non-admin players from seeing vanished players in the commands like /tpa." + + " To re-enable this feature for specific players, grant them the eternalcore.vanish.see permission." + ) + public boolean canSeeVanished(CommandSender sender) { + return sender.hasPermission(VanishPermissionConstant.VANISH_SEE_PERMISSION); + } } From 49ca1cdfd575397600fc5900e2af4355e2290b82 Mon Sep 17 00:00:00 2001 From: Martin Date: Sun, 1 Dec 2024 17:55:46 +0100 Subject: [PATCH 2/3] Move `@FeatureDocs` annotation to PlayerArgument. --- .../core/bridge/litecommand/argument/PlayerArgument.java | 6 ++++++ .../com/eternalcode/core/feature/vanish/VanishService.java | 5 ----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java b/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java index 4bd5f29df..2c8032eff 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java @@ -1,5 +1,6 @@ package com.eternalcode.core.bridge.litecommand.argument; +import com.eternalcode.annotations.scan.feature.FeatureDocs; import com.eternalcode.core.feature.vanish.VanishService; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.lite.LiteArgument; @@ -44,6 +45,11 @@ public ParseResult parse(Invocation invocation, String ar return ParseResult.success(target); } + @FeatureDocs( + name = "Vanish tabulation", + description = "EternalCore prevents non-admin players from seeing vanished players in the commands like /tpa." + + " To re-enable this feature for specific players, grant them the eternalcore.vanish.see permission." + ) @Override public SuggestionResult suggest( Invocation invocation, diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java index 462161233..c09a8d0bc 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java @@ -37,11 +37,6 @@ public boolean isVanished(Player player) { return false; } - @FeatureDocs( - name = "Vanish tabulation", - description = "EternalCore prevents non-admin players from seeing vanished players in the commands like /tpa." - + " To re-enable this feature for specific players, grant them the eternalcore.vanish.see permission." - ) public boolean canSeeVanished(CommandSender sender) { return sender.hasPermission(VanishPermissionConstant.VANISH_SEE_PERMISSION); } From 6013f3dc98a3f11aec6c2313c8b3421a70179c6d Mon Sep 17 00:00:00 2001 From: Martin Sulikowski Date: Thu, 9 Jan 2025 05:10:53 +0100 Subject: [PATCH 3/3] Resolve issues raised during the discussion on Discord --- .../core/bridge/litecommand/argument/PlayerArgument.java | 9 +++++++-- .../core/feature/vanish/VanishPermissionConstant.java | 4 ++-- .../eternalcode/core/feature/vanish/VanishService.java | 5 ----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java b/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java index 2c8032eff..45f052ffd 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java @@ -1,6 +1,7 @@ package com.eternalcode.core.bridge.litecommand.argument; import com.eternalcode.annotations.scan.feature.FeatureDocs; +import com.eternalcode.core.feature.vanish.VanishPermissionConstant; import com.eternalcode.core.feature.vanish.VanishService; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.lite.LiteArgument; @@ -48,7 +49,7 @@ public ParseResult parse(Invocation invocation, String ar @FeatureDocs( name = "Vanish tabulation", description = "EternalCore prevents non-admin players from seeing vanished players in the commands like /tpa." - + " To re-enable this feature for specific players, grant them the eternalcore.vanish.see permission." + + " To re-enable this feature for specific players, grant them the eternalcore.vanish.tabulation.see permission." ) @Override public SuggestionResult suggest( @@ -58,8 +59,12 @@ public SuggestionResult suggest( ) { CommandSender sender = invocation.sender(); return this.server.getOnlinePlayers().stream() - .filter(player -> this.vanishService.canSeeVanished(sender) || !this.vanishService.isVanished(player.getUniqueId())) + .filter(player -> this.canSeeVanished(sender) || !this.vanishService.isVanished(player.getUniqueId())) .map(Player::getName) .collect(SuggestionResult.collector()); } + + public boolean canSeeVanished(CommandSender sender) { + return sender.hasPermission(VanishPermissionConstant.VANISH_SEE_TABULATION_PERMISSION); + } } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishPermissionConstant.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishPermissionConstant.java index 028bab220..4fe2976b8 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishPermissionConstant.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishPermissionConstant.java @@ -1,6 +1,6 @@ package com.eternalcode.core.feature.vanish; -class VanishPermissionConstant { +public class VanishPermissionConstant { - static final String VANISH_SEE_PERMISSION = "eternalcore.vanish.see"; + public static final String VANISH_SEE_TABULATION_PERMISSION = "eternalcore.vanish.tabulation.see"; } diff --git a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java index c09a8d0bc..4d9e15cbe 100644 --- a/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java +++ b/eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java @@ -1,6 +1,5 @@ package com.eternalcode.core.feature.vanish; -import com.eternalcode.annotations.scan.feature.FeatureDocs; import com.eternalcode.core.injector.annotations.Inject; import com.eternalcode.core.injector.annotations.component.Service; import java.util.UUID; @@ -36,8 +35,4 @@ public boolean isVanished(Player player) { } return false; } - - public boolean canSeeVanished(CommandSender sender) { - return sender.hasPermission(VanishPermissionConstant.VANISH_SEE_PERMISSION); - } }