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.
BeastheimServerMods
Valheim server management suite featuring server-authoritative characters, modpack enforcement, AFK management, Discord webhooks, and monitoring.
By Beasty
CHANGELOG
Changelog
1.2.0
Admission (mod check)
- Mod policy enforcement carried over from the internal 1.0.0 build, with fail-closed handling of every internal error and an empty-policy guard (
EmptyPolicyBehavior, which defaults toReject: an empty or missing policy folder never lets everyone in). - The server now holds a player's login until both the mod check and the character check have finished.
- Hashing a client's mods runs on a background thread and its duration is logged.
Server characters (new)
- One authoritative character per Steam account, exact selected-character validation, no substitution.
- Freshness-gated first enrollment; nothing is stored until the game's own password and ban checks succeed.
- Revision store with continuity enforcement, unique normalised names, permanent character-ID tombstones.
- In-game reset with eligibility, cooldown and allowance shown first (3 per rolling 30 days, 24 hour cooldown, 30 day archive).
- Pre-login upload limits, paced and hash-checked transfer, final-save acknowledgement on logout and shutdown.
- Verified snapshots, optional mirror folder, scheduled pruning.
- Offline
bsm-admintool for exceptional recovery: distributed separately to server operators, not part of this package.
Refusal messages
- Refusal screen fix (found in real-client validation): a client that runs this mod is now refused with the game's plain "disconnected" status instead of "incompatible version". Jotunn (present on every Beastheim client) replaces the connect-error screen for "incompatible version" and hid this mod's reason. Clients without this mod keep the stock "incompatible version" status.
- The reason is now shown in this mod's own "Cannot join this server" dialog (with an OK button) on the main menu. The game's built-in connection-failed panel is shared with the game and about ten mods and came out blank in real-client testing, so it is no longer relied on. The message is kept until the player presses OK.
- New wording when a second character is used on an account that already has one: "Only one character is allowed per player on this server. Your registered character is <name>. Select that character and join again. Lost your character? Contact a server administrator."
Idle-player handling (new, OFF by default)
- Optional native AFK module (
[Afk]): idle clock from movement beyond a radius, intentional actions the server can see and chat; warnings at configurable times; no clock during loading, admission, finalization or a reset. - Removal always goes through the character module's own final-save path: save request, upload, validation, durable commit, acknowledgement, a short network drain, then the disconnect. If the save is not confirmed in time the player is still removed, the last acknowledged revision stands, the failure is logged and published, and the player is warned that the server could not confirm their latest progress was saved (never told it was).
- Admins and listed Steam IDs are exempt. Messages, timeout, warnings, radius and grace period are configurable and apply live.
BsmAfk.Suppress/BsmAfk.Releaselet other Beastheim mods pause the clock for a bounded time (a transport, a cutscene).- Admin-channel webhook events for removal with and without a confirmed save.
Identity binding for other server plugins (new)
BsmIdentity: a read-only, narrow lookup of the character a connection was verified as (character ID only; false unless Server Characters is enforcing and the connection is admitted).
Also new
- Read-only connection status for other mods (discrete states, no percentages).
- Optional native Discord webhooks (public and admin channels), fully asynchronous and isolated from the server.