
DropNSpawn
Easy way to configure all drops, spawns and events(raid) by reference system. Prevent high tier mobs spawning on low tier biomes. Make dungeon creaturespawners respawn. Multiple trophies and stacked drop instantly from creatures with linear scaling.DropNSpawn
Customize Valheim's drops, loot, spawners, world spawning, and raids with YAML. Use generated references to find prefab names and values, then edit only what you need.
| Character drops | Object loot | Spawners |
|---|---|---|
![]() |
![]() |
![]() |

What you can change
| Domain | Controls |
|---|---|
character |
Creature drops, quantities, chances, level scaling, and stacked loot |
object |
Chests, pickables, fish, trees, rocks, destructibles, and their loot |
spawner |
SpawnArea and CreatureSpawner tables, intervals, limits, levels, and location rules |
spawnsystem |
World spawn tables, biomes, time of day, and progression requirements |
events |
Raid definitions, spawn lists, conditions, and scheduling |
Install
Install the same DropNSpawn version and its dependencies on the server and all clients. A mod manager is the simplest option; for manual installation, place DropNSpawn.dll in BepInEx/plugins/.
Requires BepInExPack Valheim 5.4.2351. Expand World Data is optional: DNS's basic drops, spawners, world spawning, raids, and native faction overrides work without it. Install EWD 1.71 or newer on the server and clients to use spawn data/fields/objects, event startCommands/endCommands, or EWD custom biomes. Without EWD, nonempty extension settings reject the affected domain's configuration update and retain its previous accepted configuration; they are not silently ignored. Empty extension fields are allowed.
Character-drop handling has been updated for Valheim 1.0.20. See the earlier compatibility notes for reviewed EWD builds and existing-YAML update notes. Restart after changing the installed mod set; mixed EWD capability between peers is not supported for EWD-dependent configurations.
Quick start
- Start the game or server and load a world once to generate the configuration files.
- Open
BepInEx/config/DropNSpawn/and find the relevantDNS_<domain>.reference.yml. - Copy the entries you want to customize into
DNS_<domain>.yml, or a supplemental file such asDNS_character_wolves.yml. - Save. Loaded YAML files reload at runtime; on a multiplayer server, edit the server's files.
For example, put this in DNS_character.yml to replace Lox loot:
- prefab: Lox
characterDrop:
drops:
- item: LoxMeat
amount: 4~6
- item: LoxPelt
amount: 2~3
- item: TrophyLox
chance: 0.1
levelMultiplier: false
Global options live in BepInEx/config/sighsorry.DropNSpawn.cfg. All five domains start enabled; toggle them under 4 - Domains. Loot scaling, stacked drops, trophy scaling, and event scheduling have their own settings; most server-facing settings sync from the server.
Character drops support levelMultiplierNotAmount (default false). With both levelMultiplier: true and levelMultiplierNotAmount: true, stars increase the drop chance without multiplying its amount. DNS preserves this game policy, including original prefab drops. If multiple rows share that drop prefab, DNS leaves their star scaling to the game as a group, because generated results do not identify which row succeeded. This exception also applies to global trophy scaling and custom stacked/limited drops; other drop prefabs keep their configured DNS scaling. Update the server and all clients together when using this build.
Under 2 - Character, monster instant loot drop blacklist defaults to Dragon, Hatchling. These creature prefabs keep normal ragdoll loot timing even when instant loot is enabled. Use comma-separated names, or leave it empty for no exclusions; changes affect new ragdolls.
With EpicLoot, ordinary CharacterDrop loot can still drop instantly, but EpicLoot's additional rewards (including LuckyLoot bonus rolls) stay at normal ragdoll cleanup time. This avoids rolling those rewards twice. If DNS cannot verify/install the optional EpicLoot guard, instant loot falls back to normal timing without changing your settings. EpicLoot reward amounts and its saved ragdoll data are not changed.
Know before editing
- SpawnSystem replaces the main world spawn table. Keep every row you still want across your loaded SpawnSystem files. Unlike the other domains, it is not a set of small patches to existing rows. Valheim's separate AltBiome lists remain native.
- Custom drop lists replace native loot, not add to it. Matching Character rules merge their custom drops. Put
conditionsat the entry level, not on individual drop items. Omitted ornulldrops leave existing loot unchanged;drops: []explicitly contributes an empty replacement. - Spawner rules select one winner. The most specific passing selector wins; later-loaded entries break ties. Use top-level
locationsto scope a rule to a location. - CreatureSpawner cumulative limits are optional. Use
creatureSpawner.maxTotalSpawnsorDefault CreatureSpawner Max Total Spawnsin the config.0adds no limit and preserves one-time behavior; a positive limit counts successful spawns while enabled and stops the spawner without destroying it. See the spawner guide. - Generated files are lookup material. Do not edit
.reference.ymlor.full.ymlto change gameplay. Generated.sample.ymlfiles inexamples/are inactive until copied or renamed to a loaded override filename.
Both .yml and .yaml are supported. Loaded names are DNS_<domain> and DNS_<domain>_*, with either extension. Use events for raids, for example DNS_events.yml.
DNS_dungeon.yml separately adds periodic ordinary dungeon spawns with per-player probability rolls and shared per-rule/per-dungeon living limits. New files include English instructions and a commented example above the empty active list. Creature entries use prefab; old creature keys must be changed manually. Rules are server-owned; server and clients need the updated DNS build for safe placement checks. The optional CreatureManager 1.2.5 integration honors its boss/Enforcer spawn blockers. See the dungeon spawn guide for the inactive sample, schema and multiplayer behavior.
For dungeon spawn troubleshooting, temporarily set 5 - Diagnostics → Dungeon spawn diagnostics = On in the server's and reproducing clients' local cfg. It defaults to Off, is not synchronized, and logs bounded [DungeonDiag] summaries every 30 seconds without changing spawn conditions. See the diagnostic instructions.
Scale spawn intervals per file
Place this optional header before all prefab entries in a SpawnSystem override file:
- spawnIntervalMultiplier: 2.0
- prefab: Deer
spawnSystem:
spawnInterval: 36
This sets an effective interval of 72 seconds. 0.5 halves intervals; 2.0 doubles them. The multiplier must be finite and greater than zero, defaults to 1.0, and affects only that file—not event spawns. Decimal intervals are preserved. Keep the other world spawn rows you want; this is only a header example.
World-spawn timers use internal content-based IDs: no name or timerId is required, and different rules for the same prefab remain independent. Reordering rows or moving them between files preserves timers when their parsed settings stay the same. New or edited rules use vanilla first-check timing, without an extra full-interval wait; existing saved timers keep their progress. DNS stores these timers together and removes retired records as zones are processed. Old timers are not migrated or deleted, so existing save warnings may remain. Event and AltBiome timers are unchanged; update DNS on both the server and all clients.
References and commands
Reference files are generated automatically and refreshed when source data changes. Object and Spawner also provide .locations.reference.yml files for location lookup.
| Console command | Purpose |
|---|---|
dns:reference [object|character|spawner|spawnsystem|events|all] |
Regenerate reference files |
dns:full [object|character|spawner|spawnsystem|all] |
Write exhaustive, non-loaded .full.yml scaffolds |
dns:inspect spawner |
Inspect the current or nearest spawner and its location context |
Events use DNS_events.reference.yml instead of a separate full scaffold.
Using More World Locations AIO? Automatic Object/Spawner references skip MWL location interiors to avoid loading every bundle. Registered prefabs and override rules remain usable, and partial exports are labeled. If the MWL manifest is unavailable, automatic interior scanning is deferred for all locations.
Manual dns:reference object, dns:reference spawner, and dns:full spawner can load all location interiors, take minutes, and use substantial memory. Avoid these full exports on low-memory clients.
Compatibility
- Expand World Data 1.73: DNS manages normal world spawns, raids, and loot. EWD's corresponding Spawn/Event/Drop features are suppressed at runtime without changing its settings or YAML. World and AltBiome data remain EWD-owned, including AltBiome spawn
data,fields,objects, andfaction. DNS domain Off restores DNS's baseline; it does not enable EWD's overlapping features. Install matching builds on the server and clients and restart after changing the mod set. See the integration notes. - VNEI can display configured character drops. ESP is useful for inspecting spawns and objects.
- Creature Level & Loot Control: DNS's own character loot scaling is inactive by default when CLLC is installed. YAML overrides, stacked drops, instant loot, and OnePerPlayer range still work.
- If another mod owns the same system, disable the overlapping DNS domain: MonsterDB (
character,spawnsystem), Drop That! (object,character), Spawn That! (spawner,spawnsystem), or Expand World Spawns (spawnsystem). - Boss altar and boss-management features belong to BossRules; runestone pins and Vegvisir rewards belong to UsefulRunestones. DropNSpawn retains location lookup for Object and Spawner selectors.


