Custom Spawners

Sol includes CustomSpawnerComponent (under the _Starlight namespace in code). Custom spawners are powerful — and most mapping work goes through View Variables (vvwrite) or direct map YAML edits.

Defaults below are shown C#-style (= value). YAML field names sometimes differ (noted inline).

CustomSpawnerComponent fields

Field Purpose
Enabled (bool, default true) When false, hologram/pad go grey and spawning stops.
MaxTriggers (int, default -1) Max triggers before the spawner dies. -1 = infinite.
strategy / SpawnStrategy All (everything at once), Sequential (one entry per trigger), Random (weighted pick).
SpawnOnInterval Periodic auto-trigger.
SpawnInterval Interval when interval spawning is on.
OneShot Disable after first successful trigger.
TriggerProb 01 chance a trigger attempt succeeds.
GlobalSpawnOffset / GlobalSpawnRotation Applied to every spawn (rotation in degrees).
HologramSprite / HologramProtoSprite / UseProtoSprite Override hologram look.
HologramVisible Show hologram.
HologramColor1 / HologramColor2 Shader colours.
HologramOffset Hologram offset.
LightVisible Point light on/off.
SpawnData List of CustomSpawnData entries.

CustomSpawnData fields

Field Purpose
protoId / entity id Required. Prototype to spawn.
Overrides Optional component override sets (one picked at random if several). Complex type:ClassName overrides usually need YAML editing, not VV.
SpawnOffsets / SpawnRotations Candidate offsets/rotations (random pick if multiple).
UseOffsetRange / UseRotationRange Use min/max ranges instead of discrete lists.
OffsetRangeMin / OffsetRangeMax Offset range.
RotationRangeMin / RotationRangeMax Rotation range.
SpawnProb 01 chance this entry actually spawns.
MaxSpawns Per-entry spawn cap (-1 infinite).
RepeatCount Repeat this entry n times per trigger.
RepeatSameOffsets / RepeatSameRotations / RepeatSameOverrides Reuse first random pick across repeats.
weight / PickWeight Weight for Random strategy.

Editing with View Variables

  1. Right-click the spawner → Admin → Mark.
  2. Confirm with marked in the console (shows the entity uid).
  3. Write the full SpawnData list in one go — VV cannot easily append piecemeal.

Example — set spawn entries:

marked vv:write "CustomSpawner/SpawnData" "[{protoId: MobHuman}, {protoId: MobHuman}]"
  • Wrap each entry in { }, the list in [ ].
  • Escape inner quotes as \" inside the VV string.

Edit one entry:

marked vv:write "CustomSpawner/SpawnData[0]/PropertyName ...

VV quirks

  • Bools: True / False (capitalized) in VV, even though YAML uses lowercase.
  • Vector2: quoted, e.g. globalOffset: \"4, 8\".
  • TimeSpan: quoted; 1 means one second.
  • Lists: wrap in [ ].
  • Colours: American Color, hex in quotes — e.g. hologramColor1: \"FF0000\".

Editing the map .yml directly avoids most VV limitations — treat it like any other component block.