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}TPS✓✓✓PER_FRAME · fast_metrics / EVENT_PUSHED · tick packetSP/LAN: derived from live MSPT. Multiplayer: MineTunerDataHolder.tickRate, set by the mixin.
MSPT{mspt}MSPT✓✓—PER_FRAME · singleplayer_msptSP/LAN only, hidden on remote servers. Colored using TPS's scale, not its own.
FPS{fps}FPS—✓✓PER_FRAME · client_perf—
Frametime{frametime}FRAMETIME✓✓✓every 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_AVG✓——every 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_MIN✓——every 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_MAX✓——every 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_LOW✓✓✓THROTTLED (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_LOW✓✓✓THROTTLED (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}PING—✓✓PER_FRAME · pingFrom the player-list ping field.
Memory{mem}MEMORY—✓✓PER_FRAME · fast_metricsJVM heap used/max MB. Graphed as heap-used %, not raw MB.
CPU{cpu}CPU✓✓✓THROTTLED (500ms) · slow_metricsOperatingSystemMXBean, HotSpot/OpenJDK only — "N/A" on other JVM vendors.
GC Time{gc}GC_TIME———THROTTLED (500ms) · slow_metricsCumulative ms, summed across all GC beans. Not a delta.
Rendered Sections{rendered}RENDERED_SECTIONS———PER_FRAME · rendered_sectionsPulled from LevelRenderer.
Players Online{players}PLAYERS_ONLINE———PER_FRAME · world_counts—
GPU Temp opt-in{gpu_temp}GPU_TEMP✓✓✓background thread · HardwareSensorPoller°C via LHM. Default cutoffs <70 green / <85 yellow / ≥85 red.
GPU Clock opt-in{gpu_clock}GPU_CLOCK✓✓—background thread · HardwareSensorPollerMHz via LHM. No threshold — clock tracks workload/boost.
GPU Usage opt-in{gpu_usage}GPU_USAGE✓✓—background thread · HardwareSensorPoller% via LHM. No threshold — high usage during gameplay is expected/normal.
VRAM Used opt-in{vram_used}VRAM_USED—✓—background thread · HardwareSensorPollerused/total MB. Only renders once both values resolve.

player

stattokenenumdecgraphthrcadence / sourcenotes
Health{health}HEALTH—✓✓PER_TICK · player_vitalscurrent/max.
Hunger{hunger}HUNGER—✓✓PER_TICK · player_vitals—
Saturation{saturation}SATURATION✓——PER_TICK · player_vitals—
Armor{armor}ARMOR—✓✓PER_TICK · player_vitalsarmor points, not %.
Air{air}AIR———PER_TICK · player_vitalsremaining breath.
XP Level{xplevel}XP_LEVEL———PER_TICK · player_vitals—
XP Progress{xpprogress}XP_PROGRESS✓——PER_TICK · player_vitals% to next level.
Game Mode{gamemode}GAME_MODE———PER_TICK · player_vitalslowercased enum name, e.g. survival.
Selected Slot{slot}SELECTED_SLOT———PER_TICK · player_vitals—
Held Item{helditem}HELD_ITEM———PER_TICK · player_vitals—
Speed{speed}SPEED✓✓—PER_FRAME · player_positionb/s, from deltaMovement × 20. Colored/graphed by a fixed movement-based scale, not a user threshold.
Vertical Speed{vspeed}VERTICAL_SPEED✓——PER_TICK · player_vitals—
Moving{moving}MOVING———PER_FRAME · targetingbool, shares Speed's stationary epsilon (0.01).

world

stattokenenumdecgraphthrcadence / sourcenotes
Entities{entities}ENTITIES———PER_FRAME · world_countscurrent dimension only.
Chunks{chunks}CHUNKS———PER_FRAME · world_counts—
Biome{biome}BIOME———PER_FRAME · player_environment—
Dimension{dimension}DIMENSION———PER_FRAME · player_environmentraw id, e.g. overworld, the_nether.
Weather{weather}WEATHER———PER_FRAME · world_stateClear / Rain / Thunder.
Difficulty{difficulty}DIFFICULTY———PER_FRAME · world_state—
Light Level{light}LIGHT_LEVEL———PER_FRAME · player_environmentcombined, at player's block.
Sky Light{skylight}SKY_LIGHT———PER_FRAME · world_state—
Block Light{blocklight}BLOCK_LIGHT———PER_FRAME · world_state—
Can See Sky{canseesky}CAN_SEE_SKY———PER_FRAME · world_state—
Looking At{lookingat}LOOKING_AT———PER_FRAME · targetingreads vanilla's own hitResult. Empty when nothing targeted.

position

stattokenenumdecgraphthrcadence / sourcenotes
Coords{coords}COORDS———PER_FRAME · player_positioncombined X/Y/Z, floor-rounded.
X{x}X———PER_FRAME · player_positionblock-rounded.
Y{y}Y———PER_FRAME · player_positionblock-rounded.
Z{z}Z———PER_FRAME · player_positionblock-rounded.
Facing{facing}FACING———PER_FRAME · player_position8-way cardinal/intercardinal.
Yaw{yaw}YAW✓——PER_FRAME · player_positionnormalized 0–360°.
Pitch{pitch}PITCH✓——PER_FRAME · player_position-90 (up) to 90 (down).
Chunk Pos{chunkpos}CHUNK_POS———PER_TICK · player_vitals—
Distance from Spawn{distance}DISTANCE_FROM_SPAWN✓——PER_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.