--- title: Spawning type: docs weight: 6 --- The spawning system provides comprehensive NPC spawn management through markers, beacons, world spawning, and suppression mechanics. **Package:** `com.hypixel.hytale.server.spawning` ## Architecture ``` SpawningPlugin ├── Managers │ ├── WorldSpawnManager - World-level NPC spawning │ ├── BeaconSpawnManager - Beacon-based spawning │ └── SpawnManager - Base spawn manager ├── Assets │ ├── SpawnMarker - Marker spawn definitions │ ├── SpawnSuppression - Suppression zones │ ├── WorldNPCSpawn - World spawn configs │ └── BeaconNPCSpawn - Beacon spawn configs ├── Components │ ├── SpawnMarkerEntity - Marker entity data │ ├── SpawnSuppressionComponent - Entity suppression │ ├── LocalSpawnController - Player-local spawning │ ├── WorldSpawnData - World spawn state │ └── ChunkSpawnData - Chunk spawn state ├── Controllers │ ├── SpawnController - Base controller │ ├── BeaconSpawnController - Beacon controller │ └── LocalSpawnController - Local controller ├── Systems │ ├── WorldSpawningSystem - World spawn logic │ ├── SpawnMarkerSystems - Marker processing │ ├── SpawnBeaconSystems - Beacon processing │ └── SpawnSuppressionSystems - Suppression logic ├── Interactions │ └── TriggerSpawnMarkersInteraction └── Commands └── SpawnCommand (enable, disable, beacons, markers, populate, stats, suppression) ``` ## Spawn Types ### Spawn Markers Static spawn points that spawn NPCs with configurable respawn timing: ```java SpawnMarker marker = SpawnMarker.getAssetMap().getAsset("village_guard"); IWeightedMap npcs = marker.getWeightedConfigurations(); ``` **Asset Location:** `NPC/Spawn/Markers/` ### Spawn Beacons Dynamic spawn points associated with entities that trigger spawning in a radius: ```java BeaconSpawnManager manager = SpawningPlugin.get().getBeaconSpawnManager(); List beacons = manager.getBeaconSpawns(environmentId); ``` **Asset Location:** `NPC/Spawn/Beacons/` ### World Spawning Ambient NPC spawning based on environment and biome: ```java WorldSpawnManager manager = SpawningPlugin.get().getWorldSpawnManager(); ``` **Asset Location:** `NPC/Spawn/World/` ### Spawn Suppression Zones that prevent NPC spawning within a radius: ```java SpawnSuppression suppression = SpawnSuppression.getAssetMap().getAsset("safe_zone"); double radius = suppression.getRadius(); int[] suppressedGroups = suppression.getSuppressedGroupIds(); ``` **Asset Location:** `NPC/Spawn/Suppression/` ## Commands | Command | Description | |---------|-------------| | `/spawning enable [world]` | Enable NPC spawning in world | | `/spawning disable [world]` | Disable NPC spawning in world | | `/spawning beacons` | Beacon spawn management | | `/spawning markers` | Spawn marker management | | `/spawning populate` | Force spawn population | | `/spawning stats` | View spawning statistics | | `/spawning suppression` | Suppression zone management | **Alias:** `/sp` ## Section Contents {{< cards >}} {{< card link="world-spawning" title="World Spawning" subtitle="Environment-based NPC spawning" icon="globe" >}} {{< card link="spawn-suppression" title="Spawn Suppression" subtitle="Prevent spawns in areas" icon="shield-exclamation" >}} {{< card link="local-spawning" title="Local Spawning" subtitle="Player-proximity spawning" icon="user" >}} {{< card link="spawner-assets" title="Spawner Assets" subtitle="Markers and beacons configuration" icon="document-text" >}} {{< /cards >}}