Files
koka c576d655ae
Build Sanctuary / build (push) Canceled after 0s
Record alpha.14 release and existing Prism update
2026-09-09 14:02:47 +02:00

22 KiB
Raw Permalink Blame History

Alpha.14 — Lost City et expansions

État : alpha.14 vérifiée, publiée et installée dans la même instance Prism Mac. check build assemblePack passe sur les sources finales avec les 8 GameTests requis, le 9 septembre 2026 à 13 h 57 min 48 s. La création de quartiers, leur réouverture et la reprise différée du vide passent également dans leurs mondes de développement distincts. Le JAR, le MRpack et le ZIP Prism sont vérifiés. La release immuable correspond au commit source 1c5c2c2, le canal packwiz au commit dabf57e. Deux synchronisations isolées puis deux dans la même instance Prism passent, avec 713 fichiers personnels et réglages suivis conservés. Le reçu de livraison consigne les artefacts, leur empreinte et la sauvegarde ciblée. Les résultats des alpha.12, 13 et 13.1 restent historiques. Ticket WG-17.

Les smokes des sources finales passent sous Gradle et Java 25 : LostCityRendererSmoke pour les 17 types, dont confinement et accès des piscines dans quatre orientations, parcs distincts et sous-sols ; ExpansionJournalSmoke, dont limmuabilité du jeton de reprise du vide ; et le contrôle de placement spatial de génération 14. LostCityPlannerSmoke passe également. Ses 32 graines sur terrain contrôlé couvrent tous les types de lots ; un témoin distinct de faille couvre le pont, soit les 17 types. Le test de pente ascendante et descendante protège la sélection des lots contre le rejet asymétrique des terrains montants. Sur lancien planificateur compilé, ce nouveau test échouait avec 0 contre 9 lots ; le planificateur corrigé satisfait l’égalité des deux sens et le minimum de cinq lots demandé par le test. Cette comparaison provient de la sortie dexécution ; aucun journal séparé na été conservé.

:sanctuary:expansionVoidCertificateSmoke passe aussi sous Gradle : champs NBT natifs obligatoires, types stricts, refus des contenus, preuves de chunks absents et stabilité du certificat face aux seuls compteurs volatils. Ces contrôles unitaires sont complétés par les essais moteur consignés plus bas.

Périmètre et création dun monde

Minecraft 26.3-pre-2, Fabric et Java 25, selon les versions épinglées dans gradle.properties. La livraison cible 0.1.0-alpha.14 pour le mod et le pack.

Créer un nouveau monde, type Sanctuary, puis le bouton natif Personnaliser : Petit 512, Moyen 724 par défaut ou Grand 1 024 blocs de diamètre nominal. La hauteur reste de 384 blocs. Le codec public est sanctuary:island_v14 ; les racines et les extensions de ces mondes portent la génération 14. Le journal est séparé : data/sanctuary-world-v14/expansions.json, schéma 1.

Les mondes de générations 12 et 13 conservent leurs codecs, paramètres et journaux. Ils ne reçoivent pas Lost City par conversion et ne changent pas de générateur au chargement. Aucune sauvegarde personnelle ne doit être utilisée pour les essais ci-dessous.

Lost City

Les quartiers sont composés par du code Sanctuary original. Une poche urbaine peut être retenue sur l’île initiale ; les extensions de profil lost_city recherchent également des emplacements. Le biome suit les parcelles acceptées en surface et laisse les biomes de cavités profonds. Une île peut ne fournir aucun site convenable : la ville et ses différents types ne sont pas garantis.

Type Aménagement distinctif
Rue Chaussée, bordures de pierre lisse et variations de hauteur accessibles
Pont Tablier et garde-corps au-dessus dune courte faille, appuis naturels aux deux extrémités
Parc boisé Chemins croisés, arbres et bancs
Jardin Haies basses, parterres fleuris et allées
Aire de jeux Sable, portique de balançoire, plate-forme et petit toboggan
Parc mémorial Cour, monument de pierre et bancs
Place Pavage et fontaine sèche
Marché Étals, auvents sobres et réserves
Parking Places marquées, poteaux, garage souterrain si la roche le permet, sinon en surface
Excavation Fouille ouverte, fondations inachevées, barrières et escalier
Piscine abandonnée Bassin de trois couches deau, marches immergées et plage minérale
Immeuble dappartements Étages, chambres, coin cuisine et escaliers
Hôtel Réception, couloir central et chambres séparées
Bibliothèque Rayonnages, tables de lecture et pupitre
Restaurant Cuisine équipée et tables, espace de service à l’étage
Caserne Dortoirs et réserves
Hall Grande salle, estrade, rangées de sièges et balcon

Pierre, pierre lisse et briques de pierre dominent ; briques fissurées ou moussues, andésite, vitres, détails de fer et intérieurs en chêne noir complètent la palette. Lusure est déterministe. Les accès et les escaliers restent distincts des brèches de façade et de toiture. Le butin des coffres utilise des tables vanilla différées ; aucune génération de spawner ou de villageois.

Le spawn naturel de monstres du biome et des pièces de structure est limité aux zombies vanilla. Lumière, difficulté, limites de population et distance aux joueurs continuent de sappliquer ; une ruine nimplique pas la présence immédiate dun groupe de zombies. Les classes de zombies spécifiques restent pour la bêta.

Le placement vérifie la roche sous toute lemprise. Un sous-sol, une piscine ou une excavation exige une continuité jusqu’à huit blocs sous le plancher de référence. À défaut, le parking reste en surface et piscine ou excavation se replient en parc. Les piscines gardent un fond et des parois continus ; les ponts ne construisent pas de piliers jusquau vide. Les volumes protégés de lhydrologie et les sites insuffisamment supportés sont écartés.

Commandes dessai et placement des expansions

Les commandes restent des outils opérateur, accessibles avec les permissions adéquates. Elles nutilisent pas encore la progression ou les ressources.

/sanctuary expansion quick east lost_city 256 natural
/sanctuary expansion list
/sanctuary expansion visit island_1
/sanctuary expansion preview quartier sanctuary northeast lost_city 128 natural
/sanctuary expansion create quartier sanctuary northeast lost_city 128 natural
/locate structure sanctuary:lost_city

island_1 est lexemple du premier identifiant libre créé par quick ; utiliser lidentifiant réellement indiqué par la commande. visit attend une île prête. preview examine un emplacement sans lactiver. resume <id> sert à reprendre une réservation interrompue. create choisit aussi son parent explicitement. La recherche exacte /locate structure sanctuary:lost_city retrouve les quartiers Sanctuary admissibles ; elle peut échouer si aucun quartier ne se trouve dans sa portée de recherche. Un profil lost_city ne garantit pas un terrain suffisamment adapté pour accepter un quartier.

Les diamètres dexpansion possibles dans les mondes 14 sont 64, 128, 256, 512 et 1 024. Avec quick east ou quick east lost_city, le diamètre est tiré de manière reproductible à partir de la graine et de lidentifiant :

Diamètre Poids du tirage
64 40 %
128 30 %
256 18 %
512 9 %
1 024 3 %

Ces poids décrivent la distribution du tirage, pas un quota de cinq îles à reproduire sur chaque serveur. Une taille explicite remplace le tirage. Les recherches demplacement ne changent ni cette taille ni la graine retenue. Les mondes historiques gardent leurs tailles et comportements antérieurs.

La direction choisit un secteur de 45° autour du parent. La recherche essaie dabord des positions proches, puis des couronnes plus éloignées, avec un nombre borné de candidats. Les centres restent alignés sur les chunks. Les emprises circulaires incluent le terrain, la marge de décoration et une garde empêchant deux îles de posséder le même chunk de coin. Le voisinage lu par les étapes de génération nest pas intégralement réservé comme terrain. Une distance minimale entre centres reste possible comme dernier argument.

Contrat de reprise différée du vide

Ce mécanisme concerne uniquement les nouveaux mondes de génération 14 et une expansion explicitement demandée. Les générations 12/13 gardent leur refus des chunks déjà générés, même vides. Il ne permet pas la régénération générale dune île, dun terrain occupé ou dune construction.

  1. Examiner toute lemprise d’écriture et produire, pour chaque chunk existant, une preuve stricte quil est FULL, entièrement vide et vierge. Les positions encore absentes sont également certifiées, y compris leurs stockages dentités et de POI. La simple absence de bloc visible ne suffit pas : entités persistées, chargées ou en attente, POI, ticks, événements de blocs et autres indices de contenu font partie des refus.
  2. Lier le certificat à lidentité exacte de lexpansion et à un jeton immuable dans le journal. Une preuve isolée sans réservation correspondante ne donne aucune autorisation ; un changement de paramètres ou une preuve manquante doit faire échouer la reprise.
  3. Enregistrer la réservation et demander de fermer puis rouvrir le monde. Lexpansion reste différée pendant la session ayant établi la preuve.
  4. Au chargement suivant, vérifier le journal, le certificat et les données actuelles sur toute lemprise avant toute préparation. Une divergence bloque la reprise avant l’écriture des positions absentes. Seuls les chunks explicitement certifiés peuvent être réutilisés par cette expansion.

La preuve lit le format natif exact de Minecraft 26.3-pre-2 : l’état dair sans propriétés s’écrit comme la chaîne minecraft:air dans la palette ; sa forme composée autorisée utilise le champ id. Lancien champ Name ne suffit pas à certifier un chunk. Les types NBT, sections, palettes, heightmaps et données annexes restent contrôlés strictement ; une métadonnée inconnue provoque un refus. Seuls les compteurs temporels et caches de lumière valides sont exclus de lempreinte sémantique du vide.

Il ne faut supprimer ni certificat, ni journal, ni dossier de région pour débloquer une commande. Labsence de preuve est un refus, pas une invitation à reconstruire lhistorique. Les sauvegardes personnelles ne sont pas ouvertes par les tests ou par la mise à jour packwiz.

Protocole et preuves attendues

Un seul processus Gradle ou Minecraft de développement à la fois. Les suites de création repartent de mondes ignorés sous mods/sanctuary/build/run/. Un scénario de réouverture doit suivre sa création sans intercaler un test qui effacerait ce monde de développement.

./gradlew :sanctuary:lostCityPlannerSmoke :sanctuary:lostCityRendererSmoke --console=plain
./gradlew check build assemblePack -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain
./gradlew :sanctuary:runGameTest -PsanctuaryLostCityTests=true -PsanctuaryTestDiameter=724 -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain
./gradlew :sanctuary:runGameTest -PsanctuaryLostCityTests=true -PsanctuaryExpansionReload=true -PsanctuaryTestDiameter=724 -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain

La suite de reprise du vide repart ensuite dun autre monde de développement neuf. La commande de réouverture est exécutée deux fois de suite :

./gradlew :sanctuary:runGameTest -PsanctuaryVoidReuseTests=true -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain
./gradlew :sanctuary:runGameTest -PsanctuaryVoidReuseTests=true -PsanctuaryExpansionReload=true -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain
./gradlew :sanctuary:runGameTest -PsanctuaryVoidReuseTests=true -PsanctuaryExpansionReload=true -PsanctuaryTestSeed=0 -PsanctuaryResourceSurvey=off -PsanctuaryDensityMaps=false --console=plain

Résultats moteur — graine 0

Le 9 septembre 2026, la création sur les sources finales passe à 13 h 55 min 15 s dans le processus 19155 (build/alpha14-city-final-create.log, deux tests requis réussis, commande terminée en 2 min 24 s). La réouverture du même monde de développement passe à 13 h 55 min 58 s dans un second processus, 19372 (build/alpha14-city-final-reload.log, deux tests requis réussis, 33 s). Ces durées sont celles des commandes Gradle complètes, pas des mesures de chargement en jeu ou de performance multijoueur.

Les rapports locaux ignorés sont mods/sanctuary/build/run/gameTest/diagnostics/lost-city-alpha14-seed-0.json et lost-city-alpha14-reload-seed-0.json dans le même dossier. Leurs copies sont conservées dans build/alpha14-evidence/ avant le nettoyage du monde de développement. Le monde racine est de diamètre 724, graine 0, codec sanctuary:island_v14.

Trois extensions de diamètre 256 ont été examinées en lecture seule :

Candidat Graine de lextension Quartiers admissibles
city_test 7890860792428309400 0
city_harbor -1594320136210322067 0
city_gardens 6666275329838981856 1

Seule city_gardens a ensuite été activée, à lest, centre (2032, 624). Sa préparation a terminé 418 chunks FULL. Linspection urbaine ci-dessous couvre les chunks des quartiers, pas la totalité de cette préparation.

Site généré Parcelles sauvegardées Chunks FULL inspectés Coffres non ouverts à butin différé
Île initiale 26 : appartement, hôtel, bibliothèque, marché, parc boisé, mémorial et 20 rues 26 4
city_gardens 12 : appartement, parc boisé et 10 rues 13 1

Les deux quartiers possèdent leurs références de structure natives ; la recherche native retrouve respectivement (-49, 253, 13) et (2012, 229, 621). Les intérieurs traversables et les tables de spawn limitées aux zombies sont contrôlés. Cela ne garantit pas des zombies visibles de jour. La couverture des 17 types dans quatre orientations provient de 68 rendus témoins indépendants ; elle ne signifie pas que cette graine contient tous les types dans ses quartiers naturels.

Linspection native des bâtiments contrôle également quaucun minerai ne remplace la maçonnerie dans leurs volumes à partir du plancher. Cette preuve concerne les bâtiments effectivement générés et inspectés ; les minerais du terrain sous les fondations restent possibles.

Une piscine native isolée, indépendante du tirage des quartiers, conserve 189 cellules deau, ses marches et son confinement après lexécution dun tick deau. La réouverture conserve les mêmes 189 cellules et les marches ; elle nexécute pas un second tick témoin.

Dans le second processus, les 38 pièces natives, les 5 coffres non ouverts, le bloc dor témoin à (-61, 250, 11) et le journal sont conservés. Lempreinte du journal contrôlé est 38e4bc1b2e493628d1e5d1775250c0bc48821bf49d025df3c37159fcff5801ba. Ces essais utilisent uniquement un monde de développement ignoré, sans ouvrir de sauvegarde personnelle.

Reprise du vide — création et deux réouvertures

Les trois exécutions Minecraft, sur la graine 0, génération 14, passent le 9 septembre 2026 :

Étape Journal local Résultat et durée de la commande
Preuves et réservations build/alpha14-void-create.log Deux tests requis réussis à 13 h 43 ; 41 s
Première réouverture build/alpha14-void-reload.log Deux tests requis réussis à 13 h 45 ; 1 min
Deuxième réouverture build/alpha14-void-second-reload.log Deux tests requis réussis à 13 h 46 ; 29 s

Les rapports sont void-reuse-before-reload.json, void-reuse-after-reload.json et void-reuse-second-reload.json, sous mods/sanctuary/build/run/gameTest/world/. Ce sont des preuves locales à conserver avant le nettoyage du monde de développement.

La première expansion, void_loaded, couvre 77 chunks FULL vides déjà chargés. La seconde, void_saved, couvre un chunk FULL vide uniquement stocké et 76 positions absentes. Ce dernier scénario emploie une copie NBT native de chunk vide, déplacée uniquement pour constituer le témoin dans ce monde jetable. Chaque réservation reçoit son jeton durable propre et reste différée, sans publication dans le générateur pendant la session initiale.

Quatre témoins indépendants, chacun contrôlé vide avant modification, prouvent le refus dun bloc, dun coffre avec son entité de bloc, dune entité vivante enregistrée et dun tick de bloc programmé. Une métadonnée NBT étrangère ajoutée après certification fait également échouer la vérification globale : lempreinte SHA-256 du fichier de région et le contenu NBT modifié restent identiques après ce refus. Le test restaure ensuite son témoin vide pour poursuivre le scénario positif.

À la première réouverture, les deux expansions atteignent 154 chunks FULL, chacun conservant le marqueur de son jeton exact, avec 128 sections non vides. Un bloc dor témoin est alors posé à (6080, 376, 1264). À la deuxième réouverture, il est préservé : les 154 chunks FULL marqués et 129 sections non vides sont retrouvés. Ce passage contrôle donc aussi quune reprise terminée ne réinitialise pas les blocs ajoutés ensuite.

Une réouverture supplémentaire passe à 13 h 48, avec deux tests requis réussis en 37 s (build/alpha14-void-final-reload.log). Elle contrôle explicitement la lumière native terminée (isLightCorrect) sur les 154 chunks et 32 échantillons de biomes hors the_void à lintérieur des extensions. Le bloc dor et les 129 sections non vides sont toujours conservés. Ce dernier rapport est copié hors du monde de test dans build/alpha14-evidence/void-reuse-second-reload.json pour survivre à son nettoyage. Les 32 échantillons ne constituent pas un relevé exhaustif de tous les biomes des extensions.

Vérification finale du build et des artefacts

./gradlew check build assemblePack passe en 1 min 34 s : 40 tâches, dont 33 exécutées et 7 à jour. Le journal est build/alpha14-check-build-pack.log. Les huit tests moteur requis réussissent ; le témoin hydrologique de graine 0 contrôle 125 chunks FULL, 5 923 blocs deau conservés et 1 800 ticks de fluides. La même suite vérifie la sérialisation des tailles 512 / 724 / 1 024, le défaut Moyen et le codec historique de génération 13.

Le smoke du journal valide aussi la politique de synchronisation de dossier Windows par simulation, ainsi que les échecs de stockage après remplacement. Ce résultat ne constitue pas une exécution native sous Windows.

build/verify-alpha14-artifacts.py valide les versions alignées, lindex packwiz, le JAR de production sans classes de test, son inclusion dans le MRpack et le ZIP damorçage Prism. Le SHA-256 du JAR sanctuary-0.1.0-alpha.14.jar est :

1c517a13e1151501c6f4974d1bc00faedf67aaecd9bf58f34ac4a655d09dc6ef

Ces vérifications portent sur les artefacts locaux. La publication du canal, les installations packwiz isolées et la synchronisation de linstance Prism restent à consigner.

Contrôle Preuve attendue État de livraison
Géométrie et fondations Déterminisme, budget de colonnes, sites protégés, certificat de roche et ponts Smoke Gradle réussi sur les sources finales
Rendu des 17 types Quatre orientations, limites des pièces, parcours vers les étages, lits complets, accès aux sous-sols et piscine contenue Smoke Gradle réussi sur les sources finales
Placement des expansions Cinq tailles, tirage stable, huit secteurs, séparation et garde aux coins Smoke Gradle réussi sur les sources finales
Structures dans Minecraft Quartier initial et extension Lost City réellement générés, références natives et coffres à butin différé Réussi, graine 0 : 38 pièces et 5 coffres
Rechargement dans un second processus Journal et structures identiques, butin non recréé, bloc témoin de joueur conservé Réussi sur les sources finales, graine 0, processus 19372
Protection de la maçonnerie Aucun minerai dans les volumes des bâtiments à partir de leur plancher Réussi sur les quartiers natifs inspectés, graine 0
Eau après ticks moteur Piscine retenue et accès après écoulement, sans fuite extérieure Réussi sur piscine native isolée : 189 cellules et marches conservées après tick puis réouverture
Certificat de vide Schéma NBT strict, refus des contenus et preuves de chunks absents Smoke Gradle réussi, complété par les témoins natifs de création
Reprise du vide Refus des contenus et preuves invalides ; reprise bornée après réouverture avec preuve intacte Réussi après deux réouvertures : 154 chunks FULL marqués, bloc dor conservé
Lumière et biomes après reprise Lumière native terminée et remplacement du biome vide à lintérieur des extensions Réussi à 13 h 48 : 154 chunks éclairés correctement, 32 échantillons hors the_void, bloc dor conservé
Sérialisation et stockage Trois tailles, codec historique et erreurs de stockage bloquantes Suite native réussie pour les trois tailles et le codec 13 ; politique Windows simulée réussie
Hydrologie conservée Eau retenue après écoulement moteur Réussi : 125 chunks FULL, 5 923 blocs deau, 1 800 ticks de fluides
Build et pack check build assemblePack réussi avec versions alignées Réussi à 13 h 57 min 48 s, huit GameTests requis, JAR/MRpack/ZIP Prism vérifiés
Distribution Artefacts immuables vérifiés, canal avancé, deux installations isolées et deux synchronisations de la même instance Réussi : source 1c5c2c2, canal dabf57e, 713 fichiers personnels et réglages suivis conservés

Les reçus locaux sont build/alpha14-isolated-validation.json et build/alpha14-prism-validation.json. Aucun essai Windows natif, mesure de FPS ou test de charge multijoueur nest attesté par cette liste. Une validation de géométrie en mémoire ne remplace pas la génération, les ticks et la persistance du moteur.

La publication suit Distribution packwiz et Prism. Elle conserve linstance existante, ses sauvegardes, ses réglages et les mods tiers.