Files
sanctuary-beta/docs/migration-26.2.md
T
koka e48de1b400
Build Sanctuary / build (push) Canceled after 0s
Initialize Sanctuary Fabric 26.3 prototype and pack
2026-09-08 03:24:19 +02:00

10 KiB
Raw Permalink Blame History

Réutiliser la génération Sanctuary 26.2

Audit de source du 8 septembre 2026, effectué en lecture seule dans le dépôt voisin ../26.2, à la révision da61a3b1ec4fe161a9b5ffaab0fa3111238a35b6 (pack 26.2.0-alpha.242). Les chemins ci-dessous sont relatifs à ce dépôt historique. Ce document décrit ce qui existe dans 26.2 ; il ne prétend pas que ces éléments sont déjà portés dans Sanctuary Beta.

Conclusion pour le premier lot

La base de terrain est réutilisable : du bruit Minecraft lié à la seed, une enveloppe verticale d'îles flottantes, puis des masques de densité. En revanche, la génération 26.2 n'est pas un monde initialement vide avec des continents déverrouillables. L'archipel extérieur est généré automatiquement au-delà d'un petit anneau de vide. Le premier lot doit donc borner explicitement l'île centrale et garantir un départ sûr, avant de construire le système persistant d'expansion collective.

Carte des sources récupérables

Élément Source 26.2 Réutilisation
Bruit de terrain sanctuary/src/main/resources/data/sanctuary/worldgen/density_function/base_3d_noise.json minecraft:old_blended_noise, dépendant de la seed ; aucun bloc propre au mod.
Enveloppe flottante sanctuary/src/main/resources/data/sanctuary/worldgen/density_function/floating_archipelago.json Gradients verticaux combinés au bruit précédent.
Composition finale sanctuary/src/main/resources/data/sanctuary/worldgen/density_function/final_density.json Référence pour l'interpolation et le mélange ; remplacer le comportement extérieur infini.
Masques et relief sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/worldgen/SanctuaryDensityFunctions.java AnnularVoidMask, TectonicMassifDensity, TectonicVoidDensity ; séparer les fonctions utiles du code inactif.
Réglages de dimension sanctuary/src/main/resources/data/sanctuary/dimension_type/sanctuary.json Plage verticale Y=0383, lumière et ciel ; vérifier les codecs de la version cible.
Réglages de bruit sanctuary/src/main/resources/data/sanctuary/worldgen/noise_settings/sanctuary.json Air comme fluide par défaut, aquifères désactivés, niveau marin -64 ; ne pas importer ses règles de surface en bloc.
Preset sanctuary/src/main/resources/data/sanctuary/worldgen/world_preset/sanctuary.json Générateur minecraft:noise, biomes minecraft:multi_noise ; garder seulement les dimensions nécessaires au lot.
Recherche du spawn sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/world/SanctuarySpawn.java Recherche d'un sol naturel autour de l'origine ; corriger les limites décrites plus bas.
Lacs sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/worldgen/feature/SanctuaryWaterLakeFeature.java Extension de LakeFeature, avec quelques cannes à sucre ; utilisable dans un lot hydrologie.
Ravins sanctuary/src/main/resources/data/sanctuary/worldgen/configured_carver/tectonic_ravine.json Configuration de carver ; revalider sur des îles finies.
Prévisualisation sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/client/worldgen/SanctuaryBiomePreviewScreen.java Référence ultérieure pour visualiser la seed et la distribution des biomes.

Le graphe actif 26.2 est approximativement :

old_blended_noise -> floating_archipelago + central_halo_mask
                                           |
                                           max(tectonic_massifs)
                                           |
                                           min(void_basins)
                                           |
                           blend_density -> interpolated -> squeeze

IslandSpawnDensity et RadialVoidMask restent enregistrés en Java mais ne font plus partie du graphe actif. L'ancienne forme sculptée utilise des bruits de hachage sans seed de monde passée à la fonction ; elle n'est pas un substitut fidèle au terrain procédural actuel.

Terramix et Black Desert

Dans ce dépôt, Terramix est le nom du catalogue natif de 100 biomes d'Another World, répartis en dix familles de dix. Ce n'est pas une dépendance Fabric externe à ajouter automatiquement au pack.

  • Catalogue auteur : anotherworld/src/main/resources/data/anotherworld/sanctuary_biome_catalog.json.
  • Lecture et familles climatiques : anotherworld/src/main/java/fr/koka99cab/sanctuary26/anotherworld/registry/SanctuaryBiomeCatalog.java.
  • Fabrication des biomes, végétations et géologies : anotherworld/build.gradle, notamment la section commençant par « Terramix is a native Sanctuary catalogue ».
  • Mélange avec les biomes vanilla : anotherworld/src/main/java/fr/koka99cab/sanctuary26/anotherworld/mixin/MultiNoiseBiomeSourceParameterListPresetMixin.java.
  • Black Desert est un biome historique distinct, anotherworld:black_desert, avec du sable noir et une géologie sombre. Ses règles de surface se trouvent aussi dans sanctuary/.../worldgen/noise_settings/sanctuary.json.

Le port du seul JSON de bruit complet échouerait sans les blocs, tags et biomes anotherworld:* qu'il référence. Préférer d'abord une surface et des biomes vanilla, puis un lot dédié qui préserve les identifiants du catalogue. Le mixin climatique historique modifie le preset Overworld global : son périmètre doit être redéfini pour éviter d'affecter d'autres mondes par simple installation du mod.

Le changelog indique que Terralith a été retiré en alpha.143 et remplacé par le catalogue natif en alpha.145. Ne pas confondre ces deux noms ni restaurer les anciennes ressources Terralith lors d'un port de Terramix.

Limites et défauts à traiter

  1. L'extérieur n'est pas vide. Le masque annulaire actif protège un rayon nominal de 96 blocs, entre dans le halo sur 160 blocs et quitte celui-ci à partir de 256 blocs sur 96 blocs, avec une distorsion de 32 blocs. Il retrouve donc l'archipel normal vers 352 blocs nominalement. Ce masque ne borne pas un monde.
  2. Aucune activation de continents trouvée. La recherche des sources Java Sanctuary, Another World et Master Key n'a trouvé ni registre de continents déverrouillés, ni commande d'expansion directionnelle. Les « continents » du changelog désignent le relief tectonique naturel. Un format de sauvegarde, des limites de taille et une politique pour les chunks déjà explorés restent à concevoir.
  3. Spawn non garanti. SanctuarySpawn ne cherche que dans un rayon de trois chunks autour de l'origine. En cas d'échec il conserve la suggestion vanilla, sans créer de sol sûr. Il sélectionne à nouveau le spawn global à chaque SERVER_STARTED, ce qui peut écraser le choix d'un administrateur.
  4. Reliefs extérieurs très éloignés. Les massifs et bassins de vide actifs ont protected_radius=10000 et protection_fade=2000. Les copier autour d'une petite île ne produit donc pas de montagne proche du départ.
  5. L'eau n'est pas une hydrologie continentale. Le réglage emploie de l'air et désactive les aquifères. Les lacs sont des features ponctuelles. Aucun réseau de rivières flottantes ou d'océans suspendus contrôlés n'a été identifié dans les sources examinées.
  6. La densité seule n'assure pas le vide final. Les carvers, décorations et structures constituent des étapes distinctes. Vérifier les chunks terminés, y compris aux frontières de l'île, et borner aussi les placements qui pourraient traverser la limite.
  7. Ordre des features sensible. Le changelog alpha.105 rapporte un blocage « Loading terrain » corrigé en ordonnant la végétation lush de plafond avant celle au sol. Revalider les dépendances entre features lors du port des biomes.

Ces constats sont issus de la lecture du code et du changelog. Aucun serveur 26.2 n'a été lancé ni modifié pendant cet audit.

Historique exploitable

L'historique Git local n'est pas shallow, mais commence par l'import 94644a2 (« Import Sanctuary 26.2 collaboration workspace »). Le générateur principal actuel est déjà présent dans cet import : les étapes plus anciennes ne correspondent donc pas à des commits individuels disponibles dans ce dépôt. Leurs descriptions restent dans CHANGELOG.md et pack/migrations/.

Repère Intérêt
Alpha.104106 Introduction des massifs, lacs, ravins et hauteur de dimension 384.
Alpha.108111 Expériences de relief extrême, puis réduction des plateaux et pentes.
Alpha.116120 Protection centrale, passage à l'île procédurale et réduction du halo.
Alpha.143148 Retrait de Terralith, Terramix natif, correction des transitions et prévisualisation.
Alpha.189 Provinces climatiques à deux échelles, points MultiNoise vanilla conservés.
Commit 9c09664 Port de l'île Indev finie pour la dimension Alpha ; sujet distinct du monde Sanctuary.

Les profils extrêmes sont réellement présents dans sanctuary/design/worldgen/alpha108_mega_tectonics/ et sanctuary/design/worldgen/alpha110_steep_massifs/. Les chemins backups/ cités par le changelog sont des repères historiques ; leur disponibilité n'a pas été vérifiée.

Provenance et licences déclarées

Le LICENSE racine et le manifeste Fabric Sanctuary déclarent GPL-3.0-or-later. Garder cette provenance avec les sources effectivement reprises. La dimension Alpha possède en plus une notice BSD 3-Clause pour l'algorithme Indev dans sanctuary/THIRD_PARTY_NOTICES.md ; elle concerne ce port spécifique.

anotherworld/THIRD_PARTY_NOTICES.md signale des textures Flower Cows dont la permission de redistribution publique est à clarifier. Elles ne sont pas nécessaires au générateur minimal et ne doivent pas être importées avec un lot de terrain.

Lots proposés après l'initialisation

  1. Île principale finie dépendante de la seed, vide extérieur, spawn durable et sûr, preset explicite ; validation sur plusieurs seeds et redémarrage serveur.
  2. Modèle persistant de continents : identifiant, seed, centre, orientation, taille, état verrouillé/déverrouillé et version de génération ; définir le traitement des chunks vides déjà visités avant toute commande d'activation.
  3. Hydrologie fermée et reliefs : bassins, lacs, rivières, cavités et ravins ; vérifier les bordures de chunks, l'écoulement et la conservation des constructions.
  4. Terramix et Black Desert avec leur géologie, leurs ressources et une distribution climatique mesurable ; puis structures procédurales et continents thématiques.