Initialize Sanctuary Fabric 26.3 prototype and pack
Build Sanctuary / build (push) Canceled after 0s

This commit is contained in:
koka
2026-09-08 03:24:19 +02:00
commit e48de1b400
57 changed files with 3354 additions and 0 deletions
+154
View File
@@ -0,0 +1,154 @@
# 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 :
```text
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.