---
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<W, S> - 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<SpawnConfiguration> 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<BeaconSpawnWrapper> 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 >}}
