Choose farming readings
A HUD displays data; it does not create it. Choose a source for each reading before deciding how it should look.
| Reading | Source | What to handle |
|---|---|---|
| Current BPS | Farming snapshot.bps | Display only when snapshot.complete is true |
| Averaging duration | snapshot.window_seconds | Do not hard-code a different window label |
| Current activity | snapshot.phase | Startup, turning and recovery are not harvesting |
| Section and pass | section_name, section, pass | Startup can omit them |
| Action totals | blocks, session_bps, elapsed_seconds | Restart when a new native harvest action starts |
| Bazaar/NPC estimates | hexis.profit.summary() | Register inventory tracking; missing prices are not zero prices |
| Comparable past runs | hexis.profit.history() | Compare the same crop, valuation and context |
| Farming level and ETA | hexis/skyblock/skills | No ETA until enough valid progress is available |
BPS is not item income
A broken crop can produce several items. Fortune and compacted inventory forms must not inflate the BPS reading. Native BPS counts local block destruction; it is prediction, not confirmation that the server accepted each break.
The clocks have different scopes
An optional activity ends one harvest action and starts another after a validated return. BPS and break totals restart for the new action. The default Lua presentation keeps profit and skill tracking across the whole script session.
Default or custom presentation
Omit presentation to use the default renderer when the Lua definition contains
product metadata. That metadata includes name, products, quantity_groups
and optional byproducts. It tells the profit tracker what to count and how to
normalize compacted items.
Use presentation = require("hud") to replace the renderer, or false to omit
it. Replacing the renderer does not automatically initialize default profit
tracking. A custom renderer that uses profit must request the capability and
register the items it intends to track.
For a full example, see the bundled farming sources in the script catalog. For a small renderer you can copy, see Customize a farming HUD.
Keep warnings separate from presentation
Native farming reports zero/low harvest health through the safety service even without a renderer. Changing a HUD label or color must not change whether the action stops. Configure health in the recipe or its exposed settings instead.
A dash means a reading is unavailable. Zero means a valid measurement found nothing. Preserve that distinction for BPS, profit and skill progress alike.