TortalPortal LITE
Strictly server-side Portal-network mod: progression-gated gates, one-way corpse-run recovery, fast-transit terminals, per-portal ore upgrades, portal caps, and self-repairing network health checks. Z
About this mod Author’s original text
🌀 TortalPortal Lite
No client install, ever. Every gate, terminal, and health check runs entirely on the server. Built and verified against Valheim 1.0.7, 1.0.12, 1.0.15, 1.0.16 and 1.0.17.
TortalPortal Lite is a strictly server-side portal-network mod (GUID wubarrk.tortalportallite):
every feature below runs entirely on the dedicated server, operating directly on the world's raw
ZDO data instead of live game objects. Steam, Xbox, PlayFab, and full crossplay parties all get the
identical experience, with nothing to download. Forked from the sibling mod Wonderland's own
architecture, this is TortalPortal Lite's v1.0.0 — the first packaged release. A large internal
R&D pass explored 263 possible portal mechanisms; the product owner picked exactly the 14 below to
actually ship. Everything else was cut from the codebase entirely, not just disabled — down from
296 files / ~44.8k lines to 83 files / ~10k lines. A v1.0.1 follow-up added a 15th feature,
BarrkBOT Portal Export, for admins who want portal data fed into their own tooling.
📜 Contents
- 🚪 Features
- 👻 Phantom Anchor Fabrication
- 🔒 Progression-Gated Sealed Gate
- 🩺 HealthScan
- 🩹 Repair
- 📊 Metrics
- 🚦 Version Migration
- 🤝 Compat
- 🧩 Architecture
- 🪨 The Ore Gate
- 🚧 Server-Enforced Portal Caps
- 💀 Corpse-Run Gate
- 📡 DestinationPrewarm
- 🚄 Fast-Transit Mode & Parked Terminal
- 📍 Live Portal Markers
- 📤 BarrkBOT Portal Export
- 💻 Admin Console
- 🔧 Configuration
- 📦 Dependencies
- 📥 Installation
🚪 Features
👻 Phantom Anchor Fabrication
A destination that doesn't need a builder. An admin declares a named phantom anchor — Name,
Position (X/Y/Z), RotationY, and a Void flag — directly in routing.json's
phantomAnchors section, and the server creates and maintains it automatically from there.
Void:true keeps it invisible and non-portal, a pure coordinate for other features to point at;
Void:false turns it into a real, visible portal anchor players can walk up to. Either way, nobody
has to physically carry portal materials out and build the thing by hand — Sealed Gates and Parked
Terminals below both lean on phantom anchors as destinations that already exist the moment they're
declared.
🔒 Progression-Gated Sealed Gate
A portal that only opens once it's earned. Declared in routing.json's sealedGates section
(Name, Position, GlobalKey, Destination, SealedTag, OpenTag), a Sealed Gate resolves to
nothing at all until a named global key — a boss defeat, or any custom flag the server sets —
becomes true, then opens straight to its declared destination. The server re-checks that key on its
own schedule rather than waiting on a player to interact with it: SealedGateEvalSeconds, in config
section 11 - Routing: Schedules and Conditions, controls how often (default 1 second).
🩺 HealthScan
A standing check for the portal pairs vanilla itself leaves broken. Running on its own timer
(HealthIntervalSeconds, config section 4 - Foundations: Health, default 30 seconds), HealthScan
walks the managed portal network looking for two specific problems: odd-count same-tag groups —
which vanilla's own pairwise-only pairing always leaves one member of permanently orphaned — and
stale, dangling connections. It's deliberately narrow about what counts as broken: a portal whose
one-way connection is intentional, like the Corpse-Run Gate below, is excluded from this report
entirely, because that's a designed feature, not a defect.
🩹 Repair
Turns HealthScan's findings into fixes you can trust, and undo. Repair only ever acts on what
HealthScan actually flagged: retagging an orphaned portal, clearing a dangling link. It's dry-run
by default (RepairDryRunDefault, config section 5 - Foundations: Repair) — `removekey tpl
repair on its own just reports what it would do — and only removekey tpl repair --apply` writes
anything. Before it does, it automatically snapshots the world's portal state first, so `removekey
tpl restore ` can always undo the whole batch if the fix wasn't what you wanted. If
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: