Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Idavoll
Dungeon respawn for Valheim. Crypts, caves and camps rebuild on a timer, with the same layout and everything back inside.
By GBV
| Date uploaded | 3 weeks ago |
| Version | 0.1.2 |
| Download link | GBV-Idavoll-0.1.2.zip |
| Downloads | 118 |
| Dependency string | GBV-Idavoll-0.1.2 |
This mod requires the following mods to function
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.2350GBV-Highseat
Admin console for dedicated servers. Unlocks devcommands for admins, with a searchable spawn grid, live world settings, and an editor for every installed mod's config.
Preferred version: 0.11.0README
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.
CHANGELOG
Changelog
0.1.3
Added
- Skeid's car is protected from resets. One parked inside a camp's radius was being cleared out with the camp.
Changed
- Rewrote the readme for players. Most of it was engine detail written for whoever maintains the mod rather than for anyone installing it.
Notes
- The reset engine is unchanged from 0.1.2.
0.1.2
Documentation only. No behaviour change.
Fixed
- The settings table still said
skipUniqueLocationsprotects boss altars. It does not, which is the whole reason 0.1.1 named them off instead. defaultIntervalHourswas described as the fallback for locations no rule names. Those never reset; the setting only supplies an interval to a rule that does not state its own.
Added
- Documented
radiusMarginFactorandradiusMarginMeters, which have shipped since 0.1.0 and appeared in no document. They control how far around an outdoor camp a reset reaches.
0.1.1
Added
- Mistlands: dvergr towns, infested mines and dvergr guard towers, every 96 hours.
- Ashlands: the charred fortress, fortress ruins, charred ruins and charred tower ruins, every 96 hours. Morgen holes every 72.
- OreMines mines every 72 hours, if you run blacks7ar's OreMines. Harmless if you do not.
Fixed
- Boss altars, the Queen, the Fader, Hildir's content, the starting temple and Haldor's camps are
now held off by name, and stay off even with the catch-all enabled. 0.1.0 said
skipUniqueLocationscovered them and it never did: unique means only one may exist in the world, and a real map has five Bonemass altars and ten Haldor camps. Nothing could have reset with the shipped defaults, but anyone who enabled the catch-all would have found out the hard way.
Notes
- Deep North has no dungeons to add. Valheim 1.0.15 generates only a runestone and Hildir's content up there.
- Scenery in the new biomes stays out, same as everywhere else: statues, viaducts, rock spires, giant skeletons, infested trees, volture nests, charred stone spawners and runestones.
0.1.0
First release. Dungeons come back.
Added
- Every dungeon gets a timer. When one comes due and nobody is near it, everything the location placed is destroyed and the game builds it again. Loot, monsters, ore, doors, props.
- The layout does not change. The original position and rotation are read off the dungeon before anything is destroyed and forced back during the rebuild, so a crypt you have learned is still the crypt you learned.
- Protection for anything a player built, portals, terrain, beds, tombstones, players, tamed creatures, ships, carts, dropped items, trees and rocks. Worked out from the game rather than from a list of names, so modded equivalents are covered.
- A Dungeons tab in Highseat's panel: every dungeon with its countdown, and a dry run and a reset button for each.
idavoll_dryrun, which prints what a reset would destroy and keep and touches nothing. Plusidavoll_status,idavoll_locations,idavoll_reset,idavoll_pending,idavoll_forget,idavoll_reloadandidavoll_abort.- A refusal ceiling. If a reset would destroy more than
maxObjectsPerResetobjects it stops and says so, rather than proceeding.
Notes
- Resetting is opt in. Burial chambers, sunken crypts, mountain caves, troll caves and Fuling villages, and nothing else. Valheim counts around fourteen thousand locations in a world and nearly all of it is scenery, so the catch-all rule ships disabled and a location with no rule never resets.
- Settings live in a JSON file the server owns and pushes to admin clients.
- On a dedicated server the clear-out is immediate but the rebuild waits until a player is next
near that zone, because that is when the server builds the zone at all. In between the dungeon
is empty and
idavoll_pendingreports it aswaiting. This is deliberate. - Take a world backup before the first reset, and use
idavoll_dryrunbefore trusting one.