ShapeBoard
Scoreboards for areas of ANY shape, not just boxes. Outline your dig zone, perimeter or build area with a line of marker blocks in the sky, run one command, and ShapeBoard tracks every block broken and placed inside that exact shape. When someone walks in, a leaderboard sidebar appears just for them. When they walk out, it goes away.
100% server-side. Players do not install anything.
See it in action

Full quality video with sound: shapeboard-demo.mp4
Why
Tools like buildevents can only track rectangular boxes. Real projects are not rectangles: perimeters have round corners, rivers you want to skip, weird bulges. If you track a box around a round perimeter, people mining outside the actual project still climb your leaderboard. ShapeBoard follows the exact outline you drew, so the count is fair.
The sidebar is also per-player for real. It is sent with targeted scoreboard packets, so only the people standing inside the shape see it. No teams are touched, no team colors are changed, and two players who happen to share a team color do not leak the board to each other. Whatever your server uses teams and colors for stays intact.
Install
- Fabric server with Fabric API, on any Minecraft from 1.21 to 26.2.
- Drop the jar for your Minecraft version into
mods/. Every version has its own, and the name ends in the version it is for:shapeboard-x.y.z+26.2.jaris the 26.2 one. Pick your version from the list on this page and Modrinth hands you the right file. - Restart. Done: there is no config file to edit.
Supported: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2 and 26.2. Minecraft 26.1 and up need Java 25, which is the game's requirement rather than the mod's.
Quick start
Say TVTvirus is admin and wants to track his server's perimeter dig:
Draw the outline. Fly to a Y above the build (for example y150) and draw one continuous line of a marker block (for example black concrete) tracing the shape of the project, until it closes on itself. Any shape works: circles, blobs, donut holes, cut corners. Small gaps up to 6 blocks are bridged automatically; bigger gaps make the scan fail and it tells you the exact coordinates of the open ends so you can go patch them.
Create the shape. Stand anywhere within 64 blocks of the line (or pass explicit coordinates from the console) and run:
/shapeboard create bigculo minecraft:black_concrete 150ShapeBoard walks the whole line, closes the shape, and reports the area:
[ShapeBoard] Shape 'bigculo' created in 45 ms: 797,680 columns inside, outline of 4,350 blocks. Objectives: bigculo_break / bigculo_place.Just want a rectangle? Skip the drawing entirely: give it two opposite corners and the ceiling Y instead:
/shapeboard createbox spawnzone 30640 4768 31631 6079 150Give it a pretty name. This is what players see on the sidebar:
/shapeboard rename bigculo Big CuloPick what the leaderboard ranks by. This is the step people miss: the sidebar ranks by blocks broken unless you say otherwise. Both breaks and placements are always counted, but only one of them drives the board.
/shapeboard metric bigculo break # digs (default) /shapeboard metric bigculo place # builds and decoration /shapeboard metric bigculo both # the sum Digging a place first and building it later? Both counters run all along, so leave it on `break` for the dig phase and flip it to `place` on building day. Any player can watch the other one whenever they want with `/shapeboard view place`, and `/shapeboard suffix <id> auto` makes the sidebar title say **Dig** or **Build** so nobody has to guess which board they are looking at.Building a project rather than digging one? Run the
placeline, or the board will sit at zero while everyone works.That is it. From now on, everything mined or placed inside the shape and below the marker line counts into the vanilla scoreboard objectives
bigculo_breakandbigculo_place. Anyone who walks in gets:[ShapeBoard] You entered Big Culo. Blocks you mine or place here count toward the leaderboard. [ShapeBoard] Run /shapeboard hide to hide the sidebar, /shapeboard quiet to mute these messages.with a live top 15 sidebar. If they are not in the top 15 but have a score, their own line is shown in the last slot so they always see where they stand.
Commands
| Command | Who | What |
|---|---|---|
/shapeboard create <id> <block> <y> [x z] |
OP | Scan the marker line and create a shape. x z optional start point (required from console) |
/shapeboard createbox <id> <x1> <z1> <x2> <z2> <y> |
OP | Rectangular zone with no drawing at all: two opposite corners + the ceiling Y (only blocks below it count) |
/shapeboard rename <id> <name...> |
OP | Set the display name shown on the sidebar |
/shapeboard metric <id> <break|place|both> |
OP | What the leaderboard ranks by: blocks broken (default), placed, or the sum. Perfect for build/decoration zones |
/shapeboard total <id> <on|off> |
OP | Show a Total line at the top of the sidebar with everyone's combined count (on by default) |
/shapeboard delete <id> |
OP | Delete the shape (scoreboard objectives are kept) |
/shapeboard list |
all | List shapes with area and marker info |
/shapeboard info <id> |
all | Details of one shape |
/shapeboard top [id] |
all | Top 10 + totals in chat |
/shapeboard hide / show |
all | Per-player sidebar toggle, remembered across sessions |
/shapeboard view <break|place|both|reset> |
all | What your sidebar ranks by, whatever the zone is set to. reset follows the zone again |
/shapeboard quiet [on|off] |
all | Mute the entered/left chat lines. The sidebar keeps working |
/shapeboard suffix <id> <word|auto|off> |
OP | Word after the display name on the sidebar title. auto turns into Dig / Build / Both, following what is being ranked |
/shapeboard prefix <id> <word|off> |
OP | Word before the display name |
/shapeboard contains <id> <x> <z> |
OP | Debug: is this column inside the shape? |
/shapeboard scan <id> |
OP | Count the blocks still standing inside the shape (dig progress) |
/shapeboard progress [id] |
all | Progress bar and remaining block count from the last scan |
/shapeboard layer [y] [id] |
all | One Y layer, measured against what that layer started with |
/shapeboard down <y> [id] |
all | Everything still standing from the top of the scan down to that Y: how much is left before the shape is clear to y |
/shapeboard blocks [id] |
all | Every block type still standing, best first (what you will be hauling out) |
How it works
- Scan: starting from a seed block, ShapeBoard walks the connected line of marker blocks at that exact Y (loading only the chunks the line passes through), auto-bridges gaps up to 6 blocks, then runs a flood fill from outside. Everything the flood cannot reach is inside. A diagonal line blocks the fill correctly, so outlines with 45 degree corners are fine.
- Mask: the result is stored as z-intervals per x column in
world/shapeboard/shapes.json. A lookup is a couple of integer comparisons, so tracking costs nothing even with dozens of players digging. - Counting: block breaks are counted through Fabric's break event, block placements through a tiny mixin. Only columns inside the shape and below the marker Y count. Scores go to plain vanilla scoreboard objectives, so everything else on your server (commands, datapacks, other mods) can read them.
- Sidebar: each viewer gets a client-only fake objective through targeted packets (
shapeboard_view), refreshed only when the numbers change. Leaving the area removes it and restores whatever sidebar objective the server had displayed. Player names on the board keep their team colors.
FAQ
Does it need anything on the client? No. Vanilla players see everything.
What about TNT? Blocks broken by explosions are not credited to anyone (the game does not attribute them to a player). Hand mining and tools count normally.
Do carpet bots count? Their breaks and placements count under the bot's own name, so a bot-heavy dig still shows who ran what. Bots never receive sidebars or chat messages.
Multiple shapes? Yes, create as many as you want. A player standing inside one sees that shape's board.
What if my outline has a hole in it? The scan fails and prints the coordinates of the open line ends. Patch them (or leave up to 6 blocks, which bridge automatically) and rerun create.
Can I track a build or decoration area that has no outline? Yes, two ways. If a rectangle is enough, /shapeboard createbox <id> <x1> <z1> <x2> <z2> <y> needs no blocks at all. For a custom shape, the marker line is only needed during the scan: draw a temporary outline with any cheap block at a Y above the build, run create, then remove the blocks; the shape keeps working forever (the mask is stored in world/shapeboard/). Either way, set /shapeboard metric <id> place so the leaderboard ranks by blocks placed instead of dug (or both for the sum).
Can I track an area that already had digging? Objectives start at zero when the shape is created. If you have previous numbers in another objective, copy them in with /scoreboard players operation.
Does the scan lag the server? It loads only the chunks the outline itself touches, once, at create time. A 4,000 block outline takes well under a second on a loaded world.
License
MIT
