Longhouse Core
Shared plumbing for the Ezomic mods. Installed for you as a dependency.
About this mod Author’s original text
Longhouse Core
Shared library for the Ezomic Valheim mods. It handles the parts that only make sense once,
per machine rather than per mod: checking that a client and a server are running the same
mods, applying the host's settings while you are connected, and arbitrating extra player
inventory rows between mods that each want some.
You normally get it as part of the Longhouse pack.
It is a single DLL with no assets, built against Valheim 1.0.7, Unity 6000.0.75, BepInEx
5.4.23.5 and Harmony 2.9.
Features
- Version check. Each Ezomic mod registers its guid, version and build id. When a client
connects, both ends exchange that list, and the server rejects a client whose list does not
match. The reason is written to both logs and appended to the client's "Incompatible
version" screen, which otherwise says nothing useful.
- Host config. The server sends its settings for every registered mod, and the client
uses them for as long as it is connected. Nothing is written to the client's config file,
and the client's own values come back on disconnect.
- Shared inventory height. Mods claim a number of extra player inventory rows instead of
writing Inventory.m_height themselves. Core sums the claims and writes the field once, so
two mods that both want rows get both, and it protects the contents of those rows during
loads.
- Server chat lines. A server can put a line in each player's chat window, under a name
of its own choosing. Vanilla cannot: its chat message names a connected player, and a
server is not one. Crier uses it for chat written on the Longhouse site.
The first three can be turned off in the config file. The chat line has nothing to turn off:
nothing sends it but a server running Crier.
This repository also carries shared/Prefabs.cs and shared/BiomeIndex.cs, which are source
files mods link into their own projects. They are not part of the DLL. See
For mod authors.
Installation
Install BepInEx 5.4.2350
first. These mods use the BepInEx 5 API and will not load on BepInEx 6.
A mod manager handles it if you install the Longhouse pack, which pins Core along with every
other member. To install it on its own, drop EzomicCore.dll in
BepInEx\plugins\Core\.
Install it on the dedicated server as well as on clients. The server is the only side that
can actually refuse a connection, so a server without Core does not check anything, whatever
its clients are running.
Core is an optional soft dependency for the individual mods. Each one checks whether Core is
loaded and, if it is not, logs a line saying it is running standalone and carries on without
the version check and the host config. The exception is Delve, which requires it outright.
Configuration
BepInEx\config\ezomic.valheim.core.cfg, all under a Multiplayer section.
| Key | Default | Effect |
| --- | --- | --- |
| EnforceVersions | true | Refuse a connection when the two ends disagree about which Ezomic mods are installed or about their versions. Turning it off does not make a mismatch safe, it makes it silent |
| EnforceBuilds | true | Also refuse when both ends claim the same version but were built from different source. Turn this off if you build the mods yourself on more than one machine: the build id depends on source paths, so the same commit in a different folder produces a different id |
| EnforceConfig | true | Apply the host's settings while connected. On a server this decides whether it sends them, on a client whether it accepts them |
Multiplayer
The mod list goes out in ZNet.OnNewConnection, before either side sends PeerInfo, so it
has arrived by the time the check runs. Every disagreement is reported at once rather than
one per reconnect attempt.
What gets compared, per registered mod: the version string, then the build id (the assembly's
module version id, which the compiler derives from the compilation inputs), then a hash of the
mod's data file if it declared one. A missing build id or data hash from an older Core on the
far end is treated
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: