Permissions

All VoxelBench permissions default to OP only, except voxelbench.lang. Use a permissions plugin (LuckPerms, PermissionsEx, etc.) to grant access to non-OP players.

How Permissions Are Checked

  • voxelbench.use is required for every /bench command. Without it, nothing else works, not even /bench lang.
  • Most commands also require their own permission, listed below. Each test has its own node too (see Test Permissions).
  • Tab completion only suggests the commands, sub-commands and tests you are allowed to run.
  • GUI buttons run the corresponding commands, so they are checked the same way. Some screens also check a permission when they open (see GUI Screens).
  • Operators, and players granted *, have every permission.
  • The auto-bench agent sends /vbautobot, which checks no permission: the one-time code validated by voxelbench.com is its authorization. Its other form, /bench autobot, still requires voxelbench.use like every /bench command, and nothing more.

Permission Nodes

PermissionDefaultGrants
voxelbench.useOPAccess to /bench; alone, the commands listed as "voxelbench.use only"
voxelbench.startOP/bench start; also /bench custom
voxelbench.start.forceOPThe force option of /bench start, /bench stresslimit and /bench custom run (ignore the cooldown), and the Force start button of the pre-flight screen
voxelbench.stopOP/bench stop and /bench cancel
voxelbench.guiOP/bench gui
voxelbench.settingsOPThe settings screen of the GUI, which changes benchmark-mode and the anonymization level in config.yml
voxelbench.infoOP/bench info
voxelbench.reportsOP/bench reports
voxelbench.stresslimitOP/bench stresslimit, and running a stress limit profile with /bench custom run
voxelbench.tierOP/bench tier
voxelbench.reloadOP/bench reload and /bench custom reload
voxelbench.linkOP/bench link and /bench link force
voxelbench.verifyOP/bench verify
voxelbench.worldOP/bench world, /bench zones tp and /bench zones clean (which only removes entities in voxelbench_* worlds)
voxelbench.customOP/bench custom
voxelbench.profileOP/bench profile (experimental profiler): captures, ring buffer, saved profiles, and the Profiler and Reports → Profiles menu screens. Profiles name the classes of every installed plugin
voxelbench.profile.uploadOP/bench profile upload: send a saved profile to the server's voxelbench.com account, right away or after a preview and a confirmation. Needed on top of voxelbench.profile, which does not grant it
voxelbench.profile.shareOP/bench profile share / unshare: publish a cleaned copy of a saved profile behind a public, unlisted link (no account, 7 days), right away or after a preview and a confirmation, and delete that link. Needed on top of voxelbench.profile; neither it nor voxelbench.profile.upload grants it
voxelbench.memoryOP/bench memory (experimental memory inspection): heap summaries, which force a full GC (a short server freeze) and name the classes of every installed plugin; listing, showing and deleting heap summaries and dump analyses; and the Memory and Reports → Memory menu screens
voxelbench.memory.dumpOP/bench memory dump: write a full heap dump, after a preview and a confirmation. It freezes the whole server and the file contains everything in memory (tokens, passwords, player data). Also /bench memory analyze (start or cancel the analysis of a dump, in a separate Java process that may use gigabytes of memory; the menu button too): the analysis reads that same file. Needed on top of voxelbench.memory, which does not grant it, and granted by no other node
voxelbench.memory.uploadOP/bench memory upload: send a saved heap summary or dump analysis to the server's voxelbench.com account (never a heap dump), right away or after a preview and a confirmation; also the upload verb after summary, analyze and dump … analyze. Needed on top of voxelbench.memory, which does not grant it, and granted by no other node
voxelbench.memory.shareOP/bench memory share / unshare: publish a cleaned copy of a saved summary or analysis behind a public, unlisted link (no account, 7 days), and delete that link; also the share verb after summary, analyze and dump … analyze. Needed on top of voxelbench.memory; neither it nor voxelbench.memory.upload grants it
voxelbench.langEveryone/bench lang (still requires voxelbench.use)
voxelbench.testOPEvery built-in test; includes .test.hardware, .test.gameplay and .test.singlecore
voxelbench.monitorOPEverything under /bench monitor; includes .monitor.bars and .monitor.web
voxelbench.monitor.barsOPBoss bar monitoring
voxelbench.monitor.webOPWeb dashboard, push mode, remote monitoring to voxelbench.com, dashboard authentication, IP whitelist and HTTPS
voxelbench.adminOPIn-game update notifications (see update-check in Configuration)

Command Permissions

Every command requires voxelbench.use, plus:

CommandAdditional permission
/bench help, version, status, tps, mspt, pingNone (voxelbench.use only)
/bench zones (list)None (voxelbench.use only)
/bench zones tp, /bench zones cleanvoxelbench.world
/bench startvoxelbench.start; the force option also needs voxelbench.start.force
/bench stop, /bench cancelvoxelbench.stop, including to stop a test you started yourself
/bench guivoxelbench.gui
/bench infovoxelbench.info
/bench reportsvoxelbench.reports
/bench stresslimitvoxelbench.stresslimit; force also needs voxelbench.start.force
/bench tiervoxelbench.tier
/bench reloadvoxelbench.reload
/bench link, /bench link forcevoxelbench.link
/bench verifyvoxelbench.verify
/bench worldvoxelbench.world
/bench customvoxelbench.custom or voxelbench.start; /bench custom reload also needs voxelbench.reload, and /bench custom run of a stress limit profile also needs voxelbench.stresslimit
/bench langvoxelbench.lang
/bench profile (every other sub-command)voxelbench.profile
/bench profile uploadvoxelbench.profile and voxelbench.profile.upload
/bench profile share, /bench profile unsharevoxelbench.profile and voxelbench.profile.share
/bench memory (every other sub-command)voxelbench.memory
/bench memory dump (and dump list, dump delete, dump … analyze)voxelbench.memory and voxelbench.memory.dump
/bench memory analyze [<dump>] [mode], analyze cancelvoxelbench.memory and voxelbench.memory.dump
/bench memory analyze list, show, deletevoxelbench.memory
/bench memory upload (alias send), and the upload verb after summary, analyze or dump … analyzevoxelbench.memory and voxelbench.memory.upload (plus voxelbench.memory.dump for analyze and dump)
/bench memory share, /bench memory unshare, and the share verb after summary, analyze or dump … analyzevoxelbench.memory and voxelbench.memory.share (plus voxelbench.memory.dump for analyze and dump)
/bench monitorSee Monitor Permissions
/bench test (list)None (voxelbench.use only)
/bench test <id>The node of that test, see Test Permissions

Without voxelbench.world, /bench zones still lists the zones, but hides the teleport links and the tp/clean usage lines. The clean line only appears when the zones are in a voxelbench_* world, the only worlds where clean removes anything.

Without voxelbench.stresslimit, stress limit profiles are not offered: the tab completion of /bench custom run, the custom profiles screen and the list of available profiles printed after an unknown name leave them out. /bench custom list and info still show every profile.

Monitor Permissions

Holding any one of voxelbench.monitor, voxelbench.monitor.bars or voxelbench.monitor.web opens the monitoring area; each part then requires its own node:

CommandRequires one of
/bench monitor, monitor status, monitor gui, monitor helpvoxelbench.monitor, voxelbench.monitor.bars, voxelbench.monitor.web
/bench monitor bars ...voxelbench.monitor.bars
/bench monitor web ..., push ..., remote ..., auth ..., whitelist ..., https ...voxelbench.monitor.web
/bench monitor reloadvoxelbench.monitor
  • /bench monitor without argument opens the boss bar screen for players with voxelbench.monitor.bars; for everyone else it shows the status.
  • voxelbench.monitor.web covers everything that exposes metrics outside the game: the HTTP server, push mode, API keys, the IP whitelist and certificates.
  • voxelbench.monitor grants both child nodes, and it is the only node that allows /bench monitor reload, because that command reloads the whole plugin configuration.

GUI Screens

These screens check a permission when they open, whichever way you reach them:

ScreenRequires
Main menu (/bench gui)voxelbench.gui
Settingsvoxelbench.settings (its two buttons that write config.yml check it again)
Server informationvoxelbench.info
Boss bar monitoringvoxelbench.monitor.bars
Monitoring menu, monitoring statusAny monitor node
Web server, push mode, remote monitoring, authentication, HTTPS, IP whitelistvoxelbench.monitor.web
Reports (menu, lists, details, comparison)voxelbench.reports
Stress limitvoxelbench.stresslimit
Custom profilesvoxelbench.custom or voxelbench.start; it lists stress limit profiles only with voxelbench.stresslimit

Buttons that start a benchmark, a test or another action run the matching command, so the command permissions above also apply.

Test Permissions

Each test is guarded by its own node. The node belongs to the test itself, so the canonical ID and the short alias of a test need the same permission (for example /bench test lightingUpdate and /bench test lighting both check voxelbench.test.lighting). /bench test alone and /bench test list need no extra node, and an unknown ID only prints an error.

The category nodes group the tests the same way as the test catalog:

PermissionIncludes
voxelbench.testAll built-in tests (the three nodes below)
voxelbench.test.hardwareThe hardware tests
voxelbench.test.gameplayThe gameplay tests
voxelbench.test.singlecoreThe single-core CPU tests

Hardware Tests

PermissionTest
voxelbench.test.diskdisk
voxelbench.test.networknetwork
voxelbench.test.memorymemory
voxelbench.test.multicoremultiCore

Single-Core CPU Tests

PermissionTest
voxelbench.test.singlecorebenchmarksingleCoreBenchmark
voxelbench.test.singlecoremaxsingleCoreMax

Gameplay Tests

PermissionTest
voxelbench.test.chunkloadingchunkLoading
voxelbench.test.mobspawnmobSpawn
voxelbench.test.hopperhopper
voxelbench.test.explosionexplosion
voxelbench.test.lightinglightingUpdate (alias lighting)
voxelbench.test.worldsaveworldSave
voxelbench.test.redstoneredstone
voxelbench.test.blockphysicsblockPhysics
voxelbench.test.chunktickingchunkTicking
voxelbench.test.collisionentityCollision (alias collision)
voxelbench.test.tileentitytickingTileEntity (alias tileentity)
voxelbench.test.mobaimobAI
voxelbench.test.mobpathfindingmobPathfinding
voxelbench.test.villagervillagerTrading (alias villager)
voxelbench.test.bonemealgrowthboneMealGrowth
voxelbench.test.liquidphysicsliquidPhysics
voxelbench.test.combatsimulationcombatSimulation
voxelbench.test.projectilestormprojectileStorm
voxelbench.test.entitycrammingentityCramming
voxelbench.test.playerworldloadplayerWorldLoad

Extension Tests

A test added by another plugin requires the permission its author declared, if any. A test declared without a permission only needs voxelbench.use.

These nodes guard /bench test and the test buttons of the GUI. A whole suite is authorised by one node, not test by test: /bench start runs the standard benchmark under voxelbench.start, and the tests of a custom profile run under voxelbench.custom (or voxelbench.start), plus voxelbench.stresslimit for a stress limit profile. A player who can run a profile runs every test it contains.

Dynmap Permissions

These permissions control who can view VoxelBench layers on Dynmap's web interface.

PermissionDescription
voxelbench.dynmapAll Dynmap layers
voxelbench.dynmap.viewDeclared, but used by no layer in the markers.yml example of Integrations; voxelbench.dynmap covers every layer
voxelbench.dynmap.heatmapEntity density heatmap
voxelbench.dynmap.alertsPerformance alert markers
voxelbench.dynmap.testzonesActive test zone markers

Note: Dynmap permissions require additional configuration in plugins/dynmap/markers.yml. See Integrations - Dynmap for details.

Upgrading from 1.8.1 or Earlier

Up to VoxelBench 1.8.1, most of these permissions were declared but not checked. They are now enforced. Operators and players with * are not affected; for everyone else:

  • Command nodes. voxelbench.use alone used to be enough for /bench start, stop, gui, info, reports, stresslimit, reload and monitor. A group that was only given voxelbench.use loses access to them: grant the nodes it needs, for example voxelbench.start and voxelbench.stop.
  • New nodes. /bench link now needs voxelbench.link, /bench zones tp and zones clean need voxelbench.world, and the settings screen needs voxelbench.settings.
  • Tests. Every test now checks its node, including the ones that used to run with voxelbench.use alone (lightingUpdate, entityCollision, tickingTileEntity, villagerTrading under their canonical IDs, and projectileStorm, entityCramming, playerWorldLoad, singleCoreBenchmark, singleCoreMax).
  • Moved tests. mobPathfinding, redstone and blockPhysics moved from voxelbench.test.singlecore to voxelbench.test.gameplay, their category. A group that was given voxelbench.test.singlecore to run them now needs voxelbench.test.gameplay or the individual nodes; voxelbench.test.singlecore now covers singleCoreBenchmark and singleCoreMax.

LuckPerms Examples

Grant full access to an admin group

/lp group admin permission set voxelbench.* true

Allow a group to run tests but not full benchmarks

/lp group moderator permission set voxelbench.use true
/lp group moderator permission set voxelbench.test true
/lp group moderator permission set voxelbench.stop true
/lp group moderator permission set voxelbench.gui true
/lp group moderator permission set voxelbench.info true

Let a staff group manage the web dashboard

/lp group staff permission set voxelbench.use true
/lp group staff permission set voxelbench.monitor.web true

Allow all players to check TPS

/lp group default permission set voxelbench.use true

This gives access to the commands that need nothing beyond voxelbench.use: /bench tps, mspt, status, version, help, ping, the zone list and the test list.