Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Player Status Bars
Client-side world-space health and infection status bars for other players.
| Date uploaded | 2 months ago |
| Version | 0.1.2 |
| Download link | Aueser-Player_Status_Bars-0.1.2.zip |
| Downloads | 1003 |
| Dependency string | Aueser-Player_Status_Bars-0.1.2 |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
Player Status Bars
Player Status Bars is a client-side BepInEx mod for Lethal Company. It displays compact world-space status bars above other players, showing health and Cadaver infection information without requiring server-side installation.
Features
- Displays health and infection bars above other players.
- Excludes the local player.
- Uses a world-space UI that follows players and faces the local camera.
- Reads infection values from
CadaverGrowthAI.playerInfections[playerId].infectionMeterwhen Cadaver Growth is present. - Works without Cadaver Growth installed; health display remains available and infection values are safely unavailable.
- Supports BepInEx configuration and optional LethalConfig runtime adjustment.
- Includes distance-based visibility, orbit-phase hiding, infection bar display modes, and configurable layout offsets.
- Shows a critical health state for players reported as critically injured, bleeding heavily, or persistently below the low-health threshold.
- Includes late-join stabilization to reduce stale critical or low-health display when used with late-join mods.
- Uses the active gameplay, spectator, or freecam view as the distance reference when deciding whether bars are visible.
- Uses additional round-state signals to keep bars visible for clients joining after a round has already started.
- Runs status bar management from a persistent runtime host so bar refresh continues across scene transitions.
- Hides bars during the ship takeoff transition to avoid displaying transient player states.
- Provides optional debug logging for diagnosing player filtering, visibility, and camera state.
- Uses Chinese critical text when a Chinese localization or translation plugin is detected; otherwise it uses English text.
Requirements
- BepInExPack
- LethalConfig is optional.
- Cadaver Growth is optional.
Configuration
Settings are available through the generated BepInEx configuration file. If LethalConfig is installed, Player Status Bars also exposes matching in-game controls through an optional reflection-based integration.
Configurable options include:
- Enable or disable the mod.
- Maximum display distance.
- Hide status bars while the ship is in orbit.
- Head offset, UI scale, and per-bar Y offsets.
- Health and infection text visibility.
- Health, infection, and background color presets.
- Infection bar display mode.
- Debug logging for status bar creation, filtering, visibility, and camera diagnostics.
Client-side behavior
This mod does not add custom networking and does not require host or server installation. It can only display data that the local client can read from the game state.
For this reason, hidden owner-only recovery values are not synchronized by this mod. Critical and low-health display is based on remote player state, synced injury flags, and conservative client-side fallback rules, with additional stabilization for late-join and ship-transition states.
Installation
Install through a Thunderstore-compatible mod manager, or place the package contents into the game profile so that PlayerStatusBars.dll is located at:
BepInEx/plugins/PlayerStatusBars/PlayerStatusBars.dll
License
Player Status Bars is released under the MIT License. See LICENSE for the full license text.
Third-party notices
Player Status Bars does not bundle, redistribute, or require LethalConfig, MoreCompany, or LTC Lobby Control.
- LethalConfig is an independent GPL-3.0 project. When installed by the user, Player Status Bars can integrate with it at runtime through reflection; this project does not compile against or include LethalConfig code.
- MoreCompany is an independent MIT-licensed project. Its player-slot expansion behavior was reviewed for compatibility hardening; this project does not include MoreCompany code.
- LTC Lobby Control is an independent MIT-licensed project. Its late-join behavior was reviewed for compatibility hardening; this project does not include LTC Lobby Control code.
CHANGELOG
Changelog
0.2.1
- Added compact same-version status synchronization so client-local Cadaver Growth infection state can be reported to the host and reflected for other observers.
- Improved host-side infection display when the observed player's infection meter is only accurate on that player's own client.
- Improved infection state handling by distinguishing unknown, confirmed clear, and active infection values, reducing stale infection bars after cure, death, revive, and round changes.
- Improved late-join and round-transition cleanup by clearing status snapshots and infection caches when bars are disabled, hidden in orbit, or waiting for game state.
- Kept the synchronization path low-overhead with fixed-size payloads, slot-indexed caches, change-based client reports, and the existing throttled host snapshot cadence.
0.2.0
- Changed the project license from MIT to the GNU General Public License v3.0.
- Added low-overhead player refresh with sliced slot scanning, slot-indexed tracking, and pooled status bar views for larger lobbies.
- Added shared Cadaver Growth infection caching with bounded spawned-enemy lookup and absent-instance backoff.
- Added one-point health display stepping so health changes move smoothly toward the current target.
- Added one-percent infection display stepping from 1% to 99%, with immediate downward updates for cure and infection reduction.
- Improved vanilla low-health display by predicting recovery toward 20 HP when remote clients expose stale low-health values.
- Improved stale 20 HP critical-state handling by inferring vanilla downed health when synced critical or bleeding state indicates a low-health transition.
- Added
Critical Health Sync ModewithVanillaPredictionandTrustRawHealthAt20options for active-bleed and custom-injury mod compatibility. - Improved health and infection reset behavior across death, revive, round transitions, and late-join slot reuse.
- Improved connected-player detection for late-join and extended-lobby scenarios where
isPlayerControlledis not a sufficient visibility signal. - Improved low-health visual feedback by switching the health bar to the red low-health state as soon as the target health is below 20 HP.
0.1.3
- Reduced per-player frame overhead by folding billboard rotation into the main status bar view update instead of adding a second
LateUpdatecomponent per bar. - Reduced UI callback overhead by applying status bar strip updates from the parent view only when data or settings are dirty.
- Removed non-debug distance square-root work from the visibility hot path; real distance is now formatted only after debug logging passes its throttle gate.
- Reworked Cadaver Growth integration to use direct game types and cached spawned enemy lookup instead of runtime reflection,
GetType, field lookup, or object-wide searches. - Removed optional LethalConfig reflection integration to keep runtime behavior reflection-free and lower overhead.
- Added structural performance tests that guard against reintroducing runtime reflection, per-strip callbacks, per-bar billboard callbacks, and hot-path distance square roots.
0.1.2
- Improved late-join handling for reused player slots so newly joined players no longer inherit stale critical or low-health bar states.
- Improved compatibility with late-join and extended-lobby player slots where the player slot index can differ from the reported player client id.
- Improved spectator and freecam distance handling so player status bars remain visible when the active view is near the target.
- Improved ship-state detection so status bars are not hidden when a client joins after the round has already started.
- Kept status bar management on a persistent runtime host so bar creation and refresh continue across scene transitions and plugin-host lifecycle changes.
- Prevented recovered critical-health players from remaining displayed as 20 HP when remote clients only receive the recovery flag update.
- Hid player status bars during the ship takeoff transition to avoid showing temporary player state while the round is closing.
- Removed an optional LethalConfig refresh button that caused a startup warning on LethalConfig versions without the matching button constructor.
- Reduced optional Cadaver Growth lookup overhead by caching integration metadata and instance discovery across player bars.
- Added optional debug logging for status bar creation, filtering, visibility, and camera diagnostics.
0.1.1
- Hardened late-join initialization for MoreCompany and LTC Lobby Control style player-slot changes.
- Changed LethalConfig support to optional reflection-based runtime integration and removed the compile-time LethalConfig reference.
- Documented third-party license notices for optional LethalConfig support and compatibility-reviewed late-join mods.
0.1.0
- Added world-space status bars for other players.
- Added health and infection display.
- Added infection reading through Cadaver Growth's
infectionMetervalue when available. - Added BepInEx configuration and optional LethalConfig integration.
- Added distance-based visibility and orbit-phase hiding.
- Added independent Y offsets for health and infection bars.
- Added infection bar display modes.
- Added critical health display for synced critical injury and bleeding states.
- Added conservative client-side low-health fallback handling for cases where recovery data is not fully synchronized.
- Added stabilization handling for late-joining players to reduce stale critical-state display.
- Added Chinese or English critical-state text selection based on installed localization plugins.