This is an advanced tool for configuring all world spawners.
With this, it is possible to change almost all of the default settings for the way spawners work in Valheim.
Want to have a world without trolls? Possible! (probably)
Want to have a world with ONLY trolls? Possible! (almost)
Want to have a world where greydwarves only spawn at night? Possible!
Just want to have more/less of a mob type? Simple modifiers exist!
- Change spawning rates of specific mobs
- Replace existing spawn configurations throughout the world
- Set almost any of the default parameters the game uses
- Add your own spawn configuration to the world
- Modify the localized spawners by mob type and location
- Dump existing game templates as files using the same format as the mod configs.
- Easy to copy-paste and change the parts you want.
- Investigate what the world throws at you.
- Server-side configs
- Modify the spawners in camps, villages and dungeons
- Conditions and settings specific to integrated mods:
Documentation can be found on the Spawn That github page.
Name = Angry Test Boars
PrefabName = Boar
Biomes = Meadows
Enabled = true
MaxSpawned = 30
SpawnInterval = 1
SpawnChance = 100
SpawnDuringDay = true
SpawnDuringNight = true
ConditionLocation = Runestone_Boars
ConditionDistanceToCenterMin = 500
ConditionAreaSpawnChance = 50
ConditionNearbyPlayerCarryLegendaryItem = HeimdallLegs
Enabled now toggles the actual spawner on/off. This can be used to both disable local spawners and world spawner entries.
TemplateEnabled added, which behaves like the old
Enabled by disabling the configuration entry itself.
Spawn That now supports configurations by code. Configurations are merged with configs from file. File configurations will be applied last, ensuring that users can still override the settings made by mods.
A nuget release has also been made available.
Configurations are applied once pr world entered, and synced from server-side.
API is more feature-rich than the config files though.
public class Plugin : BaseUnityPlugin
public void Awake()
// Register for configuration event.
SpawnThat.Spawners.SpawnerConfigurationManager.OnConfigure += MySpawnerConfigurations;
public void MySpawnerConfigurations(ISpawnerConfigurationCollection spawnerConfig)
// Add a new world spawner
// Modify an existing vanilla spawner
// Modify a local spawner
If you feel like it
- Fixed world spawner
ConditionWorldAgeDaysMax being set to
- Fixed world spawner
Max settings being set incorrectly.
- Fixed MobAILib settings spitting out errors when
SetAI was set, but not
- Disabled world spawner configs being applied server-side on dedicated servers. This should avoid a potential harmless but confusing warning.
SetTryDespawnOnConditionsInvalid to world spawner loaded configs debug file.
- Added internal tests for mapping of all types of spawner configs.
- Fixed default values getting assigned to empty settings (eg.,
SetFaction = ). Caused by last patch. Note to self, dont be lazy.
spawn_that.simple.cfg not being populated on file creation, when
InitializeWithCreatures=true was set in
spawn_that.cfg. Introduced in v1.1.0.
GroundOffset for world spawner file configs not being used. Introduced in v1.1.0.
- Added support for new SpawnArea spawner type (eg., greydwarf nests).
- Added custom config file reader. This should hopefully make things more intuitive and less volatile. It does however mean that comments are longer added automatically.
- Swapped file load and merge order, to make default files override supplemental, as was originally intended (eg.,
spawn_that.world_spawners_advanced.cfg gets loaded after
- Added datamining for locations, as an option in general config.
- Removed setting "StopTouchingMyConfigs" from general config, as it has become irrellevant.
- Fixed bug with attempting to load files as configs if they fit the expected name pattern, even though they didn't end with '.cfg'.
- Fixed bug where disabling world spawner with
Enabled disabled the config instead.
- Fixed potential error when adding a new world spawner without specifying a prefab name.
- A LOT of boring internal changes, logging and documentation that noone will probably ever see or care about.
- Fixed config sync for expanded enums. This should resolves an issue when using biomes from Expand World on servers.
- Fixed level calculcation used when using the CLLC integration setting UseDefaultLevels.
- Improved world spawner debug file output. Now tries to output not just the default settings, but the custom too. Including integrations.
- Fixed world spawner post change debug file not showing the configuration ID's, but instead the internal index they were added at.
- Fixed world spawner cfg load adding unnecessary option.
- Fixed faction, biome and cllc setting parsing being case-sensitive. Eg., setting biome as Blackforest would fail to parse as biome BlackForest.
- Added installation check for YamlDotNet dll, to ensure it is present.
- Fixed dungeon room names not being cleaned before registration, causing issues with local spawners matching.
- Fixed local spawner file-configs not being properly matched with spawners.
- Fixed error when printing world spawners with missing prefab to debug file.
- Fixed error when having file-configurations with integrations not installed.
- Added robustness to API when setting up configurations for uninstalled integrations.
- Added robustness for v0.207.15
- Fixed error spawn from world spawners, when joining a server with no world spawner configurations.
- Fixed broken config sync.
- WorldSpawner config
Enabled now toggles the actual spawn entry on/off.
- Added WorldSpawner option
TemplateEnabled to replace
- LocalSpawner config
Enabled now toggles the spawner itself on/off.
- Added LocalSpawner option
TemplateEnabled to replace
- Added API for using Spawn That by code.
- Debug files are now printed to BepInEx/Debug by default. Output folder is configurable.
- A ton of internal work and improvements.
- Moved documentation to https://asharppen.github.io/Valheim.SpawnThat/. Documentation will be updated here from now on.
- It's the season of bugs! World spawner templates are now instantiated on entering world, meaning changes applied are no longer carried between worlds / re-entering. This is hopefully getting changed by IG in the future.
- Fixed local spawners not honouring "Enabled=false". Configs were still attempted applied.
- Fixed leftover optimizations causing spawners to get disabled in biomes outside the one player logged into.
- More v0.205.5 fixes. World spawners were changed from no longer being per zone, but properly global, meaning Spawn That was reapplying its changes more than once.
- Fixes for Valheim v0.205.5
- Fixes for Valheim v0.202.14
- Fixed the setting SpawnInPlayerBase not being assigned to local spawners.
- Fixed issue with local spawners being disabled due to missing location info.
- Made local spawners less demanding of config application. Should revert to default spawn if Spawn That fails to apply its changes.
- Added region labelling for map biomes. Will now scan for connected biome zones, and assign an id for that whole area.
- Added condition for spawning only in specified areas. Intended as a world specific setting. For those who have been waiting, this is the option to use for designated monster islands.
- Added condition for spawning in an area, chance is pr area and only rolled once, to allow for variety in spawning across the world.
- Added console commands for areas.
- Added conditions for epic loot based items on nearby players.
- Added support for spawning non-ai entities. MaxSpawned and SpawnDistance should now work properly for any prefab. SpawnDistance should work for any distance now, be aware this may cause performance issues if set too high.
- Documentation moved to mod wiki.
- Fixed issue with world-spawner mobs not spawning in mountains.
- Optimized network package sizes.
- Added initial support for MobAILib.
- Added setting "SetTamed" for local- and world spawners.
- Added setting "SetTamedCommandable" for local- and world spawners.
- Added world spawner condition "" for nearby players having status effect.
- Fixed issue with too early access of location info. Should resolve issue with local spawners not spawning creatures.
- Added setting "UseDefaultLevels" to CLLC integraiton, to let Spawn That set levels.
- Added setting "SetRelentless".
- Added setting "SetTryDespawnOnConditionsInvalid".
- Added setting "SetTryDespawnOnAlert".
- Added setting "TemplateId", for assigning a specific identifier to mobs spawned by a template, for other mods to use (intended for future Drop That setting).
- Added condition "ConditionNearbyPlayersNoiseThreshold".
- Added more helpful warning- and error messages for when configurations are incorrectly set up.
- Changed StopTouchingMyConfigs to be set to true by default when spawn_that.cfg is created. Due to the massive loading time impact of large config files.
- Additional error handling for conditions. Should help fix potential errors coming out of the newly added player conditions.
- Added world spawner condition for nearby players carried items.
- Added world spawner condition for nearby players carried valuables.
- Added option for assigning faction for world- and local spawner entries.
- Added faction to pre-change debug files.
- Changed when configs are applied to spawners, for increased compatibility with mods adding prefabs.
- Additional error checks.
- Fixed simple config being generated with wrong prefab-names.
- Additional error handling.
- Changed location info from server to client slightly, to hopefully stop issues with local spawners.
- Added support for Creature Level and Loot Control (CLLC)
- Added CLLC creature effect options for world- and local spawners.
- Added CLLC world level condition to world spawners.
- Added world spawner condition - RequiredNotGlobalKey
- Added support for supplemental world- and local spawner config files.
- Local spawner configs now work in multiplayer.
- Added a (probably temporary) config to not run local spawner configs, due to issues with multiplayer.
- Fixed error message from local spawners.
- Removed a couple of pointless warnings.
- Added new local spawner defaults to file dumps.
- Added condition for world spawners. World age in days.
- Added console command for getting current room in which player is standing.
- Added configuration for Dungeons, Camps and Villages. All are considered local spawners.
- Lots of bug fixes. Spawners should have an easier time having configuration "stick" now.
- New condition for world spawners. Distance to center min/max.
- Simple config initialized with creatures on file creation by default.
- Various attempts at stabilizing and guarding code.
- Server-to-client config sync added