Créer des générateurs
Générateurs
Les générateurs sont la partie la plus puissante du système de configuration de BetterStructures. Par défaut, il existe 29 générateurs qui gèrent collectivement les constructions actuellement distribuées par BetterStructures et, même si vous pouvez créer vos propres générateurs, vous pouvez aussi utiliser ceux existants comme raccourci.
Les générateurs indiquent au plugin où exactement les choses doivent apparaître et définissent les tables de butin. Les générateurs par défaut sont en plus nommés de manière à ce qu'il soit très facile de deviner ce qu'ils font.
Options de configuration du générateur
| Clé | Par défaut | Obligatoire | Description |
|---|---|---|---|
isEnabled | true | ❌ | Si le générateur est activé. Le passer à false empêche également l'enregistrement de tous les schematics pointant vers ce générateur : c'est donc le moyen le plus rapide de désactiver tout un ensemble de structures. |
structureType | - | ✅ | Où les structures apparaissent (voir le tableau ci-dessous) |
lowestYLevel | -59 | ❌ | Niveau Y minimum pour l'apparition |
highestYLevel | 320 | ❌ | Niveau Y maximum pour l'apparition |
validWorlds | Tous autorisés | ❌ | Liste des mondes où les structures peuvent apparaître |
validWorldEnvironments | Tous autorisés | ❌ | NORMAL, NETHER, THE_END, CUSTOM |
validBiomesV2 | Tous les biomes | ❌ | Liste des biomes valides (format namespace:key) |
treasureFilename | - | ❌ | Fichier de trésor pour le butin des coffres |
generateLootInBarrels | true | ❌ | Si les tonneaux trouvés dans les schematics de ce générateur doivent être remplis de butin |
barrelTreasureFilename | treasure_barrel_food.yml | ❌ | Fichier de trésor utilisé pour remplir les tonneaux de ce générateur |
structureType
Définit le type de structure de la construction. Vous pouvez spécifier plusieurs types de structure pour un seul générateur !
| Type | Surface / Personnalisé | Nether | End | Description |
|---|---|---|---|---|
SURFACE | Surface | Points similaires à la surface | Surface | Apparaît à la surface du monde |
SKY | 80-120 blocs au-dessus du bloc le plus haut | Poche d'air trouvée entre Y 45 et Y 100 | 80-120 blocs au-dessus du bloc le plus haut | Apparaît dans le ciel (configurable dans config.yml) |
UNDERGROUND_SHALLOW | Y 0-50 | Y 60-120 | Y 0-80 | Structures souterraines peu profondes |
UNDERGROUND_DEEP | Y -53 à 0 | Y 5-60 | Y 0-80 | Structures souterraines profondes |
LIQUID_SURFACE | Eau (océans) | Océan de lave à Y 31 | Aucune vérification de liquide n'est appliquée | Apparaît sur les surfaces liquides |
DUNGEON | ✅ | ✅ | ✅ | Utilisé pour le placement de donjons modulaires |
Les plages du ciel sont des décalages appliqués au-dessus du bloc le plus haut du monde à cette colonne, et non des niveaux Y absolus.
Exemple de types de structure multiples
structureType:
- SURFACE
- UNDERGROUND_SHALLOW
Cela permet au même générateur de faire apparaître des structures à plusieurs endroits, par exemple à la fois en surface et dans les zones souterraines peu profondes.
Remarque : il existe deux paramètres souterrains car Minecraft dispose de beaucoup d'espace souterrain. Les avoir tous les deux assure une distribution uniforme à travers les profondeurs et empêche les joueurs de manquer des structures.
Plages de niveaux Y par dimension
Plages d'altitude par défaut par dimension (configurables dans config.yml) :
| Dimension | Plage par défaut | Paramètres de configuration |
|---|---|---|
| Surface/Personnalisé | Y=-60 à Y=320 | lowestYNormalCustom / highestYNormalCustom |
| Nether | Y=4 à Y=120 | lowestYNether / highestYNether |
| End | Y=0 à Y=320 | lowestYEnd / highestYEnd |
| Ciel (Surface/Personnalisé) | 80 à 120 blocs au-dessus du bloc le plus haut | normalCustomAirBuildingMinAltitude / normalCustomAirBuildingMaxAltitude |
| Ciel (End) | 80 à 120 blocs au-dessus du bloc le plus haut | endAirBuildMinAltitude / endAirBuildMaxAltitude |
Ces valeurs par défaut peuvent être remplacées générateur par générateur en utilisant lowestYLevel et highestYLevel.
Les deux lignes « Ciel » sont des décalages ajoutés par-dessus le bloc le plus haut de la colonne, et non des niveaux Y absolus. Les décalages du ciel, aussi bien pour l'Overworld/Personnalisé que pour l'End, sont tirés au hasard entre leur minimum et leur maximum à chaque placement.
Le Nether ignore totalement ces décalages : au lieu de construire au-dessus du bloc le plus haut, BetterStructures analyse la colonne entre Y 45 et Y 100 à la recherche d'une poche d'air d'au moins 20 blocs de haut et y place la structure. Si aucune poche de ce type n'existe, rien n'apparaît dans ce chunk.
Prise en charge des biomes personnalisés
BetterStructures prend automatiquement en charge les biomes personnalisés des générateurs de monde comme Terralith, Iris, Terra et TerraformGenerator.
Lorsque vous spécifiez un biome vanilla dans validBiomesV2, le plugin inclut automatiquement les biomes personnalisés compatibles :
validBiomesV2:
- minecraft:plains
- minecraft:forest
Cela fait apparaître des structures dans les biomes vanilla ET dans tous les biomes personnalisés associés à ces types (par ex. terralith:blooming_plains).
Où se trouvent réellement les correspondances
La table de correspondance entre biomes personnalisés et biomes vanilla n'est pas stockée dans BetterStructures. C'est une unique table codée en dur à l'intérieur de MagmaCore, la bibliothèque partagée intégrée à BetterStructures, et elle est partagée avec les autres plugins MagmaGuy qui en ont besoin.
Cela a deux conséquences pratiques :
- Les longues listes de biomes que vous voyez dans les fichiers
generator_surface_*.ymllivrés sont une sortie générée, et non la source de vérité. Au chargement, BetterStructures litvalidBiomesV2, recherche chaque entréeminecraft:dans la table de MagmaCore, ajoute tous les biomes personnalisés qui lui correspondent, puis réécrit directement la liste développée dans le fichier du générateur. Un générateur que vous avez écrit avec deux lignes peut donc en revenir avec une centaine. Modifier cette liste développée n'affecte que ce générateur-là, et toute entréeminecraft:que vous y laissez sera de nouveau développée au chargement suivant. - Ajouter la prise en charge d'un nouveau biome personnalisé pour tout le monde relève d'une modification de MagmaCore, pas d'une modification de configuration. Si un générateur de monde fournit un biome que BetterStructures ne reconnaît pas, l'ajouter au
validBiomesV2d'un générateur est un contournement local pour ce seul générateur. Le faire correspondre correctement implique de l'ajouter à la table de correspondance de MagmaCore, ce qui est une modification de code — ouvrez une demande plutôt que d'essayer de résoudre cela dans les fichiers yml.
Vous pouvez toujours nommer directement un biome personnalisé dans validBiomesV2 (tout ce qui contient déjà un : est pris tel quel et n'est pas développé davantage), ce qui est la bonne approche pour un générateur ponctuel qui ne doit apparaître que dans un biome personnalisé précis.
Les biomes que MagmaCore fait correspondre à nothing sont délibérément exclus — ce sont des biomes personnalisés jugés inadaptés aux structures, et aucun biome vanilla ne les fera intervenir.
treasureFilename
Définit le fichier de trésor pour le butin des coffres. Cela s'applique à toutes les constructions utilisant ce générateur, sauf si c'est remplacé dans la configuration du schematic.
generateLootInBarrels et barrelTreasureFilename
BetterStructures traite désormais les tonneaux comme un deuxième conteneur de butin, aux côtés des coffres.
generateLootInBarrels(par défauttrue) détermine si les tonneaux à l'intérieur des structures placées par ce générateur sont remplis. Définissez-le surfalsepour laisser les tonneaux intacts.barrelTreasureFilename(par défauttreasure_barrel_food.yml) sélectionne le fichier de trésor utilisé lors du remplissage de ces tonneaux. Le fichier par défaut fournit une table de butin légère axée sur la nourriture, mais vous pouvez le pointer vers n'importe quel fichier de trésor.
Les deux options peuvent être remplacées schematic par schematic à l'aide du champ barrelTreasureFilename correspondant dans la configuration du schematic.