Back to NxLabs

NxLabs / Vintage Story

Player Status HUD

TBy Teotale

Animated player status icon HUD with tooltips and mod API for custom effects.

Player Status HUD

Description

 

<header style="padding-bottom: 14px; border-bottom: 1px solid rgba(228,242,101,.2); margin-bottom: 16px;">

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.

</section>
Production contract
  • UseMockStatuses=false by 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.
<section style="background: #03332B; border-radius: 12px; padding: 16px 18px; margin-bottom: 14px; border: 1px solid rgba(228,242,101,.18);">

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 via IStatusStripProvider.</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&lt;PlayerStatusStrip.PlayerStatusStripModSystem&gt;(); 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.

</section> <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 →

Ratings & reviews

No ratings yet

Sign in to leave a rating or comment.