EWSync
Lightweight Expand World client-side sync fix: custom biome music and environments for multiplayer clients (peer-hosted and dedicated).
About this mod Author’s original text
EWSync
A client-side synchronization fix for custom biome music and environments, designed specifically for the Expand World mod suite.
What it fixes
When a player joins a multiplayer server (peer-to-peer or dedicated), Expand World Data syncs biome_data to their client. However, if the client receives this data before their world locations have finished loading, the mod quietly skips applying the custom biome music and environment weights.
Crucially, it never retries. The client is left hearing dead silence or Vanilla music instead of your custom music, and seeing vanilla weather instead of your custom environments. EWSync forces this data to apply correctly, verifies it, and implements a delayed safety retry when the player spawns to guarantee perfect parity between the server and the client.
Why is this needed?
Lightweight servers might never notice this issue. However, heavily modded servers (like MMOHeim) dramatically increase client load times, creating a "race condition" where the server data arrives long before the client is actually ready to process it. By default, EWD skips the application entirely if it fails the first time.
If you run a heavy modpack utilizing custom.ogg music files and custom weather environments through Expand World, this mod ensures your joining players actually experience them.
Optimization
Built with strict performance safeguards, EWSync is completely event-driven and never relies on resource-heavy per-frame polling. Once the custom data successfully synchronizes during the player's initial world load, the mod permanently goes to sleep for the rest of the session to guarantee zero impact on framerates during combat, portal jumps, or respawns.
To guarantee settings never carry over to another play session, the mod explicitly wipes its session state during logouts and main menu transitions—rather than relying solely on Valheim's native ZNet cleanup—preventing multiplayer configurations from bleeding into your solo worlds.
Installation
- Required on all game clients: Every player joining the server must have this installed.
- Optional on dedicated servers: It is harmless to install on the server machine, but the patches will remain dormant (headless servers do not render audio or weather).
- Solo / Host: Patches remain inactive. The game will automatically use the vanilla Expand World Data loading path, which already works perfectly for hosts.
Console Commands
Press F5 and type ewsync_check to print an instant diagnostic report. It will verify the client's sync status, current music track, active weather, and whether the custom audio pools successfully loaded.
Configuration & Verification (Diagnostic Only)
⚠️ IMPORTANT: The core fix of this mod (forcing the biome data to apply) works automatically for ALL modpacks out of the box. You do not need to configure anything for the mod to fix your server.
By default, the rdmods.ewsync.cfg file ships with verification rules tailored for the MMOHeim modpack. If you are using a different modpack, the mod will still fix your game perfectly, but running the ewsync_check console command will show "failed" results because it is looking for MMOHeim's specific music files.
If you want to use the ewsync_check diagnostic command for your own custom modpack, you must manually replace the MMOHeim values in the config file. (You can also delete the rules entirely, and the mod will still function perfectly without them).
How to set up your own Diagnostic Rules
The Rules string in the config file tells the diagnostic tool what to look for.
- Separate different biomes with a semicolon (;).
- Separate conditions within a biome with a pipe (|).
Format: BiomeName|musicDay=x|musicNight=y|env=a,b|pool=p1,p2
- BiomeName: The exact biome name from your expand_biomes.yaml (e.g., BlackForest).
- musicDay / musicNight: The custom music ID you want to verify. Use a hyphen (-) if left blank.
- env / pool: (Optional) Comma-separated lists of custom environments or au
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: