Skip to content

Leaderboards

Every board below is served live by the game server running Shiro’s Fishing. They replace the ranking screens that used to live in the in-game Journal — the Journal now only tracks your own catches.

Loading leaderboards…

Select a category above to change the tables shown in place. Total Catches and Heaviest Fish each show their own board; Cointosses includes toss totals, biggest wins, and biggest losses; Altar includes the player rite counts and server-wide outcomes. Refresh keeps your selected category. With a category focused, use Left/Right arrows or Home/End to switch tabs.

Two rankings show each player’s largest recorded single cointoss, measured in emeralds:

  • Biggest Cointoss Wins: the full winning payout, which is double the stake. A stake worth 100 emeralds that wins records a 200-emerald win.
  • Biggest Cointoss Losses: the sale value entered and lost. The same 100-emerald stake that loses records a 100-emerald loss, even though its payout is zero.

The stake includes the selling grid and selected fish in a bag or tank, including applicable market-demand bonuses. Smaller later tosses do not replace a player’s record. These rankings are sorted by amount, independently of the total number of tosses.

Amounts are tracked from the update that introduced these records. Older win/loss counts remain, but their amounts cannot be recovered. Players appear in each amount ranking after recording a positive win or loss of that kind.

Altar Outcomes shows server-wide uses, successes, and failures for Charm upgrades and for Common, Uncommon, Rare, Epic, and Legendary fish sacrifices. A use counts when its ritual resolves, so uses equal successes plus failures. Unfinished or refunded offerings do not count. The fish rows use the offered rarity; Charm upgrades combine all source rarities.

These are shared server totals, including offerings made by several players and charm upgrades that finish after their owner disconnects. The separate Altar Rites player ranking counts charm-upgrade uses credited to players who were online when the ritual resolved.

Existing saved altar totals carry over. Activity from before the server first recorded these statistics is unavailable; zero means no recorded outcomes in that category.

The wiki itself is a static site and never talks to the server while it builds. The game server running Shiro’s Fishing writes the current standings to dist/api/leaderboards.json in this wiki’s own directory (every 30 seconds, plus on start and stop). When you open this page, your browser fetches that file and draws the tables. If the server isn’t running, or you’re reading the wiki somewhere it can’t reach that file, the page shows a notice instead of numbers.

Add ?demo to the page URL to load a small bundled example payload instead — handy for seeing the layout without a server.

The list of boards is entirely server-driven: each board carries its own title, its ranked column, and any extra columns, so the mod can add, remove, or reorder boards without a wiki change.

Server data format (for server owners)

The mod’s LeaderboardsPublisher writes this file whenever wikiServerEnabled is on and wikiServerDirectory is set. To point the page somewhere else (a real HTTP endpoint, say), set PUBLIC_LEADERBOARD_ENDPOINT when building the wiki. The payload:

{
"schema": "shiros-fishing/leaderboards@1", // trailing number is the contract version
"updatedAt": "2026-09-10T09:41:00Z", // ISO-8601; when the boards were last recomputed
"server": "My SMP", // optional display name
"boards": [
{
"id": "total-catches", // stable slug: [a-z0-9-]+ (heading id + jump link)
"title": "Total Catches",
"blurb": "Every fish landed on the server.", // optional one-liner
"value": { "label": "Catches", "format": "integer" }, // the ranked column
"columns": [ // optional extra columns, shown after the value
{ "key": "won", "label": "Won", "format": "integer" }
],
"entries": [ // pre-sorted best-first
{
"player": "brookline", // display name, rendered as text
"uuid": "", // optional
"rank": 1, // optional; array order is used when absent (send it for ties)
"value": 8421, // the ranked value (number or string)
"columns": { "won": 318 }, // values for the extra columns, keyed by column.key
"note": "Legendary Dragontail · End" // optional context line under the row
}
]
}
]
}

Summary boards may set "entryLabel": "Ritual" and "ranked": false to label their category column and omit rank numbers and medals. Without these fields, the page renders the usual ranked Player table. Summary rows remain in the server’s chosen category order.

format is one of integer (default), decimal (1 dp), kg (1 dp + “ kg”), percent (value × 100 + “%”, so send 0.52), text, or datetime (send an ISO string or epoch ms). Unknown formats fall back to integer.

Keep id values stable across responses so deep links can select the matching category when the page loads. The wiki groups cointosses, cointoss-max-win, and cointoss-max-loss under Cointosses, and altar-rites and altar-outcomes under Altar. Other boards get their own category. Categories follow their first appearance in the payload, and boards within them keep their supplied order.