VanillaGuard 2.0.0
Major rewrite — bulletproof help filtering and many fixes
✦ Highlights
This release reworks the entire /help interception layer and fixes a class of leaks where plugins (Essentials, WorldEdit, ChatSentry, custom forks) would expose commands in /help that the player has no permission to use. The new whitelist help mode is the recommended choice for vanilla-feel servers.
✦ New features
• Three help modes — whitelist (only commands you list, leak-proof), permission (auto by perm node), vanilla (hardcoded vanilla 1.8 list).
• Aggressive suppression mode — replace ANY outgoing chat during the suppression window after a blocked command. Bulletproof against every "no permission" wording.
• 30+ phrase patterns across English and Russian, plus plugin-specific variants ("missing permission", "command is not available", etc).
• Permission heuristic — for plugins that don't declare permissions in plugin.yml, VanillaGuard probes common patterns (essentials.cmd, worldedit.cmd, plugin.command.cmd...) before deciding visibility.
• Help command pagination — properly handles 25+ commands across multiple pages, sorted alphabetically.
• Deduplication of help entries — commands registered under multiple labels (bukkit:help, minecraft:msg) are shown once.
• New admin commands:
/vg debug — toggle debug logging without editing config
/vg test <player> <command> — simulate filter check (no execution)
✦ Fixes
• Main class moved to its proper package on disk (was in src/main/java/ root, broke IDE refactoring).
• Tab-complete suggestions now correctly filtered at packet level for namespaced commands.
• Per-player log throttling moved to config (was hardcoded 500ms).
• Re-hook interval moved to config (was hardcoded 10s).
• Permission cache no longer leaks memory on player rejoin.
✦ Performance
• All NMS reflection cached at startup. Per-packet cost reduced from O(n) field iteration to O(1) lookup.
• Permission cache with bounded LRU size to prevent leaks on long-running servers.
• Snapshot-based config — atomic reload with no half-loaded state.
✦ Configuration
New config keys (delete your old config.yml or merge manually):
help:
mode: "whitelist" # whitelist | permission | vanilla
whitelist:
- "help"
- "?"
- "msg"
- "tell"
# add yours...
suppression-aggressive: false
sanitize-command-tree: true
log-throttle-ms: 500
rehook-interval-seconds: 10
hide-undeclared-perm: true
✦ Compatibility
Spigot 1.8.8. Tested with Essentials, EssentialsX, WorldGuard, LuckPerms, AuthMe, ChatSentry, ProtocolLib.
✦ Upgrade
1. Stop server
2. Replace VanillaGuard.jar in plugins folder
3. Delete plugins/VanillaGuard/config.yml (or merge manually — new keys won't auto-add)
4. Start server
5. Edit help.whitelist for your survival commands, run /vg reload
Author: hiteex • Issues / suggestions in the discussion tab