Permission Groups
Groups control which commands appear in a player's tab-complete list. Each player is assigned one group, and the plugin filters tab-complete based on that group's command list.
How It Works
- Define groups in
config.ymlundertab: - Assign the permission
commandguard.tab.<group>to players via LuckPerms (or any permission plugin) - CommandGuard picks the group with the highest priority the player has
- Only commands from that group appear in the player's tab-complete
Basic Example
tab:
default:
priority: 0
commands:
- "/spawn"
- "/help"
- "/rules"
vip:
priority: 1
extends: default
commands:
- "/home"
- "/tpa"
- "/tpaccept"
admin:
priority: 2
extends: vip
commands:
- "/gamemode"
- "/tp"
- "/ban"
Assign a group via LuckPerms:
/lp user <player> permission set commandguard.tab.vip true
/lp group vip permission set commandguard.tab.vip true
Priority
The priority value decides which group wins when a player has permissions for multiple groups.
| Situation | Result |
|---|---|
| Player has one group | That group is used |
| Player has multiple groups with different priorities | Highest priority group wins |
| Player has multiple groups with equal priority | Their command lists are merged |
| Player has no group permission | default group is used |
The default group applies to everyone automatically. You never need to assign commandguard.tab.default manually.
Group Inheritance (extends)
Use extends to inherit all commands from another group without repeating them:
tab:
default:
priority: 0
commands:
- "/spawn"
- "/help"
vip:
priority: 1
extends: default # inherits /spawn and /help
commands:
- "/home"
moderator:
priority: 3
extends: vip # inherits /spawn, /help, /home
commands:
- "/ban"
- "/mute"
Inheritance is recursive — moderator → vip → default.
Group Merging
If two groups have the same priority, their command lists are merged into one:
tab:
survival-player:
priority: 1
commands:
- "/home"
- "/spawn"
creative-player:
priority: 1
commands:
- "/gamemode"
- "/fly"
A player with both commandguard.tab.survival-player and commandguard.tab.creative-player will see all four commands.
Per-Server Groups (Proxy only)
On a proxy, you can restrict a group to specific backend servers using the servers option:
tab:
survival-admin:
priority: 2
servers:
- survival
- survival2
commands:
- "/gamemode"
- "/tp"
lobby-admin:
priority: 2
servers:
- lobby
commands:
- "/hub"
- "/motd"
When a player switches servers, CommandGuard re-evaluates their active group based on the current server.
Per-server groups are only evaluated on the proxy side. Backend groups apply regardless of which server the player is on.