Cross Server Portals Continued

v1.3.2·Updated 2026-09-10

Valheim 1.0 continuation of lunar91's Cross Server Portals. Link servers and local worlds through portals.

About this mod Author’s original text

Cross Server Portals Continued

Connect Valheim servers and local worlds through ordinary portals.

Community-maintained fork: This project is a Valheim 1.0-compatible continuation of

lunar91/lunarbin's Cross Server Portals.

The original design and implementation belong to lunar91 and contributors. This fork is

distributed under the same GPL-3.0 license and is not an official lunar91 release.

Recommended companion: PortalPass

For seamless travel between password-protected servers, pair this mod with

PortalPass

(source on GitHub). PortalPass is an

optional client-only companion that supplies passwords from a private file the

player controls, so cross-server portal trips do not stop at a password prompt.

It never records or learns passwords automatically.

Compatibility

  • Valheim 1.0 / dedicated server network version 39
  • BepInExPack Valheim 5.4.2350 or newer compatible release
  • Install on every client and server participating in cross-server travel

The plugin GUID and DLL name remain unchanged so existing configuration is retained when

upgrading from the original mod. Remove the original DLL before installing this package;

do not run both versions together.

Installation

Copy ValheimCrossServerPortals.dll into BepInEx/plugins/CrossServerPortals/ on each

client and server.

Portal tags

Use one of these formats:

SourceTag|server.example.com:2456|TargetTag

SourceTag|192.0.2.10:2456

SourceTag|[2001:db8::10]:2456|TargetTag

SourceTag|world:My Local World|TargetTag

  • SourceTag identifies the departure portal.
  • TargetTag is optional. On arrival, the mod looks for either that ordinary tag or a

cross-server portal whose source tag matches it.

  • A server address without a port uses Valheim's default port, 2456.
  • IPv6 addresses with a port must use brackets.
  • world: destinations switch to a local world by name.

Cross-server portals ignore Valheim's ordinary item teleport restrictions, matching the

behavior of the original mod.

Configuration

  • PreserveStatusEffects — preserve effects such as rested and wet across a mod-driven transfer.
  • RecolorPortalGlyphs / CustomPortalGlyphColor — identify cross-server portals visually.
  • RecolorPortalEffects / CustomPortalEffectColor — customize their particle effects.
  • PromptBeforeTeleport — request confirmation before leaving the current server.
  • RequireAdminToRename — server-synchronized restriction for cross-server portal tags.
  • LockAdminConfig — lock synchronized administrator configuration.

What changed in this continuation

  • Restored Valheim 1.0 compatibility using the new flattened portal-list API.
  • Replaced asynchronous thread-pool delays with Unity coroutines.
  • Preserved the calculated safe exit position after the destination finishes loading.
  • Limited periodic portal enumeration to servers and compare portals by stable ZDO ID.
  • Reworked portal-tag validation for safer DNS, port, world-name, and IPv6 handling.
  • Updated deprecated particle-system calls and improved null safety.
  • Added repeatable Linux builds, parser tests, CI, and -ready packaging.

See CHANGELOG.md for release history and docs/PUBLISHING.md

for maintainer release instructions.

Building

Set VALHEIM_GAME_PATH to a Valheim installation containing BepInEx, then:

dotnet test tests/CrossServerPortals.Tests.csproj

dotnet build CrossServerPortals.csproj -c Release

dotnet msbuild CrossServerPortals.csproj -t:Package -p:Configuration=Release

The -ready archive is written to artifacts.

Credits and license

  • lunar91 — original author and architecture
  • Wacky-Mole — original admin permission work
  • ServerSync — server-authoritative configuration

Licensed under GPL-3.0. Git history from the upstream repository is preserved.

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_Valheim

File & checksum

Filename
Cross_Server_Portals_Continued-1.3.2.zip
File size
201.1 KiB