
TeleportEverything
Portals carry restricted items, your attached cart, and nearby tamed allies through with you (optionally nearby enemies too) - with a custom 'Vikings don't run' message and full translation support.TeleportEverything
Portals carry more than just you: restricted items (ore, ingots, dragon eggs, ...), your attached cart, and nearby tamed allies can all travel through with you - and, if you want the chaos, nearby enemies chasing you too.
Bugs / suggestions: Discord
Features
- Item transport – vanilla's portal-restricted items (ore, ingots, dragon eggs, ...) can travel through portals with you, optionally with a percentage "toll" taken off each restricted stack.
- Cart transport – a cart currently attached to (being pulled by) you teleports along too and is automatically re-attached once you arrive.
- Ally transport – nearby tamed creatures teleport with you. Several modes: only ones currently following you, all tamed nearby, all except custom-named ones, or only custom-named ones. Boars, loxes and wolves can each be excluded individually.
- Enemy transport (off by default) – nearby hostile creatures actively targeting you get pulled through the portal too, capped at a configurable maximum.
Configuration
Settings live in BepInEx/config/zenox.teleporteverything.cfg, generated on first run.
| Section | Setting | Default | Description |
|---|---|---|---|
| General | Enabled |
true |
Enable/disable the whole mod. |
| Items | TransportRestrictedItems |
true |
Allow portal-restricted items through. |
| Items | TransportCheatTierItems |
true |
Also bypasses vanilla's tool-tier 1000+ portal block (normally debug/cheat items only, but also seen on at least one legitimate endgame item). |
| Items | TransportFeePercent |
0 |
% of each restricted stack removed as a toll. 0 = free. Never applied on a portal that already allows all items in vanilla (e.g. the Stone Portal). |
| Items | FeeExemptItems |
(empty) | Comma-separated item names exempt from the fee. |
| Portal | ActivationRangeMultiplier |
1 |
Multiplier on how close you need to be to use a portal. |
| Allies | AllyMode |
FollowingOnly |
Disabled / FollowingOnly / AllTamedNearby / AllTamedExceptNamed / OnlyNamed. |
| Allies | SearchRadius |
10 |
Meters to search for transportable allies. |
| Allies | TransportBoars / TransportLoxes / TransportWolves |
true |
Per-species opt-out. |
| Allies | ShowAllyCountOnHover |
true |
Show ally count on the portal's hover text. |
| Allies | AllyMaskMode / AllyTransportMask |
Disabled / (empty) |
Extra allow/block list by creature name, on top of AllyMode. |
| Allies | ReattachGraceSeconds |
2 |
Seconds to keep retrying to find a transported ally after the teleport completes, before giving up and logging it as lost. |
| Carts | TransportCartsMode |
Enabled |
Disabled / Enabled (any portal/teleporter) / OnlyDungeons (only dungeon rune stones) / PortalsOnly (only player-built portals, never dungeons). |
| Carts | SearchRadius |
10 |
Meters to search for your attached cart. |
| Carts | TaxCartRestrictedItemsPortals / TaxCartRestrictedItemsDungeons |
true |
Apply the item transport fee to the cart's cargo, separately for player-built portals vs dungeon rune stones. |
| Carts | BlockCartsWithRestrictedItems |
false |
If true, a cart containing any restricted/cheat-tier item is left behind entirely instead of transported - lets you allow normal cart transport while still keeping restricted cargo out of carts specifically. |
| Carts | PreventCartAutoDetach |
true |
An attached cart only detaches when you do it yourself (or it tips over) - vanilla otherwise re-checks the attach distance every frame and silently detaches whenever you drift a couple meters away. |
| Enemies | TakeEnemiesWithYou |
false |
Drag nearby targeting enemies through the portal too. |
| Enemies | SearchRadius |
6 |
Meters to search for targeting enemies. |
| Enemies | MaxEnemiesTransported |
3 |
Safety cap on how many can be dragged at once. |
| Enemies | SpawnOffset |
6 |
How far ahead of the destination dragged enemies spawn. |
| Enemies | SpawnScatterRadius |
3 |
Random scatter so multiple enemies don't stack. |
| Enemies | EnemiesMaskMode / EnemiesTransportMask |
Disabled / (empty) |
Extra allow/block list by creature name for dragged enemies. |
| Enemies | PreventTeleportWhileChased |
false |
Block portal use entirely while a hostile creature is actively targeting you ("Vikings don't run"). |
| Portal | SoundVolume |
1 |
Portal ambient sound volume multiplier. |
| Portal | MessageMode |
TopLeft |
NoMessages / TopLeft / Centered - how transport feature messages are shown. |
The exit point is also pushed 3m further forward automatically whenever a cart is attached (not configurable - vanilla's exit point is only sized for a bare player, so the cart would otherwise often clip into nearby walls).
The balance-affecting settings (item/cart/enemy toggles and percentages, ally/enemy masks) are pushed from the server to every connecting client automatically - no separate "force config" toggle needed, matching the pattern already used in Zenox.
Note: the three SearchRadius settings (Allies/Carts/Enemies) are not server-synced - each
player's own local config value is what's used, same as in singleplayer. If you're running a
server and want a specific radius to apply to everyone, each player needs to set it in their own
config, not just the server's.
Multiplayer
Works per-player - each client with the mod installed gets the extended portal behavior for themselves; players without it just use portals normally (subject to vanilla's own restrictions). A dedicated server running the mod pushes its own config values (the gameplay-balance ones) to every connecting client automatically.
Translations
Hover text and transport messages can be translated. Create a file named
TeleportEverything.<Language>.yml (e.g. TeleportEverything.German.yml) anywhere under your
BepInEx folder - it's picked up automatically and used whenever the game's language matches. Use
the exact language name Valheim itself uses in its own language dropdown (German, French,
Spanish, ...). English is built into the mod and needs no file.
Copy this as a starting point and translate the text on the right of each : - keep the
{placeholder} tokens exactly as they are, they get filled in automatically:
zenox_te_hover_allies: "\n{count} companion(s) nearby would teleport with you"
zenox_te_msg_cart_left_behind: "Cart left behind: contains a restricted item"
zenox_te_msg_cart_reattached: "Cart re-attached"
zenox_te_msg_cart_arrived_detached: "Cart arrived nearby - reattach it by hand"
zenox_te_msg_transport_toll: "Transport toll: {amount} item(s) taken ({percent}%) from {stacks} restricted stack(s)"
zenox_te_msg_enemies_followed: "{count} hostile creature(s) followed you through the portal!"
zenox_te_msg_allies_teleported: "{count} companion(s) teleported with you"
zenox_te_msg_vikings_dont_run: "Vikings don't run! A nearby enemy is stopping you from teleporting"
Note: this only covers in-game hover text and transport messages, not the BepInEx/config/...cfg
setting descriptions - those come from a separate system (the Configuration Manager mod's own UI)
and can't be translated this way.
Troubleshooting
Translations stopped working / mod fails to load after an update: this mod depends on the
ValheimModding-YamlDotNet Thunderstore package (used to parse translation files). If another
installed mod also bundles its own copy of YamlDotNet.dll instead of using that same dependency,
you can end up with two different versions sitting in your BepInEx/plugins folder at once - which
one actually gets loaded isn't guaranteed. If you hit this, try removing any extra/duplicate
YamlDotNet.dll you find outside the ValheimModding-YamlDotNet folder, or ask that other mod's
author to depend on the official package the same way instead of bundling their own copy.
Credits
Inspired by the long-inactive "TeleportEverything" mod's feature set. This is an independent, from-scratch implementation written against the current Valheim 1.0 API, not a port or copy of that mod's code.

