TeleportCarts
TeleportCarts is the cart transport module of the modularized TeleportEverything 3 pack; It allows players to transport an attached Vagon through portals, dungeons, and Basements transitions with synchronized server rules and personal player preferences. Compatible with Valheim 1.0 (Deep North).
Features
- Transports an attached cart with the teleporting player through normal/stone portals, dungeon entries/exits, and Basements.
- Allows Teleporting even non-attached carts by using the hotkey on portal hover (Configurable, default
shift + T). - Server-authoritative transition control (
Portals,Dungeons,Basements), search radius, and placement offsets. - Local player preferences allow personal opt-out or selective transition disabling.
- Fully respects Valheim's native ore transport rules: non-teleportable items block wood portals.
- Safe arrival placement and automatic cart reattachment when the destination area is ready.
In action

Smoother teleport transitions with QuickTeleport installed.
Installation
Recommended: install with Gale. Gale can use both the Hexium and Thunderstore catalogs and imports existing profiles on startup. Install TeleportCarts in the same profile used for Valheim, on the server and every participating client.
Manual: install BepInExPack for Valheim first. Then copy TeleportCarts.dll into Valheim/BepInEx/plugins/. ServerSync and YamlDotNet are embedded; do not install separate copies. Install the same version on the server and every participating client.
Configuration
TeleportCarts uses a dual YAML configuration model:
BepInEx/config/odinplus.TeleportCarts.server.yml— Synchronized and server-authoritative. Defines global enablement, transition toggles, maximum search radius, and landing placement offsets.BepInEx/config/odinplus.TeleportCarts.yml— Local player preference. Stays on the local machine and can only restrict the server policy. A player rule never expands server permissions.
Local diagnostic logging is controlled by Enable Cart Teleport Diagnostics in ConfigurationManager's Advanced settings.
Server policy YAML (odinplus.TeleportCarts.server.yml)
# Server policy: synchronized and authoritative.
# The server owns transport availability and placement numbers. A player file can only narrow them.
# Native ore teleport rules always apply to cart cargo; they are never overridden.
SchemaVersion: 1
Carts:
# Disable cart transport for every player.
Enabled: true
# Attached-cart detection radius around the teleporting player.
SearchRadius: 10
Teleport:
Portals:
# Disable cart transport through normal and stone portals.
Enabled: true
Dungeons:
# Covers both dungeon entrances and exits.
Enabled: true
Basements:
# Requires the Basements mod on the server.
Enabled: true
Placement:
# Drop the cart this far ahead of the player's arrival point.
ForwardOffset: 0.8
# Reattach only when the cart is within this distance of the arrived player.
ReattachRadius: 15
Player preference YAML (odinplus.TeleportCarts.yml)
# Local player preference: never synchronized; it can only restrict the server policy.
# Native ore teleport rules always apply to cart cargo; they are never overridden.
SchemaVersion: 1
Carts:
# Disable cart transport only for this player.
Enabled: true
Teleport:
Portals:
# Disable cart transport through portals only for this player.
Enabled: true
Dungeons:
# Disable dungeon entrance and exit cart transport only for this player.
Enabled: true
Basements:
# Disable Basements cart transport only for this player.
Enabled: true
Authority & Precedence Rules
- Effective Transition Availability: Cart transport for a given transition (Portal, Dungeon, Basement) occurs only when:
- Plugin
Enable ModCFG istrue - Server
Carts.Enabledistrue - Player
Carts.Enabledistrue - Server transition toggle is
true - Player transition toggle is
true
- Plugin
- Server Ceilings: The server owns
SearchRadius,ForwardOffset, andReattachRadius. Player files cannot alter placement geometry or exceed server limits. - Native Ore Rules: Cart inventories are evaluated via Valheim's native
Humanoid.IsTeleportable(allowAllItems). Ore in a cart blocks normal wood portals with the vanilla$msg_noteleportnotification, while stone portals allow passage. - World Gate Enforcements: If the world setting
noportalsis set, ornobossportalsis set during a boss event, cart teleportation is blocked and displays a notification. - Hot Reload & Resilience: Both YAML files reload live upon changes. If invalid syntax or schema errors are introduced, the error is logged and the last valid policy remains active.
In-game editor
Open the BepInEx ConfigurationManager and use Advanced Configuration → Teleport Rules, then click Open YAML Configuration Editor to edit both YAML files in game as raw text with syntax highlighting and live validation (Tab inserts spaces, errors are listed in the window and block saving). The server policy document is editable only on the server host and read-only on clients; the player preference document is always editable. Saving writes the file atomically and flows through the same validation and ServerSync snapshot pipeline as an external edit.
Compatibility
| Compatible | Mod | Quick description |
|---|---|---|
| Yes | TeleportEverything | Coexists in same ecosystem. |
| Yes | TeleportCreatures | Coexists seamlessly when installed together. |
| Yes | QuickTeleport | Allows making teleporting faster. |
| Yes | QuickCart | Quick attach cart using key. |
| Yes | CraftyCarts | Carts from this mod are teleportable too. |
| Yes | TargetPortal | Selected portal destination is preserved. |
| Yes | Basements | Supports cart transport into and out of Basements when installed. |
| Yes | OdisUndercroft | Supports cart transport into and out of OdisUndercroft when installed. |
Troubleshooting
- "Cannot teleport with non-teleportable items": Check if the cart contains ores, metal, or other restricted cargo when using a standard wood portal.
- Cart detached on arrival: If the destination area was heavily obstructed or the cart spawned beyond
ReattachRadius(default 15m), the cart remains placed safely where it landed without auto-reattaching. - YAML rejected: Check your game logs (
BepInEx/LogOutput.log). Ensure valid YAML indentation and that all required fields are present.
Support
Need help or want to share feedback? Find Elg in the Odin Plus Discord.