━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ INTRODUCTION What is AdvancedDuty? AdvancedDuty is a complete staff duty management system for Spigot and Paper servers. It lets your staff toggle between an on-duty and off-duty state — each with its own inventory, permissions, and playtime counter.
When a staff member goes
on duty, their inventory switches, their LuckPerms groups update, and their time starts being tracked. When they go
off duty, everything restores exactly as they left it — gamemode, flight, health, hunger, XP, and more.
No more staff using personal items while moderating. No more manually assigning permissions. No more guessing who is actually active.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FEATURES What's included Duty Toggle Staff go on/off duty with
/duty on,
/duty off, or
/duty toggle. A reason can be required. Admins can toggle duty for other players. Cooldowns prevent duty spam.
Separate Inventories Each staff member gets a completely isolated inventory — including the ender chest — for their on-duty state. It's saved and restored automatically every time they switch.
State Restore Going off duty restores gamemode, flight, health, hunger, XP, level, and optionally teleports the player back. Every option is individually configurable.
Playtime Tracking Every minute a staff member spends on duty is tracked. View a full leaderboard with
/duty playtimetop. The AFK system automatically pauses the counter when inactive.
AFK Detection Inactive staff are detected and handled automatically. Choose from three actions:
PAUSE the playtime counter,
AUTO_OFF duty, or
KICK. You decide exactly what counts as activity — movement, chat, commands, inventory clicks, and more are all individually configurable.
Staff Chat A private channel for on-duty staff. Supports LuckPerms
{prefix} and
{suffix} in the message format. Mentions are highlighted with a custom color and play a sound. Messages can be forwarded to Discord.
LuckPerms Integration Automatically grant or revoke LuckPerms groups and permissions when a staff member goes on or off duty. Add a name tag prefix or suffix to off-duty staff. Optionally enable a glow effect.
Discord Webhooks Send rich embeds to Discord when staff go on/off duty, including reason, session duration, and total playtime. Staff chat can also be forwarded to a separate channel.
Duty Logs Every duty session is logged to file — daily or single-file mode, with automatic cleanup after a configurable number of days.
PlaceholderAPI Support Over 15 placeholders for scoreboards, tab lists, and more. Check who's on duty, their playtime, their leaderboard rank, and more.
Multi-Language Built-in support for English, Spanish, Russian, and Chinese. Every message is fully customizable. Adding your own language is as simple as copying and translating a YAML file.
MySQL & YAML Storage Choose file-based YAML storage (no setup required) or MySQL with HikariCP for reliability and performance. Switching from YAML to MySQL? AdvancedDuty migrates all data automatically.
Proxy / Network Support BungeeCord and Velocity compatible. Enable proxy mode and connect to MySQL to share playtime across all servers in your network.
Auto Updater Checks GitHub for new releases on startup and optionally downloads them automatically. Run
/duty update to check manually.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ INSTALLATION Getting Started 1. Download & Install Drop
AdvancedDuty.jar into your server's
/plugins folder and restart.
2. Configure Open
plugins/AdvancedDuty/config.yml. Every option has a comment explaining what it does.
3. Set Language Set
language: en in
config.yml. Available:
en,
es,
ru,
zh.
4. Reload Run
/duty reload to apply any changes without restarting.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ COMMANDS Command Reference
Code (Text):
/duty on [reason] Go on duty
/duty off Go off duty
/duty toggle [reason] Toggle duty state
/duty status [player] View duty status
/duty playtime [player] Check on-duty playtime
/duty playtimetop [page] View the playtime leaderboard
/duty reset <player> Reset a player's playtime
/duty update Check for plugin updates
/duty reload Reload config and language files
/duty version Show plugin version
/duty help Show help menu
/staffchat <message> Send a message in staff chat
advancedduty.use Use /duty on/off/toggle
advancedduty.use.others Toggle duty for other players
advancedduty.staff Counted in playtime tracking
advancedduty.status View own duty status
advancedduty.status.others View other players' status
advancedduty.playtime Check own playtime
advancedduty.playtime.others Check other players' playtime
advancedduty.playtime.top View the leaderboard
advancedduty.playtime.reset Reset a player's playtime
advancedduty.staffchat Send staff chat messages
advancedduty.staffchat.receive Receive staff chat (off-duty)
advancedduty.cooldown.bypass Bypass duty cooldowns
advancedduty.update Check for updates
advancedduty.reload Reload the plugin
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PLACEHOLDERAPI Available Placeholders
Code (Text):
# Global
%advancedduty_staff_online% Number of on-duty staff
%advancedduty_staff_list% Names of on-duty staff
%advancedduty_any_staff_online% true / false
%advancedduty_top_1_name% Leaderboard #1 name (1–10)
%advancedduty_top_1_time% Leaderboard #1 time (1–10)
# Per Player
%advancedduty_status% On Duty / Off Duty
%advancedduty_status_color% Colored status label
%advancedduty_is_on_duty% true / false
%advancedduty_duty_icon% ✔ or ✘
%advancedduty_playtime% Formatted playtime (3h 22m 10s)
%advancedduty_playtime_hours% Total hours
%advancedduty_playtime_minutes% Total minutes
%advancedduty_playtime_seconds% Total seconds
%advancedduty_session_duration% Current session duration
%advancedduty_rank% Leaderboard position
%advancedduty_has_session% true / false
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ CONFIGURATION config.yml The
config.yml is heavily commented — every option is explained. Below is a small excerpt showing the key sections available.