Files
sanctuary-beta/docs/worldgen.md
T
koka ef5d1eaad9
Build Sanctuary / build (push) Canceled after 0s
Add persistent island sizes for 5, 20 and 100 players
Default new Sanctuary worlds to the 20-player profile and keep legacy world generation isolated. Validate all three capacities progressively with real generation, fluid ticks and saved settings.
2026-09-09 04:14:18 +02:00

49 KiB
Raw Blame History

Premier monde Sanctuary

Le preset sanctuary:sanctuary crée l'île principale à l'origine de l'Overworld, entourée de vide sans répétition d'îles à grande distance. C'est une première tranche de génération pour Minecraft 26.3-pre-2 / Fabric, pas encore le système d'expansion collective.

Lalpha.10 propose trois tailles d’île pour 5, 20 ou 100 joueurs, avec 20 joueurs par défaut. Les trois profils passent les contrôles moteur sur la graine 0, dans des emprises explicitement inspectées. Les générations historiques conservent leurs réglages, notamment sanctuary:sanctuary_cavern pour lalpha.9 et sanctuary:sanctuary_rift pour lalpha.8. Les observations de chaque version restent séparées dans Validation.

Créer un monde

En solo : créer un nouveau monde et choisir le type de monde Sanctuary dans les options de génération. Les types de monde vanilla restent disponibles. Lalpha.10 utilise ce choix pour 20 joueurs par défaut, avec des variantes 5 et 100 joueurs. Les identifiants sont sanctuary:sanctuary (20), sanctuary:sanctuary_5 (5) et sanctuary:sanctuary_100 (100).

Sur un nouveau serveur Fabric disposant du mod et de Fabric API :

level-type=sanctuary:sanctuary
level-name=sanctuary
level-seed=0

Pour créer une variante alpha.10, remplacer seulement level-type par sanctuary:sanctuary_5 ou sanctuary:sanctuary_100, avec un nouveau level-name. Ces exemples concernent une création de monde, pas le changement de taille dune sauvegarde existante.

La seed est libre. Modifier level-type ne convertit pas un monde existant : utiliser un nouveau level-name pour tester une autre génération. Les fichiers de test et les sauvegardes personnelles doivent rester distincts.

Socle de génération conservé

Les points suivants décrivent le socle livré jusqu’à lalpha.8. Les évolutions alpha.9 et alpha.10 sont précisées dans les sections v9 et v10 ci-dessous.

  • Le générateur reste celui de Minecraft, minecraft:noise.
  • La forme reprend le champ de bruit flottant actif en 26.2 : old_blended_noise avec xz_scale=0.25, y_scale=0.25, xz_factor=80, y_factor=160, smear=4, ainsi que son gradient supérieur. Il est échantillonné 64 blocs plus bas pour relever l'île entière de 64 blocs. Reliefs, surplombs, trous et fragments dépendent de la seed Minecraft. Lalpha.8 y soustrait des failles courbes, sans ajouter de matière. L'ancien gradient inférieur uniforme est remplacé par la sculpture irrégulière décrite ci-dessous.
  • Le terrain naturel reste libre de laisser un trou à l'origine, de former des surplombs ou de se séparer en fragments. Aucun noyau ellipsoïdal, cylindre ou plateforme de départ n'est ajouté. Le relief relevé de 64 blocs reste le champ source ; les failles de lalpha.8 en retirent de la matière et lhydrologie traite ensuite les lits et les rives près de la surface.
  • Le pourtour est sculpté par retrait de matière à partir du rayon 128 blocs. Le contour de référence de 256 blocs est déformé par les bruits, entre 204 et 288 blocs ; il indique la fin de l'érosion, pas un mur de roche. La côte réelle apparaît plus tôt, selon la densité du terrain et la seed. Aucun terrain ne réapparaît au-delà de 288 blocs, sans répétition d'îles. Les arbres peuvent dépasser la côte rocheuse de quelques blocs.
  • Les nouveaux mondes utilisent 384 blocs de hauteur, de Y=0 à Y=383, pour la dimension et le générateur. La roche disparaît avant leurs limites. Il n'y a ni plancher de bedrock, ni mer globale, ni reprise du terrain à distance. Le Nether et l'End restent ceux de Minecraft.
  • Les nouveaux mondes utilisent une palette tempérée de forêts de chênes et de bouleaux, de clairières fleuries et de zones rocheuses. Les strates intérieures portent des chênes noirs et des champignons sur leurs corniches naturelles. Dappled Forest est réservé aux futurs continents. Leur végétation et leurs animaux proviennent de Minecraft 26.3-pre-2. Les nouveaux identifiants ne reprennent pas les tags de structures vanilla, afin de ne pas placer leurs structures dans le vide.
  • Jusqu’à lalpha.8, les carvers, géodes, donjons, grands lacs de lave et sources vanilla sont retirés. Lalpha.9 ajoute une intégration bornée de géodes et de geysers, sans réactiver lensemble de la décoration souterraine vanilla. Leau de Sanctuary suit son propre plan de surface et de niches rocheuses. Les arbres et les petits filons ont besoin du terrain existant. Aucun mod de biomes externe nest nécessaire.

Lalpha.8 associe ces biomes aux plages, aux eaux et aux filons décrits ci-dessous. Les ressources de survie ne se limitent pas au bois et à la pierre, mais cet incrément ne garantit pas encore une partie Minecraft complète sur chaque seed. Laccès à chaque progression vanilla et les ressources renouvelables nécessitent des vérifications concrètes. Les stocks réels sont relevés après la génération, sans corriger une île pour atteindre un quota.

Capacité de l’île — génération v10

Lalpha.10 propose trois tailles accessibles à la création dun monde. Le choix Sanctuary vise 20 joueurs par défaut, accompagné de variantes pour 5 et 100 joueurs. Les presets et paramètres de bruit sont associés ainsi :

Preset de création Paramètres enregistrés dans le monde
sanctuary:sanctuary_5 sanctuary:population_5
sanctuary:sanctuary sanctuary:population_20
sanctuary:sanctuary_100 sanctuary:population_100

Les nouveaux réglages restent distincts des identifiants enregistrés dans les anciennes sauvegardes. Modifier le preset sélectionné pour une nouvelle partie ne convertit pas un monde existant.

Capacité de référence Facteur horizontal Aire nominale relative Diamètre nominal Hauteur
5 joueurs 1 1 512 blocs 384 blocs
20 joueurs, défaut 2 4 1 024 blocs 384 blocs
100 joueurs √20, environ 4,472 20 Environ 2 290 blocs 384 blocs

Le facteur horizontal vaut √(capacité / 5) : doubler le diamètre multiplie laire nominale par quatre. Cette relation décrit lenveloppe de référence, pas la surface réellement constructible après les trous, les falaises et la sculpture de la bordure. Aucun cylindre central ni remplissage de secours ne doit être ajouté pour obtenir laire théorique. La hauteur de dimension reste Y=0..383.

La capacité choisie reste un paramètre de génération. Elle ne modifie pas max-players, nagrandit pas l’île à chaque connexion et ne fixe aucun quota de ressources. Les anciens mondes jusqu’à lalpha.9 gardent leur génération et leur taille ; leurs chunks ne sont ni remplacés ni régénérés. Le projet de continents déverrouillables reste séparé de ces tailles de départ.

Le bruit naturel reste échantillonné aux coordonnées du monde ; seule lenveloppe extérieure change de taille. Les plans hydrauliques sont construits à la demande dans des régions de 512 blocs, avec une graine régionale distincte. Les marges dadmission sont de 16 blocs pour leau et 32 pour la lave. Bassins, berges et groupes de terrasses sont admis entiers ; les sources dépendant dune coupe écartée sont retirées aussi. Aucun trajet nest tronqué à la frontière. Les couches superposées et leurs sources sont ensuite traduites ensemble.

Les forêts, minerais et décorations utilisent toute lemprise du profil. La recherche facultative dun arbre remarquable reste unique et centrale. Les sources et exutoires nagissent que pendant la génération, avec les marqueurs vanilla consommés ; recharger un ancien chunk ne rouvre pas une bouche.

Les trois tailles passent onze tests requis sur la graine 0, avec 1 800 ticks de fluides et un aller-retour réel des paramètres sur disque. Le fichier data/minecraft/world_gen_settings.dat conserve la clé du profil choisi. 212 anciens fichiers de production sont strictement identiques, tandis que huit fichiers dintégration ou dinterface exposent les nouvelles générations. Le premier calcul dune région reste coûteux ; les résultats ne sont pas un test de cent connexions ni une garantie de génération rapide de toute l’île. Voir les emprises et durées dans Validation.

Cavités et terrasses deau — génération v9

Le nouveau réglage est sanctuary:sanctuary_cavern, avec le biome source sanctuary:cavern_island et la règle de matière sanctuary:cavern_island. La densité réutilise sanctuary:final_density_rift sans changer cet identifiant historique. Ses nouvelles données et traitements doivent rester distincts de sanctuary:sanctuary_rift et de toutes les générations précédentes. Le preset sélectionne la nouvelle génération à la création ; une mise à jour du JAR ne convertit pas une sauvegarde ni ne régénère ses chunks. Les cavités restent dans lOverworld sur 384 blocs de hauteur ; la dimension des cavernes décrite dans la vision nest pas ajoutée.

Ambiances et ressources

Le ticket conserve les forêts de surface et ajoute des cavités luxuriantes éclairées par leur végétation, des secteurs à spéléothèmes et des géodes daméthyste sur des emplacements compatibles. Les sols, plafonds, coquilles et ouvertures doivent être observés après la décoration réelle : une valeur de biome ne prouve ni le décor ni son éclairage. Lobjectif est dutiliser les volumes naturels de l’île, sans remplir ses trous pour accueillir une structure.

Les dix biomes ont leurs propres identifiants : cavern_oak_forest, cavern_birch_forest, cavern_clearing, cavern_dry_woodland, cavern_rocky_heath, cavern_dark_grove, cavern_bamboo_grove, cavern_sulfur_depths, cavern_lush_caves et cavern_dripstone_caves, dans le namespace sanctuary. Les deux nouvelles ambiances luxuriantes et à spéléothèmes sont limitées à Y<184 par la palette ; leur décoration recherche des sols entre Y=40 et Y=182, avec trois blocs naturels de support et un plafond situé de 6 à 48 blocs au-dessus.

Dans les cavités luxuriantes, la mousse remplace le sol compatible et de petites plantes laccompagnent. Les vraies lianes cave_vines et cave_vines_plant pendent sur 3 à 8 blocs ; leurs baies émettent de la lumière et restent récoltables. Ce décor najoute pas deau. Les spéléothèmes utilisent les blocs pointed_dripstone orientés, sur un appui de dripstone_block remplaçant de la roche existante, avec une longueur de 1 à 4 blocs selon lespace disponible.

La géode utilise une configuration vanilla compacte avec améthyste, améthyste bourgeonnante, calcite et basalte lisse. Son enveloppe doit tenir dans la roche préexistante et un passage de deux blocs de haut la relie à la cavité, en préservant laméthyste bourgeonnante et les cristaux attachés. Un chunk sur huit est candidat ; au plus une pose réussie est retenue par chunk candidat. Cela ne garantit pas de géode sur une graine.

Le soufre devient admissible dans une bande climatique plus étroite sous Y=176. La réduction de cette sélection peut être testée indépendamment du terrain ; seule une comparaison des vrais blocs sur un périmètre commun mesure sa diminution dans l’île. Un geyser éventuel creuse un seul bloc de sol pour sa source deau, avec potent_sulfur dessous et magma_block encore en dessous. Le fond, les quatre parois et la hauteur libre sont contrôlés. Le cycle du geyser reste celui de Minecraft ; ce décor est distinct des bassins hydrologiques et son eau doit être comptée séparément.

Leur présence, leur activité, l’éclairage et la cohabitation avec les eaux et la végétation sont contrôlés dans les mondes de test. Les preuves de ces éléments sont cumulées sur les trois graines. Un site incompatible peut être rejeté ; aucun geyser ni stock nest garanti pour chaque graine.

Lacs et bassins étagés

Le plan hydrologique conserve la recherche de rivière de lalpha.8 et vise de plus grands lacs de surface. Les cibles actuelles sont de lordre de 700 à 1 100 colonnes par grand lac, jusqu’à 7 à 8 blocs de profondeur intérieure et une incision limitée à 12 blocs. Ce sont des bornes de recherche ; les dimensions réelles sont relevées séparément, sans quota deau à remplir. Les fonds, les parois et les dépôts exigent du terrain naturel.

Les terrasses sont recherchées dans des cavités entre Y=56 et Y=208, avec deux paliers par groupe et jusqu’à deux groupes facultatifs. Un palier vise environ 40 à 180 colonnes, une profondeur de 1 à 3 blocs et une incision dau plus 5 blocs. Le fond doit conserver trois couches de sédiments et deux couches de support naturel ; le plafond et lespace disponible sont vérifiés. Les mesures moteur précisent les sites effectivement retenus.

La recherche suit le choix de pente de leau vanilla : parmi les passages libres, elle privilégie ceux qui rejoignent la chute la plus proche. Un bassin inférieur doit intercepter ce trajet réel, sans détour creusé pour le rejoindre. Les sorties entre paliers sont déclarées et les cascades sont formées par les ticks de fluides Minecraft. Le premier débordement doit atteindre le second bassin. Celui-ci peut avoir un exutoire terminal qui s’écoule sur les roches ou vers le vide, sans troisième bassin ajouté. Le générateur ne doit ni peindre une colonne deau jusquau vide ni colmater un trou pour retenir un bassin. Les volumes retenus et les liaisons réelles sont vérifiés séparément après décoration et simulation, y compris aux frontières de chunks. Les cascades peuvent servir à monter ou descendre selon la nage vanilla ; aucune mécanique dascenseur supplémentaire nest prévue. « Rizières » décrit seulement laspect du paysage en terrasses, sans ajouter une culture de riz.

Validation moteur au 9 septembre 2026 : les trois graines de référence passent les contrôles après 1 800 ticks, avec preuves cumulées des terrasses connectées, geysers actifs, baies lumineuses, spéléothèmes et améthyste bourgeonnante. Le build complet réussit. Les résultats et leurs limites sont consignés dans Validation. Aucune présence universelle nest garantie. La distribution est publiée et la même instance Prism est synchronisée, sauvegardes et réglages conservés.

Failles, géologie et ressources — génération v8

Les nouveaux mondes utilisent sanctuary:sanctuary_rift, la densité sanctuary:final_density_rift et le biome source sanctuary:rift_island. Les anciens paramètres sanctuary, sanctuary_384, sanctuary_hydrology, sanctuary_natural, sanctuary_layered et sanctuary_woodland restent séparés. Changer le preset ne migre pas un monde existant ; aucune régénération de chunks ni modification de sauvegarde nest prévue par cet incrément.

Failles et palette

RiftShape définit une à trois traces principales, courbes et ramifiées, de longueur nominale 84 à 160 blocs. Leur largeur varie avec deux bruits en trois dimensions ; le cœur ouvert est de lordre de 4 à 12 blocs, avec des parois érodées autour. Ces nombres décrivent les traces avant leur intersection avec la roche, pas une garantie de canyon continu de cette taille. La passe retire seulement de la matière et laisse intactes les zones de rayon inférieur à 20 blocs et extérieur à 224 blocs. Elle ne crée aucun socle central.

Les huit biomes rift_oak_forest, rift_birch_forest, rift_clearing, rift_dry_woodland, rift_rocky_heath, rift_dark_grove, rift_bamboo_grove et rift_sulfur_depths ont de nouveaux identifiants dans le namespace sanctuary. Les choix climatiques de lalpha.7 sont conservés en haut. Le soufre devient admissible dans des régions plus larges des étages inférieurs, notamment vers Y=176, selon les bruits de variation et dhumidité. Le test de palette prouve cette possibilité ; seule la lecture des vrais blocs peut prouver une poche accessible sur une graine.

La végétation vanilla de surface garde ses arbres et ses teintes. La feature rift_groves passe ensuite, avant rift_shore_sugar_cane, pour choisir les volumes inférieurs encore libres après les arbres. Elle peut placer de gros champignons vanilla, avec des petits champignons dispersés et des sols mêlant mousse, podzol et mycélium. Les supports naturels et la place disponible restent nécessaires ; un arbre remarquable peut échouer si son site est occupé. Lordre des plantations intérieures donne la priorité aux arbres dans trois cas sur quatre et aux gros champignons dans lautre cas, selon un choix lié au chunk. Cela laisse des volumes disponibles aux chênes noirs. Dans les biomes sanctuary:rift_dark_grove et sanctuary:rift_bamboo_grove, lardoise des abîmes peut aussi fournir le support naturel des sols et bosquets inférieurs. Son admissibilité est vérifiée au-dessus de chaque pied : seules ces deux variantes humides autorisent ce support.

Matières selon la profondeur

La règle sanctuary:rift_island ne change que la matière de blocs déjà solides. Ses nappes utilisent un bruit 3D, avec un bruit distinct pour faire varier les transitions de profondeur.

Domaine Matières
Masses supérieures Pierre, granite, andésite, diorite ; sols enherbés hors affleurements
Intérieur des bosquets humides Tuf, cobblestone, cobblestone moussue, boue compactée
Masses profondes Ardoise des abîmes, roche noire, basalte
Poches soufrées Soufre et cinabre ordinaires sur les masses existantes

Les strates humides se mêlent aux matières hautes entre Y=192 et Y=224 dans leurs biomes ; la transition vers les roches profondes s’étend de Y=136 à Y=168. La profondeur sert de critère géologique : ces blocs ne signifient pas quune source de lave se trouve forcément à proximité. Aucun bassin, spike, source vanilla ou bloc de soufre puissant du biome Sulfur Caves nest ajouté.

Les anciens petits dépôts vanilla de granite, andésite, diorite et tuf sont remplacés par ces nappes dans les seuls biomes rift_*. Les anciennes données de biomes et leurs features ne sont pas modifiées.

Minerais

Les features rift_ore_* ciblent des tags Sanctuary locaux : les pierres hautes et humides produisent les minerais ordinaires ; ardoise des abîmes, roche noire et basalte produisent leurs variantes dardoise. Les tags vanilla ne sont pas élargis globalement. Le soufre et le cinabre restent des matières distinctes.

Minerai Taille du filon configurée Essais principaux par chunk Altitudes principales
Charbon 9 8 Y=96..304
Fer 7 4 Y=88..280
Cuivre 7 3 Y=96..280
Or 5 2 Y=88..224
Redstone 5 2 Y=88..216
Lapis 4 1 Y=104..240
Diamant 4 Un essai une fois sur deux Y=80..208
Émeraude 3 1 Y=104..224

Les hauteurs suivent une distribution en trapèze. Charbon, fer et cuivre reçoivent aussi respectivement 4, 2 et 2 essais sur roche supérieure exposée, et autant de recherches de corniche depuis lair entre Y=64 et Y=288. Un essai peut ne produire aucun bloc. Les tailles configurées ne sont ni des quantités garanties par filon ni des quotas par île. Lexposition à lair est autorisée pour ces trois minerais et l’émeraude ; une partie des candidats exposés est encore écartée pour les autres minerais. Les stocks devront être relevés après génération, avec leur emprise explicite.

Eaux et lave

RiftHydrology cherche des bassins plus grands et une longue liaison calme sur la vraie densité fissurée. Le critère de cet incrément est un chemin deau continu dau moins 140 blocs entre deux bassins au même niveau, alimenté par une source rocheuse et sa cascade entrante. Il ne sagit pas dune rivière descendant continuellement en altitude. La recherche parcourt huit directions et pondère les trajets selon le relief et un bruit ; le parcours retenu est lissé sur une échelle de 16 à 32 blocs, puis arrondi avant sa conversion en blocs. Le lit varie entre environ 5 et 7 blocs de largeur, hors élargissement des bassins. Le chemin et ses marges sont à nouveau vérifiés sur la roche après ce lissage : une courbe ne peut pas servir à franchir un trou.

La roche doit soutenir le fond et les berges. Lincision du lit reste limitée à 16 blocs. Les berges de rivière peuvent retirer jusqu’à 12 blocs pour rejoindre leau par paliers progressifs ; les autres rives conservent leur limite de 2 blocs. Les dépôts de 3 à 5 couches ont toujours besoin de supports naturels. Aucun remblai ne franchit une faille ou un trou. Si aucun parcours compatible nest retenu, le générateur garde les bassins et sources qui conviennent au relief.

Le calcul initial du plan reste coûteux : les essais finaux sur ce poste mesurent 80,5 secondes pour la graine 0, 50,7 pour 42 et 59,7 pour 8675309, hors génération des chunks. Le résultat est mis en cache par état aléatoire du monde ; il nest pas recalculé pour chaque chunk. Loptimisation de ce premier calcul reste un travail ultérieur.

La recherche de lave profonde vise une à deux petites sources entre Y=40 et Y=160, en complément de la niche couverte accessible. Cette poche de 18 blocs sources est recherchée dabord sur une corniche intérieure entre Y=64 et Y=160. Si aucun site profond ne réunit les conditions de support, de voûte et daccès, la recherche reprend sur les corniches plus hautes, jusqu’à Y=300. Il ny a pas de poche créée de force lorsque les deux recherches échouent. Les sources supplémentaires laissent Minecraft former leurs coulées par ses ticks, sans colonne préremplie. Leau, les supports et les marges de végétation doivent être contrôlés après décoration et simulation. La finition des bouches doit rester limitée à la première génération du chunk, sans effacer un aménagement joueur lors dun rechargement.

Validation du 9 septembre 2026 : le build complet réussit et les contrôles moteur passent sur les trois graines de référence. Les failles, les bassins terminaux, les liaisons de rivière, les champignons et les fluides après 1 800 ticks sont documentés avec les relevés de ressources dans Validation. Ces échantillons ne garantissent pas la présence de chaque ressource sur toutes les graines. Les rapports intermédiaires ne servent pas de preuve pour la version finale ; aucun monde personnel nest utilisé par ces tests.

Sculpture du pourtour — conservée depuis la génération v2

La version 0.1.0-alpha.2 retire deux contraintes de la génération v1 (0.1.0-alpha.1) : le noyau central qui remplissait les creux du bruit naturel, et la découpe radiale qui pouvait exposer une tranche verticale à toutes les altitudes. Les identifiants sanctuary:* du preset et de la fonction restent stables. Il s'agit d'une évolution du terrain, pas d'une migration de sauvegarde.

Trois passes composent désormais la densité finale, après l'interpolation du champ historique :

  1. Un bruit horizontal à grande échelle déforme le contour. Dans la bande extérieure, large de 128 blocs avant déformation, une érosion progressive (2 × t⁴) augmente le seuil nécessaire pour conserver de la roche. Une érosion supplémentaire, quadratique selon la hauteur et nulle à l'intérieur, fait reculer les faces hautes et basses même lorsque le bruit naturel est saturé dans une grande masse pleine. Elle arrondit le pourtour sans ajouter de volume au centre.
  2. Un bruit 3D, échantillonné à la hauteur réelle, déplace ce contour et creuse des renfoncements plus larges. Le bord peut ainsi changer de position avec l'altitude au lieu de prolonger une ligne verticale.
  3. Un second bruit 3D, plus fin, ajoute de petites irrégularités. Ces deux passes s'atténuent progressivement vers l'intérieur ; elles ne remplissent jamais un trou du terrain initial.

Les bruits island_edge, island_sculpt et island_detail sont tous initialisés avec la seed du monde. Ils utilisent respectivement les octaves de base -7, -5 et -3. Les nouvelles entrées sculpt et detail du codec sont optionnelles pour garder les anciennes définitions JSON lisibles ; leur absence ne rétablit pas le noyau de la génération v1.

L'érosion est toujours soustraite à la densité bornée du terrain. Une densité nulle ou négative ne peut donc jamais devenir solide. Même avec un terrain d'entrée maximalement positif, elle est négative dès le rayon 280, avant la limite de sécurité 288. Deux transitions verticales douces protègent aussi les bornes de hauteur, sans découper de dalle à Y=0 ou Y=256.

Ces formules sont toujours utilisées par les sauvegardes de la génération v2. La génération v3 conserve la sculpture latérale dans le repère de l'île relevée.

Île relevée et dessous irrégulier — génération v3

La version 0.1.0-alpha.3 crée les nouveaux mondes avec les paramètres et le type de dimension sanctuary:sanctuary_384 : min_y=0, height=384 et logical_height=384. Le nom du preset sélectionné reste sanctuary:sanctuary. Le gain de hauteur n'agrandit pas le rayon horizontal et n'active aucun continent.

Le bruit naturel et les bruits de sculpture sont échantillonnés à Y64. Le profil supérieur et les bords approuvés en alpha.2 sont ainsi relevés sans changer de seed ou étirer l'île. Sur les graines de régression, les sommets proches de Y=184 se retrouvent vers Y=248, avec de l'espace libre au-dessus.

Sous l'île, déplacer l'ancien gradient inférieur aurait seulement déplacé son plan de coupe. floating_archipelago_384 conserve donc le bruit naturel sans ce gradient inférieur. Une nouvelle érosion travaille sur une transition de 72 blocs, dont l'altitude varie avec le bruit 3D island_underside et les deux bruits de sculpture existants. Elle laisse les lobes naturels se poursuivre vers le bas, puis les amincit à différentes hauteurs ; elle n'ajoute ni socle ni surface garantie. La transition n'affecte plus le terrain à partir de Y=144. Une marge vide protège le bas de la dimension : aucun plancher rocheux ne doit apparaître dans Y=0..15. À partir de lalpha.5, seules les eaux descendantes de sources explicitement déclarées peuvent traverser cette marge.

Les champs optionnels du codec vertical_offset, height et underside valent respectivement 0, 256 et un bruit nul par défaut. Seule la nouvelle fonction sanctuary:final_density_384 active l'offset 64, la hauteur 384 et le bruit du dessous. Les anciennes fonctions final_density, floating_archipelago et les paramètres sanctuary:sanctuary restent inchangés : les sauvegardes alpha.2 qui les référencent gardent leur hauteur de génération et leur ancien terrain.

Créer un nouveau monde pour tester l'île relevée. L'actualisation du pack ne convertit pas les sauvegardes existantes ; aucun chunk n'est supprimé, déplacé ou régénéré. Il n'existe pas de migration automatique des anciens mondes vers la dimension de 384 blocs. Changer manuellement leurs références de générateur ou de dimension sort de ce contrat de compatibilité.

Hydrologie de surface — génération v4

La version 0.1.0-alpha.4 conserve la densité, la hauteur et le ciel de lalpha.3. Les nouveaux mondes sélectionnent les paramètres sanctuary:sanctuary_hydrology et le biome sanctuary:starter_forest_hydrology. Le type de dimension reste sanctuary:sanctuary_384. Les anciens paramètres et le biome sanctuary:starter_forest restent disponibles et inchangés : ils nactivent pas cette hydrologie dans les sauvegardes antérieures.

Un plan calculé depuis le relief et la graine recherche des emplacements de surface pour des étangs, des petits lacs et un premier cours deau calme. Le lit peut être légèrement creusé dans la roche existante. Avant daccepter un emplacement, le plan vérifie le fond et les parois en trois dimensions ainsi que louverture vers le ciel. Un trou profond dans la carte de hauteur ne suffit pas à constituer un lac. Aucune digue ni masse de roche nest ajoutée pour boucher une fuite, et aucun bassin souterrain nest rempli.

Les fonds alternent sable, gravier et argile ; les berges basses peuvent recevoir du sable. Dans ce nouveau biome, les disques de sédiments vanilla et les veines de gravier sont remplacés par ces dépôts de rive et de fond : une feature ultérieure ne doit pas transformer leur support en gravier instable. Les sources de magma sous-marines sont également absentes. Après les arbres et la végétation, de la canne à sucre peut pousser sur les rives qui respectent ses règles de placement vanilla. Le nombre de sites, leur eau et leurs ressources dépendent du terrain : le générateur ne complète pas une graine pour atteindre un quota économique.

Le plan est indépendant des chunks chargés. Chaque chunk applique uniquement ses propres colonnes après le terrain et avant la décoration, ce qui permet de raccorder un même plan deau aux frontières des chunks. Les anciens chunks ne sont jamais retouchés, et aucun travail hydrologique ne se déclenche au simple chargement dune sauvegarde.

Cette première version vise de petites eaux retenues et des cours deau calmes sur les plateaux. Le cours deau est un chenal à niveau constant reliant des plans deau ; il ne simule pas encore une pente vers laval ou un débit. Les tracés peuvent passer par les diagonales, mais leur eau reste connectée de bloc en bloc. Lexcavation est limitée à six blocs, leau à quatre blocs de profondeur, avec un fond plein sur trois blocs d’épaisseur, dont deux blocs naturels sous le sédiment. Ce contrat alpha.4 reste celui de ses sauvegardes. Les sources en cascade sont ajoutées séparément dans la génération v5 ; les grandes rivières en pente, océans, aquifères, climats multiples et continents restent des incréments distincts.

Plages, sources et mosaïque tempérée — génération v5

Limplémentation 0.1.0-alpha.5 sélectionne la nouvelle clé de paramètres sanctuary:sanctuary_natural (SanctuarySpawn.NATURAL_SETTINGS). Elle conserve la densité relevée, les 384 blocs de hauteur et le ciel de lalpha.3. La classe NaturalHydrology et son application sont séparées de SurfaceHydrology et HydrologyRuntime : le code, les paramètres sanctuary:sanctuary_hydrology et le biome sanctuary:starter_forest_hydrology de lalpha.4 restent inchangés. Les clés alpha.2 et alpha.3 restent également disponibles avec leur comportement antérieur. Ces changements concernent uniquement les nouveaux mondes : aucune conversion de sauvegarde, régénération de chunk ou expansion nest effectuée.

Dépôts et eau de surface

Le plan recherche des étangs, de petits lacs et un cours deau calme dans le relief naturel. Lexcavation maximale passe à quatre blocs, pour une eau de trois blocs de profondeur au plus. Les bassins gardent un fond et des parois naturels pleins ; aucune digue nest ajoutée et aucune chambre souterraine nest remplie. Le cours deau reste à niveau constant : il ne modélise pas un débit ni une pente continue vers laval.

Les plages sont des nappes irrégulières qui suivent les faibles variations du relief autour des plans deau. Elles peuvent s’étendre sur plusieurs blocs, se rapprocher dune autre poche deau et retrouver progressivement lherbe ou la pierre. Les matériaux varient entre sable, gravier, pierre et terre enherbée ; largile peut apparaître dans les fonds. Le traitement dune terrasse sèche retire au plus deux blocs du relief existant.

Chaque dépôt remplace trois à cinq couches de terrain déjà plein et garde deux couches naturelles de support en dessous. Ce support permet notamment au sable et au gravier de rester en place après les mises à jour de gravité. Les veines de gravier, disques de sédiments et magma sous-marin vanilla ne sont pas réintroduits dans ces nouveaux biomes. Les autres décorations rocheuses et les minerais peuvent encore remplacer la pierre ; ils ne remplacent pas les couches de sable, gravier ou argile. Les rives compatibles peuvent porter de la canne à sucre après la végétation. Les troncs couchés vanilla peuvent occuper quelques blocs de la surface dun étang ; les contrôles distinguent cette décoration de leau restante et vérifient leur fond ou leau sous les troncs, les sources voisines et la rétention du bassin.

Sources rocheuses et cascades

Le plan peut retenir jusqu’à trois sources dans des niches rocheuses naturelles, séparées des dépôts modifiés. Une source remplace un seul bloc de roche, sous un toit, sur un fond et entre trois côtés déjà pleins. Son unique sortie horizontale est naturellement ouverte sur une chute dau moins huit blocs. Le générateur ne construit ni pylône, ni corniche, ni tunnel pour obtenir ce résultat.

Seul le bloc source est généré. Les ticks de fluide de Minecraft forment la cascade et ses éventuels passages sur des paliers. Ces écoulements peuvent descendre jusque dans le vide, conformément au comportement demandé. Cette exception concerne les sources déclarées. Le trajet calculé dans la roche nue est une prévision : les arbres générés ensuite peuvent dévier une chute. Les diagnostics vérifient donc les connexions réelles de chaque bloc deau vers une source, dans lemprise des chunks inspectés et de leur halo. Ils échouent si de leau touche une frontière non inspectée ou si un bassin perd sa coque. Les déviations par rapport à la prévision restent mesurées dans le rapport. Le comportement des fluides reste celui de Minecraft, y compris lorsque les joueurs modifient une rive.

Petite réserve de lave

StarterLavaDeposit recherche au plus une niche de 18 blocs sources dans la roche existante, accessible par un passage sec de deux blocs de haut depuis une corniche naturelle. Le fond garde trois blocs pleins, les parois deux et la couverture huit ; ces supports sont vérifiés avant les écritures. La niche reste éloignée des eaux et de leurs parcours. Elle fournit de la lave prélevable pour les premières productions et un portail du Nether. Si aucun site ne convient, le plan reste vide : aucun bassin artificiel nest ajouté dans le vide.

Les tests vérifient laccès praticable, la rétention de la lave et labsence dincendie après simulation.

Biomes et minerais

Le biome source sanctuary:temperate_island utilise deux champs de bruit initialisés par la seed pour répartir cinq variantes horizontales. Une rive et la roche sous elle restent dans la même variante :

Identifiant Variante
sanctuary:temperate_forest Forêt dominante
sanctuary:temperate_plains Clairières et plaines tempérées
sanctuary:temperate_birch_forest Forêt de bouleaux
sanctuary:temperate_flower_forest Forêt fleurie
sanctuary:temperate_dappled_forest Dappled Forest, peupliers et végétation associée

Dappled Forest est un biome vanilla introduit dans Minecraft 26.3 Snapshot 1. Cette variante reprend ses données de 26.3-pre-2, avec une humidité légèrement relevée pour Sanctuary. Elle najoute ni dépendance externe ni structure de camp. La palette tempérée ne constitue pas encore le catalogue TerraMix ni le champ climatique des futurs continents.

Les nouveaux biomes remplacent les filons vanilla de métaux par de petites features sanctuary:island_ore_*, à des altitudes adaptées à l’île relevée :

Ressource Taille du filon Tentatives par chunk Plage Y
Charbon 6 2 96288
Fer 4 2 88248
Cuivre 4 1 96248
Or 4 1 104224
Redstone 4 1 96224
Lapis 3 Une tentative, chance 1/2 112232
Diamant 3 Une tentative, chance 1/4 104208

Ces paramètres décrivent des tentatives, pas des quantités promises : le filon doit rencontrer la roche existante, et sa forme dépend du hasard de génération. La sélection des biomes et des eaux ne cherche aucun stock cible. Un relevé partiel reste un relevé partiel ; la présence des sept ressources sur une seed de référence ne garantit pas leur présence sur toutes les seeds.

La validation de lalpha.5 est suivie dans Validation. Ses diagnostics sont conçus pour inspecter les blocs décorés, les profils des dépôts, les jointures de chunks, les biomes et les ressources, puis simuler réellement les fluides dans les chunks des sites. Les cartes et profils PNG montrent des lectures de blocs, pas un rendu Minecraft. La descente des cascades est contrôlée après activation effective des chunks qui les simulent.

Prairies et corniches — génération v6

Lalpha.6 utilise sanctuary:sanctuary_layered et le biome source sanctuary:layered_island. Les formes et le ciel restent ceux de la génération relevée. Les anciennes classes, biomes et règles de matériaux restent disponibles pour les sauvegardes alpha.2 à alpha.5 ; seul le preset de création choisit v6.

Une palette qui varie aussi en hauteur

Les cinq variantes partagent leurs teintes dherbe et de feuillage. Les champs de climat liés à la seed déforment de larges bandes daltitude, autour de Y154 et Y214 : prairies et prairies fleuries sur le dessus, bosquets et corniches moussues plus bas. Des zones rocheuses traversent ces bandes et remplacent la couverture de terre par de la pierre sur le relief existant. Les prairies gardent quelques arbres épars et leur végétation vanilla. Dappled Forest nappartient plus à cette palette ; son utilisation sur de futurs continents reste à développer.

Identifiant Ambiance
sanctuary:layered_meadow Prairie tempérée
sanctuary:layered_flower_meadow Prairie fleurie
sanctuary:layered_lower_grove Bosquet inférieur
sanctuary:layered_mossy_terraces Corniches moussues
sanctuary:layered_rocky_terraces Affleurements rocheux

LowerTerraceVegetationFeature parcourt aussi les sols naturels sous les surplombs, au moins huit blocs sous une surface supérieure. Elle demande trois blocs pleins de support et deux blocs libres au-dessus. Elle peut remplacer la surface existante par de la mousse et planter fougères, fleurs ou petits arbustes lorsque leurs règles de survie le permettent. Les cellules hydrologiques, les sources, les parcours deau prévus et les supports de lave sont protégés. Il ny a ni corniche construite dans lair ni ajout d’éclairage artificiel.

Bassins et sources de paroi

LayeredHydrology conserve les petits bassins et les dépôts épais, avec une plus grande présence de pierre. Le court STREAM à niveau constant de lalpha.5 nest pas repris. Cette version retient uniquement les étangs et les petits lacs ; elle ne cherche pas de grande rivière. Le parcours traversant avec source, cascade et bassin reste un ticket distinct, à démontrer sur le relief Minecraft réel. Aucun chenal de secours nest creusé.

La profondeur reste limitée à trois blocs et lincision à quatre. Le plan vérifie le fond et les rives avant dappliquer ses écritures, dans les nouveaux chunks seulement. Le sable, le gravier, largile et la roche suivent les rives. Des niches de source sont également recherchées dans les strates inférieures, et pas seulement près de la surface la plus haute. Leurs chutes sont produites par les ticks de Minecraft à partir dun seul bloc source. Le post-traitement des nouveaux chunks libère uniquement leur ouverture, déjà vide dans la densité naturelle, pour quun lichen ou une plante ne bouche pas la source. Les positions sont marquées dans la file vanilla pendant la génération, puis consommées une seule fois. Un rechargement ne dégage pas une bouche modifiée par un joueur. Aucune chute nest préremplie et aucun nouveau passage nest creusé dans la roche.

Les parcours, les écoulements et la végétation réellement observés, ainsi que les limites du modèle, sont consignés dans Validation.

Apparition commune

Une injection limitée à la création initiale cherche du sol naturel depuis l'origine vers l'extérieur, dans toute l'emprise finie de l'île. Elle préfère une surface stable de 3 × 3 blocs, avec deux blocs libres en hauteur. En l'absence d'une telle surface, elle retient une colonne de sol praticable ; si aucun emplacement naturel sûr n'existe, la création signale la seed concernée plutôt que d'ajouter une plateforme. Elle ne s'applique qu'à l'Overworld utilisant les paramètres sanctuary:sanctuary, sanctuary:sanctuary_384 ou sanctuary:sanctuary_hydrology, sanctuary:sanctuary_natural ou sanctuary:sanctuary_layered. Elle enregistre le spawn partagé dans la sauvegarde et ne le réinitialise pas au redémarrage : les modifications administratives de /setworldspawn restent conservées. Les lits et la dispersion habituelle du spawn suivent encore les règles de Minecraft.

Adaptation 26.2 → 26.3

Les références historiques sont sanctuary/worldgen/density_function/base_3d_noise.json et floating_archipelago.json dans l'ancien module Sanctuary. L'ancien masque annulaire n'est pas conservé : après son anneau de vide, il faisait réapparaître un archipel infini. Les anciennes surcharges de minecraft:normal, dimensions supplémentaires, intégrations TerraMix et injections globales de features ne font pas partie de ce port.

Minecraft 26.3 a changé l'API de génération : les fonctions de densité compilent maintenant un DensitySampler, leurs opérateurs JSON utilisent left / right / input, les gradients utilisent from_coordinate et les surfaces passent par le registre worldgen/material_rule. Les données de cette branche suivent ces formats réels ; copier directement les JSON 26.2 ne suffit pas. Les bruits utilisent également base_octave, octave_count et amplitude_modifiers. Le seul opérateur Java ajouté, sanctuary:main_island, compose le terrain et les bruits de sculpture, applique le repère vertical choisi et impose la limite extérieure après interpolation.

Vérification

./gradlew :sanctuary:worldgenSmoke
./gradlew :sanctuary:runGameTest

Le smoke test vérifie qu'aucun sol n'est ajouté, que l'intérieur conserve le champ naturel et que l'érosion évolue progressivement sur un profil de terrain contrôlé. Il vérifie aussi qu'un lobe plein recule d'au moins 30 blocs en haut et en bas par rapport à son milieu, pour éviter une paroi verticale simplement déplacée. Il couvre aussi l'influence des deux bruits de sculpture, le vide avant les bornes de sécurité, et le vide dans les quatre directions même avec un bruit entièrement positif. Les coordonnées testées incluent les limites de Minecraft et des entiers Java pour détecter débordements et répétitions involontaires.

Les GameTests chargent le preset réel sur un serveur éphémère, vérifient le spawn après décoration, puis inspectent des chunks complets à distance dans les quatre directions. Ils comparent aussi la densité compilée avec deux instances de la même seed et une seed différente. Cela détecte les références JSON invalides et les blocs que des features pourraient ajouter après le calcul de densité. Les injections du serveur de test sont isolées dans src/gametest et ne sont pas distribuées dans le mod.

Les graines de régression des générations v2 et v3 sont 0, 42 et 8675309. Le serveur de test exporte leurs cartes de hauteur et coupes de densité dans mods/sanctuary/build/run/gameTest/diagnostics/. Ces images permettent de comparer la vraie densité alpha.2, toujours chargée, avec la nouvelle île relevée dans toute la hauteur 0..383. Les assertions vérifient la translation du relief supérieur, la variation des hauteurs du dessous, l'absence de plancher, les 384 blocs de génération et la conservation des anciens paramètres 256. Ces images ne montrent pas les arbres ni les matériaux et ne remplacent pas un essai visuel en jeu.

Contrat du prochain ticket : expansion

Avant de créer des continents, définir une donnée persistante par monde contenant pour chaque région son identifiant, centre, direction, emprise, seed dérivée, version de générateur et état de déblocage. L'île principale devient la première région de ce registre ; les nouvelles régions utilisent des coordonnées absolues, sans cellules périodiques.

L'activation doit être une action du serveur, reproductible et sauvegardée, conditionnée ensuite par les contributions collectives. Elle doit tenir compte du fait qu'un joueur peut déjà avoir chargé ou construit dans le vide : un chunk existant ne se régénère pas simplement parce que la liste des continents change. Le ticket doit choisir une réservation d'espace ou une matérialisation contrôlée qui protège les constructions et ne remplace jamais aveuglément des chunks sauvegardés.

La version de génération et les emprises doivent être gelées avant les premières sauvegardes destinées à durer. Ce prototype ne promet pas encore de migration automatique des mondes entre deux versions de terrain.

Forêts, corniches humides et affleurements — génération v7

Lalpha.7 crée les nouveaux mondes avec sanctuary:sanctuary_woodland et sanctuary:woodland_island. La densité sanctuary:final_density_384, les formes rocheuses, la hauteur et le ciel restent identiques. Les plans des bassins, sources et petites niches de lave reprennent les algorithmes alpha.6. Les anciens paramètres, biomes et features sont conservés ; cette livraison ne modifie pas les mondes existants.

La palette comporte huit biomes :

Identifiant Rôle
sanctuary:woodland_oak_forest Forêt de chênes dominante, bouleaux secondaires
sanctuary:woodland_birch_forest Forêt de bouleaux complémentaire
sanctuary:woodland_clearing Clairière fleurie
sanctuary:woodland_dry_woodland Bois sec plus clairsemé
sanctuary:woodland_rocky_heath Masses rocheuses exposées
sanctuary:woodland_dark_grove Corniches humides à chênes noirs et champignons
sanctuary:woodland_bamboo_grove Rare intérieur à jungle et bambou
sanctuary:woodland_sulfur_depths Rare poche profonde de soufre sur roche existante

Une altitude élevée ne transforme plus automatiquement une forêt en prairie ou en roche. Les forêts utilisent les véritables arbres vanilla avec leurs conditions de croissance ; les affleurements sont des patches horizontaux et des variations de matériau sur le terrain existant.

woodland_groves place de vrais chênes noirs sur des sols naturels de 2×2, avec trois blocs de support et une place suffisante pour le tronc et la canopée sous le plafond. Des champignons accompagnent les sols de podzol et de mycélium, avec quelques touches de mousse. La jungle et le bambou restent limités aux rares poches qui leur conviennent.

Un seul emplacement remarquable est recherché par graine, avec une essence choisie parmi cerisier (favorisé), épicéa, jungle, acacia, palétuvier et chêne pâle. Il ne produit pas de terrain : si le site ou les conditions de larbre vanilla ne conviennent pas, il ne pousse pas. Ce nest pas une garantie de chaque essence sur chaque île. Aucun cœur de Creaking nest ajouté par larbre pâle utilisé ici.

Les affleurements mêlent des nappes cohérentes de pierre, andésite, diorite et granite. Les berges conservent leur excavation limitée et leurs dépôts de 3 à 5 blocs, avec des patches de sable, gravier, argile et roche. Les plantations de woodland_groves évitent les sources, leurs exutoires et les niches de lave. Les décorations vanilla conservent leurs placements ; le traitement unique après génération peut rouvrir la seule bouche de source déclarée si une plante lobstrue. Le soufre reste une matière rare des profondeurs ; les grands bassins et sources vanilla du biome Sulfur Caves ne sont pas activés.

Les anciens petits filons souterrains de charbon, fer et cuivre étaient peu susceptibles datteindre les surfaces hautes ; leur réglage écartait aussi une partie des blocs voisins de lair. Les nouvelles features woodland_ore_* utilisent des tailles vanilla limitées (size=6 pour le charbon, size=5 pour fer/cuivre), sans garantir ce nombre de blocs produits par filon, autorisent cette exposition et ajoutent des essais aléatoires sur les roches de surface et les corniches rencontrées depuis lair. Elles remplacent seulement les roches naturelles reconnues par Minecraft, dont andésite, diorite et granite. Les autres minerais et les anciens générateurs gardent leurs réglages ; aucune quantité cible nest réinjectée après mesure.

La version et les graines de validation sont consignées dans Validation.