# Vérifier Sanctuary Utiliser Java 25 et les dépendances épinglées dans `gradle.properties`. ```sh ./gradlew check build assemblePack --console=plain ``` `check` inclut les tests GameTest. Pour un diagnostic ciblé de la génération seule, utiliser `./gradlew :sanctuary:runGameTest --console=plain`. ## Tests de forme La tâche `:sanctuary:worldgenSmoke`, incluse dans `check`, vérifie les invariants de l'enveloppe de l'île : noyau solide, limite extérieure, hauteur et stabilité de la fonction géométrique. Elle complète les tests en jeu ; elle ne charge pas à elle seule les ressources de génération de Minecraft. ## Tests dans le moteur Minecraft `runGameTest` démarre le serveur de test headless officiel de Fabric dans `mods/sanctuary/build/run/gameTest/`. La tâche `cleanGameTestWorld` supprime uniquement son monde jetable avant chaque exécution afin de générer des chunks neufs. Il ne déploie rien dans un serveur ou une installation de jeu personnels. La configuration garde `eula=false` : aucun fichier d'acceptation n'est écrit par Loom. Fabric dispose d'un chemin de démarrage propre à ses tests automatisés. Le source set `gametest` est un mod de test séparé, exclu du JAR Sanctuary distribué. Deux adaptations y sont nécessaires, vérifiées contre les classes Minecraft `26.3-pre-2` : - `GameTestServer` sélectionne normalement `minecraft:flat_all_dimensions`. Le mixin de test sélectionne directement le preset de production `sanctuary:sanctuary`, sans recopier ses JSON. - Le framework désactive normalement les structures. Le test les active dans `WorldOptions` pour examiner les chunks après toutes les étapes de génération. La seed du serveur de test reste `0`. Le framework déplace aussi le spawn vers une grille de tests située loin du centre. Le test capture donc le spawn juste avant ce déplacement, après l'initialisation normale du monde, et examine les coordonnées absolues de l'île. Les trois tests vérifient : 1. Le vrai générateur Sanctuary est chargé, le noyau de l'île existe et le spawn collectif possède un sol plein de 3×3 blocs avec deux blocs libres et secs. 2. Douze chunks entièrement générés sont vides dans les quatre directions, juste après l'enveloppe de décoration puis à environ 512 et 4 096 blocs. Cela couvre notamment l'ancien retour automatique de l'archipel au loin. 3. La densité du datapack réellement chargé, compilée par `RandomState`, est reproductible pour la seed `0` et change pour la seed `8675309`. Le chargement du serveur valide également les codecs et les références des registres de biomes, densités, réglages et presets. Un échec de chargement ou un test obligatoire en échec doit faire échouer la tâche Gradle. Le framework et les hooks de test sont spécifiques à la version épinglée. Lors d'une mise à jour Minecraft, vérifier ces hooks avant de conclure que les tests exercent toujours le preset de production. La vérification explicite du générateur dans le premier test empêche un résultat positif sur un simple monde plat. Référence du workflow : [tests automatiques Fabric](https://docs.fabricmc.net/develop/automatic-testing). Les signatures propres à `26.3-pre-2` ont été vérifiées dans les dépendances locales, car la documentation publiée vise actuellement `26.2`. ## Validation de la fondation — 8 septembre 2026 Commande `./gradlew check build assemblePack --console=plain` réussie en **22 secondes** sur Java **25.0.3**, Minecraft **26.3-pre-2**, Fabric Loader **0.19.5**, Fabric API **0.160.0+26.3** et Loom **1.17.20**, pour Sanctuary **0.1.0-alpha.1**. - Quatre tests requis exécutés par le framework, dont les trois tests Sanctuary ci-dessus : tous réussis en **5,040 secondes**. - Monde de test neuf, seed **0**, structures activées et spawn initial observé à **(0, 118, 0)**. Les douze chunks extérieurs inspectés au statut `FULL` sont vides. - Densité compilée reproductible pour **0**, différente pour **8675309** ; seuls les chunks du monde de seed **0** ont été générés entièrement. - `WorldgenSmoke`, vérification des versions et empreintes packwiz, compilation du JAR et assemblage dans `build/packwiz/` réussis. - Le JAR `mods/sanctuary/build/libs/sanctuary-0.1.0-alpha.1.jar` ne contient aucune classe ni configuration de mixin GameTest. Les preuves locales sont dans `mods/sanctuary/build/run/gameTest/logs/latest.log` et `debug.log` ; elles restent ignorées par Git et sont remplacées lors des prochains tests. Les vérifications manuelles ci-dessous n'ont pas été effectuées dans cette livraison. ## Vérifications manuelles restantes - Créer un monde avec le preset Sanctuary dans le client et évaluer visuellement la côte, les trous, les surplombs, la végétation et la lecture du vide. - Rejoindre à plusieurs joueurs, mourir et réapparaître ; les tests headless ne simulent pas de connexion client ni les offsets de réapparition des joueurs. - Modifier le spawn administrateur, arrêter puis recharger le monde et vérifier sa conservation. Le test automatique couvre le premier démarrage, pas un cycle de sauvegarde et de redémarrage complet. - Explorer plusieurs seeds dans le client. Les tests compilent deux seeds mais ne génèrent des chunks complets que pour la seed `0`, et leur échantillonnage extérieur ne constitue pas une inspection exhaustive de toutes les coordonnées. - Tester les resource packs, shaders et mods communautaires après leur ajout et vérification de compatibilité avec la version exacte du pack.