FiresVAngarde

v0.2.37·Updated 2026-10-01

Server guardian: enforces the server mod list with a clear mismatch panel, watches for cheats, and keeps characters server-owned with rotating backups.

About this mod Author’s original text

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]:

  • DetectGodMode is log-only and never auto-kicks, because admins use god mode legitimately.
  • DetectFlight, DetectSpeedHack with SpeedHackThreshold in m/s, and DetectCheatItems with BannedItems.
  • ViolationAction picks kick or log.
  • AdminBypass exempts admins from enforcement. AdminMonitoring still scans and reports them, and

AdminCommandLogging reports admin devcommands, god and fly toggles.

  • [VAngarde.Timing] sets the cadence: ChallengeTimeoutSeconds and PeriodicRecheckMinutes.

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 generated ServerKey.
  • [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), plus SingleCharacterAdminBypass, ForceServerCharacterAdminBypass and

ExcludeAdminsFromAfk.

  • [Characters.Maintenance]: MaintenanceMode kicks non-admins on a MaintenanceTimerSeconds countdown

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 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 pi

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file. In multiplayer, the host and every client need the same mods installed.

Dependencies

Install these first, or the mod will not work:

denikson-BepInExPack_ValheimVerdantsAscent-FiresUnifiedCore

File & checksum

Filename
FiresVAngarde-0.2.37.zip
File size
153.1 KiB