ValheimPasswordManager
A client-side BepInEx mod that adds saved password selection and management to Valheim's vanilla server password dialog while keeping the original UI style.
About this mod Author’s original text
Valheim Password Manager
English
A BepInEx 5 + Harmony client-side mod for Valheim that enhances the vanilla password dialog shown when joining password-protected servers.
Source code repository
Features
- Keeps the original Valheim password dialog and submit flow intact
- Injects a dropdown button on the right side of the existing input field
- Shows a local password list in a drawer below the input field
- Clicking a saved password fills the original input field automatically
- Each saved password can be deleted individually
- Prompts the player with “Save this password?” when submitting a new password for the first time
- Stores passwords in a local JSON file and recreates the file safely if it becomes corrupted
- Requires no server-side installation
Localization
- The confirmation prompt follows the game's currently selected language.
- The current implementation covers the built-in language names visible in assembly_guiutils.dll.
- To avoid missing-glyph issues, the delete button no longer relies on an emoji and is instead drawn with plain UI shapes.
- Character compatibility risk should be low for languages already supported by the base game, because the prompt still uses Valheim's own fonts and localization pipeline.
- Password rows reuse the same font settings as the original input field. If a character cannot be displayed correctly in the vanilla input box, it may also be limited in the saved-password list. That would be a base-game font coverage issue rather than a mod-specific one.
Build
Option 1: build with the script
Run this from the repository root:.\build.ps1
Option 2: build manually with dotnet
$env:APPDATA = (Resolve-Path '.appdata').Path
$env:DOTNET_CLI_HOME = (Resolve-Path '.').Path
$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = '1'
$env:NUGET_PACKAGES = Join-Path (Resolve-Path '.').Path '.nuget\packages'
dotnet build.\src\ValheimPasswordManager\ValheimPasswordManager.csproj -c Debug --configfile.\.appdata\NuGet\NuGet.Config
Output DLL:
- src\ValheimPasswordManager\bin\Debug\ValheimPasswordManager.dll
Installation
Copy the compiled DLL into the Valheim client:
- \BepInEx\plugins\ValheimPasswordManager\ValheimPasswordManager.dll
A dedicated subfolder is recommended:
- \BepInEx\plugins\ValheimPasswordManager\
JSON storage path
After running the mod, the saved password list is stored at:
- \BepInEx\config\JipZeonGit.Valheim.PasswordManager.json
If the file is corrupted, it is backed up automatically as:
- JipZeonGit.Valheim.PasswordManager.json.corrupt-timestamp.bak
Configuration file
After the mod runs once, it generates a BepInEx config file:
- \BepInEx\config\JipZeonGit.Valheim.PasswordManager.ScrollSpeed.cfg
Current UI option:
- UI.PasswordListScrollSpeed
Notes:
- default value: 160
- allowed range: 20 to 400
- larger values make the password list scroll faster with the mouse wheel
Development references
This repository does not commit the game/framework DLL payloads by default, but local compilation still depends on these reference folders:
- references\\BepInEx\\core
- references\\Valheim\\Managed
If you clone this repository on a new machine, prepare those DLLs in the local references folder first, following references/README.md, and then build the project.
GitHub repository guidance
Treat the GitHub repository as a source repository, not as a mirror of a local game installation.
Recommended to commit:
- src/
- docs/
- README.md
-.gitignore
- build.ps1
- NuGet.Config
Not recommended to commit:
- local game/framework reference copies under references/
- local upstream source mirrors under third_party/
- build outputs and caches such as bin, obj,.appdata,.dotnet, and.nuget/
- local JSON files, backup files, and log files created during testing
Why:
- references/Valheim/Managed contains assemblies copied from a local game installation and is not ideal to keep in a public source repository.
- third_party/ is reference
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- 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.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- 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.
Install these first, or the mod will not work: