EasyLogin
[AI-generated] Remembers each server's join password and auto-fills/auto-submits it. Per-server records, auto-forget on wrong password, DPAPI-encrypted. Client-only, no server sync.
About this mod Machine translation
EasyLogin - Valheim online password manager (client only)
AI generated statement: This module is written by the AI agent (WorkBuddy) under the clear needs and itemized acceptance of the user;
Functional design, real-device testing and release decisions are all led by users.
If you have entered the server once, the password will be automatically remembered; it will be automatically filled in/submitted next time you enter.
The original version of Valheim didn't have this capability - it wasn't done well, it wasn't written at all. This mod is completed with three Harmony patches,
No changes to game data, no network verification, and whether the host and teammates are installed will not be affected at all.
- Effect
| Scene | Original | Installed EasyLogin |
|---|---|---|
| Enter someone's password-protected server for the first time | Enter the password manually | Enter it manually as usual (the module will remember it) |
| Enter the same server for the second time | Enter again | Automatically fill in and submit, enter directly |
| The landlord changed the password | Prompt that the password is incorrect | Automatically forget the old password and ask you to re-enter it next time (then remember the new one) |
| Change to another server | Lose every time | Each has its own thing and does not interfere with each other |
Each server is recorded separately, and the matching basis is Steam ID / cross-platform host ID / room code / IP: port,
It is not a global variable such as "the last password entered".
- Installation
Just throw EasyLogin.dll into BepInEx/plugins/ (or use r2modman to import EasyLogin-1.0.0.zip).
The only dependency is BepInExPack_Valheim. No Jotunn required, no pre-frame required.
- Why the original version can’t do it (IL evidence)
The only entrance to the server password is ZNet.RPC_ClientHandshake(ZRpc rpc, bool needPassword, string serverPasswordSalt).
Initiated by the server during handshake. Implementation in the official version 1.0 (assembly_valheim.dll, IL offset is the relative offset within the function):
0000 m_connectingDialog.gameObject.SetActive(false)
0011 m_serverPasswordSalt = serverPasswordSalt ← Random salt issued by the server
0017 if (!needPassword) { SendPeerInfo(rpc, ""); return; } → 0077
001A m_passwordDialog.gameObject.SetActive(true) ← Pop-up box asking for password
002B var input = m_passwordDialog.GetComponent()
0037 input.text = ""
0042 input.ActivateInputField()
0047 input.OnInputSubmit.AddListener(OnPasswordEntered)
005D m_tempPasswordRPC = rpc
0064 call FejdStartup::get_ServerPassword
0069 brfalse.s → 0083 ← The only "autofill" in the original version
006B OnPasswordEntered(FejdStartup.ServerPassword)
That said: the original version does have autocomplete built in, provided FejdStartup.ServerPassword!= null.
So who wrote this ServerPassword? Check the reference of the complete assembly:
There are 1 methods that reference ['FejdStartup::set_ServerPassword']:
FejdStartup ParseArguments
There is only one place for ParseArguments - command line parameters. FejdStartup.ParseArguments recognizes exactly
The -password in the assembly string heap (there are also prompts such as $error_password / $menu_passwordinvalid).
So it will be filled in automatically only when started like valheim.exe -password xxx.
When playing normally, this field is always null, and you have to type it every time.
By the way, a detail you must know: the password is MD5 (ASCII (plain text + salt)) (ZNet.HashPassword, IL is
Encoding.ASCII.GetBytes(password + salt) → MD5CryptoServiceProvider.ComputeHash),
The salt is a 16-byte random number generated by the server for each handshake (in ZNet.ServerPasswordSalt()
RandomNumberGenerator.GetBytes(16))。
Therefore, the hash cannot be pre-calculated and stored locally, only plain text can be stored - any "remember online password" module cannot circumvent this.
This module will try not to let it sit on the hard drive in clear text (see Section 5).
- Three p …
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: