Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
Commands++
The modern essentials replacement for Minecraft servers. One YAML file controls every utility — homes, warps, teleport requests, vanish, jail, mute, mail, kits, economy, chat formatting — toggleable per-module on Paper, Folia, and Purpur.
What is Commands++
A single primitive — modules — runs every feature on the server. Each module is a self-contained feature with its own commands, listeners, config section, and data files. Toggle a module in config.yml, hot-flip it with /cmds enable|disable <module>, or /cmds reload to apply edits. No restart, no listener leaks, no half-Adventure half-legacy output.
23 modules ship by default. 124 commands. Drop the jar in, set your Discord invite, /cmds reload, done.
Why server owners pick it
- One toggle per feature. Don't want homes?
modules.homes.enabled: false. Don't want chat formatting? Turn off the module. Most plugins force everything on. - Cross-cutting enforcement. Mute blocks chat and
/msg,/r,/me,/mail. Jail blocks every teleport command (and re-checks at TPA delay execute). Vanish hides from/players,/lastseen,/whois,/getpos, join/quit broadcasts, and lastseen updates. Most plugins half-implement this. - Reload-safe.
/cmds reloadactually unregisters listeners. Most plugins quietly leak handlers and double-fire events after reload. - Folia-native. Region scheduler, async scheduler, entity scheduler — used appropriately throughout.
teleportAsynceverywhere. No legacyBukkit.getScheduler()anywhere. - MiniMessage everywhere. Gradients, hover, click, rainbow. Legacy
&-codes still work — auto-detected. Zero MiniMessage knowledge required to start. - Audit-logged. Every admin action targeting another player appends to
audit.logwith timestamp + actor + target. Most essentials plugins have nothing equivalent. - Plug-and-play. Ships with branded gradient prefix, working defaults, animated rainbow welcome title, and a Discord CTA wired through
/support, the welcome message, and/cmds version. Useful on boot with zero edits.
Modules — one primitive for everything
modules:
homes:
enabled: true
default_max_homes: 3
default_home_name: home
teleport:
enabled: true
request_timeout_seconds: 60
teleport_delay_seconds: 3
cancel_on_movement: true
cancel_on_damage: true
randomtp:
enabled: true
cooldown_seconds: 60
max_attempts: 12
worlds:
world: { center_x: 0, center_z: 0, radius: 5000, min_y: 64, max_y: 256 }
economy:
enabled: true
confirm_threshold: 1000.0 # /pay above this requires /payconfirm
chat:
enabled: true
format: "<prefix><white><displayname></white><suffix> <dark_gray>»</dark_gray> <message>"
luckperms_prefix: true
Every module has the same shape: enabled plus its own keys. New defaults from plugin upgrades merge in without overwriting your edits.
Toggle at runtime
| Command | Effect |
|---|---|
/cmds modules |
List every module + its current state |
/cmds enable <module> |
Turn it on, run its onEnable immediately |
/cmds disable <module> |
Turn it off, unregister its listeners + cancel its tasks |
/cmds reload |
Re-read config + messages, re-enable modules |
/cmds update |
Manual Modrinth check |
Cross-cutting enforcement
Where Commands++ goes deeper than per-command Essentials checks.
Mute — blocks chat, /msg, /r, /me, /mail send. Every text path checks PlayerStatus.isMuted from a single helper, so adding a new command picks up muting for free.
Jail — blocks /spawn, /home, /warp, /tpa, /tpahere, /back, /randomtp, /jumpto, /top, /tphere, /tppos, /world. The TPA delay re-checks at execute time, so jailing during the countdown actually stops the teleport.
Vanish — hides from /players, /list, /lastseen, /whois, /getpos, /near. Suppresses join/quit broadcasts. Skips lastseen.yml updates on quit. Cancels item pickups + entity targeting. Persists through rejoins.
AFK — auto-detected from movement and chat. Optional auto-kick after configurable idle. [AFK] tag prepends to the chat that breaks the idle, not the next one.
Visual presets
Per-permission gradient styles for chat AND nicknames. Players run /chatcolor list or /nick list to see a click-to-apply gallery.
modules:
chat:
permission_styles:
- { name: rainbow, permission: commandsplus.chat.style.rainbow, style: "<rainbow><message></rainbow>" }
- { name: fire, permission: commandsplus.chat.style.fire, style: "<gradient:#ff5555:#ffaa00:#ffff55><message></gradient>" }
- { name: vip_gold, permission: commandsplus.chat.style.vip_gold, style: "<bold><gradient:#ffd700:#fff8a0><message></gradient></bold>" }
- { name: mvp_diamond, permission: commandsplus.chat.style.mvp_diamond, style: "<bold><gradient:#00ffff:#00aaff:#a855f7><message></gradient></bold>" }
playerstate:
nick_max_length: 16
nick_presets:
- { name: rainbow, permission: commandsplus.nick.preset.rainbow, style: "<rainbow><message></rainbow>" }
- { name: ocean, permission: commandsplus.nick.preset.ocean, style: "<gradient:#0088ff:#00ffff><message></gradient>" }
13 chat presets and 13 matching nick presets ship enabled. Add your own — it's just a YAML row.
Branding in two lines
prefix: "<bold><gradient:#00ffd5:#00aaff:#a855f7>[Commands++]</gradient></bold> <gray>"
support:
discord_invite: "https://discord.gg/your-invite"
discord_label: "discord.gg/your-invite"
show_in_welcome: true
The Discord propagates everywhere — /support command, welcome message CTA, /cmds version, broadcast messages that reference %discord%. One field, every surface.
Need a custom prefix? Replace the MiniMessage above with &8[&bMyServer&8] &7 and the parser falls back to legacy codes.
Commands
124 across 23 modules.
| Module | Commands |
|---|---|
| Teleport | /tpa /tpahere /tpaccept /tpdeny /tpcancel /tptoggle /tphere /tpall /tppos /tp /back /jumpto /top |
| Homes / Warps / Spawn | /home /sethome /delhome /homes /warp /setwarp /delwarp /warps /spawn /setspawn /randomtp |
| Communication | /msg /r /ignore /unignore /msgtoggle /socialspy /realname /me /mail /helpop |
| Player state | /heal /feed /fly /god /afk /nick /speed /clearinventory /whois /near /getpos /exp /suicide /ext |
| Gamemode | /gmc /gms /gma /gmsp /gamemode |
| Inventory | /enderchest /workbench /anvil /repair /more /skull /i /give /trash /enchant /condense /hat /recipe /invsee |
| Moderation | /mute /unmute /jail /unjail /setjail /jails /kick /ban /unban /tempban /banhistory /freeze /sudo /clearchat |
| Vanish | /vanish /vanishlist |
| Kits | /kit /kits |
| World | /world /worlds /time /weather /sun /rain /thunder /pweather /ptime |
| Staff | /staff add|remove|info|list|roles |
| Economy (Vault) | /pay /payconfirm /balance /baltop /eco |
| Admin | /burn /lightning /firework /info |
| Chat / Nick | /chatcolor (list / preset / reset), /nick (list / preset / set / clear) |
| Plugin | /cmds reload|modules|enable|disable|version|update |
Run /help for a paginated, click-to-suggest in-game menu. /cmds help for the admin equivalent.
Permissions
Single hierarchy: commandsplus.<module>.<command>[.other|.bypass|.list|.see]. Defaults match intent.
| Node | Default | Grants |
|---|---|---|
commandsplus.admin |
op |
Wildcard — every operator-level node, including all gradient presets |
commandsplus.<utility> |
true |
/home, /spawn, /msg, /help, /randomtp, etc. |
commandsplus.<admin> |
op |
/heal, /mute, /jail, /vanish, /sudo, etc. |
commandsplus.<command>.other |
op |
Target another player |
commandsplus.<command>.bypass |
op |
Skip cooldown / restriction |
commandsplus.homes.limit.<n> |
false |
Tiered home cap — grant commandsplus.homes.limit.10 for ten homes |
commandsplus.chat.style.<name> |
false |
Per-preset chat gradient |
commandsplus.nick.preset.<name> |
false |
Per-preset nickname gradient |
Grant commandsplus.admin to your staff LuckPerms group — every operator command works, every gradient preset unlocks.
Integrations
Every integration is a soft-depend. Commands++ runs cleanly with all of them missing.
| Plugin | Used for |
|---|---|
| PlaceholderAPI | commandsplus_* placeholders — homes count, AFK, vanish, mute / jail remaining, mail unread, ping, uptime |
| Vault + economy provider | /pay, /balance, /baltop, /eco, /payconfirm |
| LuckPerms | Chat-format prefix + suffix injection, group-aware permissions |
Update notifier
Async Modrinth poll on enable + every 6 hours. When a newer release is detected:
- Console banner with installed → latest version + download URL
- Clickable in-game banner sent to anyone with
commandsplus.update.notifyon join + every 30 minutes /cmds updatefor a manual check
All cadences and the slug live under modules.update.*.
Platform support
| Platform | Support | Notes |
|---|---|---|
| Paper 1.21+ | ✅ Full | Native Adventure |
| Folia | ✅ Full | Region-aware throughout, teleportAsync everywhere |
| Purpur 1.21+ | ✅ Full | |
| Spigot 1.21+ | ⚠ Limited |
Java 21+ required.
Install
- Download the jar from the Versions page.
- Drop it into your server's
plugins/folder. - Start the server.
config.ymlandmessages.ymlgenerate with sane defaults. - Open
config.yml, setsupport.discord_invite:to your community link. /cmds reload.
Optional: install LuckPerms for chat prefix integration, PlaceholderAPI for the placeholder set.
Links
- Discord — discord.gg/aJqqs2hYQJ
- MiniMessage docs — docs.advntr.dev/minimessage/format.html
- Hex color picker — htmlcolorcodes.com/color-picker
- Companion plugin — Broadcast++ for full-featured server announcements


