Go Create: Player Stat's & Leaderboard's - Aeronautics
A server-side stat's and Rank's mod using Minecraft's built-in net.minecraft.stats.Stats system and turns it into military-style classifications, scores, JSON exports, and a local HTTP API. All classification's are completely Completely Customisable.
Tags
Creators
Details
1.0.0
Compatibility
Changes
Go Create: Player Stat's & Leaderboard's - Aeronautics — NeoForge 1.21.1 Due to earlier Development's i chose to keep code and base mod name as PlayerDominance That way it's not tailored to our Server Network Unless you're in the ReadMe or on the profile Page.
A server-side NeoForge mod that reads Minecraft's built-in net.minecraft.stats.Stats system and turns it into military-style classifications, scores, JSON exports, and a local HTTP API. All classification's are completely Customisable and you can edit them to your liking, the same as the Value's shown in the Rest of the Config file.
This Mod is Directly Server-Side and is Used and maintained on our Discord here: https://discord.gg/6Mf73mmmzW
Included statistics PLAYER_KILLS, MOB_KILLS, DEATHS, DAMAGE_DEALT, DAMAGE_TAKEN, DAMAGE_BLOCKED_BY_SHIELD, JUMP, PLAY_TIME, WALK_ONE_CM, SPRINT_ONE_CM, SWIM_ONE_CM, FLY_ONE_CM, BLOCK_MINED, ITEM_CRAFTED, ITEM_USED, ITEM_PICKED_UP, ITEM_DROPPED, ANIMALS_BRED, FISH_CAUGHT, RAID_WIN, RAID_TRIGGER.
(Note: vanilla Minecraft doesn't track "blocks placed" as a separate statistic, only block mining, so that one was dropped.)
For StatType categories such as blocks and items, the mod sums all registered individual stats.
Classifications A tier plus a sub-class, shown together like VANGUARD // CLASS-II. Sub-class (I best, III entry-level) reflects how far a player has progressed through their current tier's score range.
Conscript 0+ Sentinel 500+ Operative 1,500+ Vanguard 3,500+ Warden 7,000+ Warlord 12,000+ Dominion 20,000+
All tier names, minimum scores, and the display format can be changed in config/playerdominance-common.toml under [classification]. The format supports {tier}, {tier_upper}, {class}, {class_roman}, and {score}.
Score model Nine tracked scores per player: Combat, PvE, PvP, Survival, Mobility, Exploration, Mining/Engineering, Economy/Activity, and Overall (a weighted composite of the rest). Square-root scaling throughout means no single very large raw counter can dominate a score. The eight Overall weights are now configurable under [scoreWeights] in the TOML file.
Commands /dominance — your dossier, with overall + per-category rank and percentile
/dominance player <name> — any tracked player's dossier, online or not
/dominance top [category] — top players by overall (default) or combat/pve/pvp/survival/mobility/exploration/mining/economy. The number displayed is configurable with [misc].topListSize.
/dominance export — admin-only, refreshes every online player's record and the leaderboard file
/dominance rebuild — admin-only, backfills players who have a vanilla stats file but no dominance record yet (e.g. joined before this mod was installed)
/dominance discord refresh — admin-only, forces an immediate Discord update
Persistent storage Every tracked player (online or not) gets one JSON file, keyed by UUID, under:
<server root>/playerdominance/stats/<uuid>.json
plus a combined, ranked leaderboard.json in the same folder. Records are written on login, on logout, and on the auto-export interval - offline players keep their last known scores and rank rather than dropping out of the rankings.
HTTP API Local-only API:
http://127.0.0.1:8787/api/health http://127.0.0.1:8787/api/players http://127.0.0.1:8787/api/player/<name>
It binds to localhost intentionally. For a public Discord bridge, use a private bridge/reverse proxy with authentication rather than exposing the endpoint directly.
Configuration On first server start, the mod generates config/playerdominance-common.toml with detailed comments. It contains HTTP API bind/port settings, JSON export, Discord webhook settings, classification names/thresholds, display labels, score weights, top-list size, admin permission level, and optional automatic backfill. Edit the file and restart the server for changes to take effect.
Discord integration Player Dominance can post a leaderboard embed to a Discord channel and then periodically edit that same message with fresh data, so the channel isn't spammed. This uses a Discord webhook, not a bot account — no bot token or Developer Portal application needed, and the mod never opens a Discord gateway connection; it only makes outbound HTTPS calls to post/edit one message.
To set it up:
In Discord, open the target channel's settings → Integrations → Webhooks. Create a webhook and copy its URL. In config/playerdominance-common.toml, under [discord], set enabled=true and paste the URL into webhookUrl. Restart the server. /dominance discord refresh (admin-only) forces an immediate update instead of waiting for the configured interval. The embed title, footer, color, webhook username/avatar, leaderboard size, and optional role mention are configurable under [discord].
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:F5rIH0pF:PqZHzpOv"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:F5rIH0pF:PqZHzpOv"
}
