Skip to content

Releases: CodeW4VE/ShapeBoard

ShapeBoard 1.7.1: Minecraft 26.3

Choose a tag to compare

@github-actions github-actions released this 03 Oct 16:18

Minecraft 26.3 is now supported. Download shapeboard-1.7.1+26.3.jar and use Java 25, Fabric Loader 0.19.5 or newer, and Fabric API for 26.3.

Existing shapes and totals are retained when updating the same world. Stop the server cleanly, back up the world, replace the old ShapeBoard jar and update Fabric as needed. Keep the world's shapeboard/ folder and vanilla scoreboard data. There is no need to recreate shapes or rescan them to resume counting.

The volume scanner now reads Minecraft 26.3's string and id block palettes as well as older Name palettes. This fixes scans reporting zero remaining blocks after a world upgrade. The English and Spanish READMEs include the compatibility table and update instructions.

Validation: all 14 supported jars compile. A local Fabric 26.2 world using ShapeBoard 1.7.0 was upgraded to Fabric 26.3 with ShapeBoard 1.7.1. Four shapes across two dimensions, 18 individual break/placement scores, baselines, scan snapshots and player preferences were retained; 40 command responses matched. A fresh scan counted the expected 300 blocks, including a mixed palette with 190 stone, 100 diamond ore and 10 stairs, and a second restart retained the data. The placement mixin was also verified in the runtime-transformed BlockItem class.

Earlier Minecraft versions remain supported, from 1.21 through 26.2. Choose the jar whose filename matches your Minecraft version; the +1.21 jar also covers 1.21.1 and +26.1.2 also covers 26.1 and 26.1.1.

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 05:03

ShapeBoard now runs on every Minecraft release from 1.21 to 26.2. Nothing the mod does changed in this version: it is the same 1.6.0 feature set, built for thirteen versions instead of eight.

Which jar do I download

Grab the one that ends in your Minecraft version. A jar refuses to load on a version it was not built for, rather than half working.

Minecraft Jar Java
1.21, 1.21.1 shapeboard-1.7.0+1.21.jar 21
1.21.2 shapeboard-1.7.0+1.21.2.jar 21
1.21.3 shapeboard-1.7.0+1.21.3.jar 21
1.21.4 shapeboard-1.7.0+1.21.4.jar 21
1.21.5 shapeboard-1.7.0+1.21.5.jar 21
1.21.6 shapeboard-1.7.0+1.21.6.jar 21
1.21.7 shapeboard-1.7.0+1.21.7.jar 21
1.21.8 shapeboard-1.7.0+1.21.8.jar 21
1.21.9 shapeboard-1.7.0+1.21.9.jar 21
1.21.10 shapeboard-1.7.0+1.21.10.jar 21
1.21.11 shapeboard-1.7.0+1.21.11.jar 21
26.1, 26.1.1, 26.1.2 shapeboard-1.7.0+26.1.2.jar 25
26.2 shapeboard-1.7.0+26.2.jar 25

New here: 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.

New to ShapeBoard

Track blocks broken and placed inside any shape you outline with marker blocks in the sky, not just a box, with a leaderboard sidebar that only the people standing inside the area see. Server side only: your players join with a vanilla client and install nothing. Full walkthrough in the README.

If you are tracking a build rather than a dig, remember step 4 of the quick start: /shapeboard metric <id> place ranks by blocks placed, and both by the sum.

For anyone reading the source

The mod used to ship out of three branches, one per point where Minecraft renamed an API. That does not survive seven more versions, and 26.x cannot share a build script with 1.21 at all, since Minecraft stopped shipping obfuscated in 26.1 and there are no mappings left to ask for.

All thirteen jars now come out of main via tools/multiversion.py: the renames live in one substitution table, and the 26.x build script is derived from the 1.21 one rather than kept next to it. Everything the ports actually needed was renaming, which is why the table is short:

  • 1.21.5 chat click and hover events became records, and every NBT getter returns an Optional with an OrElse twin beside it
  • 1.21.11 ResourceLocation is Identifier, ResourceKey.location() is identifier(), and a command's permission level is Commands.hasPermission(Commands.LEVEL_GAMEMASTERS)
  • 26.1 Loom no longer remaps anything, Java 25, mixins compiled to match

Checked on real servers rather than only by compiling: 1.21.11 and 26.2 both boot, register their commands, and count a volume scan to the block, with the same numbers on both.

Full Changelog: v1.6.0...v1.7.0

ShapeBoard 1.6.0

Choose a tag to compare

@TVTvirus TVTvirus released this 01 Aug 23:53

How much is left before we reach y?

Layer by layer was already there, but the question crews actually plan around is "how much before this thing is clear down to y-20?". That is a sum over layers, and the volume scan already stores every one of them, so it costs nothing to answer.

  • /shapeboard down <y> [id] — adds up every block still standing from the top of the scan down to that Y. Progress bar, blocks cleared and remaining, and how many of those layers are done.
— Big Culo · down to y-20 —
███████░░░░░░░░░░░░░ 38.60%
Down to y-20: 210,455 / 545,180 blocks cleared, 334,725 remaining
Layers: 43 of 96 cleared from y99 down to y-20, highest one left is y41.

It reads from the last /shapeboard scan like progress and layer do, so it answers instantly and does not touch the world. With no id it uses the shape you are standing in.

Thanks to the player who suggested it.

Which jar

Minecraft Jar
1.21 / 1.21.1 shapeboard-1.6.0+1.21.jar
1.21.2 shapeboard-1.6.0+1.21.2.jar
1.21.3 shapeboard-1.6.0+1.21.3.jar
1.21.4 shapeboard-1.6.0+1.21.4.jar
1.21.5 shapeboard-1.6.0+1.21.5.jar
1.21.6 shapeboard-1.6.0+1.21.6.jar
1.21.7 shapeboard-1.6.0+1.21.7.jar
1.21.8 shapeboard-1.6.0+1.21.8.jar

Full Changelog: v1.5.0...v1.6.0

ShapeBoard 1.5.0

Choose a tag to compare

@TVTvirus TVTvirus released this 01 Aug 17:09

Two boards in one zone

A zone that gets dug out first and built up later needed two leaderboards in the same place. It turns out it already had them: breaks and placements were always counted into two separate objectives, only the view was missing.

  • /shapeboard view <break|place|both|reset> — any player, any time, picks what their own sidebar ranks by, whatever the zone is set to. Saved across sessions. A builder can watch the placements while the diggers keep their board.
  • /shapeboard suffix <id> <word|auto|off> and /shapeboard prefix <id> <word|off> — decorate the sidebar title. auto resolves to Dig, Build or Both following what each viewer is ranking by, so "Virusia" reads Virusia Dig during the dig phase and Virusia Build on building day.

Overlapping shapes were never the answer (a column belongs to the first shape that contains it), and now they are not needed.

Fewer messages

  • /shapeboard quiet [on|off] — mutes the entered/left chat lines for good. The sidebar keeps working.
  • Those lines are now rate limited to one per zone every 15 minutes, and the hint below them only shows the first time. Crossing the border of a big perimeter happens a lot more often than anyone wants to read about it.

Fixed

  • A brand new shape showed nothing at all: a sidebar with zero lines is not drawn by the client, so the board looked broken until the first block was counted. It now renders the zeroed board.

Which jar

Minecraft Jar
1.21 / 1.21.1 shapeboard-1.5.0+1.21.jar
1.21.2 shapeboard-1.5.0+1.21.2.jar
1.21.3 shapeboard-1.5.0+1.21.3.jar
1.21.4 shapeboard-1.5.0+1.21.4.jar
1.21.5 shapeboard-1.5.0+1.21.5.jar
1.21.6 shapeboard-1.5.0+1.21.6.jar
1.21.7 shapeboard-1.5.0+1.21.7.jar
1.21.8 shapeboard-1.5.0+1.21.8.jar

Server side only, Fabric API required.

Full Changelog: v1.4.2...v1.5.0

v1.4.2 — what is left to dig

Choose a tag to compare

@TVTvirus TVTvirus released this 29 Jul 19:21

What is actually left in there

People planning storage kept asking the same thing: not "how much is left" but what is left. /shapeboard blocks answers it.

/shapeboard blocks

— Big Culo blocks left —
deepslate 37,376,792
stone 32,912,885
tuff 3,131,119
andesite 3,086,276
...
other 48,445
Blocks left: 88,659,548 in 40 listed types

Snapshots now remember 40 block types instead of 5, so the list covers everything that matters and lumps the tail into other. No argument uses the zone you are standing in, same as progress and layer.

On our own perimeter it turns out two block types, deepslate and stone, are 79% of the entire job, and the ore total is 1.15M blocks. That is the kind of thing you want to know before building the storage hall.

Which jar

Minecraft Jar
1.21, 1.21.1 shapeboard-1.4.2+1.21.jar
1.21.2 shapeboard-1.4.2+1.21.2.jar
1.21.3 shapeboard-1.4.2+1.21.3.jar
1.21.4 shapeboard-1.4.2+1.21.4.jar
1.21.5 shapeboard-1.4.2+1.21.5.jar
1.21.6 shapeboard-1.4.2+1.21.6.jar
1.21.7 shapeboard-1.4.2+1.21.7.jar
1.21.8 shapeboard-1.4.2+1.21.8.jar

Full Changelog: v1.4.1...v1.4.2

v1.4.1 — untracked digs

Choose a tag to compare

@TVTvirus TVTvirus released this 29 Jul 18:58

Making the leaderboard add up

1.4.0 could measure the hole. This makes the per-player board agree with it.

The counters only see what a player is credited for. Blocks dug before the shape existed, explosions and world edits are invisible to them, so the leaderboard total can sit well below what the scan measured. On our own perimeter the board read 6,154,430 while the scan said 6,630,915 had actually been cleared: 476,485 digs with nowhere to go.

/shapeboard untracked bigculo Untracked

That difference now lives under a fake name on the board, and it is recalculated after every scan, so it never drifts:

 #1 TVTvirus   5,000,000
 #2 Qethu      1,154,430
 #3 Untracked    476,485
Total: 6,630,915 blocks dug

/shapeboard untracked <id> off removes it.

Also in this release: the scan result is now written to the server log too. Scans are usually fired from cron over RCON, and by the time one finishes that connection is gone, so the result used to vanish.

Which jar

Minecraft Jar
1.21, 1.21.1 shapeboard-1.4.1+1.21.jar
1.21.2 shapeboard-1.4.1+1.21.2.jar
1.21.3 shapeboard-1.4.1+1.21.3.jar
1.21.4 shapeboard-1.4.1+1.21.4.jar
1.21.5 shapeboard-1.4.1+1.21.5.jar
1.21.6 shapeboard-1.4.1+1.21.6.jar
1.21.7 shapeboard-1.4.1+1.21.7.jar
1.21.8 shapeboard-1.4.1+1.21.8.jar

Full Changelog: v1.4.0...v1.4.1

v1.4.0 — how much is left to dig

Choose a tag to compare

@TVTvirus TVTvirus released this 29 Jul 15:15

How much is left to dig

Break counters answer who dug the most. They were never going to answer how much is left: explosions and world edits are not credited to any player, so on a TNT-driven perimeter the counters miss almost everything.

1.4.0 answers it directly by counting the blocks that are still standing inside the shape.

/shapeboard scan bigculo
/shapeboard progress
— Big Culo progress —
█░░░░░░░░░░░░░░░░░░░ 6.96%
Progress: 6,630,915 / 95,290,463 blocks cleared, 88,659,548 remaining
Layers: 0 of 198 layers cleared
Left to dig: deepslate 37,376,792, stone 32,912,885, tuff 3,131,119

/shapeboard progress with no arguments uses the zone you are standing in, so anyone can check without knowing the shape id.

Per layer

/shapeboard layer 63

— Big Culo · layer y63 —
██░░░░░░░░░░░░░░░░░░ 11.00%
Layer y63: 479,739 of 539,012 blocks remaining

With no Y it uses the layer you are standing on. Layers are measured against what the layer actually started with, not the raw column count: y63 above began with 539,012 blocks because part of it was already air and water.

What counts

Only solid, collidable, breakable blocks. Air, water, lava, leaves, grass, decoration and bedrock are skipped, so the bar reaches 100% when the hole is genuinely finished. The default Y range now starts above the bedrock floor, since those bottom layers can never be emptied.

The denominator

By default the percentage is measured against the raw volume of the Y range. The remaining count is exact, but the percentage is not: natural caves and the air above the terrain count as "already dug", which can easily read as 40% on an untouched perimeter.

For a true reading, measure what was there before anyone touched it. On a throwaway server with the same seed, pregenerate the area, copy your shape in, and run:

/shapeboard scan <id>
/shapeboard baseline <id> fromscan

Then carry that world/shapeboard/shapes.json to the live server. It stores the real starting count, per layer included. On our own perimeter this took the reading from a meaningless 43% to the actual 7%.

Cost

The scan runs on a worker thread and reads chunk data straight from storage, so the server keeps ticking. A 797,680 column perimeter (3,298 chunks) scans in about 2 seconds. It saves the world first so freshly dug chunks are always included. Run it from cron and /shapeboard progress answers instantly from the stored snapshot.

Commands added

Command Who What
/shapeboard scan <id> OP Count the blocks still standing inside the shape
/shapeboard progress [id] all Progress bar and remaining count from the last scan
/shapeboard layer [y] [id] all One Y layer, against what that layer started with
/shapeboard range <id> <ymin> <ymax> OP Y slice the scan covers
/shapeboard baseline <id> <blocks>|fromscan OP The real starting count

Which jar

Minecraft Jar
1.21, 1.21.1 shapeboard-1.4.0+1.21.jar
1.21.2 shapeboard-1.4.0+1.21.2.jar
1.21.3 shapeboard-1.4.0+1.21.3.jar
1.21.4 shapeboard-1.4.0+1.21.4.jar
1.21.5 shapeboard-1.4.0+1.21.5.jar
1.21.6 shapeboard-1.4.0+1.21.6.jar
1.21.7 shapeboard-1.4.0+1.21.7.jar
1.21.8 shapeboard-1.4.0+1.21.8.jar

Fully additive: 1.3.0 shapes keep working, nothing to migrate.

Full Changelog: v1.3.0...v1.4.0

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 06:39

Total line on the sidebar

A new » Total line at the top of the sidebar shows everyone's combined count for the shape (using its metric — dug, placed, or both). See the whole zone's progress at a glance while you mine.

  • Toggle per shape: /shapeboard total <id> on|off (on by default)
  • Its own gold label; never collides with a player name
  • Sidebar budget stays at 15 lines (Total + top 14), and toggling re-renders instantly for anyone watching

Setting up a build zone? Set the metric

The sidebar ranks by blocks broken by default. Breaks and placements are both always counted, but only one drives the board, so a build project shows an empty leaderboard until you run:

/shapeboard metric <id> place    # or: both

Now available for the whole 1.21 series

Same features on every version, just built against each one. Pick the jar that matches your server:

Your server Jar
1.21, 1.21.1 shapeboard-1.3.0+1.21.jar
1.21.2 shapeboard-1.3.0+1.21.2.jar
1.21.3 shapeboard-1.3.0+1.21.3.jar
1.21.4 shapeboard-1.3.0+1.21.4.jar
1.21.5 shapeboard-1.3.0+1.21.5.jar
1.21.6, 1.21.7, 1.21.8 shapeboard-1.3.0+1.21.6.jar

Only two things changed across the whole range: ClickEvent/HoverEvent became sealed interfaces in 1.21.5, and ServerPlayer#server went private in 1.21.6. The scanner, flood fill, mask store and block-place mixin are identical everywhere.

Still 100% server-side — players install nothing.

Full Changelog: v1.2.0...v1.3.0

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 07:56

New: rectangular zones without drawing

/shapeboard createbox <id> <x1> <z1> <x2> <z2> <y>

Two opposite corners plus the ceiling Y, and the zone exists: no marker blocks, no scanning. Corners can be given in any order. Everything else (metric, sidebar, top, hide/show) works exactly the same as scanned shapes.

Both readmes now clearly explain the three ways to define a zone: drawn outline (any shape), temporary outline (draw, create, remove the blocks), and createbox (rectangles).

Full Changelog: v1.1.0...v1.2.0

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 07:32

New: per-shape metric

Each shape can now choose what its leaderboard ranks by:

/shapeboard metric <id> break   (blocks broken, default)
/shapeboard metric <id> place   (blocks placed)
/shapeboard metric <id> both    (broken + placed)

The sidebar, /shapeboard top and the instant refresh all follow the shape's metric. Perfect for build and decoration zones: outline them with temporary marker lines (the line is only needed during the scan, you can remove the blocks right after creating the shape), then set the metric to place.

Also

  • Spanish readme: README_es.md
  • Code comments translated to English
  • Existing shapes keep working unchanged (they default to break)

Full Changelog: v1.0.1...v1.1.0