VanillaGuard icon

VanillaGuard -----

Make your server feel 100% vanilla. Hides commands players can't use. Zero config.



═══════════════════════════════════════════════════
VanillaGuard — Documentation
═══════════════════════════════════════════════════


─── CONFIGURATION REFERENCE ───

language (string, default: "en")
Determines which message set is used.
Available: "en", "ru"

enabled (boolean, default: true)
Master switch. Set to false to disable all interception.

op-bypass (boolean, default: true)
If true, OP players see and use every command.

hide-commands (boolean, default: true)
Cancel unauthorized command execution and reply with the
vanilla "Unknown command" message.

hide-namespaced (boolean, default: true)
Block /plugin:command syntax for non-bypass players.

hide-tab-complete (boolean, default: true)
Remove inaccessible commands from tab-complete suggestions.

hide-help-entries (boolean, default: true)
Filter /help output to hide commands the player cannot use.

suppression-window-ms (long, default: 400)
After a blocked command, the packet hook actively scans
outgoing chat for this many milliseconds. Catches late
async permission messages from any plugin.

phrase-fallback-enabled (boolean, default: true)
If true, any outgoing chat that contains one of the
configured phrases is replaced with vanilla unknown,
regardless of timing.

phrases (list of strings)
Lowercase substrings to detect in outgoing chat.
Add your own if a custom plugin uses unique wording.

log-blocked (boolean, default: true)
Log blocked commands to the server console.

log-format (string)
Format string. Placeholders: {player}, {command}

permission-cache-ms (long, default: 3000)
How long to cache per-player permission lookups, in ms.

permission-cache-size (int, default: 256)
Maximum cached entries per player (LRU eviction).

whitelist (list of strings)
Commands that are NEVER hidden, regardless of permissions.
Useful for login/register flows.

blacklist (list of strings)
Commands that are ALWAYS hidden for non-bypass players.

debug (boolean, default: false)
Verbose console output for troubleshooting. Keep OFF in
production — generates a lot of output.


─── CUSTOM MESSAGES ───

Edit plugins/VanillaGuard/messages.yml:

en:
unknown-command: 'Unknown command. Type "/help" for help.'

ru:
unknown-command: 'Unknown command. Type "/help" for help.'

IMPORTANT: To preserve the vanilla feel, keep the
unknown-command string identical to what Minecraft 1.8
produces natively — plain white text, no formatting,
no prefix, no plugin name.


─── ADDING NEW LANGUAGES ───

To add another language, copy any block in messages.yml
and change the key:

de:
unknown-command: 'Unknown command. Type "/help" for help.'
prefix: "&8[&bVG&8]&r "
reloaded: "Konfiguration neu geladen."
...

Then in config.yml set:

language: "de"

Run /vg reload to apply.


─── TROUBLESHOOTING ───

Problem: A specific plugin still leaks a permission message.

Solution:
1. Set debug: true in config.yml
2. Run /vg reload
3. Reproduce the command
4. Find the [OUT-CHAT] log line in console
5. Copy a unique substring of the message
6. Add it to phrases: in config.yml
7. Run /vg reload again
8. Set debug: false


Problem: Tab-complete still suggests hidden commands.

Solution:
- Verify hide-tab-complete: true in config.yml
- Restart the server (do not use /reload) so the Netty
hook installs cleanly
- Check that the player does not have vanillaguard.bypass


Problem: Plugin fails to start with NMS errors.

Solution:
- Verify you're on a 1.8.x build using NMS v1_8_R3
- Check the console for the exact reflection error
- Some heavily-modified forks may shadow NMS classes
- Report the fork name in a discussion thread


Problem: Performance issues on a large server.

Solution:
- Set debug: false (most common cause)
- Lower permission-cache-ms if permissions change often
- Increase permission-cache-size if your players use many
different commands


Problem: Whitelisted commands like /login don't work.

Solution:
- Make sure they're in the whitelist: section
- Use the base command name (without slash)
- For aliases, add both the base and the alias


─── API FOR PLUGIN DEVELOPERS ───
Add VanillaGuard as a soft-dependency in your plugin.yml:

softdepend: [VanillaGuard]

Use the API safely:

if (Bukkit.getPluginManager().getPlugin("VanillaGuard") != null) {
me.hiteex.vanillaguard.api.SuppressionService.suppress(player);
}

After suppress(player) is called, the next
suppression-window-ms worth of outgoing chat to that
player will be filtered.

This is useful when your plugin wants to silently reject
a player action without showing any explanation message.


─── PERMISSIONS REFERENCE ───
Node Default Description
───────────────────────── ──────── ────────────────────────
vanillaguard.admin op Access to admin commands
vanillaguard.bypass op See and use everything


─── COMMANDS REFERENCE ───
/vanillaguard reload
Reloads config.yml and messages.yml. No server restart
needed for configuration changes.

/vanillaguard status
Shows whether the plugin is enabled, the active language,
and key configuration values.

/vanillaguard cache
Clears the permission cache. Use this after a permissions
plugin update to ensure changes take effect immediately.

Aliases: /vg, /vguard


─── UPDATE HISTORY ───
Version 1.0.0
- Initial public release
- NMS packet-level interception for 1.8.8
- Multi-language support (English, Russian)
- Whitelist and blacklist
- Public API
- Permission cache with LRU eviction


─── SUPPORT ───
For bug reports, feature requests, or general questions:

1. Check the FAQ section in the Description tab
2. Search existing discussions on this resource page
3. Open a new discussion thread
4. Or message the author directly

When reporting bugs, please include:
- Server software and version (Spigot/Paper/Panda + build)
- VanillaGuard version
- List of installed plugins
- Console output with debug: true enabled
- Exact reproduction steps


═══════════════════════════════════════════════════
Made by hiteex
═══════════════════════════════════════════════════
Resource Information
Author:
----------
Total Downloads: 10
First Release: May 22, 2026
Last Update: May 26, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings