Files
sanctuary-beta/docs/building-beta009.md
2026-09-15 09:29:11 +02:00

109 lines
6.9 KiB
Markdown

# PROG-02B — Construction et vein building — beta.009
Branche : `codex/progression-vein-building`. Implémentation et export local
vérifiés le 13 septembre 2026 ; parcours graphique encore non validé, voir
ci-dessous. Cible : Minecraft 26.3-pre-2, Fabric et Java 25.
## Contrat préalable de migration
La progression personnelle passe du schéma 3 au schéma 4, en ajoutant
`building: 0`. Les schémas 1 et 2 passent d'abord par leurs migrations strictes
existantes. Les rangs, achats, dates, coûts, aptitudes et révisions sont
conservés sans achat fictif. L'historique accepte sept achats Construction
supplémentaires, soit 37 événements maximum ; chaque rang doit correspondre
exactement à ses achats. Les données invalides sont refusées sans remise à zéro.
La migration est idempotente et conserve l'identifiant `sanctuary:progression`.
La restauration réattache la représentation canonique, ensuite enregistrée par
la sauvegarde Minecraft normale. Mort, reconnexion et redémarrage conservent
les rangs. Aucun New Game+ n'est activé.
Les fichiers de configuration restent au schéma 2 : Construction utilise les
sept `statCosts`, par défaut 1, 2, 4, 8, 16, 32 et 64 niveaux. Aucun changement
des profils, couleurs, Atlas, Demeure, inventaire, génération ou chunks existants.
Client et serveur doivent utiliser beta.009 ensemble. Les versions antérieures
ne lisent pas le schéma 4 ; revenir en arrière exige une sauvegarde antérieure
des données de joueur. Aucun monde personnel n'est ouvert ou modifié ici.
## Contrat de jeu et valeurs d'essai
- Rang 0 : pose Minecraft individuelle. Sept achats débloquent les diamètres
3, 5, 7, 9, 11, 13 et 15 (jusqu'à 225 emplacements dans un plan).
- La portée de visée et d'attaque reste celle de Minecraft. Seul le plan autour
du point de départ s'agrandit ; aucune portée d'attaque supplémentaire.
- Une pose tous les deux ticks en survie ; lots bornés en créatif. Le statut
opérateur en survie n'accorde ni matériaux gratuits ni cadence créative.
- R est la touche commune configurable : avec un bloc en main, aperçu de
construction ; R + clic droit maintenus posent, R + molette règle le diamètre.
R + clic gauche reste le minage. B reste le Blocodex.
- Plan déterminé par la face visée et l'orientation du joueur, ordre du centre
vers l'extérieur. Le serveur recalcule et revalide les cibles, le stock et les
permissions. Relâcher, changer d'objet, ouvrir un menu, mourir, s'éloigner ou
perdre la connexion arrête le geste ; les poses déjà effectuées restent.
- Les poses passent par le placement natif pour les orientations, supports,
collisions, contenus d'objets, consommation, statistiques et traces Demeure.
Aucune récompense pour l'aperçu ou une pose refusée. Les surfaces ne remplacent
pas les blocs occupés et n'ouvrent pas les contenants servant de support.
Une dalle peut être fusionnée par son contexte Minecraft natif.
- Le plan couvre les emplacements dont le support existe déjà, comme le Builder
historique. L'aperçu ne dessine que les poses valides ; il ne coûte aucun objet.
La pile tenue fournit les matériaux, sans réapprovisionnement automatique.
- Portes, lits et plantes doubles gardent la pose individuelle, pour ne pas
modifier une seconde case hors du plan validé. Échafaudages et nénuphars aussi :
leurs placements natifs recherchent une autre cible. Les contextes déplacés
et chunks non chargés sont refusés avant tout placement groupé.
## Vérifications
- `./gradlew :sanctuary:compileGametestJava check build assemblePack -PsanctuaryFocusedTests=progression,map,demeure,mining,building`
**réussi en 3 min 55 s**, avec **28 tests serveur natifs obligatoires réussis**,
dont dix scénarios Construction. Journal : `build/beta009-delivery-complete.log`.
- Les contrôles purs relisent les schémas 1, 2 et 3 et vérifient l'idempotence,
les dates/coûts/rangs conservés, sept achats Construction, plafond et refus
d'un rang sans historique. La configuration reste au schéma 2.
- Les tests serveur vérifient le passage par le placement natif, les six faces,
les quatre orientations, les plans de 225 cases sans doublon, les coûts,
l'absence d'extension de portée, les stocks courts, le créatif, les dalles
simples/doubles/hautes et les escaliers. Les collisions avec un animal,
contenants occupés, droits Fabric, mutation pendant un callback, concurrence,
interruption et expiration du maintien sont couverts. Les statistiques,
Blocodex et contributions Demeure proviennent des poses confirmées.
- Le test de progression sauvegarde/recharge le joueur et copie ses achats,
dont Construction, lors d'une mort ordinaire. Le contrat de reprise est
contrôlé sans ouvrir un monde personnel.
- Le parcours client `Building009ClientChecks` est écrit et compilé : achats
par clic, aperçus 25/9, molette, arrêt, consommation, une seule couche par
geste, reconfiguration et interruption par le Blocodex. **Son exécution
reste non validée** : les deux lancements se sont bloqués avant le monde
dans `Minecraft.<init>` / `SDL_GL_SwapWindow`. Le contrôle de bureau a
confirmé que le Mac était verrouillé. Aucun résultat graphique beta.009
ni capture en jeu n'est revendiqué. Les processus de test ont été arrêtés ;
la valeur VSync du dossier de développement a été remise à sa valeur initiale.
Journaux : `build/beta009-client.log`, `build/beta009-client-retry.log` ;
piles : `build/beta009-client-threads.txt`, `build/beta009-client-retry-threads.txt`.
La sélection des tests serveur est limitée à
`progression,map,demeure,mining,building` ; ce ticket ne revendique pas la
correction des deux anciennes assertions de génération générales.
Référence historique en lecture seule : sélection, plan et session de
construction dans `../26.2/sanctuary`, GPL-3.0-or-later. Les appels natifs sont
vérifiés dans les classes de Minecraft 26.3-pre-2, dont `BlockItem.place`,
`ItemStack.useOn` et `ServerPlayerGameMode.useItemOn`. Le mixin commun contourne
seulement l'interaction du support comme le fait la pose accroupie ; les hooks
Fabric, le placement, les contenus d'objets, coûts et critères Minecraft restent
actifs. La revalidation a lieu après les callbacks et avant l'usage de l'objet.
## Artefact local
- [Sanctuary-beta.009.mrpack](../build/Sanctuary-beta.009.mrpack), **2 360 956 octets**.
- SHA-256 : `efa1ac7974b16e2f6169149518e08ed2bca4371b386b3413850b08618392da21`.
- Reçu : `build/building009-artifact.json` ; somme séparée :
`build/Sanctuary-beta.009.mrpack.sha256`.
- ZIP et JSON vérifiés, identité du JAR construit et du JAR Demeure embarqué,
versions internes, classes/mixins Construction, traductions FR/EN, six icônes
originales, hash Fabric API et index packwiz. Aucune classe de test embarquée.
Les exports beta.003 à beta.008 sont restés strictement identiques.
L'artefact est disponible pour essai local. Le canal packwiz n'a pas été publié
et aucune instance personnelle n'a été synchronisée.