AkifsCustomCommands
Create your own /freevip-style reward commands with limits, cooldowns, public broadcasts and full Discord logging.
Compatible with Minecraft 1.18.2 → 1.21.x on Spigot, Paper and forks.
✦ Highlights
- Dynamic commands — create any command at runtime via /cac create <name>. No restart, no plugin.yml edits, no preconditions.
- Multi-step rewards — every custom command runs an arbitrary list of console commands as the server console.
- Public broadcasts — announce a custom message to every online player when the command is used.
- Discord webhook logging — sends a localized embed on every successful use, with the player's skin head as thumbnail, broadcast text, executed commands and the remaining usage count.
- Limits & timers — total limit, per-player limit, cooldown per player, auto-expiring active lifetime.
- Per-command permissions (empty = everyone can use it).
- Modern colors — legacy &-codes, hex &#RRGGBB and gradients <gradient:#A:#B>text</gradient> (1.16+).
- Human-readable durations — 30s, 5m, 12h, 1d, 7d, 1w, or combined like 1d12h.
- Full localization — bundled English, Azərbaycan dili, Türkçe. Drop a new YAML to add your own language.
- Configurable prefix for chat AND console (gradient/hex supported).
- Tab completion everywhere and reload-safe via the Bukkit CommandMap.
✦ Quick start
Code (Text):
/cac create freevip
/cac addcmd freevip lp user %player_name% parent addtemp vip 7d
/cac addcmd freevip eco give %player_name% 1000
/cac addbcast freevip <gradient:#3FFF5C:#5CC8FF>%player_name%</gradient> earned 7 days of VIP!
/cac setlimit freevip 10
/cac setplayerlimit freevip 1
/cac setcooldown freevip 1d
/cac setduration freevip 7d
/cac setperm freevip myserver.freevip
Players just run
/freevip and the rewards are delivered, the broadcast fires, usage is tracked in
data.yml and a Discord embed is posted (if enabled).
✦ Discord webhook embed
Each successful use posts a rich embed that contains:
- Player's skin head as the thumbnail (mc-heads.net by default, configurable)
- Player name, command, timestamp
- Remaining uses when a limit is set, e.g. Server-wide: 7 of 10 left (3 used) and Akif: 1 of 1 left
- Broadcast text with all color codes/gradients stripped (plain text)
- Console commands that were executed (formatted as a code block)
All embed labels come from the active language file — change
language in
config.yml and the Discord message switches with it.
✦ Installation
- Drop AkifsCustomCommands-1.0.0.jar into your server's plugins/ folder.
- Start the server. The plugin auto-creates:
- plugins/AkifsCustomCommands/config.yml — global settings, prefix, Discord webhook
- plugins/AkifsCustomCommands/commands.yml — your custom command definitions
- plugins/AkifsCustomCommands/data.yml — usage stats
- plugins/AkifsCustomCommands/languages/{en,az,tr}.yml
- Edit config.yml (prefix, language, Discord webhook URL) and run /cac reload.
Upgrading? If your old
config.yml still has a
commands: section, the plugin migrates it into
commands.yml automatically on first load.
✦ Permissions
- akifscustomcommands.admin — access to /cac (default: op)
- <your.permission> — optional per-command permission you assign with /cac setperm
✦ Languages
Bundled out of the box:
English,
Azərbaycan dili,
Türkçe. Want another? Copy
en.yml to
de.yml, translate the values (keep the keys), set
language: de in config and reload. Hex codes and gradients work in language files too.
✦ Notes
- No dependencies — PlaceholderAPI is not required.
- Async webhook — Discord delivery happens on a background thread; the main server thread is never blocked.
- Reload-safe — commands are dynamically (un)registered into the Bukkit CommandMap.
Author:
Akif · Free to modify and redistribute.