ModsJava
AdvancedDuty | Ultimate Staff Management
v1.0 — Spigot & Paper 1.19 – 1.20 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ INTRODUCTION What is AdvancedDuty? AdvancedDuty is a complete…
⬇ Download on Spigot
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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
/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
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PERMISSIONS
Permission Nodes
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
# 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.
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
PERMISSIONS
Permission Nodes
Code (Text):
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.
Spoiler: View config.yml (excerpt)
language: en
update:
enabled: true
auto-download: true
check-on-startup: true
github:
owner: hesamai16
repo: AdvancedDuty
proxy-mode:
enabled: false
shared-playtime: true
sync-interval-seconds: 60
duty:
require-reason: false
apply:
gamemode:
enabled: false
mode: CREATIVE
flight: false
heal: false
clear-active-potions: false
restore:
gamemode: true
flight: true
exp: true
level: true
food: true
health: true
location: false
inventory:
separate: true
include-ender-chest: true
clear-on-duty-off: false
clear-on-first-duty: true
afk:
enabled: true
timeout-minutes: 10
check-interval-seconds: 30
action: PAUSE # PAUSE | AUTO_OFF | KICK
notify-staff: true
warn-before-seconds: 0
track:
movement: true
chat: true
command: true
interact: true
look: false
inventory: false
sneak: false
sprint: false
swing: false
cooldown:
enabled: false
on-duty: 30
off-duty: 10
storage:
type: YAML # YAML | MYSQL
restore-session-on-join: true
mysql:
host: localhost
port: 3306
database: advancedduty
username: root
password: ""
staffchat:
require-on-duty: true
format: "&8[&bSTAFF&8] {prefix}&7{player}{suffix}&8: &f{message}"
mentions:
enabled: true
color: "&a"
sound:
enabled: true
name: ENTITY_EXPERIENCE_ORB_PICKUP
discord:
enabled: false
webhook-url: "https://discord.com/api/webhooks/YOUR_ID/TOKEN"
duty-events:
enabled: true
show-reason: true
show-duration: true
show-playtime-total: true
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Code (Text):
language: en
update:
enabled: true
auto-download: true
check-on-startup: true
github:
owner: hesamai16
repo: AdvancedDuty
proxy-mode:
enabled: false
shared-playtime: true
sync-interval-seconds: 60
duty:
require-reason: false
apply:
gamemode:
enabled: false
mode: CREATIVE
flight: false
heal: false
clear-active-potions: false
restore:
gamemode: true
flight: true
exp: true
level: true
food: true
health: true
location: false
inventory:
separate: true
include-ender-chest: true
clear-on-duty-off: false
clear-on-first-duty: true
afk:
enabled: true
timeout-minutes: 10
check-interval-seconds: 30
action: PAUSE # PAUSE | AUTO_OFF | KICK
notify-staff: true
warn-before-seconds: 0
track:
movement: true
chat: true
command: true
interact: true
look: false
inventory: false
sneak: false
sprint: false
swing: false
cooldown:
enabled: false
on-duty: 30
off-duty: 10
storage:
type: YAML # YAML | MYSQL
restore-session-on-join: true
mysql:
host: localhost
port: 3306
database: advancedduty
username: root
password: ""
staffchat:
require-on-duty: true
format: "&8[&bSTAFF&8] {prefix}&7{player}{suffix}&8: &f{message}"
mentions:
enabled: true
color: "&a"
sound:
enabled: true
name: ENTITY_EXPERIENCE_ORB_PICKUP
discord:
enabled: false
webhook-url: "https://discord.com/api/webhooks/YOUR_ID/TOKEN"
duty-events:
enabled: true
show-reason: true
show-duration: true
show-playtime-total: true
Free & Open Source — github.com/HesamAI16/AdvancedDuty | Discord Support
Made with ❤️ by HesamAI
Made with ❤️ by HesamAI
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.19, 1.20, 1.20.6
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
AdvancedDuty | Ultimate Staff Management is a free Minecraft Java mod. Compatible with Minecraft 1.19, 1.20, 1.20.6, 1.21. Downloaded 27 times (via Spigot). Download it and open it directly in the game.