Init
This commit is contained in:
260
content/world/entities/spawning/world-spawning.fr.md
Normal file
260
content/world/entities/spawning/world-spawning.fr.md
Normal file
@@ -0,0 +1,260 @@
|
||||
---
|
||||
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
|
||||
```
|
||||
Reference in New Issue
Block a user