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