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 |
0–1 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 |
0–1 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
- Right-click the spawner → Admin → Mark.
- Confirm with
markedin the console (shows the entity uid). - Write the full
SpawnDatalist 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;1means 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.