index architecture stat-reference template-mode config-schema hardware-sensors build+ci | repo↗ homepage↗

stat reference

49 StatDefinition impls, stat/stats/*.java, one file each, registered by hand in StatRegistry's static block. Dec = supportsDecimals(). Graph = supportsGraph(). Thr = supportsThreshold(). Cadence = the StatSource feeding it, per sampling pipeline. GPU/VRAM rows are opt-in, see hardware-sensors.html.

performance

stattokenenumdecgraphthrcadence / sourcenotes
TPS{tps}TPSPER_FRAME · fast_metrics / EVENT_PUSHED · tick packetSP/LAN: derived from live MSPT. Multiplayer: MineTunerDataHolder.tickRate, set by the mixin.
MSPT{mspt}MSPTPER_FRAME · singleplayer_msptSP/LAN only, hidden on remote servers. Colored using TPS's scale, not its own.
FPS{fps}FPSPER_FRAME · client_perf
Frametime{frametime}FRAMETIMEevery rendered frame · LevelRenderEvents.START_MAIN, not SamplingDriverms between rendered frames. Sampled outside the usual StatSource pipeline so it isn't gated by the overlay/F3/GUI — see architecture doc. 0 until the 2nd frame of the session.
Avg FPS{fps_avg}FPS_AVGevery rendered frame · fed from FRAMETIME's smoothedFps, same as Min/Max FPS belowRunning mean over the whole session (mod load, or last world join/disconnect, to now — see MineTunerDataHolder). No graph/threshold: a running mean moves too slowly to be graph-worthy, and it isn't a live health indicator the way instantaneous FPS is. Colored using FPS's fixed 60/30 bands anyway, just not user-editable. 0 until the 2nd frame of the session.
Min FPS{fps_min}FPS_MINevery rendered frame · fed from FRAMETIME's smoothedFpsLowest per-frame FPS reading observed this session. Same no-graph/no-threshold reasoning as Avg FPS. Resets on world join/disconnect, not on demand.
Max FPS{fps_max}FPS_MAXevery rendered frame · fed from FRAMETIME's smoothedFpsHighest per-frame FPS reading observed this session. Same no-graph/no-threshold reasoning as Avg FPS.
1% Low{fps_1low}FPS_1PCT_LOWTHROTTLED (500ms) · percentile_low_fpsRTSS-style: average FPS of the slowest 1% of raw (unsmoothed) per-frame samples this session, sorted descending by frametime then averaged. Reads its own dedicated raw-frametime ring buffer, NOT FRAMETIME's smoothed history — see architecture doc. Renders nothing below 200 accumulated samples. Unlike Avg/Min/Max FPS above, this graphs and has a real user-editable threshold (defaults to FPS's own 60/30 bands): a percentile low is a live, actionable signal in the same way instantaneous FPS is, not a slowly-drifting aggregate. Resets on world join/disconnect alongside Avg/Min/Max FPS.
0.1% Low{fps_01low}FPS_01PCT_LOWTHROTTLED (500ms) · percentile_low_fpsSame computation as 1% Low above, over the slowest 0.1% instead. Needs 10x the samples to represent even one frame, so it renders nothing below 2000 accumulated samples (vs. 1% Low's 200) — in practice, this only turns on once the raw-frametime buffer is completely full for the first time this session.
Ping{ping}PINGPER_FRAME · pingFrom the player-list ping field.
Memory{mem}MEMORYPER_FRAME · fast_metricsJVM heap used/max MB. Graphed as heap-used %, not raw MB.
CPU{cpu}CPUTHROTTLED (500ms) · slow_metricsOperatingSystemMXBean, HotSpot/OpenJDK only — "N/A" on other JVM vendors.
GC Time{gc}GC_TIMETHROTTLED (500ms) · slow_metricsCumulative ms, summed across all GC beans. Not a delta.
Rendered Sections{rendered}RENDERED_SECTIONSPER_FRAME · rendered_sectionsPulled from LevelRenderer.
Players Online{players}PLAYERS_ONLINEPER_FRAME · world_counts
GPU Temp opt-in{gpu_temp}GPU_TEMPbackground thread · HardwareSensorPoller°C via LHM. Default cutoffs <70 green / <85 yellow / ≥85 red.
GPU Clock opt-in{gpu_clock}GPU_CLOCKbackground thread · HardwareSensorPollerMHz via LHM. No threshold — clock tracks workload/boost.
GPU Usage opt-in{gpu_usage}GPU_USAGEbackground thread · HardwareSensorPoller% via LHM. No threshold — high usage during gameplay is expected/normal.
VRAM Used opt-in{vram_used}VRAM_USEDbackground thread · HardwareSensorPollerused/total MB. Only renders once both values resolve.

player

stattokenenumdecgraphthrcadence / sourcenotes
Health{health}HEALTHPER_TICK · player_vitalscurrent/max.
Hunger{hunger}HUNGERPER_TICK · player_vitals
Saturation{saturation}SATURATIONPER_TICK · player_vitals
Armor{armor}ARMORPER_TICK · player_vitalsarmor points, not %.
Air{air}AIRPER_TICK · player_vitalsremaining breath.
XP Level{xplevel}XP_LEVELPER_TICK · player_vitals
XP Progress{xpprogress}XP_PROGRESSPER_TICK · player_vitals% to next level.
Game Mode{gamemode}GAME_MODEPER_TICK · player_vitalslowercased enum name, e.g. survival.
Selected Slot{slot}SELECTED_SLOTPER_TICK · player_vitals
Held Item{helditem}HELD_ITEMPER_TICK · player_vitals
Speed{speed}SPEEDPER_FRAME · player_positionb/s, from deltaMovement × 20. Colored/graphed by a fixed movement-based scale, not a user threshold.
Vertical Speed{vspeed}VERTICAL_SPEEDPER_TICK · player_vitals
Moving{moving}MOVINGPER_FRAME · targetingbool, shares Speed's stationary epsilon (0.01).

world

stattokenenumdecgraphthrcadence / sourcenotes
Entities{entities}ENTITIESPER_FRAME · world_countscurrent dimension only.
Chunks{chunks}CHUNKSPER_FRAME · world_counts
Biome{biome}BIOMEPER_FRAME · player_environment
Dimension{dimension}DIMENSIONPER_FRAME · player_environmentraw id, e.g. overworld, the_nether.
Weather{weather}WEATHERPER_FRAME · world_stateClear / Rain / Thunder.
Difficulty{difficulty}DIFFICULTYPER_FRAME · world_state
Light Level{light}LIGHT_LEVELPER_FRAME · player_environmentcombined, at player's block.
Sky Light{skylight}SKY_LIGHTPER_FRAME · world_state
Block Light{blocklight}BLOCK_LIGHTPER_FRAME · world_state
Can See Sky{canseesky}CAN_SEE_SKYPER_FRAME · world_state
Looking At{lookingat}LOOKING_ATPER_FRAME · targetingreads vanilla's own hitResult. Empty when nothing targeted.

position

stattokenenumdecgraphthrcadence / sourcenotes
Coords{coords}COORDSPER_FRAME · player_positioncombined X/Y/Z, floor-rounded.
X{x}XPER_FRAME · player_positionblock-rounded.
Y{y}YPER_FRAME · player_positionblock-rounded.
Z{z}ZPER_FRAME · player_positionblock-rounded.
Facing{facing}FACINGPER_FRAME · player_position8-way cardinal/intercardinal.
Yaw{yaw}YAWPER_FRAME · player_positionnormalized 0–360°.
Pitch{pitch}PITCHPER_FRAME · player_position-90 (up) to 90 (down).
Chunk Pos{chunkpos}CHUNK_POSPER_TICK · player_vitals
Distance from Spawn{distance}DISTANCE_FROM_SPAWNPER_TICK · player_vitalshorizontal only.
Cadence/source values above are read off each StatSource's id()/ cadence() in sample/sources/, cross-referenced against which fields each source writes to MineTunerDataHolder. If you add or rename a source, this table does not update itself — see architecture.html.