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 | Selon le modèle fourni | ❌ | Liste des biomes valides (format namespace:key) ; une liste effective vide autorise tous les biomes |
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 initial 0-49 | Recherche d'une zone solide à Y 60-119 | Recherche d'une zone solide à Y 0-79 | Structures souterraines peu profondes |
UNDERGROUND_DEEP | Y initial -53 à -1 | Recherche descendante d'une zone solide à Y 60-6 | Départ à Y 0 avant ajustement des décalages et limites | Structures souterraines profondes |
LIQUID_SURFACE | Liquide au bloc le plus haut | Lave à Y 31 avec de l'air au-dessus | Pas de contrôle initial du liquide ; l'adaptation au terrain reste vérifiée | Apparaît sur les surfaces liquides |
DUNGEON | ✅ | ✅ | ✅ | Réservé au système distinct de générateurs de modules ; ce type seul ne transforme pas un schematic en donjon modulaire |
Les plages du ciel sont des décalages au-dessus du bloc le plus haut de la colonne, pas des niveaux Y absolus. Les plages souterraines décrivent la sélection ou la recherche initiale, avant les ajustements liés au schematic et aux limites de dimension. La recherche du ciel dans le Nether parcourt Y 45-99.
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 |
Les paramètres lowestYLevel et highestYLevel du générateur filtrent les emplacements d'ancrage candidats. Ils ne remplacent pas les limites souterraines de la dimension et ne redéfinissent pas la plage des décalages dans le ciel.
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 autorise les structures dans les biomes vanilla ET dans tous les biomes personnalisés associés à ces types (par exemple, terralith:brushland correspond à plains), sous réserve des autres contrôles de placement.
Une liste validBiomesV2 vide ou absente conserve la sélection de biomes intégrée au générateur fourni ; elle ne supprime pas ses restrictions. Un nouveau générateur personnalisé sans biomes intégrés possède une liste effective vide et autorise tous les biomes. Utilisez une liste explicite non vide pour remplacer la sélection d'un modèle fourni. Les noms d'énumération vanilla sans espace de noms sont acceptés, mais namespace:key est plus clair ; les entrées avec espace de noms sont converties en minuscules sans vérifier l'existence du biome.
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 (un espace de noms autre que minecraft: est conservé tel quel et n'est pas développé davantage), ce qui convient à un générateur qui doit uniquement placer des structures 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.
Le générateur doit tout de même trouver une configuration de trésor valide avant de remplir les coffres. Une substitution dans le schematic ne compense pas un fichier de trésor absent ou invalide dans le générateur. Une substitution invalide produit un avertissement et utilise la table du générateur.
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.
Le barrelTreasureFilename du schematic peut remplacer la table de butin. Le générateur doit avoir à la fois generateLootInBarrels: true et une configuration de trésor de tonneaux valide ; une substitution du schematic ne peut contourner aucune de ces exigences. Une substitution invalide produit un avertissement et utilise la table du générateur.