Files
Documentation/content/world/entities/spawning/world-spawning.fr.md
2026-01-20 20:33:59 +01:00

261 lines
5.8 KiB
Markdown

---
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
```