You are viewing a potentially older version of this package. View all versions.
MinionFactory-Stavebound-1.1.0 icon

Stavebound

Travel to any portal off the map. What you may carry through is decided by the staves standing at the far end.

Date uploaded 2 weeks ago
Version 1.1.0
Download link MinionFactory-Stavebound-1.1.0.zip
Downloads 127
Dependency string MinionFactory-Stavebound-1.1.0

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2333 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2333
ValheimModding-Jotunn-2.30.0 icon
ValheimModding-Jotunn

Jötunn (/ˈjɔːtʊn/, 'giant'), the Valheim Library was created with the goal of making the lives of mod developers easier. It enables you to create mods for Valheim using an abstracted API so you can focus on the actual content creation.

Preferred version: 2.30.0

README

Stavebound

Travel to any portal in the world. What you may carry through is decided by the staves standing at the far end — and every stave is bought with a boss's head.

Interact with a portal and pick your destination off the map. The choice belongs to the portal and applies to everyone, until someone re-aims it. Walking in travels.

Then the part that makes it more than another any-portal mod. Build an Elder's Stave beside a portal and that portal will accept copper, tin and bronze. It will still refuse iron — until you go and build a Bonemass's Stave there too, and it says so in as many words:

Iron cannot enter "Copper Mine" — no Bonemass's Stave there.

One end of the trip has to have paid. By default either end will do, so a site with an iron stave both takes iron from anywhere and sends it anywhere — and only two sites that both lack it cannot pass iron between them. Which end is asked is the dial most worth knowing about; see Which end pays.

You are told before you commit, not at the wall. The portal's runes go dark when it will refuse what you are holding, the offending stacks are marked in your inventory while you pack, and walking up to the portal gets you the reason in words.

Installing

Built for Valheim 1.0 and needs Jotunn 2.30.0 or newer — earlier Jotunn predates the game's 1.0 release. With a mod manager both it and BepInEx arrive as dependencies and there is nothing else to do; by hand, drop Stavebound.dll into BepInEx/plugins.

Install it on the server and on every client. The server works out clearance; clients need the map selector and the travel check. Clearance rules synchronise from the server, so nobody can loosen them locally.

Removing the mod removes its pieces, so any staves you built will vanish — normal for any mod that adds buildables. The extra data it writes is harmless to an unmodded game.

The staves

Each is built from that biome boss's trophy plus a little of what the biome gives you. Stand one within ten metres of a portal and it binds to it.

Stave Costs Lets through
Elder's The Elder trophy · 10 copper · 20 stone Copper, tin, bronze
Bonemass's Bonemass trophy · 10 iron · 20 stone Iron and scrap iron
Moder's Moder trophy · 10 silver · 20 stone Silver, dragon eggs
Yagluth's Yagluth trophy · 10 black metal · 20 stone Black metal
Queen's The Queen trophy · 3 dvergr extractors · 20 stone Dvergr extractors, mechanical springs
Ashen Fader trophy · 10 flametal · 20 stone Flametal and the Ashlands' spoils

Tiers are independent — a site can accept silver while still refusing iron. Nothing makes you climb the ladder in order.

While you are holding one, a beam shows which portal it would bind to, and a circle shows its reach if nothing is close enough.

Which end pays

MaterialFlow, under 2 - Clearance. One rule for the whole world, set on the server — this is the setting that decides how the whole mod feels, so it is worth a minute before you start a save.

Asks What that gives you
Both (default) Either end A site's staves cover arriving and departing, so metals move freely between it and anywhere else. Only two sites that both lack a tier cannot pass it. The most forgiving — a stave you forgot to build strands nothing
Receive The destination The sharper rule, and the one the mod was designed around. An outpost with no staves sends ore to your base forever and never receives any. Ore flows inward, toward the places you have invested in, and outposts stay cheap, disposable and one-way
Deliver The portal you leave Receive mirrored. A stocked base supplies a bare frontier with anything, but that frontier cannot ship its own ore home until it has staves of its own

Under every one of them, a tier that neither end holds never moves. Nothing here lets you carry something nobody paid for; it only decides who is allowed to have done the paying.

One thing Both gives up, since it is the default and this is easy to discover the hard way: a single fully-staved base makes your whole network permeable in two hops — outpost to base, base to other outpost. Direct outpost-to-outpost still needs one of them to have paid. If that reads as too loose once you have played it, Receive is a one-line change and restores the original rule exactly.

Controls

E at a portal Open the destination selector
Shift+E at a portal Rename it, as vanilla
← → Change the highlighted destination
P Confirm
Escape Cancel
O Sort by distance or name
K Show only destinations that accept what you are carrying

All rebindable under 5 - Selector keys, each with a gamepad button beside it. The selector is fully playable on a pad.

Or use the mouse. Keys browse and the confirm key chooses; a click chooses straight away.

Click a destination, or pick one from the dropdown Choose it
Click a portal's pin on the map Choose it and close the map
Mouse wheel over the list Move the highlight — the map does not zoom
Hover a destination Show it on the map without choosing it
The buttons along the bottom Do the same as their keys

The portal nearest your bed is drawn in light blue; the other destinations' pins are orange while you choose. Each of these can be switched off under 8 - Selector.

Settings worth knowing

Setting Does
ReaimPermission Who may re-aim a portal — anyone, only players a guard stone permits, or admins
MaterialFlow Which end of a trip a site's staves count for. Both by default — either end is enough. Receive: only the destination, so outposts are one-way. Deliver: only the portal you leave
StaveRadius How far a stave reaches for its portal. Ten metres by default
PortalBinding Whether a stave binds to the nearest portal or every portal in range
StrictLadder Off by default. On, a site's clearance stops at its first missing rung
SealedItems Resources no stave will ever carry. Bloodgold and Petrified Tissue by default
SeamlessTransit Off by default. Ends a trip when the destination has loaded rather than on vanilla's eight-second timer — a destination already in memory skips the loading screen entirely
ShowBlockedCargoOverlay Marks the stacks a nearby portal's destination will refuse
HidePortalNames Hides names in the selector, if you would rather navigate by the map
ClickPicksPortal On by default. Clicking a destination in the list or dropdown picks it at once; off, a click only highlights and the confirm key picks
MapClickPicksPortal On by default. Clicking a portal's pin on the map picks it and closes the map; off, it only highlights
ColourHomePortal On by default. The portal nearest your bed is drawn in its own colour
ColourPortalPins On by default. Destination pins on the map are orange while choosing, so they stand out from your own pins
HoverPreviewsOnMap On by default. Hovering a destination shows it on the map
WheelScrollsList On by default. The mouse wheel over the list moves the highlight instead of zooming the map

Two resources are sealed: the Deep North's Bloodgold and Petrified Tissue. No stave carries them and none ever will — the base game moves those by stone portal and nothing else, and this mod leaves that alone rather than selling them back to you for a trophy. SealedItems decides which, if you disagree.

Which item belongs to which stave is configurable too, under 2 - Clearance. The list of blocked items is never hand-written — it is read from the game at startup, so a game update adding a new ore cannot break the mod. Anything unrecognised is held to the highest tier and named in the log.

LogNetworkSync defaults off. Turn it on before reporting anything about two machines disagreeing about a portal — it narrates every sweep, broadcast and receive, and it is the first thing anyone will ask for.

Note that changing a default only affects a config file that does not exist yet. If you have played an earlier build, your existing com.recognizerhd.stavebound.cfg keeps whatever it was written with — edit it, or delete it and let the game write a fresh one.

Console commands

Type help in the F5 console for the full list. The useful ones:

  • stave_portals — every portal this game knows about, where it points, and its clearance
  • stave_items — every item the game refuses to teleport, and which stave permits it
  • stave_net — the sync's state. Run it on a server and a client and compare
  • stave_players — where every player is, as drawn, as this machine holds them, and as the server reports them. For diagnosing a player who looks left behind at a portal

None of these need devcommands — only the console, which you can switch on in the game's settings.

A note on cheating

Cargo checks happen on your own machine, because that is where your inventory is. A determined player could bypass them. This is a rule system for playing with people you like, not anti-cheat — the server owns what each site permits, and never what you are carrying.

Licensing

Code: MIT — see LICENSE.

Valheim and its assets are the property of Iron Gate Studio. No game files are redistributed here. The mod builds its pieces by recolouring one that already exists in the game rather than shipping any art of its own.

CHANGELOG

Changelog

1.2.1 — 2026-09-29

Opening your inventory no longer costs you most of your framerate. Since 1.2.0, opening the inventory or a chest dropped the game to 15-30 FPS and held it there for as long as the panel was open — on any world, including a brand new one with no portals built in it.

The overlay that marks the stacks a portal will refuse has to know which portal you are standing at, and it asked the game to find that by searching the whole scene. That search costs the same whether the world holds fifty portals or none, and the inventory panel redraws every frame — twice, with a chest open. The mod now keeps a list of the portals loaded around you and reads that instead, which is the same answer for none of the cost.

If you turned the overlay off to get your framerate back, turn it back on. Set ShowBlockedCargoOverlay = true and CargoPreviewRange back to 8 in com.recognizerhd.stavebound.cfg. Nothing rewrites a config file that already exists, so those have to go back by hand.

Also fixed, from the same pass: in a world whose TeleportAll key lets everything through portals, the overlay marked stacks the game would have carried. It now only ever removes one of the base game's marks, never adds one.

Safe to update alone. A patch release, so this and 1.2.0 still connect to each other, and the fix asks nothing of the server.

1.2.0 — 2026-09-17

Everyone has to update together this time. Stavebound will not connect across different minor versions, so a 1.1.x player cannot join a 1.2.0 server, or the other way round. Update the server and every player at the same time. (1.1.1 was a patch release, which is why that one could be taken up one player at a time.)

Portal names can be 32 characters, against vanilla's 10, which runs out fast once a world has enough portals to tell apart. The selector's panel widens to suit, so a full-length name still fits a row whole. PortalNameLength sets it anywhere from 10 to 32.

Set on the server, so every portal in a world is named under one rule — though a player on an older build still types under vanilla's 10 while seeing everyone else's longer names normally.

1.1.1 — 2026-09-15

A player who walks through a portal no longer leaves their body standing there on everyone else's screen, still emoting, until those players teleport somewhere themselves.

That was the game's doing, not this mod's: your position travels only to players near you, and a portal is the one way to leave an area without crossing its edge, so everyone watching keeps their last copy of you — at the portal — forever. It shows up here because portals are what this mod is for, so it is fixed here. Nothing is faked: your game asks the server for a fresh copy of anyone who looks stuck, and the game then clears the body itself. ClearLeftBehindBodies turns it off.

Safe to update alone. This is a patch release, so 1.1.1 and 1.1.0 still connect to each other. The fix is entirely on your own machine and asks nothing of the server, which does not need updating — or even to be running this mod.

1.1.0 — 2026-09-14

Update the server and every player together. Stavebound refuses to connect across minor versions, so a 1.0.0 player cannot join a 1.1.0 server, or the other way round. That is the check working as intended — it stops two builds quietly disagreeing about portals — but it means nobody can update alone.

The destination selector works with a mouse. Each destination is a clickable row with its clearance chips right-aligned; a dropdown lists them all; the key hints along the bottom are buttons; the wheel scrolls the list without zooming the map; and hovering a row pans the map to it. Arrow keys and gamepad still highlight and the confirm key still picks — a click picks straight away, and clicking a portal's pin on the map picks it and closes the map.

Your home portal stands out. The portal nearest your bed is coloured in the list and on the map, and every other destination's pin is orange while you choose, so the selector's pins no longer blend in with the ones you placed yourself.

Every mouse behaviour is a per-player setting under 8 - Selector.

stave_players, for diagnosing a player who looks left behind at a portal after going through. Needs the console, not devcommands.

Fixed: with the cargo filter emptying the list, pressing confirm or the arrow keys crashed. Fixed: closing the selector could leave the map open, because it checked a flag the game never changes. Fixed: clicking the map to choose a destination read the pointer through Unity's old input API, which the game stopped using in 1.0.

1.0.0 — 2026-09-10

Valheim 1.0 compatibility. 0.9.0 does not run on 1.0 — update.

Numbered 1.0.0 because it has now been played on a real network and on the game's own 1.0 release, and nothing in it is known to be wrong. The costs in the ladder still have not been tuned over a long game — that is a dial, not a defect, and every one of them is config.

Two things the game moved out from under the mod. The inventory grid's slot type was promoted out of InventoryGrid and its position field became a property, which the cargo overlay reads. And portal ZDOs are now bucketed by sector, so the call the server sweeps use to list every portal returns a dictionary rather than a list — there is a new one with the old shape, and the sweeps use it.

Jotunn 2.30.0 is now required, since 2.29.2 predates 1.0.

The Deep North's metals are sealed. Bloodgold and Petrified Tissue cannot travel by portal at all, whatever a site has built — the base game moves those by stone portal and nothing else, and this mod now leaves that alone instead of selling them back to you for a Fader trophy. The refusal says so in its own words rather than naming a stave that would not have helped. SealedItems is config if you disagree, and a stone portal is unaffected either way.

The staves are filed under Transportation in the build menu and carry the up-arrow vanilla puts on upgrades. On 1.0 they were appearing only under "show all".

The categories are worked around rather than fixed upstream: Jotunn has not yet ported them to 1.0's rebuilt build menu, so the mod sets each piece's category itself once Jotunn is done registering.

Everything else came through 1.0 unchanged — every patch target, every private field read, and the teleport timing seamless transit depends on were all checked against the new assembly rather than assumed.

0.9.0 — 2026-09-06

First release. Both features have been played in single player and confirmed on a real network. Numbered 0.9 rather than 1.0 because the costs have not been tuned over a long game, not because anything is known to be wrong.

Any-portal travel. Interact with a portal to pick any portal in the world off the map. The choice belongs to the portal and applies to everyone until someone re-aims it. Pointers are one-way: aiming a portal at your base does not make the return trip. Vanilla tag pairing still works untouched on any portal nobody has re-aimed.

Destination clearance. Six staves, each bought with a boss trophy and a little of the metal it unlocks. Stand one near a portal and that portal accepts those metals — and refuses the rest by name: "Iron cannot enter "Copper Mine" — no Bonemass's Stave there." Only the destination is ever checked, so an outpost with no staves can send ore to your base forever and never receive any.

Knowing before you commit. The portal's runes go dark when it will refuse what you are carrying. Inventory slots mark the stacks that cannot make this trip while you are near a portal, rather than the ones that can never teleport at all. Walking up gets you the reason in words. Holding a stave shows its range and a beam to the portal it would bind to.

Optional seamless transit. Off by default. A destination already in memory skips the loading screen; one that is not shows it for as long as loading actually takes, rather than for vanilla's fixed eight seconds.

Five console commands for looking at what the mod believes: stave_portals, stave_aim, stave_net, stave_items, and the prefab tools stave_prefabs / stave_inspect / stave_preview.

Which end pays. MaterialFlow decides whether a site's staves count for arriving, departing, or both. Both is the default: either end is enough, so a site with an iron stave takes iron from anywhere and sends it anywhere, and only two sites that both lack iron cannot pass it between them. Receive is the sharper original rule — only the destination counts, so outposts are one-way. Deliver mirrors that, for supplying a frontier rather than feeding a capital.

Known gaps

Clearance and MaterialFlow have both now been played on a real network, which were the two things holding this back. LogNetworkSync defaults off as of that confirmation — turn it on before reporting anything about portals disagreeing between machines.

What is left is judgement rather than correctness, and is listed in TESTING.md: the §4 costs have never been tuned, and whether Both is the right shipped default is an open question about how it feels over a long game.