Commands++ | Next-Level Command Management Plugin
Adds an extensive list of heavily customizable and programmable commands and features to modern minecraft servers.
Commands++ | Next-Level Command Management Plugin
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
- Plug-and-play. Don't want homes? `modules.homes.enabled: false`. Don't want chat formatting? Turn off the module. Most plugins force everything on. - Plug-and-play. 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. - Plug-and-play. `/cmds reload` actually unregisters listeners. Most plugins quietly leak handlers and double-fire events after reload. - Plug-and-play. Region scheduler, async scheduler, entity scheduler — used appropriately throughout. `teleportAsync` everywhere. No legacy `Bukkit.getScheduler()` anywhere. - Plug-and-play. Gradients, hover, click, rainbow. Legacy `&`-codes still work — auto-detected. Zero MiniMessage knowledge required to start. - Plug-and-play. Every admin action targeting another player appends to `audit.log` with 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
```yaml 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.
```yaml 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
```yaml 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 | | --- | --- | | Plugin | `/tpa` `/tpahere` `/tpaccept` `/tpdeny` `/tpcancel` `/tptoggle` `/tphere` `/tpall` `/tppos` `/tp` `/back` `/jumpto` `/top` | | Plugin | `/home` `/sethome` `/delhome` `/homes` `/warp` `/setwarp` `/delwarp` `/warps` `/spawn` `/setspawn` `/randomtp` | | Plugin | `/msg` `/r` `/ignore` `/unignore` `/msgtoggle` `/socialspy` `/realname` `/me` `/mail` `/helpop` | | Plugin | `/heal` `/feed` `/fly` `/god` `/afk` `/nick` `/speed` `/clearinventory` `/whois` `/near` `/getpos` `/exp` `/suicide` `/ext` | | Plugin | `/gmc` `/gms` `/gma` `/gmsp` `/gamemode` | | Plugin | `/enderchest` `/workbench` `/anvil` `/repair` `/more` `/skull` `/i` `/give` `/trash` `/enchant` `/condense` `/hat` `/recipe` `/invsee` | | Plugin | `/mute` `/unmute` `/jail` `/unjail` `/setjail` `/jails` `/kick` `/ban` `/unban` `/tempban` `/banhistory` `/freeze` `/sudo` `/clearchat` | | Plugin | `/vanish` `/vanishlist` | | Plugin | `/kit` `/kits` | | Plugin | `/world` `/worlds` `/time` `/weather` `/sun` `/rain` `/thunder` `/pweather` `/ptime` | | Plugin | `/staff add|remove|info|list|roles` | | Plugin (Vault) | `/pay` `/payconfirm` `/balance` `/baltop` `/eco` | | Plugin | `/burn` `/lightning` `/firework` `/info` | | Plugin | `/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 | | --- | --- | | LuckPerms | `commandsplus_*` placeholders — homes count, AFK, vanish, mute / jail remaining, mail unread, ping, uptime | | LuckPerms + 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.notify` on join + every 30 minutes - `/cmds update` for a manual check
All cadences and the slug live under `modules.update.*`.
---
Platform support
| Platform | Support | Notes | | --- | --- | --- | | Spigot 1.21+ | ✅ Full | Native Adventure | | Spigot 1.21+ | ✅ Full | Region-aware throughout, `teleportAsync` everywhere | | Spigot 1.21+ | ✅ Full | | | Spigot 1.21+ | ⚠ Limited |
Java 21+ required.
---
Install
1. Download the jar from the Versions page. 2. Drop it into your server's `plugins/` folder. 3. Start the server. `config.yml` and `messages.yml` generate with sane defaults. 4. Open `config.yml`, set `support.discord_invite:` to your community link. 5. `/cmds reload`.
Optional: install PlaceholderAPI for chat prefix integration, PlaceholderAPI for the placeholder set.
---
Links
- Companion plugin — Companion plugin - Companion plugin — %%MD1%% - Companion plugin — %%MD2%% - Companion plugin — %%MD3%% for full-featured server announcements