DytchsStaffUtils
A clean, fully customizable staff playtime tracker with network-wide stats, weekly history, and optional LiteBans infraction tracking. One command pulls up a polished GUI breaking down exactly where and how long any staff member has been online.Support: Message "dytch" on discord for free lifetime support!
Features
- Network-wide playtime tracking. Tracks time per server and shows a combined breakdown, so you can see total time plus a per-server split for any player across your whole network.
- Weekly history. Every week is logged separately with its own totals and per-server breakdown. The GUI paginates through current and past weeks so you can audit activity over time.
- Live current-week view. A dedicated glowing item shows the in-progress week at a glance.
- LiteBans infraction tracking (optional). Pulls warns, mutes, and bans issued by the staff member, both all-time and per-week. If LiteBans isn't installed, the infraction display simply hides itself, no errors.
- Status and activity info. Network-wide online status, last seen, and first-tracked date.
- Console support. Running the command from console prints a clean text readout instead of a GUI.
- Fully customizable GUI and messages. Every item, slot, color, and message is editable. Hide any element by commenting it out. Slots support single, list, and range syntax.
- Triple color support. Legacy codes (&a), RGB hex (&#RRGGBB), and MiniMessage (<gradient:..>, <#hex>, <rainbow>, <bold>) all work, and can be mixed in the same line.
Requirements
- A Spigot/Paper server (and most forks) running [your supported MC version, e.g. 1.21+]
- A database, configured in config.yml. For a multi-server network, point every server at the same database so stats sync network-wide.
- LiteBans (optional) only if you want the infraction tracking. Everything else works without it.
Installation
- Drop DytchsStaffUtils.jar into the /plugins folder of every server you want to track, then start the server once to generate the config files.
- Open config.yml and enter your database details. For network-wide tracking, use the same database on all servers.
- (Optional) Make sure LiteBans is installed on those servers if you want warns/mutes/bans to show.
- Restart the server(s).
- Customize gui.yml and messages.yml to match your server's style if you'd like.
- Run /staffplaytime <player> to view a player's stats.
Commands
- /staffplaytime <player> — open the stats GUI for a player
- /dytchsstaffutils reload — reload the configuration
- /dytchsstaffutils reset <player> — wipe all tracked data for a player
- /dytchsstaffutils litebans [player] — [LiteBans integration utility, confirm exact behavior, e.g. sync/verify infraction data]
- /dytchsstaffutils update — Automatically checks for any updates available and downloads the newest update if one is available
All permission nodes are documented in the plugin and assigned out of the box.
Discord Bot
The plugin can host its own Discord bot — look up staff playtime and punishments with slash commands (/staffplaytime, /staffplaytimeweek, /punishments), see a live "staff online" counter in the bot's status, and have a full staff summary auto-posted to a webhook every week. Commands are Administrator-only, embeds show player heads, and it's safe to enable on every server — they share one bot with automatic failover.Setup
- Create a bot at discord.com/developers/applications and copy its token (Bot tab → Reset Token).
- Invite it to your Discord with the bot + applications.commands scopes (OAuth2 → URL Generator).
- In config.yml set discord.enabled: true, paste the token, and set guild-id to your Discord server's ID so commands appear instantly.
- (Optional) For the weekly report, create a channel webhook and paste its URL under discord.webhook.
- Restart — the console shows Discord bot logged in and the slash commands are live.
Customization Placeholders
These work in any item name or lore in gui.yml (and in messages.yml where relevant):%player% %uuid% %status% %online% %last_seen% %first_seen% %total% %servers% %warns% %mutes% %bans% %infractions% %week_range% %week_total% %week_servers% %week_warns% %week_mutes% %week_bans% %week_infractions% %page%
Note: %servers% and %week_servers% expand to one line per server, so they must be the only thing on their lore line. The per-line format is controlled by the server-line option.
| Node | Default | Purpose |
|---|---|---|
| dytchutilsplaytime.staff | false | Passive tracking. Any player who has this — directly or via an inherited rank — has their playtime recorded. Give it to your staff ranks. |
| dytchutilsplaytime.admin | op | Command access. Required to use /staffplaytime and every /dytchsstaffutils subcommand (reload, reset, litebans). |
| /staffplaytime <player> | /splaytime, /weeklyplaytime | Opens the live GUI of a player's weekly + all-time playtime and infractions | dytchutilsplaytime.admin |
| /staffplaytime reload | — | Reloads config / messages / gui | dytchutilsplaytime.admin |
| /dytchsstaffutils reload | /dsu, /staffutils | Reloads config / messages / gui | dytchutilsplaytime.admin |
| /dytchsstaffutils reset <player> | /dsu reset … | Wipes ALL of a player's stored playtime/presence data (offline-capable; doesn't touch LiteBans) | dytchutilsplaytime.admin |
| /dytchsstaffutils litebans [player] | /dsu litebans …; subcommand also accepts diagnose / debug | Prints the LiteBans diagnostic (defaults to you if no player given) | dytchutilsplaytime.admin |
| /dytchsstaffutils:reload | — | Same as reload; the namespaced form so the server's own /reload stays untouched | dytchutilsplaytime.admin |
