DropNSpawn
Configure object and creature drops, object loot, spawners, and world spawning. Add stacked drops, level-scaled trophies, VNEI support, and location-scoped spawner rules.
Domains
| Domain | What it controls |
|---|---|
character |
CharacterDrop loot, one-per-player drop counting, and drop-in-stack |
object |
Containers, pickables, pickable items, fish, destructibles, mine rocks, trees, and object drop tables |
spawner |
SpawnArea and CreatureSpawner tables, intervals, caps, level ranges, and location-scoped spawner rules |
spawnsystem |
World SpawnSystem rows, biome rules, time-of-day rules, global-key gates, and extended spawn data |
spawnsystem is a full replacement domain: the loaded rows become the live world spawn table. Keep every spawn row you still want.
Location
DropNSpawn no longer owns a user-editable DNS_location.yml domain. Boss altar, altar ItemStand, same-boss duplicate blocking, boss despawn, and boss-tamed pressure rules live in the standalone BossRules mod. DropNSpawn keeps internal location lookup helpers for object and spawner locations: selectors.
RuneStone global pins and Vegvisir rewards live in the standalone UsefulRunestones mod.
Character

- configure creature loot
- merge multiple conditional loot rows for the same creature
- VNEI-compatible character drop display
- drop creature loot in one stack when configured
onePerPlayercan count nearby living players within the configured range
Object

- chest loot replacement
- tool-tier and health changes for trees and rocks
- tree or rock drop changes
- pickable loot changes (bone piles, fish, berries)
- destructible health and spawn-on-destroy changes
DNS_object.locations.reference.ymlexists because many objects are dependent on locations
Spawner

- change spawn tables
- change spawn intervals, trigger distance, caps, level range, respawn time
- apply location-scoped spawner overrides with top-level
locations - ExpandWorldData compatible
DNS_spawner.locations.reference.ymlexists because many spawners are dependent on locations
SpawnSystem
The vertical lines in the spawner image are world SpawnSystem checks.
- biome/world spawn rules
- global-key-gated spawning
- time-of-day spawn rules
- world-level conditional behavior
- ExpandWorldData compatible
- SpawnSystem rows and event spawns use the same flat
spawnSystemblock; nested spawnconditionsandmodifiersblocks are not supported. - This domain is authoritative and replaces the live
SpawnSystemtable with the rows you define.
- Above image explains how Valheim world spawning works.
Workflow
- Open
BepInEx/config/DropNSpawn/. - Use the generated
.reference.ymlfiles to find real prefab names and current values. - Copy only the rows you want to change into
DNS_<domain>.ymlorDNS_<domain>_*.yml. - Save the YAML file. DropNSpawn reloads loaded YAML at runtime.
Generated samples live in BepInEx/config/DropNSpawn/examples/. They are safe examples until you copy them into an active override file or rename them to a loaded DNS_<domain>_*.yml file.
YAML Files
Loaded override files:
DNS_<domain>.ymlDNS_<domain>.yamlDNS_<domain>_*.ymlDNS_<domain>_*.yaml
Generated helper files:
DNS_<domain>.reference.ymlshows current game data and prefab names.DNS_object.locations.reference.ymlshows which location roots contain object prefabs.DNS_spawner.locations.reference.ymlshows location context for spawner rules.DNS_<domain>.full.ymlis an exhaustive scaffold written bydns:full; it is not loaded.
Use one primary file per domain when possible. Supplemental files are useful for splitting large configs by biome, progression tier, or feature.
Reference Updates
Reference files are generated lookup snapshots. Missing reference files are created automatically, and existing reference files are updated automatically when their source game data changes.
Notes:
DNS_spawnsystem.reference.ymlis generated from vanilla and upstream mod SpawnSystem data.DNS_spawnsystem.ymlfull overrides are not used as reference source data.DNS_object.locations.reference.ymlandDNS_spawner.locations.reference.ymlare generated lookup files and are also kept up to date automatically.
Console Commands
dns:reference [object|character|spawner|spawnsystem|all]Regenerates reference files.dns:full [object|character|spawner|spawnsystem|all]Writes non-loaded full scaffold files.dns:inspect spawnerShows the current or nearest spawner target and resolved location selector context.
Useful Config
Most server-facing settings are synced from the server.
Domain toggles live under 4 - Domains:
Enable Object OverridesEnable Character OverridesEnable Spawner OverridesEnable SpawnSystem OverridesEnable Event Overrides
General and character settings include:
Lock ConfigurationDefault SpawnArea Max Total SpawnsDefault zero CreatureSpawner respawn time minutesOnePerPlayer drop check rangecharacter loot systemdisable DNS character loot scaling when CLLC is loadedchance for additional loot per star for creatureschance for additional loot per star for bossesglobal drop in stackglobal drop in stack blacklistglobal trophy level multiplierglobal trophy level multiplier blacklist
character loot system = CalculateChance keeps each successful non-trophy character-drop chance intact and scales its final item amount by the configured per-star chance only when that drop's levelMultiplier is true. Trophy drops use that linear scaling whenever global trophy level multiplier is on, regardless of their levelMultiplier value.
disable DNS character loot scaling when CLLC is loaded defaults to On. It does not rewrite the config values shown for DNS loot scaling; when Creature Level & Loot Control is installed, DNS treats character loot system, both per-star loot chance options, and global trophy level multiplier as inactive at runtime so CLLC can own loot quantities. YAML overrides, drop-in-stack, instant loot, and OnePerPlayer range still work.
Default zero CreatureSpawner respawn time minutes defaults to 0 and accepts 0~60; 0 disables the option. It changes only CreatureSpawner components whose current respawnTimeMinutes is 0; YAML creatureSpawner.respawnTimeMinutes values keep priority.
Event settings include:
Event scheduling modeDefault event player baseMinimum distance between eventsEvent duration multiplierRandom event chanceRandom event interval
Event scheduling mode supports Vanilla (one active event and one server-wide check), MultipleGlobal (multiple active events and one server-wide check), and MultiplePerPlayer (multiple active events with one independent check per player). Standalone event checks follow the selected global or per-player mode.
Event duration multiplier accepts 0~3. Positive values scale event durations that are not explicitly set by YAML settings[2]; 0.5 halves them, 1 keeps them unchanged, and 2 doubles them. 0 disables every event whose effective duration after YAML is positive, while duration-0 events remain enabled.
Default event player base can globally treat events without YAML conditions.playerBase as Off, Away, Near, or AwayAndNear. YAML event overrides keep priority.
Boss altar rules, same boss duplicate blocking for altars and CreatureSpawner, per-player boss stones, remote Forsaken Power selection, boss despawn, and boss tamed pressure live in BossRules.
Compatibility
If another mod fully owns the same system, disable the overlapping DropNSpawn domain instead of stacking both.
VNEI: DropNSpawn character drops are exposed for normal lookup.MonsterDB: overlaps withcharacterandspawnsystem.Drop That!: overlaps withobjectandcharacter.Spawn That!: overlaps withspawnerandspawnsystem.Expand World Spawns: overlaps withspawnsystem.
Helpful Mods
ESPfor spawners, spawn points, and object infoXRayVisionfor object componentsInfinity Hammerfor placing and removing test objects