---
title: Spawning Mondial
type: docs
weight: 1
---

Le spawning mondial gere le spawn ambiant de NPCs base sur l'environnement, le biome et les conditions de chunk.

**Package:** `com.hypixel.hytale.server.spawning.world`

## Architecture

```
Spawning Mondial
├── Manager
│   └── WorldSpawnManager - Coordination centrale du spawn
├── Composants
│   ├── WorldSpawnData - Etat spawn niveau monde
│   ├── ChunkSpawnData - Suivi spawn par chunk
│   ├── ChunkSpawnedNPCData - Enregistrements NPCs spawnes
│   └── SpawnJobData - Jobs de spawn actifs
├── Systemes
│   ├── WorldSpawningSystem - Logique principale de spawn
│   ├── WorldSpawnTrackingSystem - Suivi entites spawnees
│   ├── WorldSpawnJobSystems - Traitement des jobs
│   ├── ChunkSpawningSystems - Spawning niveau chunk
│   └── MoonPhaseChangeEventSystem - Modificateurs lunaires
└── Config
    ├── WorldNPCSpawn - Definitions de spawn
    ├── NPCSpawn - Config spawn de base
    └── RoleSpawnParameters - Params specifiques role
```

## WorldSpawnManager

Manager central pour le spawning NPC niveau monde:

```java
WorldSpawnManager manager = SpawningPlugin.get().getWorldSpawnManager();
```

Le manager coordonne le spawning a travers les chunks base sur:
- Type d'environnement
- Conditions de biome
- Niveaux de lumiere
- Phase lunaire
- Proximite des joueurs

## Configuration Spawn Mondial

### Asset WorldNPCSpawn

```yaml
# NPC/Spawn/World/forest_creatures.json
{
  "Id": "forest_creatures",
  "NPCRole": "deer",
  "SpawnWeight": 10,
  "MinGroupSize": 1,
  "MaxGroupSize": 3,
  "Environments": ["forest", "plains"],
  "LightType": "Day",
  "MinLightLevel": 8,
  "MaxLightLevel": 15
}
```

### Configuration de Base NPCSpawn

```java
public class NPCSpawn {
    protected String npcRole;          // Role NPC a spawner
    protected int spawnWeight;         // Poids de probabilite
    protected int minGroupSize;        // Taille groupe minimum
    protected int maxGroupSize;        // Taille groupe maximum
}
```

### RoleSpawnParameters

Parametres de spawn par role:

```java
public class RoleSpawnParameters {
    // Configuration spawn specifique au role
    // Definit contraintes et comportements par type NPC
}
```

## Spawning Base sur l'Environnement

### EnvironmentSpawnParameters

```java
EnvironmentSpawnParameters params = new EnvironmentSpawnParameters();
// Parametres specifiques au type d'environnement
```

### Filtrage par Type de Lumiere

```java
public enum LightType {
    Any,        // Spawn a tout niveau de lumiere
    Day,        // Spawn uniquement le jour
    Night       // Spawn uniquement la nuit
}
```

Utilise avec `LightRangePredicate` pour filtrer les positions de spawn:

```java
LightRangePredicate predicate = new LightRangePredicate(minLight, maxLight, lightType);
boolean canSpawn = predicate.test(world, position);
```

## Gestion Niveau Chunk

### ChunkSpawnData

Suit l'etat de spawn par chunk:

```java
ComponentType<ChunkStore, ChunkSpawnData> type =
    SpawningPlugin.get().getChunkSpawnDataComponentType();
ChunkSpawnData data = chunkStore.getComponent(chunkRef, type);
```

### ChunkSpawnedNPCData

Enregistre quels NPCs ont ete spawnes dans un chunk:

```java
// Suit les entites spawnees pour nettoyage et respawn
```

### ChunkEnvironmentSpawnData

Donnees de spawn specifiques a l'environnement par chunk:

```java
// Met en cache les conditions d'environnement pour decisions de spawn
```

## Systeme de Jobs de Spawn

### SpawnJob

Classe de base pour operations de spawn:

```java
public class SpawnJob {
    // Operation de spawn asynchrone
}
```

### Composant SpawnJobData

Suit les jobs de spawn actifs:

```java
SpawnJobData jobData = store.getComponent(worldRef, SpawnJobData.getComponentType());
```

### WorldSpawnJobSystems

Traite les jobs de spawn:

```java
// Systeme qui execute les jobs de spawn en attente
// Gere la validation des positions de spawn
// Cree les NPCs quand conditions remplies
```

## Systemes de Spawn Mondial

### WorldSpawningSystem

Systeme principal pour la logique de spawn mondial:

```java
getEntityStoreRegistry().registerSystem(new WorldSpawningSystem());
```

Ce systeme:
1. Verifie les conditions de spawn par chunk
2. Selectionne les types NPC appropries
3. Valide les positions de spawn
4. Cree les jobs de spawn

### WorldSpawnTrackingSystem

Suit les entites spawnees pour gestion:

```java
// Surveille les NPCs spawnes
// Gere le despawn quand conditions changent
// Met a jour les compteurs de spawn
```

### MoonPhaseChangeEventSystem

Ajuste le spawning selon la phase lunaire:

```java
// Modifie les taux de spawn pendant differentes phases
// Active spawns nocturnes speciaux pendant pleine lune
```

## Selection de Position

### FloodFillPositionSelector

Trouve les positions de spawn valides via flood fill:

```java
FloodFillPositionSelector selector = new FloodFillPositionSelector();
// Recherche des emplacements de spawn adequats
```

### RandomChunkColumnIterator

Itere a travers des positions aleatoires dans une colonne de chunk:

```java
RandomChunkColumnIterator iterator = new RandomChunkColumnIterator();
// Fournit positions aleatoires pour tentatives de spawn
```

### ChunkColumnMask

Masque des zones specifiques dans un chunk:

```java
ChunkColumnMask mask = new ChunkColumnMask();
// Exclut certaines positions du spawning
```

## Utilisation de l'API

### Verifier l'Etat de Spawn Mondial

```java
WorldSpawnData worldData = store.getComponent(worldRef, WorldSpawnData.getComponentType());
```

### Obtenir un Wrapper de Spawn

```java
WorldSpawnWrapper wrapper = manager.getSpawnWrapper(spawnIndex);
WorldNPCSpawn spawn = wrapper.getSpawn();
```

## Statistiques de Spawn

Suivre les metriques de spawn avec `WorldNPCSpawnStat`:

```java
// Enregistre tentatives, succes et echecs de spawn
// Utilise par la commande /spawning stats
```
