Cross-platform command blocker and tab-complete manager for Minecraft networks.
| Platform | Versions |
|---|---|
| Paper / Spigot | 1.16.5+ |
| Velocity | 3.x |
- Tab-complete filtering — players only see commands they're allowed to use
- Command blocking with custom actions:
message,title,sound,console_command,give_potion_effect - Whitelist mode — allow only specific commands, block everything else
- Permission groups with priority, inheritance (
extends) and same-priority merging - Per-server groups — different tab lists per backend server (proxy only)
- Cross-server TabSync — proxy pushes the allowed list to backend via plugin messaging
- Spy-client protection — filters raw TAB_COMPLETE packets so hack clients can't discover hidden commands
- Multi-language —
en_EN,ru_RUbundled, add your own inplugins/CommandGuard/lang/ - Colon command blocking — optionally block all
namespace:commandbypasses
- Download the jar for your platform from Modrinth
- Drop it into
plugins/ - Start the server — config and lang files are generated automatically
- Edit
plugins/CommandGuard/config.yml - Run
/cg reload(Spigot) or/cgv reload(Velocity)
Use the CommandGuard API to listen to the CommandBlockedEvent or query tab groups from another plugin.
maven {
name = "jitpack.io"
url = "https://jitpack.io"
}compileOnly 'com.github.1wairesd:CommandGuard:VERSION:api'
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository><dependency>
<groupId>com.github.1wairesd</groupId>
<artifactId>CommandGuard</artifactId>
<version>VERSION</version>
<classifier>api</classifier>
<scope>provided</scope>
</dependency>Replace VERSION with a release tag (e.g. 2025.04.4) or main-SNAPSHOT for the latest commit.
// Listen to the blocked event on Spigot
@EventHandler
public void onCommandBlocked(BukkitCommandBlockedEvent event) {
event.getPlayer().sendMessage("Blocked: " + event.getFullCommand());
event.setCancelled(true); // allow the command through
}
// Query tab groups via the API
CGAPI api = CGAPIProvider.get();
List<String> allowed = api.getTabGroupManager().getTabCommands(permissions);| Command | Platform | Permission | Description |
|---|---|---|---|
/cg reload |
Spigot | commandguard.admin |
Reload config and refresh tab for all players |
/cg check <player> |
Spigot | commandguard.admin |
Show active tab group for a player |
/cg updategroup <player> |
Spigot | commandguard.admin |
Push updated tab list to a player |
/cgv reload |
Velocity | commandguard.admin |
Reload config and push TabSync to all players |
/cgv check <player> |
Velocity | commandguard.admin |
Show active tab group for a player |
/cgv updategroup <player> |
Velocity | commandguard.admin |
Push TabSync to a player |
| Permission | Description |
|---|---|
commandguard.admin |
Access to all /cg and /cgv commands |
commandguard.bypass.commands |
Bypass command blocking |
commandguard.bypass.tab |
Bypass tab-complete filtering |
commandguard.tab.<group> |
Assign a player to a tab group |
1wairesd.github.io/1wairesdIndustriesWiki
MIT