AdvancedDuty | Ultimate Staff Management icon

AdvancedDuty | Ultimate Staff Management -----

The ultimate duty management solution for Minecraft servers.




[​IMG]
v1.0 — Spigot & Paper 1.19 – 1.20
[​IMG] [​IMG]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
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.
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

Resource Information
Author:
----------
Total Downloads: 3
First Release: Jun 13, 2026
Last Update: Jun 13, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings