Skip to content

Commit 41df918

Browse files
authored
GH-878 Add vanish permission check for player tab suggestions (#878)
* Add vanish permission check for player tab suggestions * Move `@FeatureDocs` annotation to PlayerArgument. * Resolve issues raised during the discussion on Discord
1 parent 9eb1d89 commit 41df918

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

eternalcore-core/src/main/java/com/eternalcode/core/bridge/litecommand/argument/PlayerArgument.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.eternalcode.core.bridge.litecommand.argument;
22

3+
import com.eternalcode.annotations.scan.feature.FeatureDocs;
4+
import com.eternalcode.core.feature.vanish.VanishPermissionConstant;
35
import com.eternalcode.core.feature.vanish.VanishService;
46
import com.eternalcode.core.injector.annotations.Inject;
57
import com.eternalcode.core.injector.annotations.lite.LiteArgument;
@@ -44,15 +46,25 @@ public ParseResult<Player> parse(Invocation<CommandSender> invocation, String ar
4446
return ParseResult.success(target);
4547
}
4648

49+
@FeatureDocs(
50+
name = "Vanish tabulation",
51+
description = "EternalCore prevents non-admin players from seeing vanished players in the commands like /tpa."
52+
+ " To re-enable this feature for specific players, grant them the eternalcore.vanish.tabulation.see permission."
53+
)
4754
@Override
4855
public SuggestionResult suggest(
4956
Invocation<CommandSender> invocation,
5057
Argument<Player> argument,
5158
SuggestionContext context
5259
) {
60+
CommandSender sender = invocation.sender();
5361
return this.server.getOnlinePlayers().stream()
54-
.filter(player -> !this.vanishService.isVanished(player.getUniqueId()))
55-
.map(player -> player.getName())
62+
.filter(player -> this.canSeeVanished(sender) || !this.vanishService.isVanished(player.getUniqueId()))
63+
.map(Player::getName)
5664
.collect(SuggestionResult.collector());
5765
}
66+
67+
public boolean canSeeVanished(CommandSender sender) {
68+
return sender.hasPermission(VanishPermissionConstant.VANISH_SEE_TABULATION_PERMISSION);
69+
}
5870
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.eternalcode.core.feature.vanish;
2+
3+
public class VanishPermissionConstant {
4+
5+
public static final String VANISH_SEE_TABULATION_PERMISSION = "eternalcore.vanish.tabulation.see";
6+
}

eternalcore-core/src/main/java/com/eternalcode/core/feature/vanish/VanishService.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.eternalcode.core.injector.annotations.component.Service;
55
import java.util.UUID;
66
import org.bukkit.Server;
7+
import org.bukkit.command.CommandSender;
78
import org.bukkit.entity.Player;
89
import org.bukkit.metadata.MetadataValue;
910

0 commit comments

Comments
 (0)