Player Stats & Roles

Automatic playtime and activity tracking, leaderboards, and stat-based Discord roles.

How stats are tracked

Admin

Once a server is connected, Madsi tracks player activity automatically: playtime, in-game (Minecraft) days, deaths and advancements come from Minecraft's own statistics, and number of sessions, last seen and who's online come from join and leave events. No datapacks or extra setup required. Browse it on the Stats page (Server → Stats in the sidebar). When a server first connects, or a new world starts, Madsi takes in every player already in that world's statistics for the first 24 hours; after that, a player's stats count once they have joined the server while it's connected to Madsi.

Stats commands

Everyone
CommandDescription
/statsYour own activity: playtime, sessions, last seen, deaths, and advancements. Pass @user or a query for someone else, and server:<name> to pick a server.
/leaderboardThe server's top players by playtime on the world being played.
/activityPlayers online over the last 24h, 7d or 30d, with peak hours.

Stat roles

Admin

Stat roles grant Discord roles automatically based on Minecraft activity, for example a 'Veteran' role at 100 hours, or tiered ranks that climb as players cross thresholds. Thresholds use the stat's own unit: hours for playtime, blocks for distance, health points for damage (a heart is 2), and a plain count for the rest. Configure the tiers on the Stats page. Stat roles are free on every plan; only the number of tracked stats (Free 15, Basic 50, Pro unlimited) and of time-windowed stats (Free 5, Basic 25, Pro 100) differs.

  • Pick the stat that drives each tier (e.g. playtime) and the threshold to reach it
  • Madsi re-checks stats as players play and adds or removes the roles
  • Using the same Discord role on several servers' rules? A player keeps it while any of those servers qualifies them, and loses it only when none do
  • Great for reward ranks, trusted-player gates, and activity leaderboards

Ranks and teams

Admin

The Roles In-Game page shows Discord roles inside Minecraft. Each connected server has its own ranks and teams, so pick the server at the top of the dashboard before editing; two servers can map the same Discord role differently.

  • Ranks are cosmetic chat tags like MVP+, granted by a Discord role, by assigning players directly, or both. A player shows the highest priority rank they hold, in-game and in the Discord relay
  • Teams put linked players into a vanilla scoreboard team by Discord role: colour, friendly fire, collision, nametag and death message visibility
  • Edits reach players already online straight away, and re-apply every time a player joins

Player activity

Admin

While a server is online, Madsi records how many players are on it once a minute and keeps 30 days of history. The Status page charts it over the last 24 hours, 7 days or 30 days, with the peak, the average and the three busiest hours of the day. /activity posts the same chart in Discord (range: picks the window). Busiest hours follow the timezone set on the Stats page.

Use the busiest hours to time restarts and events: schedule maintenance for the quietest hour and announcements for the busiest.

Worlds

Admin

Minecraft writes every world's statistics from zero, so a new world would otherwise leave the old world's totals driving your leaderboards and tiers. Madsi counts stats one world at a time. Once the server reports a different world, Start a new world in the Worlds section of the Stats page archives the current totals under a name you choose and restarts counting. Nothing is deleted. It isn't offered while the server is still on the same world, since its stats files would bring the old totals straight back. Where the server reports no world (the mod couldn't keep its marker in the world folder), the button is always offered: only use it once the map has changed.

  • Each rule scores This world (the default) or All worlds, which sums every archive in, so a 100-hour tier can span every season your server has run
  • Time windows (today, last 7 days) always measure inside the current world, since a window is a delta
  • The mod keeps a marker file inside the world folder; a world it has never seen raises a banner offering to archive, but Madsi never archives on its own. A restored backup would split your history for good
  • Archived worlds can be renamed or deleted individually; deleting one is permanent

The Danger zone at the bottom of the page is the destructive alternative: it deletes the current world's Minecraft statistics and snapshot history outright, keeping tracked stats, groups and rules but removing the stat roles members no longer qualify for. For at least the next 24 hours Madsi takes in every player the server's own stats files still hold, as it does for a new world. Unless you're the owner, a reset, a new world, deleting an archived world or changing the stats timezone is refused when a stat role rule it would re-score hands out a role at or above your own highest Discord role, or one a Team page mapping turns into Madsi permissions you couldn't grant. The stats timezone is shared by every Minecraft server of the Discord server and also sets when daily and weekly schedules run, so changing it needs the Restarts permission while one is on (plus Run commands or Backups when one of them runs a console line or a backup).

Playtime is one number everywhere. /stats and /leaderboard both use Minecraft's own play-time statistic, so /leaderboard scores the world being played and archiving a world starts it fresh without deleting anything. The {world_name} variable names the world in the leaderboard messages. Play sessions are a separate record: Madsi logs its own join/leave sessions for session counts, last-seen and who's online. The danger zone only deletes sessions if you tick "Play sessions too"; /stats session counts and last-seen stay lifetime figures, since they describe a player's relationship with the server rather than one world.

Privacy

Everyone

Admins can mark specific stats as sensitive on the server's Stats page. Sensitive stats are hidden from /stats and never drive leaderboards or roles, server-wide. All stats are scoped to the server they were tracked on; members of other Discord servers can't see them.

Archived worlds keep the totals they held when they closed, for as long as the server exists. Deleting an archived world, deleting the server, or removing Madsi from the guild deletes them with it.