
Back to NxLabs

Player Status HUD
TBy Teotale
Animated player status icon HUD with tooltips and mod API for custom effects.

Description
<header style="padding-bottom: 14px; border-bottom: 1px solid rgba(228,242,101,.2); margin-bottom: 16px;"> <section style="background: #03332B; border-radius: 12px; padding: 16px 18px; margin-bottom: 14px; border: 1px solid rgba(228,242,101,.18);">
Read the full description on Vintage Story ModDB →Player Status HUD
Developer-focused status HUD library for Vintage Story
Current public release: 1.2.0
</header>Player Status HUD is a reusable HUD layer and API for mods that need player-facing status icons with tooltips and animation semantics. It is designed for integration first: provider-based data model, stable ids, deterministic merge behavior, and production-safe defaults.
<section style="margin: 0 0 16px;">Mods using this library
Integrators can treat these mods as live demos of the Player Status HUD API in production gameplay.
- Hydrate or Diedrate Visualized — reference integration for different debufst wchich mod provide.
- SlowTox Visualized — reference integration for intoxication and effect statuses.
Production contract
UseMockStatuses=falseby default.- Mock tooling exists for development, but no placeholder statuses appear unless explicitly enabled/run.
- Integration mods can ship without exposing test-only states to players.
Why use this library
<table style="font-size: 14px; border-collapse: collapse; width: 100%;" role="presentation"> <tbody> <tr> <td style="padding: 6px 0; vertical-align: top; width: 38%; color: #e4f265; font-weight: 600;">Stable runtime API</td> <td style="padding: 6px 0;">Register providers once and stream statuses per frame viaIStatusStripProvider.</td> </tr> <tr> <td style="padding: 6px 0; vertical-align: top; width: 38%; color: #e4f265; font-weight: 600;">Deterministic merge</td> <td style="padding: 6px 0;">Sorted by SortOrder + StableId; duplicate id policy is predictable (last provider wins).</td> </tr> <tr> <td style="padding: 6px 0; vertical-align: top; width: 38%; color: #e4f265; font-weight: 600;">Semantic motion</td> <td style="padding: 6px 0;">Built-in Neutral / Positive / Negative affect kinds for meaningful animation feedback.</td> </tr> <tr> <td style="padding: 6px 0; vertical-align: top; width: 38%; color: #e4f265; font-weight: 600;">Config-first layout</td> <td style="padding: 6px 0;">HUD alignment and icon geometry are user-configurable without changing code.</td> </tr> </tbody> </table> </section> <section style="background: #03332B; border-radius: 12px; padding: 16px 18px; margin-bottom: 14px; border: 1px solid rgba(228,242,101,.18);"> Quick integration
Minimal client-side bootstrap:
<pre style="margin: 0; background: rgba(1,36,30,.38); border: 1px solid rgba(228,242,101,.2); border-radius: 8px; padding: 10px 12px; font-size: 12px; line-height: 1.5; color: #f8fbde; overflow-wrap: anywhere; word-break: break-word;">var baseSys = api.ModLoader.GetModSystem<PlayerStatusStrip.PlayerStatusStripModSystem>(); IStatusStripHudApi? stripApi = baseSys?.StatusApi; if (stripApi == null) return; stripApi.RegisterProvider(myProvider);</pre>Provider contract: append StatusDescriptor entries in Collect(), keep ids stable across frames, unregister on unload.
Ratings & reviews
No ratings yet
Sign in to leave a rating or comment.
