VoxelBench 2.0.3
Benchmarks no longer remove anything outside their own worlds VoxelBench 2.0.3 fixes cleanups that could delete what players had built or tamed in your worlds. It also corrects how three tests are measured on Folia and how several tests count their load in custom profiles, and…
Benchmarks no longer remove anything outside their own worlds
VoxelBench 2.0.3 fixes cleanups that could delete what players had built or tamed in your worlds. It also corrects how three tests are measured on Folia and how several tests count their load in custom profiles, and brings a batch of smaller fixes. If you run 2.0.2 or earlier, read the first section before your next benchmark.
If you run 2.0.2 or earlier
Up to 2.0.2, several cleanups removed things VoxelBench had not placed, in worlds that were not its own.
- A multi-run could delete regions of your main world.
/bench startwith more than one run, or withwarmup, and no pinned world — the default setup — prepared its test zones in the main world, while the tests themselves ran in a temporary benchmark world. Between two runs it then reset those regions of the main world: chunks unloaded without saving, and the region, entity and POI files around each zone deleted. The zones are drawn 1,000 to 10,000 blocks from spawn, and anything built there was lost. Pinning the main world with/bench world sethad the same effect. Auto-bench jobs with several runs used the same reset, and reached the main world whenever they fell back on it: when no temporary world could be created (Folia refuses to create one while the server runs), or when the main world was pinned. - Every run removed animals and other entities from every loaded world, on
Paper and Spigot. At the start of each
/bench start, custom profile, tier and stress-limit run, auto-bench jobs included, VoxelBench removed from every loaded world all loaded villagers and iron golems, farm animals, wolves, cats, horses and other mounts — tamed or named ones included —, hostile mobs, dropped items, projectiles, minecarts and boats (chest and hopper variants included). Folia skipped this sweep. /bench zones cleanand/bench stopcould sweep the main world. Without a pinned world,/bench zonesplaced its zone at x = 50,000, z = 50,000 of the main world, andcleanremoved every entity except players, paintings and item frames in a 400-block-wide box around it./bench stop, a shutdown during a run and the recovery after a crash removed test-like entities (villagers, cats, golems, zombies, skeletons, creepers, items, TNT…) around fixed test coordinates between x = 50,000 and 70,000, in the test's world — or in the main world when that world was unknown.
Update before your next multi-run. Until you can, pin a voxelbench_*
world first — /bench world create bench, then
/bench world set voxelbench_bench — so that pre-warm, region resets and the
sweeps of /bench zones clean and /bench stop target that world. Pinning
does not stop the start-of-run sweep on Paper and Spigot: only the update
does. On Folia, where a world cannot be created while the server runs, avoid
multi-runs until you update.
What 2.0.3 changes
Outside voxelbench_* worlds — its temporary benchmark worlds and the ones
made with /bench world create — VoxelBench no longer removes anything it did
not place itself.
- A multi-run takes its world before pre-warming, so pre-warm, shared zones
and region resets all target the world the tests run in. Region files are
reset, and chunks force-loaded, only in a
voxelbench_*world; anywhere else that step is skipped with a message and the run goes on. Auto-bench multi-runs follow the same rule. - The start-of-run sweep only removes entities in
voxelbench_*worlds. Weather and time are still set in every world during a run, then restored. /bench zonesshows the zones of the last run, in that run's world, and says so when that world is gone;cleanrefuses zones outside avoxelbench_*world./bench stop, a shutdown and crash recovery sweep onlyvoxelbench_*worlds, with no fallback on the main world.
Tests still remove what they built themselves, wherever they were allowed to run. Two consequences you may notice:
- A server whose worlds hold many loaded entities keeps them during the run, as in normal play.
- A multi-run in a world that is not a
voxelbench_*world — the main world pinned, or Folia without a pinnedvoxelbench_*world — no longer resets regions between runs: it says so, and later runs reuse the chunks already generated there.
Measurements
Folia: three tests measured where they work
On Folia, a test's headline TPS and MSPT come from the regions it works in.
lightingUpdate and tickingTileEntity build at their own coordinates, but
were measured on the run's shared zones — where they build nothing — as soon
as they used more than one zone, the standard benchmark included.
playerWorldLoad was measured at the world centre only, while its simulated
players spread up to 8,000 blocks away. Those figures described regions at
rest, at about 20 TPS, whatever the load.
They are now measured in the regions each test builds in, and
lightingUpdate's Folia measurement starts once its chunks are loaded, as on
Paper. Folia results for these three tests may come out lower than in
2.0.2: they now reflect the load the test puts on the server.
lightingUpdate and tickingTileEntity count in the site's Gameplay score,
so a standard Folia score can move with them. Paper and Spigot results are
unchanged.
Custom profiles: loads counted on the zones actually used
In a custom profile, a step whose dispersedZones is above 1 always runs on
the run's 8 zones. Four tests computed their totals on the step's value
instead, so a step at 2 to 7 was measured on the wrong basis:
- hopper (Paper and Spigot) filled only the zones the value named — 2 of
8 in
free-host, 4 of 8 inlow-memoryandexample— and the other structures ran empty; a value of 9 or 10 made the test fail. - explosion counted
tntCount× the value as requested, while placing charges in all 8 zones:free-hostplaced 160 charges for 40 "requested". The detonation ratio could reach 4, and the share of charges counted as presented could fall to 0, which lowered the site's confidence in the result. - mobSpawn could publish a survival rate above 100 %. No bundled profile was affected.
- chunkLoading divided its memory cap (30 % of the heap) by the value rather than by the zones it walks: where that cap applied, a step at 2 could load up to four times the chunks the cap allowed.
These totals are now counted on the zones each test actually uses. The
standard benchmark, stress-limit runs, single /bench test runs and steps at
1 or 8 are unchanged. Results of the affected profiles show a step in their
history: compare 2.0.3 runs with 2.0.3 runs.
Stress profiles: plateauBoost now applies
stress.ramp.plateauBoost was read and published in reports, but never
applied: the anti-plateau boost always ran. It now does what the profile says.
Only profiles that set it to false change — among the bundled ones,
stress-freehost, which now ramps without the boost, as intended for small
hosts. /bench stresslimit and the other bundled stress profiles keep their
ramp.
Bundled profiles say what they do
Six bundled profiles (example, free-host, low-memory, showcase,
stress-freehost, stress-monster) now describe what they really do: 8 zones
for any step above 1, except lightingUpdate and tickingTileEntity, which
build exactly as many zones as the step says; the config.yml limits that
silently cap chunk loading, mob spawn and explosion steps; six stress types
of seven in stress-monster; free-host in English. A copy you never edited
is updated automatically; an edited copy is left as it is.
A profile's description is part of its fingerprint, the profile hash that
/bench custom info shows and that voxelbench.com uses to group runs of the
same profile. free-host, stress-freehost and stress-monster have a new
description, so their results from 2.0.3 on are no longer grouped with
earlier ones. The other three changed only in comments and keep their
fingerprint.
Permissions
- A
kind: stresslimitprofile now requiresvoxelbench.stresslimit, like/bench stresslimit;voxelbench.customalone was enough to run one. Stress profiles are offered — in tab completion, on the profile screen and in the list of available profiles — only to those who can run them. - The profile screen requires
voxelbench.customorvoxelbench.start(voxelbench.guialone opened it), and its refresh button runs/bench custom reload, which requiresvoxelbench.reload.
Smaller fixes
- World messages that work when you follow them. A leftover world folder
no longer points you to
/bench world delete, which cannot remove a world that is not loaded; the pinning advice namesvoxelbench_<name>, the name/bench world creategives; the Multiverse message says the world was handed to/mv importand asks you to check/mv list. /bench world listno longer has a[MV]marker: it never appeared./bench verifytells apart a code made for another server, an expired code and too many attempts, instead of "server error, try again later"; a server that is already verified is told so.- Remote monitoring over the plan's server limit now pauses, checks again every 10 minutes and says to turn monitoring off for another server or change plan. It used to retry every minute with a bare HTTP 403.
- A second
/bench linkwhile one is waiting for confirmation is refused. It used to open a second link in parallel, one token overwriting the other. /api/metrics:ram_usedandram_freeare percentages of the maximum heap, and theirunitnow says%instead ofMB. Values are unchanged./bench monitor web startandstatusshow the real address —httpsandmonitor.https.portwhen HTTPS is on.- Chunks VoxelBench force-loads are now released on
/bench stop, on shutdown and after a crash, in every world. A chunk forced when the server crashed used to stay force-loaded for good. - Score screens, chat and the DiscordSRV message use the site's weights — Single-Core 40 %, Hardware 20 %, Gameplay 40 % (they said 45/20/35). They name Redstone and Block Physics under Single-Core, as the site does, and mark the network and single-core CPU tests as not counted in the site's score. VoxelBench shows the site's score; it computes none.
- The
config.ymlcomment on how long voxelbench.com keeps reports now matches the site (new installs only).
Upgrade
Drop the new jar in plugins/ and restart. No config or data migration.
Bundled profiles you never edited are refreshed; edited ones are left alone.
A group that has voxelbench.custom without voxelbench.stresslimit can no
longer run stress profiles: grant the node if it should. A tool reading the
unit of ram_used or ram_free in /api/metrics now gets %.