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

5.8 KiB

title, type, weight
title type weight
Spawning Mondial docs 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:

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

# 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

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:

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

Spawning Base sur l'Environnement

EnvironmentSpawnParameters

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

Filtrage par Type de Lumiere

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:

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

Gestion Niveau Chunk

ChunkSpawnData

Suit l'etat de spawn par chunk:

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

ChunkSpawnedNPCData

Enregistre quels NPCs ont ete spawnes dans un chunk:

// Suit les entites spawnees pour nettoyage et respawn

ChunkEnvironmentSpawnData

Donnees de spawn specifiques a l'environnement par chunk:

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

Systeme de Jobs de Spawn

SpawnJob

Classe de base pour operations de spawn:

public class SpawnJob {
    // Operation de spawn asynchrone
}

Composant SpawnJobData

Suit les jobs de spawn actifs:

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

WorldSpawnJobSystems

Traite les jobs de spawn:

// 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:

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:

// 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:

// 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:

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

RandomChunkColumnIterator

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

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

ChunkColumnMask

Masque des zones specifiques dans un chunk:

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

Utilisation de l'API

Verifier l'Etat de Spawn Mondial

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

Obtenir un Wrapper de Spawn

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

Statistiques de Spawn

Suivre les metriques de spawn avec WorldNPCSpawnStat:

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