Aller au contenu principal

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éfautObligatoireDescription
isEnabledtrue❌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
highestYLevel320❌Niveau Y maximum pour l'apparition
validWorldsTous autorisés❌Liste des mondes où les structures peuvent apparaître
validWorldEnvironmentsTous autorisés❌NORMAL, NETHER, THE_END, CUSTOM
validBiomesV2Selon 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
generateLootInBarrelstrue❌Si les tonneaux trouvés dans les schematics de ce générateur doivent être remplis de butin
barrelTreasureFilenametreasure_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 !

TypeSurface / PersonnaliséNetherEndDescription
SURFACESurfacePoints similaires à la surfaceSurfaceApparaît à la surface du monde
SKY80-120 blocs au-dessus du bloc le plus hautPoche d'air trouvée entre Y 45 et Y 10080-120 blocs au-dessus du bloc le plus hautApparaît dans le ciel (configurable dans config.yml)
UNDERGROUND_SHALLOWY initial 0-49Recherche d'une zone solide à Y 60-119Recherche d'une zone solide à Y 0-79Structures souterraines peu profondes
UNDERGROUND_DEEPY initial -53 à -1Recherche descendante d'une zone solide à Y 60-6Départ à Y 0 avant ajustement des décalages et limitesStructures souterraines profondes
LIQUID_SURFACELiquide au bloc le plus hautLave à Y 31 avec de l'air au-dessusPas de contrôle initial du liquide ; l'adaptation au terrain reste vérifiéeApparaî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) :

DimensionPlage par défautParamètres de configuration
Surface/PersonnaliséY=-60 à Y=320lowestYNormalCustom / highestYNormalCustom
NetherY=4 à Y=120lowestYNether / highestYNether
EndY=0 à Y=320lowestYEnd / highestYEnd
Ciel (Surface/Personnalisé)80 à 120 blocs au-dessus du bloc le plus hautnormalCustomAirBuildingMinAltitude / normalCustomAirBuildingMaxAltitude
Ciel (End)80 à 120 blocs au-dessus du bloc le plus hautendAirBuildMinAltitude / 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 :

  1. Les longues listes de biomes que vous voyez dans les fichiers generator_surface_*.yml livrés sont une sortie générée, et non la source de vérité. Au chargement, BetterStructures lit validBiomesV2, recherche chaque entrée minecraft: 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ée minecraft: que vous y laissez sera de nouveau développée au chargement suivant.
  2. 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 validBiomesV2 d'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éfaut true) détermine si les tonneaux à l'intérieur des structures placées par ce générateur sont remplis. Définissez-le sur false pour laisser les tonneaux intacts.
  • barrelTreasureFilename (par défaut treasure_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.