--- title: Hytale Generator type: docs weight: 7 --- Le Hytale Generator est le générateur de monde procédural par défaut qui crée le terrain, les structures et les caractéristiques de Hytale. **Package:** `com.hypixel.hytale.builtin.hytalegenerator` ## Vue d'Ensemble Le Hytale Generator combine plusieurs systèmes : ``` Hytale Generator ├── Fonctions de Densité (forme du terrain) ├── Material Providers (sélection de blocs) ├── Placement de Props (végétation/objets) ├── Génération de Grottes ├── Placement de Structures └── Caractéristiques spécifiques aux biomes ``` ## Structure du Générateur ```java public class HytaleGenerator implements WorldGenerator { private DensityFunctionRegistry densityFunctions; private MaterialProviderRegistry materialProviders; private PropPlacementRegistry propPlacement; private CaveGenerator caveGenerator; private StructureGenerator structureGenerator; @Override public void generate(GenerationContainer container, int chunkX, int chunkZ) { // 1. Générer le terrain de base generateTerrain(container, chunkX, chunkZ); // 2. Creuser les grottes caveGenerator.generate(container, chunkX, chunkZ); // 3. Placer les structures structureGenerator.generate(container, chunkX, chunkZ); // 4. Placer les props propPlacement.generate(container, chunkX, chunkZ); // 5. Finaliser finalize(container); } } ``` ## Configuration d'Assets Les assets du générateur définissent les paramètres de génération : ```yaml # hytalegenerator/world_generator.yaml Type: HytaleGenerator Id: default_generator Seed: 0 # 0 = aléatoire TerrainDensity: Function: terrain_combined Scale: 1.0 Materials: Provider: biome_materials Caves: Enabled: true Frequency: 0.5 Structures: Enabled: true Spacing: 32 Props: Density: 1.0 ``` ## Composants du Framework Le framework du générateur fournit des utilitaires de base : ```java // Contexte de génération public class GenerationContext { private long seed; private int chunkX, chunkZ; private Biome biome; private Random random; public float noise2D(float x, float z, float scale); public float noise3D(float x, float y, float z, float scale); } // Phase de génération public enum GenerationPhase { TERRAIN, CARVING, STRUCTURES, DECORATION, FINALIZATION } ``` ## Structures de Données Structures de données spécialisées pour la génération : ```java // Stockage de carte de hauteur public class HeightMap2D { private float[] data; private int width, height; public float get(int x, int z); public void set(int x, int z, float value); } // Stockage de densité 3D public class DensityField3D { private float[] data; private int sizeX, sizeY, sizeZ; public float get(int x, int y, int z); public float sample(float x, float y, float z); // Interpolé } ``` ## Intégration Nouveau Système Le générateur intègre les systèmes plus récents : ```java public class NewSystemIntegration { // Enregistrer une fonction de densité personnalisée public void registerDensityFunction(String id, DensityFunction function); // Enregistrer un material provider personnalisé public void registerMaterialProvider(String id, MaterialProvider provider); // Enregistrer un placeur de props personnalisé public void registerPropPlacer(String id, PropPlacer placer); } ``` ## Sous-packages | Package | Fichiers | Description | |---------|----------|-------------| | `assets/` | 232 | Définitions d'assets pour la génération | | `density/` | 76 | Implémentations de fonctions de densité | | `newsystem/` | 29 | Nouveau système de génération | | `materialproviders/` | 29 | Sélection de matériaux | | `framework/` | 29 | Framework de base | | `props/` | 24 | Placement de props | | `datastructures/` | 16 | Structures de données | | `positionproviders/` | 14 | Calcul de positions | | `patterns/` | 13 | Patterns de génération | | `fields/` | 8 | Génération par champs | ## Générateur Personnalisé Créer un générateur personnalisé : ```java public class MyGenerator extends HytaleGenerator { @Override protected void generateTerrain(GenerationContainer container, int chunkX, int chunkZ) { // Génération de terrain personnalisée for (int x = 0; x < 16; x++) { for (int z = 0; z < 16; z++) { int worldX = chunkX * 16 + x; int worldZ = chunkZ * 16 + z; float density = getCustomDensity(worldX, worldZ); int height = (int) (density * 64) + 64; fillColumn(container, x, z, height); } } } } ``` ## Configuration ```yaml # hytalegenerator/config.yaml HytaleGenerator: WorldType: normal SeaLevel: 64 TerrainAmplitude: 1.0 CaveFrequency: 0.5 StructureSpacing: 32 BiomeScale: 256 Features: Caves: true Structures: true Props: true Ores: true ``` ## Bonnes Pratiques {{< callout type="info" >}} **Directives du Générateur :** - Étendez HytaleGenerator pour des mondes personnalisés - Utilisez le système d'assets pour la configuration - Enregistrez les composants personnalisés dans la phase setup - Testez la génération avec différentes seeds - Profilez les performances des fonctions personnalisées {{< /callout >}}