Files
sanctuary-beta/docs/inventory-flow-beta012.md
2026-09-15 09:29:11 +02:00

122 lines
7.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# beta.012 — transferts, barres rapides et progression
Ticket sur `codex/inventory-flow-progression`, demandé le 13 septembre 2026.
Contrat préalable à l'implémentation et à la migration des données.
## Comportement attendu
Les rangées de stockage suivent leur ordre naturel de haut en bas ; la barre
rapide active reste en bas. Tab fait tourner les contenus des rangées acquises,
Maj+Tab inverse le sens. La touche est configurable ; E prend la priorité sur
la fermeture de l'inventaire si elle est choisie, Échap ferme toujours le menu.
Une rotation complète restitue l'ordre initial. Les anciennes cases verrouillées,
l'équipement et les objets du conteneur ouvert ne participent pas à la rotation.
Le serveur valide le menu, sa révision et la capacité ; aucune rotation avec un
objet porté par le curseur. Il envoie ensuite les objets actualisés au client.
Maj-clic regroupe les piles compatibles dans toutes les rangées autorisées avant
d'occuper une case vide. Les priorités des machines restent celles de Minecraft.
Un coffre plein refuse le transfert sans déplacer l'objet dans l'inventaire du
joueur. Les rangées verrouillées restent utilisables uniquement en récupération.
Les fonds des coffres et machines partagent la même origine que leurs cases.
Les six compétences affichent une jauge textuelle et leur valeur/plafond. Le
bouton + apparaît lorsque l'achat est possible. Le bouton exige la permission
opérateur réelle du serveur ; il retire un rang de compétence et rembourse le
prix du dernier achat encore acquis pour cette compétence, enregistré au moment
de l'achat. Les aptitudes ne sont pas retirables. Chaque retrait est historisé.
## Migration et protocole
La progression passe du schéma 6 au schéma 7. Les migrations 15 restent suivies.
Tous les achats, dates, coûts, compétences, aptitudes et cycles restent conservés.
Un compteur `revision` explicite est initialisé avec l'ancienne valeur
`cycle * 64 + history.size()`, puis augmente à chaque achat, retrait et New Game+.
Le passage de cycle conserve aussi le plancher historique `nouveauCycle * 64`
pour reprendre les anciens journaux. Une révision déjà utilisée ne redevient jamais valide après un remboursement.
L'historique enregistre aussi les événements `remove_<compétence>`, avec le coût
exact remboursé. La relecture vérifie les achats encore acquis, leurs plafonds et
chaque remboursement. Le journal est limité à 1 024 événements par cycle ; arrivé
à cette limite, les ajustements sont refusés explicitement. Les retraits
réservent toujours assez de place pour terminer les six compétences et acheter
les aptitudes restantes. Le New Game+ archive
l'ancien historique par le journal de cycle existant et conserve les aptitudes.
Les anciens événements de cycle restent lisibles par les migrations de progression.
Le format des objets `sanctuary:inventory` reste au schéma 1 : les rotations
modifient les emplacements existants, sans inventaire parallèle ni permutation
persistante. Les objets occupés restent récupérables après retrait d'un rang.
Mort ordinaire : progression et historique conservés, règles d'objets inchangées.
Aucun terrain, identité, carte, Demeure, faction ou charge n'est modifié.
Client et serveur beta.012 exigent la capacité `sanctuary:inventory_controls_v1`.
Le snapshot de progression ajoute le droit opérateur et agrandit la borne de son
historique. Les identifiants existants restent stables. Un ancien client est
refusé avant le spawn ; mise à jour des deux côtés requise. Export local MRpack
pour essai, sans publication ni installation personnelle.
## Vérification
La passe graphique `:sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryInventoryClientTests=true` réussit en 1 min 29 s. Elle crée uniquement
un monde de développement neuf, de graine 42. Le journal est
`build/inventory012-client-final.log`.
Elle ouvre les six capacités à deux échelles GUI, puis 24 types de menus natifs.
Une sonde de test contrôle les coordonnées des vrais appels de dessin du fond,
comparées à celles des cases. Les coffres sont remplis de blé et de charbon pour
vérifier leur alignement. Les rangées visibles restent dans l'écran ; les grands
coffres permettent de faire défiler le stockage en conservant la barre rapide.
Les essais client couvrent aussi le déplacement Tab, son inverse, le remplacement
par E, la fermeture par Échap, les + masqués sans XP, l'affichage opérateur, l'achat
d'un cœur puis son remboursement par . L'XP passe de 30 à 29 puis revient à 30,
et le serveur enregistre `remove_vitality`. Les contrôles du protocole opèrent
uniquement sur un serveur Sanctuary ; les serveurs sans Sanctuary restent accessibles.
Captures conservées dans `build/inventory012-evidence/`, notamment le coffre
`0014_sanctuary-beta012-generic_9x3-minimum.png` et la progression opérateur
`0039_sanctuary-beta012-progression-operator.png`.
La validation finale serveur et la vérification de l'artefact sont consignées
ci-dessous. Les tests ne simulent pas 30 clients simultanés.
Les autres mods communautaires ne sont pas inclus dans cet essai des menus natifs.
### Livraison vérifiée
`check build assemblePack` réussit en **4 min 19 s**, avec **49 tests natifs
réussis** et les tests purs. Commande :
```sh
JAVA_HOME=/Users/koka/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home \
./gradlew check build assemblePack \
-PsanctuaryFocusedTests=progression,map,demeure,mining,building,inventory,cycle,inventoryflow
```
Journal : `build/inventory012-delivery-final.log`. Les quatre nouveaux scénarios
vérifient les regroupements à chacune des six capacités, les coffres pleins,
les priorités et restes natifs de 24 types de menus sur huit types d'objets,
les rotations inverses et complètes avec composants et anciennes cases occupées,
les refus de requêtes périmées, l'autorité opérateur et le remboursement exact.
Le coût remboursé et l'historique sont relus depuis la sauvegarde native du joueur.
Les tests de cycle vérifient également l'archivage des retraits au passage de
prestige ; les tests de progression atteignent le budget maximal d'historique
sans empêcher de terminer les six compétences. Les assertions historiques qui
exigeaient de déplacer tout le charbon dans toutes les machines sont remplacées
par la comparaison avec leurs règles natives ; les montures sont conservées
avec un conteneur de test aux dimensions exactes de 26.3-pre-2.
La suite serveur de génération générale n'est pas relancée par la sélection
ci-dessus ; les tests purs de génération inclus dans `check` passent. Aucun
serveur de 30 habitants n'est simulé.
- Export : `build/Sanctuary-beta.012.mrpack`, **2,496,778 octets**.
- SHA-256 : `5d7fa635adb7ea5bf32ef361be95f242090912d52d6209398abeac32ea06f87d`.
- Reçu : `build/inventory012-artifact.json`.
- Archives beta.003011 inchangées ; versions internes, JAR imbriqué Demeure,
ressources d'origine, traductions et index packwiz vérifiés.
- Distribution locale pour essai, sans publication du canal ni installation
dans une instance personnelle.