DUXPLIMA Documentation

Command Control

Decide which commands each player may run, hide the rest, and close the namespace escape.

Command Control decides which commands a player may run and hides the rest. A denied command is cancelled before it reaches its handler and answered with your own deny line, so a hidden command can be made to read as though it never existed. It also filters tab-completion, hides the plugin-listing and help commands, and closes the /minecraft:gamemode namespace escape. It stores nothing: every rule comes from config.

Module commandcontrol · enabled by default · modules/commandcontrol/config.conf

Permissions

/* generated:permissions */
NodeDefaultGrants
uxmessentials.commandcontrol.bypassopExempt from the command whitelist/blacklist gate and the tab-completion / plugin-hide scrub.
uxmessentials.commandcontrol.channelhide.bypassopExempt from the plugin-channel hider - the full channel-registration list is sent to this player.
uxmessentials.commandcontrol.spam.bypassopExempt from the command-spam rate limiter - commands are never counted and no spam action fires.
uxmessentials.commandcontrol.viewpluginsopSee the plugin-listing / help commands (/plugins, /pl, /help, ...) hidden by the plugin-hide feature.
uxmessentials.module.commandcontrolopHot-reload / inspect the commandcontrol module (command whitelist, tab-completion filter, plugin-hide).
/* /generated */

Settings

/* generated:settings */
KeyDefaultWhat it does
modeblacklistHow the command lists below are read: blacklist = the listed commands are DENIED, everything else is allowed (name the few commands to hide). whitelist = only the listed commands are ALLOWED, everything else is denied (a lock-down; name the full list a group may run). An empty whitelist denies every command, so populate it before switching.
use-unknown-command-messagetrueWhich deny message to show when a command is blocked. true shows the vanilla-style "unknown command" line, so a hidden command reads as though it does not exist; false shows an honest "you don't have permission" line. The text of both lines lives in the message catalog (messages_<lang>.conf, keys commandcontrol.unknown-command and commandcontrol.no-permission): edit it there.
commands.default[ ]
tab-completion.enabledtrue
plugin-hide.enabledtrue
plugin-hide.hidden-commands[ "plugins", "pl", "?", "help", "ver", "version", "about", "icanhasbukkit" ]
plugin-hide.deny-list-commandstrue
block-namespace-bypasstrueNamespace-bypass block. A player can otherwise dodge the lists above by prefixing a command with its namespace; "/minecraft:gamemode", "/bukkit:pl", "/somePlugin:cmd" all reach the same command as the bare form but read as a different label. With this on, the "namespace:command" form of any command whose bare form is denied is blocked too, so "/minecraft:gamemode" is treated exactly like "/gamemode". Holders of uxmessentials.commandcontrol.bypass may still use namespaced forms. Leave it on unless a plugin of yours legitimately relies on namespaced command input.
auto-lowercase-base-commandstrueAuto-lowercase the base command label. When on, the leading command word is lowercased before every check and before the command runs, so "/GAMEMODE creative" is treated and executed exactly as "/gamemode creative". Only the base label is touched - arguments (a target player, a world name, a message body) keep their casing. Turn it off only if a plugin of yours registers a genuinely case-sensitive command label.
command-spam.enabledfalse
command-spam.max-per-window40
command-spam.window-seconds2
command-spam.actionBLOCK
plugin-channel-hide.enabledfalse
plugin-channel-hide.allowed-channels[ "minecraft:brand", "bungeecord:main", "velocity:main" ]
/* /generated */

Placeholders

/* generated:placeholders */
PlaceholderRenders
%uxmessentials_commandcontrol_allowed_<command>%Whether the player may run that command where they stand (yes/no), answered from the rules the gate uses.
/* /generated */

Notes

  • The module ships inert. The bundled config is a blacklist with empty lists, so nothing of yours is blocked until you name it.
  • mode reads every list the same way. In blacklist the listed commands are denied and everything else is allowed; in whitelist only the listed commands are allowed. Switching to whitelist with an empty list denies everything, so fill the list first.
  • Blocking the namespace bypass matters. Without it /minecraft:gamemode reaches the same handler under a different root and slips past a rule written for /gamemode.
  • Plugin-hide is on by default and both hides and refuses /plugins, /help, /ver and friends for anyone without the view permission, which is what stops a player fingerprinting your server.
  • Spam protection is off by default. Switched on it rate-limits commands in a sliding window and either blocks the offending command, warns, or kicks.
  • Per-world overrides let one world run a different rule set, a lobby for instance, without a second module.

Related: Player State, Security, Server Tweaks

Command Control · UXPLIMA Documentation