CrossplayJoinCodeFix

版本 v1.1.0·更新於 2026-10-09

Server-side fix for crossplay servers that show as offline: retries PlayFab's incomplete join-code answer instead of crashing the check, so the lobby still goes online.

模組介紹 作者原文

CrossplayJoinCodeFix

A server-side fix for Valheim crossplay dedicated servers that run fine but show as

offline: nobody can find or join them, although the world is up.

The problem

When a crossplay server starts, it registers a join code with PlayFab and asks PlayFab whether the

code is unique. Sometimes PlayFab answers with part of the data missing (no lobby list, or a lobby

without its owner). The game does not expect that: it throws a NullReferenceException in

ZPlayFabMatchmaking.OnCheckJoinCodeSuccess and never activates the lobby. The usual workaround is

to stop the server for a while and try again.

If your server log shows that exception right after start and the server stays invisible, this

plugin is for you.

What it does

It checks PlayFab's answer before the game reads it:

  • A complete answer: nothing changes, the game's own code runs.
  • The only lobby returned is the one this server just created: the lobby is activated, as the

game would have done.

  • Otherwise: the check is repeated every few seconds until PlayFab answers properly. If it still

has not after the timeout, the server registers a new join code and waits again.

The log shows CrossplayJoinCodeFix 1.0.0: join-code check guarded (...) once it runs.

Install

On the dedicated server only, with BepInEx: install it with a mod manager's server profile, or

copy CrossplayJoinCodeFix.dll into the server's BepInEx/plugins. Players need nothing.

Settings

BepInEx/config/local.crossplayjoincodefix.cfg, section [JoinCode]:

| Setting | Default | Meaning |

|---|---|---|

| TimeoutSeconds | 30 | How long to keep re-checking an incomplete answer before registering a new join code. |

| RetrySeconds | 2 | Time between two checks while waiting. |

Notes

  • Tested on a crossplay test server with simulated incomplete PlayFab answers. The last-resort

path (a new join code after the timeout) has not yet been seen in a real outage: reports welcome.

  • It only touches the join-code check; servers without crossplay are not affected.

Source and issues: github.com/Shuiei/CrossplayJoinCodeFix

安裝與使用 安裝:BepInEx 外掛

  1. 本站下載的壓縮包就是模組本體,通常是 BepInEx 外掛(解壓後得到 .dll 或外掛資料夾)。
  2. 建議流程:用社群模組管理器(如 r2modman)選中本遊戲後匯入該模組,管理器會自動裝好 BepInEx 前置並處理依賴。
  3. 手動流程:先在遊戲目錄裝好 BepInEx 載入器,再把解壓出的 .dll 或外掛資料夾放進 BepInEx/plugins/。
  4. 啟動遊戲,BepInEx 控制台會列印載入日誌;確認這個模組出現在日誌裡即為安裝成功。

帶「前置依賴」的模組需要一併安裝,否則不會載入。功能開關通常在遊戲內或外掛自帶的設定檔裡調整。 多人連線時,主機與所有用戶端需要安裝一致的模組。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

denikson-BepInExPack_Valheim

檔案與校驗

檔案名稱
CrossplayJoinCodeFix-1.1.0.zip
檔案大小
24.3 KiB