
Idavoll
Dungeon respawn for Valheim. Crypts, caves and camps rebuild on a timer, with the same layout and everything back inside.Idavoll
Dungeon respawn for Valheim.
Crypts, burial chambers, caves, Fuling villages and dvergr towers rebuild on a timer. Chests refill, monsters come back, ore is whole, doors are shut, smashed props are standing again. The layout does not change, so a crypt you have learned is still the crypt you learned.
Named for Idavoll, the field where the surviving gods gather after Ragnarok and build the world again from nothing.
This is new, and it destroys things on purpose.
Idavoll deletes every object a dungeon placed and lets the game build it again. That is the only way to get a mined-out ore vein or a broken door back, and it means the protection list - the code that decides what is not deleted - is the whole mod. It has been written carefully and it refuses loudly when it is unsure, but it has not yet been run for months on a busy server.
Take a world backup before the first reset, and use
idavoll_dryrunbefore you trust it. A dry run changes nothing and prints exactly what would be destroyed and what would be kept, with a reason for every survivor.
What It Does
Vanilla Valheim never resets a dungeon. DungeonGenerator.Generate runs exactly once per
dungeon, during first world generation, and after that a crypt stays looted forever. On a server
that runs for months, the map fills up with buildings that are just empty rooms.
Idavoll gives every location a timer. When one comes due and nobody is near it, everything the location placed is destroyed and the game's own generation path is re-entered - so the rebuild is Valheim building the dungeon, not Idavoll imitating it.
What It Will Not Destroy
Everything below survives a reset, and each rule is worked out from live game data rather than a list of names, so modded equivalents are covered too:
- Anything a player built. Walls, chests, workbenches, signs, portals, beds.
- Portals, separately and by prefab, because losing one strands whoever is on the far side.
- Terrain modifications. Every hole you dug and every path you levelled.
- Beds, tombstones and player characters.
- Tamed creatures, including ones partway through being tamed.
- Ships and carts.
- Dropped items, by default - so gear on the floor where somebody died is safe.
- Vegetation. Trees, rocks and bushes are never touched.
- The zone's own spawner, so a reset zone does not go quiet forever.
- Boss altars, the starting temple and Haldor's camps, held off by name.
- Anything you name in
protectedPrefabs.
One gap worth knowing: objects created with the spawn console command carry no creator, so
they look exactly like dungeon furniture. If you have admin-spawned something precious inside a
dungeon, name its prefab in protectedPrefabs.
There is also a ceiling. If a reset would destroy more than maxObjectsPerReset objects it
refuses and tells you, rather than proceeding. That number exists so a bug in the protection
list shows up as a refusal instead of a loss.
Resetting Is Opt In
Out of the box Idavoll resets, and nothing else:
| Biome | Locations |
|---|---|
| Black Forest | burial chambers, troll caves |
| Swamp | sunken crypts |
| Mountains | mountain caves |
| Plains | Fuling villages |
| Mistlands | dvergr towns, infested mines, dvergr guard towers |
| Ashlands | morgen holes, the charred fortress, fortress ruins, charred ruins, charred tower ruins |
Plus blacks7ar's OreMines mines if you have that mod, and nothing at all in the Deep North, which has no dungeons in Valheim 1.0.15.
That narrowness is deliberate. Valheim's location registry holds every location in the world - on a full map that is around fourteen thousand of them, and the overwhelming majority are scenery: standing stones, dolmens, ruins, wood houses, flint deposits, shrines, spawn points. A mod that reset anything it had not been told about would slowly rebuild the entire map.
So the catch-all rule * ships disabled. A location with no matching rule never resets, and
deleting a rule always makes things safer rather than riskier.
Held off by name
Some things stay off even if you enable the catch-all: every boss altar, the Queen's and the Fader's dungeons, Hildir's quest content, the starting temple and Haldor's camps.
That list exists because skipUniqueLocations does not cover any of them. "Unique" means only
one may exist in the world, and a real map has five Bonemass altars, four Elder, five Queen
entrances and ten Haldor camps. So they get named rules instead.
If you do enable the catch-all, run idavoll_locations first and read it. Other mods add
locations too, and spawn rooms and teleport hubs are the kind of thing you do not want rebuilt
underneath somebody.
Finding what to write rules for
idavoll_locations
That lists every kind of location with a count, whether it has an interior, and which rule (if any) covers it. It is the only way to get the prefab names - they live in the game's asset bundles, not anywhere you can read offline. Modded locations show up there too, so it is also how you add rules for content Idavoll has never heard of.
Installing
Install it on the server. The whole engine is server-side: it owns the timers, it owns the world, and a client-side install does nothing on its own.
Install it on admin clients too, for the settings UI. Idavoll adds a Dungeons tab to Highseat's panel, which lists every dungeon with its countdown and gives you a dry run and a reset button per row.
Highseat comes down with Idavoll as a dependency. It is a client-side admin console, so on a dedicated server it simply sits there doing nothing, and Idavoll runs fine without it: every setting and every command is reachable from the console either way.
Settings
Server settings live in BepInEx/config/gbv.valheim.idavoll.json and are pushed to admin
clients automatically. Edit them in the Dungeons tab or in the file, whichever suits.
| Setting | What it does |
|---|---|
enabled |
Master switch for automatic resets. |
timeSource |
WorldTime or WallClock. See below. |
defaultIntervalHours |
Interval used by a rule that does not set its own. It is not a fallback for locations no rule names: those never reset. |
playerClearanceMeters |
How far away everybody has to be before a dungeon may reset. |
maxObjectsPerReset |
The refusal ceiling. |
maxResetsPerHour |
Throttle, so a long absence does not rewrite a region at once. |
protectDroppedItems |
Keep loose items on the floor. On by default. |
skipUniqueLocations |
Skip locations the game flags unique. Leave it on, but note it does not cover boss altars: see above. |
radiusMarginFactor |
Widens the destroy sphere around a surface location. See below. |
radiusMarginMeters |
Added to the sphere after the factor. See below. |
protectedPrefabs |
Extra prefab names never to destroy. |
rules |
Per-location intervals. |
Each entry in rules looks like this:
"Crypt*": { "enabled": true, "intervalHours": 48 },
"Hildir_*": { "enabled": false, "intervalHours": 0 }
Keys are a prefab name (Crypt4), a prefix (Crypt*) or * for everything. An exact match
beats the longest matching prefix, which beats *. An intervalHours of 0 falls back to
defaultIntervalHours. Setting enabled to false means that location never resets, and so
does having no rule at all - see above.
The radius margins
A location tells the game how much room to leave around it, not how far its own buildings reach. An outlying hut on the edge of a Fuling village sits well past that radius, so Idavoll widens the sphere before deciding what belongs to the location:
radius * radiusMarginFactor + radiusMarginMeters
Defaults are 1.25 and 8. Too small is the dangerous direction: anything the destroy pass misses survives, and then the rebuild puts a second copy on top of it, permanently. Too large just means more of the surrounding landscape is considered, and the protection list still keeps vegetation, terrain and anything player-built.
If a surface location ever comes back looking doubled, this is the first thing to check, and
idavoll_dryrun shows you the partition it produced.
Which clock
WorldTime is the default, and it is Valheim's own world clock - it only advances while
somebody is online. A server nobody touches for a week does not age its dungeons by a week.
That is usually what people mean by a respawn timer, but it does surprise people, so it is worth
saying plainly.
WallClock is real elapsed time, for a server that is genuinely always busy.
Commands
All of them work from an admin client as well as from the server console.
| Command | What it does |
|---|---|
idavoll_status [filter] |
Every dungeon that can reset, when it last did and when it is due. |
idavoll_locations [filter] |
Every kind of location in your world, with counts and which rule covers it. |
idavoll_dryrun <x> <z> |
Show what a reset would destroy and keep. Changes nothing. |
idavoll_reset <x> <z> [force] |
Reset one dungeon now. |
idavoll_pending |
What the scheduler is waiting for, and what is in flight. |
idavoll_forget <x> <z>|all |
Clear stored reset times, so they count from now. |
idavoll_reload [defaults] |
Re-read the rule table and push it to clients. |
idavoll_abort |
Abandon the reset in flight. |
here works in place of coordinates: idavoll_dryrun here.
One Behaviour That Looks Like A Bug
On a dedicated server a reset happens in two halves, and they can be days apart.
The destroy runs immediately. The rebuild runs when a player is next within simulation distance
of that zone, because that is when the server generates the zone at all. Between the two,
idavoll_pending shows the dungeon as waiting and the dungeon is empty.
This is deliberate, and it is better than the alternative: the work costs nothing until somebody is actually going there. But if you reset a dungeon, fly away, and find an empty shell when you come back a minute later, wait for the zone to load rather than resetting it again.
After Restoring A Backup
Reset times live beside the config, not in the world save, so restoring a world backup rolls the
world back and leaves the schedule where it was. idavoll_forget all makes everything count
from now, which is what you want.
Credits
Built for Guys Being Vikings. Shared publicly in case it suits your server too.
Everything here was written from Valheim's own decompiled code. No other mod's source was read or adapted.