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.
FiresVAngarde
Server guardian: enforces the server mod list with a clear mismatch panel, watches for cheats, and keeps characters server-owned with rotating backups.
| Last updated | a day ago |
| Total downloads | 11 |
| Total rating | 0 |
| Categories | Mods Misc Server-side Client-side Deep North Update |
| Dependency string | VerdantsAscent-FiresVAngarde-0.2.37 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350VerdantsAscent-FiresUnifiedCore
Shared core library for the Fires mod family: NPC engine, config sync + admin gating, networking helpers, storage (LiteDB vault), UI framework, input capture. Required by the other Fires mods.
Preferred version: 0.2.219README
FiresVAngarde
The server guardian for the Fires mod family. It keeps a server's mod list honest and its characters server-owned.
Players normally never notice it. When a client's mods don't match what the server requires, the player gets a panel naming exactly what to REMOVE, UPDATE (their version -> the server's) or INSTALL, instead of a silent boot to the main menu. Fix the list, reconnect, done.
Requires
- BepInExPack for Valheim
- FiresUnifiedCore
- FiresDiscordIntegration (optional) - when it is installed, kicks, violations and admin-command snapshots post to Discord.
Install it on the server. Clients need it too when the server enforces mod lists or server-owned characters, because both are handshakes between the two.
Mod validation
Connecting clients are challenged for their mod list, which is checked against text files in
BepInEx/config/VAngarde/ on the server:
| file | meaning |
|---|---|
mod_exactmatch.txt |
required mods, at exact versions |
mod_whitelist.txt |
extra client mods that are allowed |
mod_blacklist.txt |
mods that get a client rejected |
mod_serveronly.txt |
server-side mods, kept out of the required set |
mod_adminonly.txt |
mods only admins may run |
exempt_players.txt |
player IDs that bypass anti-cheat entirely |
admin_character_exceptions.txt |
treat a real admin as a normal player on named characters |
[VAngarde.ModValidation] decides which checks run: UseExactMatch, UseWhitelist, UseBlacklist and
EnforceModList. AutoUpdateModList rewrites the required set from the server's own plugins at every
launch, so the list follows the modpack instead of going stale. AdminModsExtendWhitelist lets an admin who
connects with a new mod whitelist it for everyone.
The list files reload while the server runs: edit one and run vangarde reload. The .cfg itself is read at
startup, so change it with the server stopped.
Detection
Under [VAngarde.Detection] and [VAngarde.Enforcement]:
DetectGodModeis log-only and never auto-kicks, because admins use god mode legitimately.DetectFlight,DetectSpeedHackwithSpeedHackThresholdin m/s, andDetectCheatItemswithBannedItems.ViolationActionpicks kick or log.AdminBypassexempts admins from enforcement.AdminMonitoringstill scans and reports them, andAdminCommandLoggingreports admin devcommands, god and fly toggles.[VAngarde.Timing]sets the cadence:ChallengeTimeoutSecondsandPeriodicRecheckMinutes.
Read this before trusting it. Anything a client reports about itself can be forged by someone determined
enough, so the [VAngarde.HardeningV2] audit, signature, integrity and DLL-hash toggles are telemetry, not
proof. They ship off. What the server decides for itself, and what cannot be spoofed by a client, is the
identity behind each message and whether the sender is an admin.
Characters
VAngarde can own characters server-side, in place of the usual client-held ones.
[Characters] Enabled,BackupsToKeep(rotating ZIP backups, default 25) and the generatedServerKey.[Characters.Enforcement]:SingleCharacterMode(one character per account here),ForceServerCharacter(characters made elsewhere are replaced by a fresh one),HardcoreMode(deleted on death),AfkKickMinutes(0 = off), plusSingleCharacterAdminBypass,ForceServerCharacterAdminBypassandExcludeAdminsFromAfk.[Characters.Maintenance]:MaintenanceModekicks non-admins on aMaintenanceTimerSecondscountdown until it is lifted.
Profiles move over a chunked, resumable channel that reports failure instead of dropping the peer, which is
what avoids the classic 30-second timeout on large characters at login ([Characters.Transport]).
va_chan_test <sizeKB> proves the pipe with a synthetic payload.
Logging out waits until the server confirms your character is saved ("Saving your character on the
server..."), for up to LogoutSaveWaitSeconds. Quitting the game (the Quit button, closing the window, Alt+F4)
logs out first, so the save always lands. Crossplay saves travel in smaller pieces, sized by
CrossplayChunkSizeBytes and CrossplayInFlightBytes.
When the server shuts down with players online, it asks each of them to save their character first and waits up to
ShutdownSaveWaitSeconds (0 turns it off), so a restart doesn't cost anyone their progress.
Characters.ServerKey is generated on first start and signs saves so an older character file cannot be
rolled back in. Never edit or share it, and keep it when you move the server.
New characters. BepInEx/config/VAngarde/PlayerTemplate.json (a sample is created when none exists)
gives a brand-new character starter skills, starter items, a spawn point, and can skip the Valkyrie intro.
Commands
| command | where |
|---|---|
vangarde status |
settings and tracked peers |
vangarde scan |
run a cheat scan now (server) |
vangarde kick <id> |
force-disconnect a peer (server) |
vangarde reload |
reload every list file (server) |
vangarde push whitelist|blacklist|exempt |
reload one list (server) |
vangarde push mods |
push your own client's mod list up as the standard (admin, on a client) |
vangarde bypass [on|off] |
toggle admin bypass at runtime |
vangarde log <id> |
post a player's cached log to Discord (server) |
va_chan_test <sizeKB> |
stress-test the transfer channel |
Notes
- Server-side settings are locked and pushed to clients, so the server's copy is the one that counts.
- The in-game Fires help panel has a VAngarde section; its admin pages show for admins.
[VAngarde] Enabledand[Characters] Enabledare the two master switches.