Compare commits

...
Author SHA1 Message Date
koka daf36fdeac Adapt solar volume density to weather for beta.138
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 01:24:13 +02:00
koka 7f576d14d9 Record beta.137 release and verified Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 01:01:59 +02:00
koka 2d7072b8a8 Add native solar volume rendering for beta.137
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 01:00:20 +02:00
koka 0781cbd964 Record beta.136 publication and preserved Prism state
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 00:28:20 +02:00
koka 71296a9cfb Add soft celestial lens flare for beta.136
Build Sanctuary / build (push) Canceled after 0s
2026-09-18 00:27:14 +02:00
koka 07d09c8508 docs: record beta.135 release and verified Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 23:48:14 +02:00
koka 7fada570ef fix: stabilize close-range SSGI and update shader defaults for beta.135
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 23:46:29 +02:00
koka b7cf4bc294 docs: record beta.134 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 22:56:48 +02:00
koka fc4a0cb68e feat: add optional PBR and filter SSGI in beta.134
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 22:54:38 +02:00
koka 17172fd18b docs: record beta.133 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 22:19:32 +02:00
koka 216d3f75b5 feat: make SSGI color bounce visible in beta.133
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 22:18:12 +02:00
koka e48fc656c7 docs: record beta.132 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:58:39 +02:00
koka 7e21781a9a feat(shader): experimental local diffuse SSGI in beta.132
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:57:04 +02:00
koka d941b91265 docs: record beta.131 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:34:00 +02:00
koka 078d3e6833 feat(shader): independent emissive cores and precision options in beta.131
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:32:28 +02:00
koka afa77f3d62 docs: record beta.130 release and preserved Prism data
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:06:31 +02:00
koka 534dfec4f8 feat(shader): selective bloom and shared precision in beta.130
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 21:04:33 +02:00
koka 26e305d15f Record beta.129 publication and verified Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 19:13:09 +02:00
koka 35103a7ea8 Add connected edge highlights and stable shadow projection for beta.129
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 19:11:11 +02:00
koka 6502883cc4 Document verified beta.128 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 18:34:55 +02:00
koka a4e96c0d99 Stabilize pixel shadows and add moonlight and foliage for beta.128
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 18:33:07 +02:00
koka 7c63865157 Document verified beta.127 shader release and instance synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 17:53:16 +02:00
koka 00be1eb0d0 Integrate native pixel shadows over beta.126 for beta.127
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 17:51:19 +02:00
koka adde24aa7e Document verified beta.126 release and instance synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 17:11:59 +02:00
koka 99860af312 Add Sanctuary gems, original clay colors and shared discovery commands for beta.126
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 17:10:15 +02:00
koka 1547396c06 Document verified beta.125 release and instance synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 16:37:18 +02:00
koka 4ec5b0d028 Add sculpture corner and height placement, voxel chips and discovered workshop models
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 16:35:46 +02:00
koka 67e6e7c4f2 Record beta.124 publication and preserved Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 16:02:47 +02:00
koka 00179e30ef Use one cached bounding box per sculpture (beta.124)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 16:00:52 +02:00
koka 87f823af67 Record beta.123 publication and preserved Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 15:30:04 +02:00
koka 4552cc347b Separate safe golden rotations from Steve wrench powers (beta.123)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 15:28:06 +02:00
koka 49131b4c53 Record beta.122 publication and preserved Prism sync
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 15:04:59 +02:00
koka edc7fc3dfb Match sculpture collisions to voxels and fix light occlusion (beta.122)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 15:02:05 +02:00
koka 9b0104d27a Record beta.121 publication and preserved Prism sync
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 14:11:39 +02:00
koka d9b3dd6bed Add editable Sanctuary resource template and new wrench texture (beta.121)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 14:09:11 +02:00
koka e732da8800 Record beta.120 publication and verified Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 13:44:30 +02:00
koka 248dff47b7 Extend golden wrench to native block states and persistent texture rotation (beta.120)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 13:43:02 +02:00
koka 6aaabf1cb9 Normalize sculpture delivery note formatting
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 13:16:24 +02:00
koka 72e9263339 Record beta.119 release and verified Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 13:16:12 +02:00
koka 3fd64e1f2a Center sculptures on aimed block middle without half-voxel offsets (beta.119)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 13:14:54 +02:00
koka 8af406a028 Record verified beta.118 publication and Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 13:05:40 +02:00
koka 0a81b3c147 Add sixteen native colored brick walls (beta.118)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 13:03:18 +02:00
koka 68fd97d287 Record verified beta.117 publication and Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 12:19:54 +02:00
koka 0f1efdec83 Sample texture grain for sculptures and preserve worn models (beta.117)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 12:18:10 +02:00
koka 5c666a4ebc Record verified beta.116 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 07:50:34 +02:00
koka e3ca9fcd63 Apply block texture palettes to workshop sculptures (beta.116)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 07:49:00 +02:00
koka 22e58b4b91 Fix multiblock furnace slot mapping and explain shared cooking (beta.115)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 07:28:40 +02:00
koka ed0e0b26aa Document beta.114 release and verified instance update
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 06:59:17 +02:00
koka 21845bd736 Add chaotic flight when carried flying animals are struck (beta.114)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 06:57:34 +02:00
koka 4a6f63c52d Document beta.113 publication and verified Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 06:39:24 +02:00
koka 6166d0aa9e Snap clay sculptures to aimed block edges on the voxel grid (beta.113)
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 06:38:04 +02:00
koka 064701f210 Document beta.112 publication and verified Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 04:01:02 +02:00
koka 1eaa976ecf Use only the active hotbar in the clay workshop for beta.112
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 03:59:13 +02:00
koka 8c0020c774 Document verified beta.111 publication and Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 03:45:23 +02:00
koka 289697becf Refine clay workshop and orient statues on placement for beta.111
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 03:43:36 +02:00
koka e38f6cbdbe Record beta.110 publication and verified Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 03:15:20 +02:00
koka 2090380712 Allow the indexed pack icon in packwiz channel publication
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 03:12:24 +02:00
koka 468743bfe7 Integrate verified Sanctuary beta.110 with clay workshop, eggs and seasonal snow
Build Sanctuary / build (push) Canceled after 0s
2026-09-17 03:10:39 +02:00
koka 49feb5a376 Synchronize verified Sanctuary beta.092 sources and release documentation
Build Sanctuary / build (push) Canceled after 0s
2026-09-16 11:41:27 +02:00
koka 85e062ed91 Version Sanctuary resource pack beta.070 2026-09-15 17:24:31 +02:00
koka c8b0684460 Record completed beta.061 release and finish Git synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-15 09:31:32 +02:00
2135 changed files with 89766 additions and 383 deletions
+165
View File
@@ -1,5 +1,170 @@
# Changelog
## beta.110 — Atelier dargile inclus
- Une seule livraison réunit latelier dargile, les statuaires et limport GLB de beta.106 avec les œufs et la neige saisonnière de beta.107 à beta.109.
- Fonctionnement, identifiants et formats conservés ; accumulation toujours plafonnée à deux blocs par défaut.
- [Contrat et vérifications](docs/clay-workshop-integration-beta110.md).
## beta.109 — Fonte saisonnière
- Fonte par couches des dépôts météo suivis, de haut en bas, plus rapide en été.
- Arrêt en hiver, dans les biomes froids, sous un profil neigeux ou en mode météo Vanilla.
- Constructions et neige antérieure préservées ; suivi sauvegardé par chunk, retiré lors des modifications manuelles.
- Gamerule `sanctuary:seasonal_snow_melt` active par défaut ; accumulation toujours limitée à deux blocs par défaut.
- [Contrat et essais](docs/seasonal-snow-melt-beta109.md), sur la base beta.108, Statuaire beta.106 livré séparément.
## beta.108 — Accumulation de neige
- Chaque précipitation ajoute une couche ; la huitième forme un bloc de neige natif solide, puis le dépôt continue au-dessus.
- Plafond de deux blocs par défaut, gamerule réglable (0 = arrêt, -1 = sans plafond particulier).
- Collisions, supports, lumière et chaudrons natifs conservés ; accumulation seulement pendant la chute de neige.
- [Contrat et essais](docs/snow-accumulation-beta108.md). Assemblage isolé sur beta.107, avec les œufs, sans le Statuaire beta.106 livré séparément.
## beta.107 — Naissances en œufs
- Reproduction : œuf natif au lieu dun bébé vivant, variantes et caractéristiques héritées ; bébé garanti à l’éclosion.
- Grenouille/têtard, tortue, sniffer, allay et villageois : chemins natifs particuliers pris en charge.
- Générateur classique cassé en survie sans Toucher de soie : un œuf de son type.
- Catalogue des 88 espèces : 35 voies couvertes et 53 propositions à valider, sans ajouter ces propositions au jeu.
- [Contrat et contrôles](docs/spawn-eggs-acquisition-beta107.md), [catalogue](docs/spawn-eggs-catalogue-beta107.md).
- Livraison isolée sur la base beta.105 ; le chantier Statuaire beta.106 est conservé séparément.
## beta.106 — Atelier dargile et modèles 3D
- Dossier commun pour schémas et GLB ; sélection des modèles 3D dans Statues au Métabli.
- Atelier dargile : un bloc dargile pour un statuaire 16³ à poser. Couleurs du modèle avec largile normale, couleur unie avec les seize argiles Sanctuary.
- Modèle identifié et embarqué dans lobjet, sauvegarde serveur et rendu natif de la miniature dans le monde et linventaire.
- Contrat dimport, de sauvegarde et limites : `docs/statuary-beta106.md`.
## beta.105 — Saisons et chapeaux vivants
- Molette pour les pages du fût ; panoramas avec les effets actifs du shader Sanctuary.
- Prévisions saisonnières, neige continue ou averses de neige avec accumulation native.
- Chapeaux réactifs : paratonnerre, briquet, spawner, fusée, cultures et aliments attirants.
- Livre et plume : journal personnel selon le caractère et les caresses/blessures.
- Les boules de neige activent les objets portés. Aucune Weather TNT.
- [Contrat et vérifications](docs/living-hats-seasons-beta105.md).
## beta.104 — Contraste des argiles
- Gris soutenu et noir plus sombre, dessin vanilla plus contrasté.
- Boules dargile accordées aux blocs, autres textures intactes.
- Rangement beta.103 conservé ; [détails](docs/clay-contrast-beta104.md).
## beta.103 — Rangement créatif
- Séries de 16 par type : briques, escaliers, dalles, argiles et leurs items.
- Ordre des couleurs identique à longlet natif Minecraft 26.3.
- [Détails](docs/colored-bricks-order-beta103.md).
## beta.102 — Briques et argile de couleur
- 16 familles : briques, dalles, escaliers, argile pastel, boules dargile et briques en items.
- Textures fournies intactes, recoloration pixel par pixel des trois textures vanilla.
- Onglets natifs Couleurs/Ingrédients, recettes, cuisson, tailleur, butin et découvertes.
- [Contrat et vérifications](docs/colored-bricks-beta102.md).
## beta.101 — Atterrissage des familiers volants
- Les profils volants ne subissent plus les dégâts et effets de chute de leur entité commune.
- Les vrais coups et les chutes des familiers terrestres sont conservés.
- [Reproduction et vérifications](docs/flying-landing-beta101.md).
## beta.100 — Exploration et promenade des familiers
- Statues limitées aux espèces rencontrées, vaincues ou ayant tué le joueur.
- Catalogue et génération filtrés par une liste de découvertes fournie par le serveur.
- Promenade avec destinations stables et pauses selon le tempérament, y compris en vol et en garde.
- Import `.schem` : conversion native des anciennes palettes dont la version est connue, diagnostic du bloc incompatible.
- [Contrat et vérifications](docs/exploration-familiers-beta100.md).
## beta.099 — Catalogue, compétences et gestes K
- Compétences avant les progrès ; arbre natif intégré et suivi par clic droit.
- Fiches illustrées communes, trois plans récents terminés, infrastructures et décoration.
- Palette de statue étendue aux blocs du registre, avec comparaison couleur et forme.
- K bref : ancrer au point visé ou tourner au même point ; K maintenu : commandes.
- Métabli préassemblé sur le piédestal des nouvelles salles souterraines.
- Clé dorée en outil plat, texture vanilla provisoire en attente de celle du créateur.
- [Contrat et vérifications](docs/catalogue-progression-beta099.md).
## beta.098 — Construction créative
- Bouton « Construire le plan… » dans K, visible uniquement en créatif.
- Confirmation du plan complet à lorigine et dans lorientation sélectionnées.
- Statues, bâtiments et composants de machines ; assemblage multibloc à la clé.
- [Détails et vérifications](docs/creative-construction-beta098.md).
## beta.097 — Temples et aperçu texturé
- Recherche de secours pour les temples des expéditions, avec pièces vanilla et fondation locale si nécessaire.
- Conserve la première recherche et les emplacements déjà admissibles.
- Aperçu des plans avec les modèles et textures des blocs, formes natives et nom du matériau visé.
- [Contrat et vérifications](docs/temple-crash-beta097.md).
## beta.096 — Métabli
- Atelier de neuf établis avec les textures fournies, assemblage et dissociation à la clé.
- Catalogue Statues, Machines, Bâtiments et Mes plans ; sélection unique à latelier.
- K garde les commandes de placement, rotation, couches et matériaux.
- Construction manuelle ; changer de projet ou labandonner exige de revenir à latelier.
- [Détails et vérifications](docs/metabli-beta096.md).
## beta.095 — Pilier des super pistons
- Bois du centre de la grande plaque sur la tige, sans bordure ni étirement.
- Découpage adapté aux segments courts du socle et de la tête.
- [Détails et vérifications](docs/piston-shaft-beta095.md).
## beta.094 — Feu du Fourneau
- Braises dans les deux ouvertures, allumage commun lié à la chaleur.
- Flammes et fumée alignées sur la façade dans les quatre orientations.
- Pierre originale et fours isolés conservés.
- [Détails et vérifications](docs/fourneau-allume-beta094.md).
## beta.093 — Crash des infobulles pendant la recherche
- Retire les accès à la police graphique lors de lindexation asynchrone des
descriptions de familiers ; texte complet et mise en page visible conservés.
- [Diagnostic et vérifications](docs/tooltip-crash-beta093.md).
## beta.092 — Clic molette des super pistons
- Socles, têtes et tiges renvoient le piston normal ou collant dorigine.
- Pièces mobiles couvertes ; Ctrl + clic molette exclut les données techniques.
- Sélection en survie et création en créatif selon les règles natives.
- [Détails et vérifications](docs/multiblock-pick-beta092.md).
## beta.091 — Interactions avec les animaux embarqués
- Ciblage au clic gauche/droit des mobs assis dans le même bateau.
- Coups, coffres portés et activation des distributeurs depuis les sièges.
- Protection conservée pour les joueurs et animaux portés sur la tête.
- [Détails et vérifications](docs/boat-passengers-beta091.md).
## beta.090 — Minecraft Java 26.3 finale
- Migration des quatre modules vers Minecraft 26.3 et Fabric API 0.160.5+26.3.
- Fork JEI 30.32.0-sanctuary.3, cible et dépendances centralisées.
- Édition beta.090 du pack de textures, format 97.1, images conservées.
- Packs normal et Test reconstruits ; aucun monde personnel migré.
- [Contrat et vérifications](docs/minecraft-26-3-beta090.md).
## beta.061 — continuité musicale et montures colossales
- La musique Minecraft commence au dévoilement du portail, après les lettres. Son flux est conservé
lors du passage sous le flash blanc au monde ; les autres sons sont nettoyés.
- Le poids des familiers dépend de la taille stable de leur œuf, même avec un
modèle bébé. Les minuscules ne ralentissent pas, les petits légèrement,
puis le ralentissement augmente avec la taille.
- Les colossaux deviennent des montures personnelles : Maj + clic droit à
main vide, déplacements et saut/vol/nage selon lespèce, relâcher Maj puis
réappuyer pour descendre. La simulation et les collisions restent serveur.
- Infobulles FR/EN pour le poids et le geste de monte. Aucun format de
sauvegarde ou paramètre de génération modifié.
## beta.060 — objets et blocs sur les mobs
- Ajoute un emplacement de tête indépendant de larmure native des mobs et
+697 -15
View File
@@ -20,10 +20,14 @@ La [vision complète](docs/vision.md) conserve les intentions ; le
L’économie, les claims et les dimensions décrits dans la vision restent
à implémenter.
Les sources Git sont synchronisées jusqu’à **beta.060**. Le récapitulatif de
[synchronisation](docs/git-sync-beta060.md) précise les vérifications et les
limites. Les archives bêta mentionnées dans ce document sont des fichiers
locaux ; la dernière release du canal packwiz reste **alpha.30.7**.
La version **beta.138** adapte l’épaisseur des **rayons solaires à la météo** :
plus denses et diffus dans le brouillard, renforcés sous les précipitations,
avec moins de lumière pendant lorage. Le curseur reste inchangé.
Le [ticket](docs/shader-beta138.md) détaille le rendu et ses vérifications.
Livraison en cours de vérification.
La [livraison précédente](docs/clay-workshop-integration-beta110.md) réunit déjà
latelier, les œufs et la neige saisonnière dans linstance **Sanctuary Beta**.
Les [synchronisations antérieures](docs/git-sync-beta092.md) restent documentées.
Les [archives pour le site](archives/web/README.md) conservent la maquette
Blocodex autonome, les documents et les images retrouvées jusqu'à alpha.30.7.
@@ -31,6 +35,684 @@ La [carte native beta.005](docs/atlas-beta005.md) prend le relais après
l’étude de Xaero et des alternatives libres.
## beta.138 — Rayons et brouillard
Densité automatique des rayons selon le brouillard et les précipitations.
[Contrat et vérifications](docs/shader-beta138.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.138/Sanctuary-beta.138.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.138/Sanctuary-Test-beta.138.mrpack).
## beta.137 — Rayons solaires
Faisceaux volumétriques légers, intensité réglable et feuillage perméable.
[Contrat et vérifications](docs/shader-beta137.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.137/Sanctuary-beta.137.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.137/Sanctuary-Test-beta.137.mrpack).
## beta.136 — Lens flare rectangulaire
Soleil et lune, reflets doux et intensité indépendante du bloom.
[Contrat et vérifications](docs/shader-beta136.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.136/Sanctuary-beta.136.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.136/Sanctuary-Test-beta.136.mrpack).
## beta.135 — SSGI près des surfaces
Correction des coupures à courte distance, sans flouter les textures.
[Contrat et vérifications](docs/shader-beta135.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.135/Sanctuary-beta.135.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.135/Sanctuary-Test-beta.135.mrpack).
## beta.134 — PBR optionnel et SSGI filtré
Relief et reflets des matériaux ; lissage de la lumière indirecte.
[Contrat et vérifications](docs/shader-beta134.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.134/Sanctuary-beta.134.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.134/Sanctuary-Test-beta.134.mrpack).
## beta.133 — SSGI renforcé
Couleurs voisines plus visibles, même budget de rayons et de cibles GPU.
[Contrat et vérifications](docs/shader-beta133.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.133/Sanctuary-beta.133.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.133/Sanctuary-Test-beta.133.mrpack).
## beta.132 — SSGI : diffusion locale des couleurs
Rebond diffus des couleurs visibles, intensité réglable et reconstruction
préservant les silhouettes. Expérimental, initialement désactivé.
[Contrat et vérifications](docs/shader-beta132.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.132/Sanctuary-beta.132.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.132/Sanctuary-Test-beta.132.mrpack).
## beta.131 — Émissifs indépendants et précision étendue
Bloom, émissifs et highlight activés initialement ; halo facultatif et cinq
précisions communes de 8 à 128 pixels/bloc.
[Contrat et vérifications](docs/shader-beta131.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.131/Sanctuary-beta.131.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.131/Sanctuary-Test-beta.131.mrpack).
## beta.130 — Bloom, minerais émissifs et précision commune
Halo réglable des sources lumineuses et inclusions des vingt textures de
minerais ; réglages par défaut 32/128/16 et ombres activées.
[Contrat et vérifications](docs/shader-beta130.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.130/Sanctuary-beta.130.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.130/Sanctuary-Test-beta.130.mrpack).
## beta.129 — Reflets CTM et ombres jusqu'à 256 blocs
Reflets connectés réglables, cinq portées indépendantes, soleil plein à midi
et correction du réalignement cyclique de la grille d'ombres.
[Contrat et vérifications](docs/shader-beta129.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.129/Sanctuary-beta.129.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.129/Sanctuary-Test-beta.129.mrpack).
## beta.128 — Ombres stables, lune et feuillage
Grille de réception stabilisée, contours nets des blocs, atténuation à midi,
ombre lunaire légère et feuillage nuancé selon son épaisseur.
[Contrat et vérifications](docs/shader-beta128.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.128/Sanctuary-beta.128.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.128/Sanctuary-Test-beta.128.mrpack).
## beta.127 — Shader : ombres portées pixélisées
Ombres solaires natives, finesse 8/16/32 pixels par bloc et portée 16/32/64 blocs.
Option désactivée par défaut, réglable sans rechargement des ressources.
[Contrat et vérifications](docs/shader-beta127.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.127/Sanctuary-beta.127.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.127/Sanctuary-Test-beta.127.mrpack).
## beta.126 — Gemmes, argile et découvertes
Rubis et saphir avec filons configurables, couleurs originales avec l'argile,
commandes de découverte globales ou ciblées.
[Contrat et vérifications](docs/gems-beta126.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.126/Sanctuary-beta.126.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.126/Sanctuary-Test-beta.126.mrpack).
## beta.125 — Sculptures : placement, éclats et animaux
Coins et trois hauteurs sur la grille 1/16 ; particules issues des voxels ;
modèles découverts disponibles dans le Clay Workshop.
[Contrat et vérifications](docs/sculpture-placement-beta125.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.125/Sanctuary-beta.125.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.125/Sanctuary-Test-beta.125.mrpack).
## beta.124 — Une boîte par sculpture
Sélection et collisions simplifiées, dimensions ajustées et lumière conservée.
[Contrat et vérifications](docs/sculpture-bounds-beta124.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.124/Sanctuary-beta.124.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.124/Sanctuary-Test-beta.124.mrpack).
## beta.123 — Clé dorée et clé de Steve
Orientations cohérentes, inventaires et eau préservés ; clé de Steve pour
l’édition libre, utilisable aussi en survie. [Contrat et vérifications](docs/wrench-safety-beta123.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.123/Sanctuary-beta.123.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.123/Sanctuary-Test-beta.123.mrpack).
## beta.122 — Sculptures : forme et lumière
Collisions et sélection sur les voxels réels, creux traversables, lumière sans
occlusion cubique. [Contrat et vérifications](docs/sculpture-shape-light-beta122.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.122/Sanctuary-beta.122.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.122/Sanctuary-Test-beta.122.mrpack).
## beta.121 — Texture de clé et pack personnel
Copie complète des ressources, création depuis le jeu et guide FR/EN inclus.
[Contrat et vérifications](docs/resourcepack-template-beta121.md) ·
[Template personnel](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.121/Sanctuary-Template-beta.121.zip) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.121/Sanctuary-beta.121.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.121/Sanctuary-Test-beta.121.mrpack).
## beta.120 — Clé dorée et états de blocs
Gestes du debug stick, rotation de textures et assemblage des machines conservé.
[Contrat et vérifications](docs/golden-wrench-beta120.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.120/Sanctuary-beta.120.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.120/Sanctuary-Test-beta.120.mrpack).
## beta.119 — Sculptures au centre ou au bord
Pose selon le point visé, centrage sur la grille entière et ancrage conservé
en sauvegarde. [Contrat et vérifications](docs/sculpture-center-beta119.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.119/Sanctuary-beta.119.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.119/Sanctuary-Test-beta.119.mrpack).
## beta.118 — Murets en briques colorées
Seize couleurs, fabrication et tailleur de pierre, eau, raccords et collisions
natifs. [Contrat et vérifications](docs/colored-brick-walls-beta118.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.118/Sanctuary-beta.118.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.118/Sanctuary-Test-beta.118.mrpack).
## beta.117 — Grain des textures et sculptures en chapeau
Les petits cubes d'une sculpture reprennent plusieurs nuances des textures
de la matière. Le modèle reste intact dans le slot chapeau et au retrait.
[Contrat et vérifications](docs/sculpture-texture-grain-beta117.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.117/Sanctuary-beta.117.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.117/Sanctuary-Test-beta.117.mrpack).
## beta.116 — Matières de sculpture et Fourneau
Un bloc de matière devient une sculpture aux couleurs de sa texture. Hotbar,
orientation et ancrage conservés. Le Fourneau accepte les dépôts dans chacune
de ses 27 cases et explique sa chauffe commune.
[Contrat et vérifications](docs/sculpture-materials-beta116.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.116/Sanctuary-beta.116.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.116/Sanctuary-Test-beta.116.mrpack).
## beta.115 — Fourneau : dépôts et chauffe
Correctif du décalage par trois cases, combustible stable et progression
par cuisson. [Diagnostic et essais](docs/fourneau-transfers-beta115.md).
Étape locale intégrée à la livraison commune beta.116.
## beta.114 — Animaux portés et fuite en vol
Un animal volant porté entraîne son porteur après un coup. La trajectoire
aléatoire prend brièvement le dessus sur les commandes ; déposer lanimal
interrompt le vol. [Contrat et vérifications](docs/carried-flight-panic-beta114.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.114/Sanctuary-beta.114.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.114/Sanctuary-Test-beta.114.mrpack).
## beta.113 — Sculptures dargile et alignement
Pose contre le bord visé, orientation selon le regard et coordonnées entières
pour chaque voxel, y compris les modèles de largeur impaire. Laccroche est
conservée à la reconnexion. [Contrat et vérifications](docs/clay-sculpture-grid-beta113.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.113/Sanctuary-beta.113.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.113/Sanctuary-Test-beta.113.mrpack).
## beta.112 — Atelier dargile et hotbar
Neuf cases de hotbar et deux emplacements de fabrication, dans un cadre fixe.
Les transferts restent dans la hotbar ; une barre pleine ne consomme pas dargile.
[Contrat et vérifications](docs/clay-workshop-hotbar-beta112.md) ·
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.112/Sanctuary-beta.112.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.112/Sanctuary-Test-beta.112.mrpack).
## beta.111 — Atelier dargile et pose orientée
Cadre nine-slice, aperçu, fabrication et inventaire dans un menu commun.
Les statuaires sorientent selon le regard horizontal à chaque pose ; les
anciens modèles gardent leur apparence. [Contrat et vérifications](docs/clay-workshop-ui-beta111.md).
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.111/Sanctuary-beta.111.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.111/Sanctuary-Test-beta.111.mrpack) ·
[Release](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.111).
## beta.110 — Atelier dargile et neige saisonnière réunis
Le Clay Workshop / atelier dargile, les statuaires et les modèles 3D rejoignent
les œufs, laccumulation et la fonte saisonnière dans un seul pack.
[Contrat et vérifications](docs/clay-workshop-integration-beta110.md).
[Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.110/Sanctuary-beta.110.mrpack) ·
[Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.110/Sanctuary-Test-beta.110.mrpack) ·
[Release et installation Prism](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.110).
## beta.109 — Fonte saisonnière
La neige météo fond progressivement hors hiver, avec un rythme adapté à la
saison. Les constructions en neige sont préservées ; accumulation plafonnée
à deux blocs par défaut. [Contrat et essais](docs/seasonal-snow-melt-beta109.md).
Base beta.108, Statuaire beta.106 livré séparément.
[Pack normal](build/Sanctuary-beta.109.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.109.mrpack).
## beta.108 — Neige en volume
Huit couches deviennent un bloc de neige solide ; les dépôts se poursuivent
au-dessus. Hauteur par défaut de deux blocs, réglable par gamerule.
[Contrat et contrôles](docs/snow-accumulation-beta108.md).
Base beta.107 conservée, avec ses œufs ; Statuaire beta.106 livré séparément.
[Pack normal](build/Sanctuary-beta.108.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.108.mrpack).
## beta.107 — Œufs de reproduction et de générateurs
Les naissances deviennent des œufs transportables, avec bébé et héritage natif.
Les générateurs classiques donnent leur œuf lorsquils sont cassés sans Toucher
de soie. [Détails](docs/spawn-eggs-acquisition-beta107.md) ·
[Catalogue des 88 espèces à valider](docs/spawn-eggs-catalogue-beta107.md).
Assemblage isolé sur la base beta.105, pendant le chantier Statuaire beta.106.
[Pack normal](build/Sanctuary-beta.107.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.107.mrpack).
## beta.106 — Atelier dargile et modèles 3D
Un même dossier pour schémas et fichiers GLB. Le Métabli les transforme en
grandes statues en blocs ; latelier dargile fabrique des statuaires 16³
transportables et posables. Argile normale : couleurs dorigine ; argile
colorée : sculpture unie. [Contrat et validation](docs/statuary-beta106.md).
[Pack normal](build/Sanctuary-beta.106.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.106.mrpack).
## beta.105 — Saisons et chapeaux vivants
Molette dans le fût, panoramas avec le shader Sanctuary, prévisions saisonnières
et neige au sol. Les mobs équipés utilisent leurs objets, attirent les animaux
et écrivent leur journal. [Détails](docs/living-hats-seasons-beta105.md).
[Pack normal](build/Sanctuary-beta.105.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.105.mrpack).
## beta.104 — Argiles grise et noire
Teintes plus distinctes et contraste renforcé, sur les blocs et leurs items.
Le rangement par séries de 16 est conservé. [Détails](docs/clay-contrast-beta104.md) ·
[Pack normal](build/Sanctuary-beta.104.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.104.mrpack).
## beta.103 — Rangement par séries de 16
Briques, escaliers, dalles et argiles regroupés par type, dans lordre des
couleurs natif. [Détails](docs/colored-bricks-order-beta103.md) ·
[Pack normal](build/Sanctuary-beta.103.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.103.mrpack).
## beta.102 — Briques et argile de couleur
Seize couleurs : briques, dalles, escaliers, argile pastel et leurs items.
Blocs dans longlet natif des couleurs ; recettes et textures 16 × 16.
[Détails](docs/colored-bricks-beta102.md) ·
[Pack normal](build/Sanctuary-beta.102.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.102.mrpack).
## beta.101 — Atterrissage des familiers volants
Les familiers volants ne prennent plus de coup de chute au contact du sol.
Les vrais dégâts de combat restent actifs.
[Validation](docs/flying-landing-beta101.md) ·
[Pack normal](build/Sanctuary-beta.101.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.101.mrpack).
## beta.100 — Exploration et familiers
Les statues se débloquent par rencontre ou combat. Les familiers se promènent
avec des pauses selon leur tempérament ; les volants ne tournent plus en orbite
permanente. [Détails et validation](docs/exploration-familiers-beta100.md).
[Pack normal](build/Sanctuary-beta.100.mrpack) ·
[Pack de test](build/Sanctuary-Test-beta.100.mrpack).
## beta.099 — Catalogue du Métabli et Progression
Compétences en haut, arbre des progrès directement dessous. Le Métabli propose
un catalogue à aperçus, les trois derniers plans terminés et une palette étendue
pour les statues. K bref place/tourne, K maintenu ouvre les commandes.
Les nouvelles grandes salles souterraines accueillent un Métabli sur leur piédestal.
[Détails et vérifications](docs/catalogue-progression-beta099.md).
[Pack normal](build/Sanctuary-beta.099.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.099.mrpack).
## beta.098 — Construire le plan en créatif
Après sélection au Métabli, K propose **Construire le plan…** uniquement en
créatif. Statues, bâtiments et composants de machines sont posés selon
lorigine et lorientation choisies, après confirmation.
[Détails et vérifications](docs/creative-construction-beta098.md).
[Pack normal](build/Sanctuary-beta.098.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.098.mrpack).
## beta.097 — Temples et aperçu texturé
Corrige le chargement de certaines graines sans emplacement naturel de temple :
recherche élargie, puis présence forcée des pièces vanilla avec fondation locale
si nécessaire. Les aperçus de construction utilisent les modèles et textures
des blocs du pack actif et indiquent le matériau visé.
[Détails et vérifications](docs/temple-crash-beta097.md).
[Pack normal](build/Sanctuary-beta.097.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.097.mrpack).
## beta.096 — Métabli et construction guidée
Neuf établis à plat, assemblés à la clé, ouvrent le catalogue de statues,
machines, bâtiments et plans personnels. Un choix ferme le catalogue ; K
permet ensuite de placer et dorienter laperçu. Changer ou abandonner le projet
se fait au Métabli. Construction manuelle avec ses matériaux.
[Détails et vérifications](docs/metabli-beta096.md).
[Pack normal](build/Sanctuary-beta.096.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.096.mrpack).
## beta.095 — Texture du pilier des super pistons
La tige centrale utilise uniquement le bois au centre de la grande plaque,
y compris ses segments courts dans le socle et la tête.
[Détails et vérifications](docs/piston-shaft-beta095.md).
[Pack normal](build/Sanctuary-beta.095.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.095.mrpack).
## beta.094 — Fourneau allumé
Les deux foyers brillent pendant la chauffe ; flammes et fumée sortent des
ouvertures de la façade. La pierre dorigine est conservée.
[Détails et vérifications](docs/fourneau-allume-beta094.md).
[Pack normal](build/Sanctuary-beta.094.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.094.mrpack).
## beta.093 — Crash de recherche créative
Les descriptions de familiers peuvent être indexées en arrière-plan sans accéder
à la police graphique. Leur mise en page reste conservée à laffichage.
[Diagnostic et vérifications](docs/tooltip-crash-beta093.md).
[Pack normal](build/Sanctuary-beta.093.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.093.mrpack).
## beta.092 — Clic molette des super pistons
Viser un socle, une tête ou une tige sélectionne le piston normal ou collant
dorigine. Les règles de sélection créatif/survie restent natives.
[Détails et vérifications](docs/multiblock-pick-beta092.md).
[Pack normal](build/Sanctuary-beta.092.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.092.mrpack).
## beta.091 — Animaux embarqués interactifs
Clic gauche et clic droit ciblent les animaux assis dans le même bateau : coups,
coffres et blocs de tête utilisables. Les différents formats de bateaux et radeaux
sont couverts. [Détails et vérifications](docs/boat-passengers-beta091.md).
[Pack normal](build/Sanctuary-beta.091.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.091.mrpack).
## beta.090 — Minecraft 26.3 finale
Le projet cible Minecraft Java **26.3**, avec Fabric API 0.160.5+26.3,
Loader 0.19.5 et Java 25. Sanctuary, Demeure, JEI intégré et le profil Test
partagent la même cible. Le pack de textures reçoit une édition beta.090.
[Contrat et vérifications](docs/minecraft-26-3-beta090.md).
[Pack normal](build/Sanctuary-beta.090.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.090.mrpack).
## beta.089 — collision des super pistons
Correction du crash lorsqu'un joueur touche la tête ou la tige d'un super
piston. Leurs propriétés de suffocation et de visibilité ne lisent plus
l’état réservé au socle. Les machines existantes conservent leur état et leurs textures.
[Détails et vérifications](docs/super-piston-collision-beta089.md).
[Pack normal](build/Sanctuary-beta.089.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.089.mrpack).
## beta.088 — navigation du Fût
La souris reste sur les boutons lorsque l'on change de page ou applique une
recherche dans le Fût. La même correction couvre les onglets du Fourneau ;
les clics envoyés pour une ancienne page restent rejetés.
[Détails et vérifications](docs/fut-navigation-beta088.md).
[Pack normal](build/Sanctuary-beta.088.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.088.mrpack).
## beta.087 — super pistons
La clé dorée réunit neuf pistons identiques en une tête 3 × 3, normale ou
gluante, avec une course de trois blocs et une charge commune de 108 blocs.
Fonctionne dans les six orientations, avec les textures fournies et la plaque
avant de quatre pixels qui sort du socle. [Utilisation et contrat](docs/super-pistons-beta087.md).
[Pack normal](build/Sanctuary-beta.087.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.087.mrpack).
## beta.086 — façade du Fût
Le Fût reçoit ses textures de côtés, dessus et dessous, raccordées sur le
cube complet. Le stockage commun reste inchangé ; les textures du Fourneau
sont également incluses. [Détails et vérifications](docs/fut-textures-beta086.md).
[Pack normal](build/Sanctuary-beta.086.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.086.mrpack).
## beta.085 — façade du Fourneau
Les textures originales forment un seul grand four sur les 27 composants,
avec façade orientée, côtés et dessus raccordés. Les fours indépendants
conservent leur apparence. [Détails et vérifications](docs/fourneau-textures-beta085.md).
[Pack normal](build/Sanctuary-beta.085.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.085.mrpack).
## beta.084 — premiers multiblocs
La clé dorée assemble volontairement les cubes de 27 barils ou de 27 fours.
Le Fût réunit 729 cases avec recherche et pages ; le Fourneau partage le
combustible entre ses cuissons. Le démontage conserve les composants et leur
stock actuel. [Gestes, contrat et vérifications](docs/multiblocs-beta084.md).
[Pack normal](build/Sanctuary-beta.084.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.084.mrpack).
## beta.083 — menus organisés
La pause regroupe six rubriques. Découvertes rassemble les catalogues et
statistiques ; Progression accueille Progrès, Prestige et Historique ;
Factions possède son accès et son journal. L’économie reste différée.
Hello World garde un fond gris uni, qui sassombrit avant lintro complète.
[Organisation et vérifications](docs/menu-organization-beta083.md).
[Pack normal](build/Sanctuary-beta.083.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.083.mrpack).
## beta.082 — commandes météo opérateur
`/weather overcast`, `/weather fog` et `/weather showers` permettent de
choisir les nouvelles météos. Les six profils sont accessibles sous
`/sanctuary weather`, pour la journée Real Time courante.
[Commandes et contrat](docs/weather-commands-beta082.md).
[Pack normal](build/Sanctuary-beta.082.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.082.mrpack).
## beta.081 — pose jusqu’à six blocs
La portée de pose atteint **5,5 blocs au rang 6**, puis **6 blocs au rang 7**.
[Réglage et vérifications](docs/build-reach-beta081.md).
[Pack normal](build/Sanctuary-beta.081.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.081.mrpack).
## beta.080 — portée et vitesse des compétences
Construction fait progresser la portée de pose de **3 à 5,5 blocs**.
Minage fait progresser sa propre portée de **3 à 5,5 blocs** et sa vitesse
de **75 % à 130 %** du vanilla, avec retour aux valeurs normales au rang 3.
[Courbe et validations](docs/build-mining-beta080.md).
[Pack normal](build/Sanctuary-beta.080.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.080.mrpack).
## beta.079 — ordres et défense des familiers
Louverture de H ne bloque plus lordre cliqué juste après. Suivre conserve
la défense immédiate quand le joueur est attaqué, et les ordres affichent
leur confirmation. [Causes reproduites et vérifications](docs/familiar-solo-beta079.md).
[Pack normal](build/Sanctuary-beta.079.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.079.mrpack).
## beta.078 — Combats / Battles
Le menu de duels et darènes sappelle désormais **Combats** en français et
**Battles** en anglais. Les annonces renvoient au menu pause.
[Renommage et vérifications](docs/combat-beta078.md).
Le [cadrage des menus](docs/menu-architecture.md) propose leur future
organisation ; l’économie reste différée.
[Pack normal](build/Sanctuary-beta.078.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.078.mrpack).
## beta.077 — nuages du vide et menus
Une seconde couche à **Y = 0** dessine un grand tourbillon autour de Sanctuary,
deux fois plus large que l’île. Le rendu natif conserve les nuages supérieurs
et sa géométrie reste en cache. Cette livraison regroupe aussi les correctifs
[des menus et du pouvoir utilitaire](docs/menu-navigation-beta076.md).
[Contrat et vérifications](docs/cloud-vortex-beta077.md). Tests natifs, build et
archives vérifiés.
[Pack normal](build/Sanctuary-beta.077.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.077.mrpack).
## beta.076 — navigation des menus
**Duels et arènes** souvre directement dans le menu pause. **Progression**
propose Prestige, Factions et Historique, avec les achats du cycle à nouveau
visibles. Le pouvoir utilitaire du familier affiche sa sélection et son accès.
[Correctifs et vérifications](docs/menu-navigation-beta076.md).
## beta.075 — bibliothèque de plans
Le bouton de recherche Minecraft Schematics est retiré de **K → Bibliothèque**.
[Correctif et vérifications](docs/plans-library-beta075.md). Build et archives vérifiés.
[Pack normal](build/Sanctuary-beta.075.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.075.mrpack).
## beta.074 — familiers autonomes
Les caractères prennent des décisions distinctes : chasse à vue, garde autour
du joueur, riposte et attente des ordres. H bref désigne une cible ou reprend
le suivi ; H maintenu ouvre les ordres. F conserve l’échange des mains.
[Contrat et vérifications](docs/familiar-autonomy-beta074.md).
Parcours natifs, montures, arènes, anciens duels, compilation et archives vérifiés.
[Pack normal](build/Sanctuary-beta.074.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.074.mrpack).
## beta.072 — statues et plans natifs
**K** ouvre loutil natif : transformer un modèle Minecraft en statue de blocs,
importer un `.litematic`, `.schem` v2/v3 ou `.nbt`, déplacer et tourner son plan,
afficher une couche et consulter les blocs restants. En créatif, le serveur
contrôle la zone puis place le plan ; en survie, on construit normalement.
Le lien de recherche web présent dans cette version est retiré en beta.075.
[Contrat, formats et vérifications](docs/statues-plans-beta072.md).
Sans dépendance Litematica/MaLiLib. Les anciennes `.schematic` nécessitent une
conversion externe. Parcours client FR/EN, sept tests serveur, build et
interopérabilité avec Litemapy vérifiés.
[Pack normal](build/Sanctuary-beta.072.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.072.mrpack).
## beta.073 — arènes et paris
**Menu pause → Duels et arènes** (depuis beta.076) : arènes sans plafond d'inscrits, duels entre
joueurs ou familiers, mode mixte, règles visibles et mises en objets. Les
spectateurs consultent les combats annoncés et parient avant leur lancement.
Les joueurs meurent réellement ; les familiers gardent leur K.-O. habituel.
[Parcours, règles et contrat de sauvegarde](docs/arenas-beta073.md).
Client natif, régression des anciens duels, compilation et archives vérifiés.
[Pack normal](build/Sanctuary-beta.073.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.073.mrpack).
## beta.071 — personnalités et traits de monture
Chaque familier possède un caractère stable : agressif, protecteur, passif ou
pacifiste. Les tendances dépendent de lespèce, avec des exceptions ; le
pacifiste obéit aux ordres dattaque. La poursuite est plus vive, les araignées
montées grimpent aux murs, les Nautilus colossaux conservent le Souffle du
Nautilus et le Strider retrouve son appui sur la lave.
[Contrat, audit des montures et tests](docs/familiar-personality-beta071.md).
Client natif, compilation et archives isolées vérifiés ; textures beta.070.
[Pack normal](build/Sanctuary-beta.071.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.071.mrpack).
## beta.070 — resource pack intégré
Les textures fournies sont versionnées et **actives par défaut**, dans les
packs normal et Test. Les nouveaux dessins de faim et de saturation utilisent
les ressources natives ; le pack reste désactivable dans les options.
[Source versionnée](ressources-pack/sanctuary/README.md) ·
[Contrat et vérifications](docs/resourcepack-beta070.md).
Client natif, compilation et égalité des sources/archives vérifiés.
[Pack normal](build/Sanctuary-beta.070.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.070.mrpack) ·
[Resource pack autonome](build/Sanctuary-Resource-Pack-beta.070.zip).
## beta.069 — ordres du familier sur H
**H** ouvre les ordres, **F** échange les objets des deux mains et **G** reste
le pouvoir du familier. Le réglage F hérité des deux dernières versions est
reconverti une seule fois en H. [Contrat et tests](docs/familiar-orders-beta069.md).
Parcours natif, compilation et archives vérifiés.
[Pack normal](build/Sanctuary-beta.069.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.069.mrpack).
## beta.068 — animation du préchargement
Une petite ligne SGA s’éclaire doucement pendant la préparation et le
chargement du terrain. Elle sanime sans ticks de jeu, conserve les vraies
étapes et laisse la progression native des chunks lisible.
[Résultat et vérifications](docs/loading-animation-beta068.md).
Client natif, comparaison de huit captures, compilation et archives vérifiés.
[Pack normal](build/Sanctuary-beta.068.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.068.mrpack).
## beta.067 — touche du familier et dragon volant
F remplace H pour les ordres du familier, sans échanger les objets tenus.
Le dragon regarde dans le sens de son déplacement. Les petits portés planent ;
le grand porté sur la tête monte avec Espace et plane au relâchement.
Le colossal reste une monture pilotable. [Contrat et tests](docs/familiar-controls-beta067.md).
Parcours client, compilation et archives vérifiés.
[Pack normal](build/Sanctuary-beta.067.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.067.mrpack).
## beta.066 — cosmétiques animés sans doublon
Les coffres portés n'affichent plus de coffre fermé sous leur couvercle animé.
La cloche conserve son support et une seule cloche mobile. Le rendu partagé
avec les mobs bénéficie du même correctif ; les textures restent identiques.
[Contrat et tests](docs/head-render-beta066.md). Parcours client natif,
compilation et deux archives vérifiés.
[Pack normal](build/Sanctuary-beta.066.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.066.mrpack).
## beta.065 — collisions des bateaux
Les collisions couvrent toute la coque des huit formats de bateaux et radeaux.
Un virage ne peut plus introduire le bateau dans un mur avant le déplacement.
Le recul reste possible au contact. Les 88 variantes, les formes de blocs
minces et les commandes natives sur leau et en vol sont vérifiés.
[Contrat et tests](docs/boat-collisions-beta065.md). Build et archives vérifiés.
[Pack normal](build/Sanctuary-beta.065.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.065.mrpack).
## beta.064 — cache et étapes réelles de préparation
Les plans de terrain sont conservés sur disque et vérifiés à la réouverture.
Sur le scénario de laudit, la réouverture passe denviron **59 s à 2,1 s** ;
la première création reste autour de **122 s**, introduction complète comprise.
Lattente affiche le travail réellement en cours, en texte Minecraft sur fond
uni, sans portail du Nether. Un cache manquant ou corrompu est recalculé.
[Contrat et vérifications](docs/loading-cache-beta064.md). Build, cache corrompu,
parcours natifs et archives vérifiés.
[Pack normal](build/Sanctuary-beta.064.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.064.mrpack).
## beta.063 — chargement et règle de jeu Sanctuary
La règle **Utiliser Sanctuary**, choisie à la création du monde, permet de jouer
avec Hello World et la progression sur un terrain Minecraft classique ou plat.
Ce choix reste fixé pour la partie. L'audit mesure 122 s à la création d'une
île et 59 s à sa réouverture sur le Mac testé ; les plans recalculés dominent.
[Audit, mesures et prochains tickets](docs/loading-gameplay-beta063.md).
Cette livraison conservait toute l'introduction et proposait l'écran épuré.
Le cache et les étapes réelles sont implémentés dans beta.064 ci-dessus.
Build, parcours natifs et archives vérifiés.
[Pack normal](build/Sanctuary-beta.063.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.063.mrpack).
## beta.062 — soleil et chapeaux des familiers
Les familiers sensibles au soleil brûlent comme leur espèce Minecraft.
Un objet équipé sur leur tête protège des nouvelles inflammations ; cela
fonctionne aussi sur les mobs ordinaires. Les dégâts utilisent la santé et le
K.-O. du familier, sans détruire l'œuf. Maj + clic droit avec un objet équipe
le chapeau, à main vide le récupère. [Contrat et vérifications](docs/familiar-sunlight-beta062.md).
Build, parcours natif et archives vérifiés.
[Pack normal](build/Sanctuary-beta.062.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.062.mrpack).
## beta.061 — musique darrivée et montures familières
La musique commence au dévoilement du portail et accompagne le flash blanc
puis lentrée dans le monde sans coupure. Le poids dun familier porté suit la taille de son
œuf : minuscule sans ralentissement, petit léger, grand plus lourd. Un colossal
se monte avec Maj + clic droit à main vide et se dirige avec les touches de
déplacement. [Contrat et vérifications](docs/arrival-mount-beta061.md).
Build, parcours natif et archives vérifiés.
[Pack normal](build/Sanctuary-beta.061.mrpack) ·
[Monde plat rapide](build/Sanctuary-Test-beta.061.mrpack).
## beta.060 — objets et blocs sur les mobs
Maj + clic droit avec un objet équipe la tête d'un mob. Clic droit utilise
@@ -935,7 +1617,7 @@ Le relief de l’île initiale reste celui de lalpha.30.7. Les anciennes
sauvegardes gardent leur contrat et ne reçoivent pas ces îles automatiquement.
Voir [le contrat et les vérifications](docs/expeditions-beta001.md).
Les sources bêta sont disponibles dans Git jusqu’à beta.060 ; la dernière
Les sources bêta sont disponibles dans Git jusqu’à beta.092 ; la dernière
release du canal packwiz reste lalpha.30.7 ci-dessous. Les sections alpha
constituent lhistorique.
@@ -1574,19 +2256,19 @@ deux fois, avec 466 fichiers personnels et réglages suivis conservés.
## Versions et prérequis
Au 8 septembre 2026, la cible disponible est **26.3-pre-2**. Le dépôt ne prétend
pas cibler une version finale 26.3 déjà sortie. Le passage à la version finale
sera une mise à jour explicite, avec vérification des API et des sauvegardes.
Depuis beta.090, la cible est **Minecraft 26.3 finale**, publiée le 15 septembre
2026. Les contrôles et les limites de migration sont documentés dans
[le ticket 26.3](docs/minecraft-26-3-beta090.md).
| Composant | Version fixée |
| --- | --- |
| Minecraft Java | 26.3-pre-2 |
| Minecraft Java | 26.3 |
| Java JDK | 25 |
| Fabric Loader | 0.19.5 |
| Fabric API | 0.160.0+26.3 |
| Fabric API | 0.160.5+26.3 |
| Fabric Loom | 1.17.20 |
| Gradle Wrapper | 9.5.1, distribution vérifiée par SHA-256 |
| Sanctuary / pack | beta.060 |
| Sanctuary / pack | beta.122 |
Java 25 et Python 3.11 ou plus récent sont nécessaires. Le script pack utilise
uniquement la bibliothèque standard et repère aussi une installation Python
@@ -1594,9 +2276,9 @@ uniquement la bibliothèque standard et repère aussi une installation Python
par le wrapper. `packwiz` est utile pour modifier les dépendances ou servir le
pack ; il n'est pas nécessaire pour le construire.
Références vérifiées : [Minecraft 26.3-pre-2](https://www.minecraft.net/en-us/article/minecraft-26-3-pre-release-2),
Références vérifiées : [Minecraft 26.3](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-3),
[Fabric](https://fabricmc.net/develop/),
[version Fabric API](https://modrinth.com/mod/fabric-api/version/o9uChmGq).
[version Fabric API](https://modrinth.com/mod/fabric-api/version/oCYG2H4L).
## Construire et lancer
@@ -1615,7 +2297,7 @@ décrits dans [Validation](docs/testing.md).
Résultats :
- `mods/sanctuary/build/libs/sanctuary-beta.060.jar` : mod à installer avec
- `mods/sanctuary/build/libs/sanctuary-beta.122.jar` : mod à installer avec
Fabric API sur la version Minecraft indiquée.
- `build/packwiz/` : pack de développement complet, avec le mod construit et
l'index vérifié. Voir [Installation packwiz](packwiz/README.md).
@@ -1665,7 +2347,7 @@ sauvegarde 26.2 : aucun outil de migration de ses chunks n'est livré ici.
It's Alive !, Only Fun et Master Key restent des modules autonomes prévus par la
vision. Leurs sources 26.2 ne sont pas copiées dans ce socle. Fabric API est
requise ; Demeure et le port expérimental de JEI pour 26.3-pre-2 sont imbriqués
requise ; Demeure et le port source de JEI pour 26.3 sont imbriqués
dans le JAR Sanctuary. Leurs sources ou leur procédure de reconstruction et
leurs attributions figurent dans `mods/demeure/` et `mods/jei/`.
+19
View File
@@ -117,3 +117,22 @@ commit `62513191f6a3497447595c2215d466ad1d2bdb92`, sous Unlicense.
Le comportement des contours et leurs coordonnées datlas suivent cette source ;
lintégration, la synchronisation et le calcul de capacité sont propres à Sanctuary.
Texte de licence : [Unlicense amont](https://github.com/squeek502/AppleSkin/blob/62513191f6a3497447595c2215d466ad1d2bdb92/LICENSE).
## Briques et argile beta.102
Les seize textures de blocs de briques ont été fournies par le créateur de
Sanctuary. Les variantes dargile, de boule dargile et de brique sont des
recolorations des textures Minecraft 26.3 de Mojang/Microsoft. Les ressources
de modèles, butin et états reprennent leurs équivalents natifs 26.3.
`tools/generate-colored-bricks.py` documente cette transformation ;
`tools/colored-bricks-palette.json` conserve couleurs et empreintes des PNG fournis.
Ces ressources dérivées ne sont pas présentées comme des créations originales.
## Clé dorée beta.121
Le PNG 16 × 16 `golden_wrench.png` a été fourni par le créateur de Sanctuary
le 17 septembre 2026. Il est conservé octet pour octet dans le mod, le pack
intégré et le template personnel (SHA-256
`a97570908db75caf8e6fc2f5ecabf12c54fd99bfea7be634df66c4310dca22af`).
Le template regroupe les ressources client déjà distribuées par Sanctuary ;
leurs crédits et conditions respectives restent applicables.
+40 -1
View File
@@ -15,13 +15,52 @@ tasks.register('verifyPack', Exec) {
tasks.register('assemblePack', Exec) {
group = 'distribution'
description = 'Assemble a local packwiz pack including the built Sanctuary mod.'
dependsOn(':sanctuary:build', 'verifyPack')
dependsOn(':sanctuary:build', 'verifyPack', 'assembleResourcePack', 'assembleResourceTemplate')
commandLine('python3', 'scripts/pack.py', 'assemble')
}
tasks.register('verifyResourcePack', Exec) {
group = 'verification'
description = 'Verify the versioned Sanctuary texture sources and their release hashes.'
commandLine('python3', 'scripts/resource_pack.py')
}
tasks.named('check') { dependsOn('verifyResourcePack') }
tasks.register('assembleResourcePack', Zip) {
group = 'distribution'
description = 'Export the same textures as the built-in resource pack for standalone use.'
dependsOn('verifyResourcePack')
from('ressources-pack/sanctuary') {
include 'assets/**', 'pack.mcmeta', 'pack.png'
exclude '**/.DS_Store'
}
destinationDirectory = layout.buildDirectory
archiveFileName = "Sanctuary-Resource-Pack-${resource_pack_version}.zip"
preserveFileTimestamps = false
reproducibleFileOrder = true
}
tasks.register('assembleTestPack', Exec) {
group = 'distribution'
description = 'Stage the separate flat-world Sanctuary Test profile.'
dependsOn('assemblePack', ':sanctuary-test:build')
commandLine('python3', 'scripts/test_pack.py')
}
tasks.register('assembleResourceTemplate', Zip) {
group = 'distribution'
description = 'Export all Sanctuary client assets as an editable personal resource pack.'
dependsOn(':sanctuary:processResources', 'verifyResourcePack')
def resources = project(':sanctuary').layout.buildDirectory.dir('resources/main')
// Same precedence as the native exporter: built-in textures override mod defaults.
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from(resources.map { it.dir('resourcepacks/textures/assets') }) { into 'assets' }
from(resources.map { it.dir('assets') }) { into 'assets' }
from(resources.map { it.dir('resourcepacks/template') })
from(resources.map { it.file('resourcepacks/textures/pack.png') })
exclude '**/.DS_Store'
destinationDirectory = layout.buildDirectory
archiveFileName = "Sanctuary-Template-${mod_version}.zip"
preserveFileTimestamps = false
reproducibleFileOrder = true
}
+172
View File
@@ -0,0 +1,172 @@
# ARENA-01 — duels publics, arènes et paris — beta.073
Branche `codex/familiar-arenas-beta073`. Ticket du 15 septembre 2026.
**Implémenté, client natif, compilation et archives locales vérifiés.**
## Parcours en jeu
**Pause → Progression → Duels et arènes** ouvre la liste publique. Le même
accès figure dans le menu Duel historique. Aucune aptitude de familier ni
prestige n'est requis pour organiser un combat entre joueurs.
1. Créer un **duel** (deux inscrits) ou une **arène** (sans plafond de
participants), à l'emplacement de l'organisateur dans sa dimension.
2. Choisir **familiers seuls**, **joueurs seuls**, ou **joueurs avec familiers**.
Choisir un rayon de 24, 48 ou 96 blocs, une durée de 3, 5 ou 10 minutes,
et l'autorisation de la nourriture, des potions et des perles. Les armes,
boucliers et munitions restent utilisables. Les familiers gardent leurs
statistiques, personnalités, ressources et recharges réelles.
3. Choisir l'objet commun dans l'inventaire débloqué, et une mise d'entrée
de 0 à 64 objets. Zéro signifie gratuit. Par défaut, l'objet est l'émeraude.
Les composants natifs doivent correspondre : un objet renommé ou un
contenant rempli n'est pas équivalent à sa version vierge. La création
inscrit l'organisateur et prélève sa mise après validation serveur.
4. Les autres joueurs consultent les règles, viennent dans le périmètre et
s'inscrivent. Chacun valide **Prêt**. Tout changement de la liste invalide
les validations. L'organisateur lance quand tous sont présents et prêts.
5. **Dix secondes de préparation**, puis chacun pour soi. Les inscriptions
et les paris sont fermés dès le lancement de la préparation.
La liste présente les coordonnées, la dimension, les inscrits, les pots et
l'état du combat. Elle contient aussi les duels historiques à invitation,
qui gardent leurs deux mises libres et leur double validation. Pour ces seuls
duels historiques, le marché des spectateurs utilise des émeraudes ; les mises
historiques des deux adversaires restent dans leur menu existant.
Les annonces d'ouverture, de lancement et de résultat vont dans le chat du
serveur. Les combats terminés restent affichés cinq minutes. Les mises dues
restent disponibles aussi longtemps que nécessaire. La consultation se fait
par pages de douze entrées ; la pagination ne limite pas les inscriptions.
Il n'y a ni téléportation de spectateur, ni création automatique de terrain :
la carte de playtest se prépare normalement à côté.
## Combat et règles du monde
- **Joueurs : morts réelles**, selon le choix du créateur. Aucune santé
artificielle à la fin, aucun inventaire restauré par l'arène. Inventaire,
perte d'expérience, règles de conservation et tête-tombe suivent Sanctuary
et les règles effectives du monde. La mort élimine après le chemin natif
de création de la tombe.
- **Familiers : K.-O. existant**, santé persistante et récupération habituelle.
En mode mixte, le K.-O. du familier laisse son joueur combattre. La mort du
joueur élimine son camp. En mode familiers seuls, les propriétaires ne sont
pas des cibles et ne frappent pas directement les familiers adverses.
- Le dernier camp encore en lice gagne. Abandon, déconnexion pendant le
combat, changement d'individu, rappel du familier, sortie du périmètre ou
passage en créatif/spectateur éliminent. Le rayon est une distance 3D au
centre annoncé : l'altitude compte également.
- Une interruption du serveur, un rechargement du catalogue, l'expiration des
inscriptions ou une durée écoulée sans vainqueur rembourse les mises.
Un joueur déjà éliminé qui se déconnecte ne termine pas le combat des autres.
- Avant départ, se désinscrire rembourse son entrée et les paris placés sur
soi. Les autres inscriptions restent ouvertes. Le départ de l'organisateur
annule l'événement entier. Les duels historiques gardent leur contrat
d'interruption/refund antérieur.
- La permission PvP du combat ne vise que les adversaires inscrits en lice,
même si le PvP général est désactivé ou s'ils sont de la même faction.
Les dégâts directs ne franchissent pas cette frontière ; les familiers
hors combat n'apportent pas leur assistance aux combattants.
- Pose, utilisation et casse de blocs par les combattants sont désactivées,
y compris les gestes de minage/construction groupés déjà commencés.
Cela ne transforme pas le périmètre en claim : les mécanismes du monde,
cosmétiques, pièges ou interventions d'opérateurs restent ceux de la map.
## Paris en objets
La mise d'inscription est identique pour tous ; son pot revient au vainqueur.
Les spectateurs choisissent un inscrit et déposent une quantité libre de
l'objet commun, jusqu'à 3 456 unités par geste et dans la limite de leur
inventaire débloqué. Plusieurs gestes sont possibles avant le lancement.
Il n'y a pas de commission.
Le pot des spectateurs est partagé **au prorata des mises gagnantes**. Les
unités indivisibles restantes sont réparties dans l'ordre stable des UUID.
Exemple : 4 objets sur A, 2 autres sur A et 3 sur B ; si A gagne, les deux
parieurs gagnants récupèrent respectivement 6 et 3 objets. Si personne n'avait
misé sur le vainqueur, les paris sont remboursés.
Un inscrit ne peut pas parier sur son combat. Un parieur ne peut plus s'y
inscrire. Les boutons utilisent des identifiants et des révisions contrôlés
par le serveur ; aucune pile fournie par le client ne sert de preuve de fonds.
Les fonds sont pris uniquement dans les rangées réellement débloquées.
Les gains se récupèrent dans **Duels et arènes**. Un inventaire plein conserve
le solde dans le registre ; libérer même une partie d'une pile permet de le
récupérer progressivement. Aucun paiement ne tombe au sol et un joueur mort
ne peut pas encaisser dans l'inventaire en cours de remplacement.
## Contrat de sauvegarde additif
Aucun registre historique, identifiant d'objet, génération ou monde personnel
n'est converti. Nouveau fichier séparé :
`sanctuary/arena-stakes-v1.json`, schéma 1. Nouveau reçu joueur persistant et
copié à la mort : `sanctuary:arena_receipt`.
Chaque dépôt est écrit avant le débit, puis l'inventaire natif et son reçu sont
sauvegardés ensemble dans `playerdata` et relus. Le journal confirme ensuite
le débit. Chaque résultat répartit la totalité des fonds en une écriture
atomique avant le paiement. Chaque paiement sauvegarde de même l'inventaire
et son reçu avant de retirer la dette du journal. Une collecte partielle garde
le reste et ne repaie pas une tranche déjà reçue.
Au redémarrage, les combats vivants ne reprennent pas : les mises réellement
débitées sont remboursées. Un résultat déjà réparti conserve ses destinataires.
Les dépôts inachevés sont résolus à la reconnexion du payeur d'après son reçu,
sans inventer de crédit. Une erreur disque, un schéma inconnu ou un journal
invalide préserve les fichiers et suspend les transactions.
Le journal a une borne de lecture/écriture de 32 Mio pour détecter les états
anormaux. C'est une limite de stockage des opérations en attente, pas un nombre
maximum de participants. Avant un retour à une ancienne version, terminer
les événements et récupérer les soldes ; sinon restaurer une sauvegarde
complète cohérente, jamais un seul registre ou un seul fichier joueur.
## Vérifications et limites
Minecraft **26.3-pre-2**, Java 25, Fabric API **0.160.0+26.3**.
`Arena073ClientChecks` utilise un client intégré et des joueurs serveur
synthétiques avec connexions natives, dans un monde plat de développement.
Aucun serveur personnel ni EULA de serveur dédié n'est modifié.
La validation couvre trois familiers en combat autonome, des joueurs avec
morts réelles, le mode mixte, les permissions PvP, les paris, le partage exact,
les remboursements, l'inventaire plein et les composants de contenants. Une
arène de 25 inscrits vérifie la pagination sans plafond de participants.
Les menus FR/EN et l'aller-retour réseau du bouton de création sont contrôlés.
Résultat client : **réussi**, `ARENA073_PASS`, 1 min 52 s. Les tests
`Duel054Checks` sont rejoués dans la même session : validation mutuelle, anciennes
mises, projectiles natifs, K.-O., refus dun projectile tardif et remboursements
passent aussi. La mort pendant les inscriptions libère linscription sans
annuler les autres. Le journal est éprouvé avant débit, après sauvegarde du
débit, après sauvegarde du paiement et avec un schéma inconnu. Les essais
conservent les quantités exactes et refusent le schéma inconnu sans réécriture.
Journal client : `build/arena073-workspace/build/arena073-client.log`.
Captures copiées dans `build/arena073-evidence/`.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 56 s**, 124 tâches (108 exécutées). Les GameTests serveur
dédiés sont exclus conformément au refus d'accepter leur EULA ; les scénarios
multijoueurs de ce ticket tournent dans le serveur intégré du client natif.
Les **1 689 classes** compilées, les ressources et les sources Java correspondent
aux archives. Par rapport à beta.072, seules les classes de ce ticket et les
métadonnées de version évoluent ; les ressources existantes, les 88 profils et
le resource pack beta.070 restent identiques. Les **79 nouvelles clés FR/EN**
sont présentes dans les deux langues. Les archives beta.070 à beta.072 restent
inchangées.
- [Pack normal](../build/Sanctuary-beta.073.mrpack) : 9 592 283 octets.
- [Pack Test, monde plat rapide](../build/Sanctuary-Test-beta.073.mrpack) :
9 611 218 octets.
- [Reçu des artefacts et SHA-256](../build/arena073-artifact.json).
La livraison a été construite dans `build/arena073-workspace`, copie isolée
incluant la version beta.072 vérifiée, puis les seuls changements de ce ticket
ont été réintégrés dans les sources partagées. Aucun canal distant, serveur
personnel ou instance Prism n'est mis à jour.
Ce ticket fournit un outil de playtest. Il ne constitue pas une validation
exhaustive de l'équilibrage des 88 espèces, un benchmark de très grand serveur,
ni une protection compétitive contre les complicités et abandons arrangés.
Les tests de reprise ne simulent pas une panne physique du disque.
+79
View File
@@ -0,0 +1,79 @@
# beta.061 — musique d'arrivée et taille des familiers portés
Branche `codex/intro-familiar-mount-beta061`.
Contrat : lancer la musique Minecraft au dévoilement du portail (23,5 s),
puis conserver ce même morceau pendant le flash blanc et le passage au monde.
Les lettres gardent leurs ambiances sans musique. Le menu est arrêté une fois
à l'ouverture de l'introduction ; le gestionnaire attend le portail. Le lancement
se fait une seule fois, y compris après un redimensionnement. Passer avant le
portail ne force pas de morceau ; passer après conserve le morceau commencé.
Les sons de la cinématique gardent leur propre nettoyage ; les volumes choisis par le joueur restent respectés.
Le portage des familiers utilise la taille déjà enregistrée dans l'œuf :
minuscule sans pénalité, petit avec une pénalité légère, ordinaire à 75 %
de vitesse à la taille 1, puis de plus en plus lourd jusqu'à 25 % à la limite.
Un colossal (taille ≥ 2,5) ne peut plus être porté. Maj + clic droit à main
vide sur son familier colossal permet de monter dessus ; relâcher Maj puis
appuyer à nouveau fait descendre. Les touches de déplacement le dirigent,
Espace saute au sol ou monte en vol/nage ; regarder vers le bas en avançant
permet de descendre en vol/nage. Les aquatiques restent lents hors de l'eau.
Le propriétaire dirige sa monture côté serveur. Les commandes de combat
autonomes ne détournent pas le déplacement tant qu'il est dessus. L'équipement
sur la tête du mob conserve la priorité du geste (récupérer son chapeau avant
de monter). Les animaux natifs bébés restent sans poids, les piles de joueurs
et leur interaction avec Force gardent leurs règles.
La monte occupe une place pour le propriétaire, sans autre passager porté.
Les duels conservent leur combat autonome et font descendre le cavalier.
Les relations de monture sont temporaires. Retrait de l'œuf, K.-O., déconnexion
ou changement de dimension interrompent la monte. Aucun nouveau format de
sauvegarde : `sanctuary:familiar_size` schéma 1 et tous les autres composants
de l'œuf restent inchangés. Les œufs sans taille valide gardent le poids
ordinaire et ne deviennent pas des montures. Aucun monde existant n'est modifié.
## Vérifications
`ArrivalMount061ClientChecks` passe sur le client natif Minecraft 26.3-pre-2,
avec un monde plat de développement neuf et une vraie introduction complète :
- absence de musique Minecraft pendant les lettres, lancement au portail,
même instance sonore active jusque deux secondes après la fin du flash ;
- portage vache bébé / dragon miniature sur sept tailles, suppression du
ralentissement à la dépose, exemption conservée pour un bébé natif ;
- Maj + clic droit réellement envoyé au serveur, monte d'une vache colossale,
déplacement par les touches du client et orientation du cavalier ;
- maintien pendant le premier appui sur Maj, démontage après relâchement,
nouvelle monte puis retrait de l'œuf sans cavalier orphelin ;
- allay colossal : montée, descente et collision du cavalier sous un plafond ;
- morue colossale : mouvement lent à terre, puis vraie nage verticale dans
un bassin fermé ; arrêt sonore explicite encore fonctionnel hors arrivée.
Journal : `build/arrival-mount061-client.log`, **1 min 32 s**.
Marqueurs `ARRIVAL061_MUSIC_PASS` et `ARRIVAL_MOUNT061_PASS`.
La capture de la vache montée est inspectée dans
`build/arrival-mount061-evidence/`. Les mêmes règles et modèles natifs couvrent
les autres espèces, mais leur placement visuel individuel n'a pas été vérifié
pour chacune des 88 espèces. Les grands familiers ont besoin d'un espace libre
adapté à leur volume. Aucun essai avec deux clients humains n'est revendiqué.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest
-PsanctuaryClientTests=true -PsanctuaryArrivalMount061ClientTests=true
-PsanctuaryQuickTests=true` réussit : **122 tâches**, **3 min 14 s**.
Le parcours client est exécuté séparément par `:sanctuary:runClientGameTest`
avec les mêmes propriétés. Aucun EULA de serveur dédié n'a été accepté.
## Archives locales
- [Pack normal](../build/Sanctuary-beta.061.mrpack), 5676845 octets.
SHA-256 : `c97424d94b2e2960c071795670cbc1300cf5a805c4dadbfa5dad33fccb79edbb`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.061.mrpack), 5695778 octets.
SHA-256 : `2c3a9c3cfa849a3f24c38ceaf112ef4a96f6b182faa99d1eb78f00f8f2293c63`.
Les **1623 classes** du mod embarqué sont conformes au build. Le reçu
`build/arrival-mount061-artifact.json` vérifie les ressources, les dépendances
imbriquées, les différences ciblées avec beta.060 et la conservation des
archives précédentes. JEI et les ressources de génération restent identiques.
Aucun canal publié, instance personnelle ou monde existant n'est modifié.
+295
View File
@@ -1,5 +1,210 @@
# Backlog Sanctuary
## STAT-03 — Atelier dargile et hotbar — beta.112
Branche `codex/clay-workshop-hotbar-beta112`. [Contrat et vérifications](clay-workshop-hotbar-beta112.md).
Onze cases : argile, résultat et hotbar active ; hauteur fixe et transferts
limités aux neuf cases, même avec un inventaire agrandi.
## STAT-02 — Atelier dargile et orientation — beta.111
Branche `codex/clay-workshop-ui-beta111`. [Contrat et vérifications](clay-workshop-ui-beta111.md).
Cadre nine-slice fourni, inventaire intégré et pose selon le regard horizontal.
Propriété `facing` additive ; les anciens statuaires gardent leur apparence.
## STAT-01 — Atelier dargile et modèles 3D — beta.106
Branche `codex/statuary-import-beta106`. [Contrat et validation](statuary-beta106.md).
Dossier commun, GLB au Métabli pour les statues en blocs, atelier dargile
pour les miniatures 16³ avec consommation native, teinte et identité du modèle.
Cycle natif de fabrication/pose/récupération/rechargement vérifié, y compris
sans fichier source. Build complet et archives normale/Test vérifiés localement.
## BUILD-104 — Contraste des argiles
Branche `codex/clay-contrast-beta104`. [Ticket](clay-contrast-beta104.md).
Gris et noir plus distincts ; blocs et items accordés. Aperçu, contraste,
transparence, build complet et archives normal/Test vérifiés.
## BUILD-103 — Rangement créatif par séries
Branche `codex/colored-bricks-order-beta103`. [Ticket](colored-bricks-order-beta103.md).
Groupes de seize par type et ordre de couleurs natif. Build complet et
archives normal/Test vérifiés ; ressources beta.102 inchangées.
## BUILD-102 — Briques et argile de couleur
Branche `codex/colored-bricks-beta102`. [Ticket](colored-bricks-beta102.md).
Seize familles natives et textures recolorées à partir des originaux vanilla.
Parcours natif, recettes, butin, modèles, sauvegarde/réouverture, build complet
et archives normal/Test vérifiés.
## SKY-077 — tourbillon au-dessus du vide
Branche `codex/cloud-vortex-beta077`. [Ticket](cloud-vortex-beta077.md).
Couche native à Y = 0, diamètre double de l’île, rotation et géométrie en cache.
Livraison groupée avec les correctifs de menus beta.076. Tests natifs, cache,
transparence Fabulous, build et archives normal/Test vérifiés.
## UI-076 — navigation et pouvoirs sélectionnés
Branche `codex/menu-navigation-beta076`. [Ticket](menu-navigation-beta076.md).
Accès direct aux combats depuis Pause, parcours prestige/faction/historique,
achats visibles et sélection du pouvoir utilitaire explicite. Parcours natif vérifié ;
distribution regroupée avec beta.077.
## PLAN-FIX-01 — retirer la recherche web (beta.075)
Branche `codex/plans-library-beta075`. [Correctif](plans-library-beta075.md).
Retirer le bouton Minecraft Schematics de K → Bibliothèque et ses libellés.
Build, sources et archives normal/Test vérifiés ; anciens packs conservés.
## FAMILIAR-05 — autonomie et ordres rapides (beta.074)
Branche `codex/familiar-autonomy-beta074`. [Contrat](familiar-autonomy-beta074.md).
Quatre règles de comportement distinctes, garde locale, sélection des menaces,
retour après poursuite, gestion des cibles inaccessibles et H bref/maintenu.
Parcours natif, régressions montures/arènes/duels et `check build` réussis.
Archives normal/Test vérifiées ; textures beta.070 conservées.
## PLAN-01 — statues et plans natifs (beta.072)
Branche `codex/statues-plans-beta072`.
[Contrat, formats et vérifications](statues-plans-beta072.md). Modèles et textures
du jeu convertis en statues creuses ; bibliothèque compatible `.litematic`,
`.schem` v2/v3 et `.nbt`, aperçu par couche, rotation, matériaux et collage
créatif contrôlé côté serveur. En survie, construction manuelle native.
Aucune dépendance Litematica/MaLiLib ajoutée.
Capture native des 88 espèces, parcours creeper créatif/survie FR/EN,
interopérabilité Litemapy, sept tests serveur et 130 tâches Gradle réussis.
Archives normal/Test vérifiées ; anciennes `.schematic` à convertir en externe.
## BUILD-02 — Métabli et menu de construction
**Premier lot implémenté en beta.096**, branche `codex/metabli-beta096`.
[Contrat et vérifications](metabli-beta096.md) ·
[Conception et extension future du catalogue](metabli-construction.md).
Neuf établis à plat ouvrent le catalogue ; choix dun projet à latelier,
placement et orientation avec K. Statues, quatre machines existantes, abri,
passerelle et imports ; construction manuelle guidée, sans bouton pause ajouté.
Changer/importer/abandonner exige le Métabli. Projet local à la session actuelle,
exportable ; chantiers partagés persistants, catalogue serveur en datapack et
fonctions commerciales restent à réaliser.
## MB-01 — Reprendre le catalogue des multiblocs
**Ticket local ouvert le 15 septembre 2026 ; premier lot implémenté en beta.084.**
[Catalogue et décisions historiques](multiblocs-conception.md) ·
[Ticket de cadrage et lots d'implémentation proposés](multiblocs-ticket.md).
Branche documentaire réservée `codex/multiblocs-ticket`.
Premier lot choisi le 16 septembre 2026 : **clé dorée, Fourneau et Fût**,
implémenté en [beta.084](multiblocs-beta084.md) sur `codex/multiblocs-beta084`. Fermentation, présentoirs,
méga-pistons, Trémie, Carillon et Métablit restent au catalogue.
La clé dorée assemble volontairement et dissocie ; les composants restent
indépendants à la pose. Le Fût à 729 cases avec recherche et pages est accepté.
Les gestes et la chauffe du premier lot sont décrits dans sa livraison. La fusion de tout
It's Alive dans Sanctuary est différée ; le Fourneau pourrait alors remplacer
la cuisinière, selon le [cadrage corrigé](multiblocs-itsalive-contrat.md).
Aucun nouveau multibloc ni binaire livré ici.
Les huit candidats de la [recherche complémentaire](multiblocs-recherche.md)
sont rejetés par le créateur, jugés sans intérêt ou contraires au contrat
Minecraft Vanilla. Reprendre le catalogue antérieur pour la liste d'implémentation.
## FAMILIAR-04 — personnalité et montures natives (beta.071)
Branche de départ `codex/familiar-personality-beta071`.
[Contrat et vérifications](familiar-personality-beta071.md). Quatre caractères
stables avec tendances despèce ; priorité des ordres, poursuite plus vive et
verrouillage de combat conservé. Escalade des deux araignées, Souffle du
Nautilus pour les deux variantes colossales et surface de lave du Strider.
Audit des 14 espèces montables natives, parcours client et 124 tâches Gradle
réussis ; archives isolées de la beta.072 en cours, resource pack beta.070.
## RP-02 — textures versionnées et actives par défaut (beta.070)
Branche `codex/resourcepack-beta070`.
[Contrat et vérifications](resourcepack-beta070.md). Import des dessins fournis,
source et manifeste dempreintes enregistrés dans Git ; pack natif activé par
défaut et désactivable. Sept textures de faim/saturation mises à jour, respiration
vanilla conservée. Client natif, build, deux MRpacks et ZIP autonome vérifiés.
## FAMILIAR-FIX-02 — retour des ordres sur H (beta.069)
Branche `codex/familiar-orders-h-beta069`.
[Contrat et tests](familiar-orders-beta069.md). H pour les ordres, F pour
l’échange des mains, G pour la technique. Conversion unique de lancien
raccourci F en H ; suppression du filtrage de l’échange natif. Parcours
client et compilation vérifiés, deux archives locales conformes.
## LOAD-03 — animation discrète de lattente (beta.068)
Branche `codex/loading-animation-beta068`.
[Résultat et vérifications](loading-animation-beta068.md) : neuf glyphes SGA
avec une lumière mobile, animés par lhorloge de rendu ; étapes réelles et
carte des chunks conservées. Huit captures natives comparées, FR/EN inspectés,
compilation et archives normal/Test vérifiées. Introduction et cache inchangés.
## FAMILIAR-FIX-01 — touche et vol du dragon (beta.067)
Branche `codex/familiar-controls-beta067`.
[Contrat et vérifications](familiar-controls-beta067.md) : ordres sur F,
remappage unique de l'ancien H et prévention du double déclenchement de
l'échange des mains ; orientation du dragon corrigée. Plané des petits
vérifié, montée du grand porté avec Espace et monture colossale vérifiées.
Compilation et deux archives validées localement.
## HEAD-FIX-01 — modèles animés superposés (beta.066)
Branche `codex/cosmetic-render-beta066`.
[Résultat et tests](head-render-beta066.md). Doublon de coffre reproduit dans
le collecteur natif puis corrigé ; une seule cloche animée avec son support.
Ouvertures/fermetures, aliments, autres modèles et douze cas sur des mobs
adultes ou bébés vérifiés. Build et archives validés localement.
## BOAT-FIX-01 — collisions des coques (beta.065)
Branche `codex/boat-collisions-beta065`.
[Résultat et tests](boat-collisions-beta065.md) : coque entière couverte,
virages contrôlés avant la translation, recul conservé. Passage au travers
des murs reproduit puis corrigé ; 88 variantes et seize parcours pilotés
vérifiés en client natif et serveur intégré. Build et deux archives validés
localement ; pas de déploiement personnel.
## LOAD-02 — cache et étapes réelles de préchargement (beta.064)
Branche `codex/loading-cache-beta064`.
[Contrat, mesures et vérifications](loading-cache-beta064.md). Plans dérivés
mis en cache sur disque, validation des données et recalcul automatique si
une entrée manque ou est corrompue. Réouverture mesurée à 2,1 s contre 58,7 s
lors de laudit beta.063 ; première création à 122 s, introduction complète.
Étapes réelles du serveur, écran natif épuré sans portail du Nether. Pas de
migration des chunks ou des journaux dexpansion. Build, récupération dun cache
corrompu, huit ouvertures classiques/plates et archives vérifiés localement.
## RP-HUD-01 — base de textures modifiable
**Préparée le 15 septembre 2026**, branche `codex/resourcepack-hud-base`.
[Résultat et vérifications](resourcepack-hud-base.md) : 53 sprites vanilla
de vie et de faim, manifeste 26.3-pre-2 et guide de retouche FR/EN dans le
resource pack Sanctuary existant. Les dessins seront modifiés par le créateur.
Ce lot graphique séparé ne livre pas de nouveau binaire du mod.
## CAPE-01 — Des capes rares aux pouvoirs durables
**Ticket préparé le 15 septembre 2026 ; à arbitrer puis à implémenter.**
[Intention, premier lot proposé et critères d'acceptation](capes-gameplay.md).
Branche documentaire réservée `codex/capes-ticket` ; branche d'implémentation
prévue `codex/capes-gameplay`.
Les capes apportent généralement un bonus passif permanent, proposé tant
qu'elles sont portées. Des capes très puissantes restent possibles, avec rareté,
contreparties ou périodes actives à éprouver selon leur impact. Le ticket
prépare trois capes aux usages distincts, leur acquisition rare en survie et
les essais de cumuls, de circulation et de progression. Catalogue, valeurs,
malus et règles temporelles restent des propositions. Cape Zéro est actuellement
visuelle ; aucun nouveau pouvoir ni changement de binaire livré par ce ticket.
## ANO-01 — Les doubles de Steve
**Conception du 15 septembre 2026 ; non implémentée.**
@@ -1566,3 +1771,93 @@ secrets et traversées. Comparer les champs natifs 27, 30.1, 30.4 et 30.5 par
coupes et cartes scientifiques, archivées avec leurs sources et leurs graines.
Les expéditions anciennes et les îles supérieures ciblées restent à définir.
Voir [la génération](generation-alpha30.5.md) et [latlas](terrain-atlas.md).
## ARENA-01 — beta.073 — duels publics et arènes
Livré et vérifié : trois modes de combat, inscriptions sans plafond pour les arènes,
paris en objets, annonces et liste publique. Joueurs avec morts réelles.
[Contrat et essais](arenas-beta073.md).
## EXP-03 — Crash de recherche de temple
Correctif local beta.097 sur `codex/expedition-temple-crash-beta097`.
[Contrat et vérifications](temple-crash-beta097.md). Graine du rapport
`-4700804240597771092` ; le créateur demande de garantir le temple plutôt que
domettre le bâtiment ou de refuser la graine. Les plans de construction gagnent
aussi leur aperçu texturé à sa demande pendant ce correctif.
## CONSTRUCTION-098 — construction directe en créatif
Branche `codex/creative-construction-beta098`.
[Ticket](creative-construction-beta098.md) : bouton K créatif, confirmation et
placement serveur du projet choisi au Métabli ; parcours manuel en survie.
Essai client natif (statue, machine, bâtiment, annulation et contrôles créatif),
build complet et archives normal/Test vérifiés.
## CATALOGUE-099 — Progression et Métabli illustré
Branche `codex/catalogue-progression-beta099`.
[Contrat](catalogue-progression-beta099.md) : arbre des progrès intégré sous
les compétences, catalogue partagé entre catégories avec aperçus et trois
plans personnels terminés, palette étendue, K bref/maintenu et Métabli dans
les nouvelles salles souterraines. Anciennes pièces sauvegardées préservées.
## EXPLORATION-100 — Statues découvertes et promenade
Branche `codex/exploration-familiers-beta100`.
[Contrat](exploration-familiers-beta100.md) : catalogue de statues basé sur les
rencontres et statistiques serveur ; promenade avec pauses selon le tempérament,
sans orbite permanente ni concurrence avec les ordres et le combat.
EXPLORATION-100 vérifié : douze promenades, régression autonomie/ordres, catalogue
serveur, imports `.schem`, réouverture et deuxième monde ; build et archives
normal/Test réussis. Incident Windows non reproduit sans son journal.
## LANDING-101 — Atterrissage des familiers volants
Branche `codex/flying-landing-beta101`.
[Ticket](flying-landing-beta101.md) : supprimer le faux coup de chute des
profils volants, conserver les attaques réelles et les chutes terrestres.
LANDING-101 vérifié : reproduction native avant correctif, douze espèces
volantes, contacts lents/rapides, vraies attaques et chute terrestre ;
build complet et archives normal/Test contrôlés.
## beta.105 — Saisons et chapeaux vivants
Livré localement et vérifié en copie isolée : [contrat et contrôles](living-hats-seasons-beta105.md).
## EGGS-107 — Acquisition des œufs
Branche `codex/eggs-beta107`. [Contrat](spawn-eggs-acquisition-beta107.md) :
naissances en œufs et œuf du générateur sans Toucher de soie.
[Catalogue](spawn-eggs-catalogue-beta107.md) : 88 espèces, 35 voies couvertes,
53 propositions en attente de validation du créateur. Les rangs et Anomaly
restent hors de ce ticket. Les sources sont intégrées en préservant le chantier
Statuaire ; la validation binaire est isolée sur la dernière base livrée beta.105.
## SNOW-108 — Neige en volume
Branche `codex/snow-accumulation-beta108`.
[Contrat](snow-accumulation-beta108.md) : épaississement par précipitations,
blocs pleins à huit couches et accumulation verticale. Limite serveur de deux
blocs par défaut, réglable. Les blocs sont natifs, sans migration de terrain.
Livraison locale vérifiée : essais natifs dans deux mondes neufs, build complet
et archives normal/Test contrôlés ; assemblage isolé sur beta.107.
## SNOW-109 — Fonte saisonnière
Branche `codex/seasonal-snow-melt-beta109`.
[Contrat](seasonal-snow-melt-beta109.md) : fonte progressive par saison,
provenance des dépôts persistante par chunk, constructions préservées.
Livraison locale vérifiée sur beta.108 : essais natifs, rechargement de
chunk, build complet et archives normal/Test contrôlés.
## INTEGRATE-110 — Atelier dargile dans le pack complet
Branche `codex/clay-workshop-integration-beta110`.
[Ticket](clay-workshop-integration-beta110.md) : assemblage commun de
beta.106 et beta.109, avec tous les systèmes intermédiaires. Essais natifs de
latelier, des œufs et de la neige, build et archives réussis. Publication
et synchronisation de linstance Sanctuary Beta terminées ; 923 fichiers
personnels et réglages suivis conservés, aucun monde ouvert.
+100
View File
@@ -0,0 +1,100 @@
# beta.065 — collisions des bateaux collectifs
Branche `codex/boat-collisions-beta065`.
## Problème et portée
Les huit formes de bateaux et radeaux collectifs utilisent le déplacement natif
côté serveur. Leurs anciennes limites étaient fondées sur une tuile carrée de
1,375 bloc, alors que les modèles ont une longueur de 28 pixels par module.
La coque visible dépassait donc sa collision dans le sens longitudinal. Un
virage agrandissait aussi directement les limites sans vérifier le terrain ;
après cette intrusion, le déplacement natif pouvait traverser le mur.
Les limites couvrent désormais les coques complètes, et le volume balayé
par chaque virage est contrôlé avant le déplacement. Le mouvement natif reste utilisé pour
les translations, lappui au sol et sur leau, les formes de blocs et les
collisions avec les autres véhicules. Les sièges, les commandes partagées,
les moteurs, les vitesses et les règles de chute des piles restent inchangés.
Les modèles et les textures ne changent pas. Les bateaux simples Minecraft
conservent leur comportement. Aucune modification de chunk, de recette, de
journal ou de format de sauvegarde ; les identifiants existants restent stables.
Les positions enregistrées des anciens bateaux ne sont pas déplacées par la
mise à jour : seule leur collision utilise les dimensions corrigées.
## Collision de la coque
Les huit formes sont couvertes : 1 × 2, 2 × 1, 1 × 3, 3 × 1, 2 × 2,
2 × 3, 3 × 2 et 3 × 3, sur les onze bois. Largeur et longueur de la coque :
- Bois : `colonnes + 0,25` × `rangées × 1,75 + 0,25` blocs, rebords compris.
- Bambou : `colonnes × 1,25` × `rangées × 1,75` blocs.
Comme dans le moteur natif, la collision est une boîte alignée sur les axes ;
elle englobe la coque orientée. Les rames animées restent décoratives. Un virage
vérifie aussi les extrema entre ses deux orientations, pour quun coin ne
traverse pas un mur avant de revenir dans une position libre. Au contact,
linertie de rotation sarrête ; le recul et le glissement le long du mur restent
résolus par Minecraft. Les rotations de placement ou de téléportation ne sont
pas remplacées par des tentatives de conduite.
## Vérification
Client Minecraft 26.3-pre-2 et serveur intégré de développement, monde plat
neuf de graine `65`. Le test avant correction traverse effectivement le mur
situé en X=8 : après quinze mouvements avec virage, le centre atteint X=12,55.
Ce même cas passe après correction.
- **88 variantes** : **3 168 déplacements** contre des murs dans les deux sens
de X et Z, huit orientations, diagonales et déplacements de vingt blocs en
un appel ; collision native détectée et recul libre de 1,5 bloc.
- **440 virages** : contact et tentative de déplacement dans le mur, virages
libres, puis cas où les orientations de départ et darrivée sont libres
mais où le milieu du virage heurterait le mur. Ce dernier cas est refusé.
- **128 passages** contre les formes natives minces des barrières et vitres,
sur bateaux et radeaux, sans traversée ni recouvrement des blocs.
- **704 modèles orientés** : les sommets réels des fonds et rebords sont inclus
dans les collisions, côté client. Les rames sont explicitement exclues.
- **16 parcours pilotés avec les vraies touches**, huit formes en chêne et en
bambou, répartis entre eau et vol avec Allay et les quatre directions :
avancer contre le mur, maintenir le virage, reculer. Les limites serveur et
client restent à lintérieur des murs, le pilote reste assis et le recul
déplace effectivement le bateau. Deux captures de contact ont été relues.
Journaux locaux : `build/boat065-before.log`,
`build/boat065-control-before.log`, `build/boat065-fixed-probe.log`,
`build/boat065-client.log`. Captures : `build/boat065-evidence/`.
Le parcours complet passe en **1 min 59 s**.
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryBoat065ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Les essais utilisent le serveur intégré ; aucun serveur dédié ni EULA acceptée.
Le test client couvre la synchronisation locale ; une session avec plusieurs
clients distants et latence na pas été relancée pour ce correctif.
## Livraison locale
`./gradlew check build assemblePack assembleTestPack` réussi en **2 min 8 s**,
**122 tâches**, avec `-x :sanctuary:runGameTest -PsanctuaryClientTests=true
-PsanctuaryQuickTests=true`. Les essais serveur intégrés ci-dessus remplacent
les tests dédiés exclus conformément au refus antérieur daccepter leur EULA.
Les archives normal/Test sont vérifiées : **1 645 classes** conformes à la
compilation, aucune classe de test embarquée, mêmes ressources et dépendances
quen beta.064. Seule la source principale `CrewBoat` change, en plus des
métadonnées de version. Modèles, textures, recettes, sièges, moteurs et autres
systèmes restent conservés. Les anciennes archives beta.064 sont intactes.
- [Pack normal beta.065](../build/Sanctuary-beta.065.mrpack), 5721084 octets.
SHA-256 : `71ff1736817e2953f88a8afda5858b2e7ae23c360efdb7e25f149cbff049d764`.
- [Monde plat rapide beta.065](../build/Sanctuary-Test-beta.065.mrpack), 5740018 octets.
SHA-256 : `4c4931146a05d6f57e9abf2303b039ab7a7bc16471a0b864873b86bef297431d`.
Reçu `build/boat065-artifact.json`, build `build/boat065-check.log`.
Aucun canal publié, instance Prism ou monde personnel modifié.
+74
View File
@@ -0,0 +1,74 @@
# beta.091 — Interagir avec les animaux embarqués
Branche `codex/boat-passenger-interactions-beta091`, Minecraft 26.3.
## Contrat
Depuis un bateau, viser un mob directement installé sur un siège permet les
interactions habituelles : clic gauche pour le frapper, clic droit pour utiliser
son objet de tête ou son interaction native. Cela couvre les bateaux/radeaux
Minecraft et tous les formats Sanctuary. Les coups sur les animaux ordinaires
infligent leurs dégâts habituels ; les familiers conservent leur réaction sans
blessure hors des combats prévus, avec déclenchement de leur équipement.
Le ciblage natif excluait les entités partageant le véhicule racine du joueur.
L'exception est limitée au curseur du joueur et aux mobs assis directement dans
son bateau. Portée, obstacles et choix de la cible la plus proche restent ceux
de Minecraft. Les collisions des projectiles ne sont pas modifiées.
Le bateau limite aussi normalement le regard à ±105 degrés. Avec un mob à bord,
les joueurs peuvent désormais regarder autour deux à 360 degrés, notamment
vers le siège arrière. Les commandes de déplacement et la rotation du bateau
restent indépendantes du regard ; les mobs gardent leur orientation native.
La protection de portage des familiers distingue désormais un siège de bateau
d'un familier porté sur la tête ou monté. Les protections entre joueurs portés
restent en place. Les dégâts et interactions continuent à être validés côté
serveur ; aucun nouveau paquet, inventaire, identifiant ou format de sauvegarde.
Aucune modification des mondes existants ni de la génération.
## Vérifications
Le parcours `BoatPassengers091ClientChecks` crée un monde plat de développement,
graine 42, et utilise le curseur natif et les vrais clics souris. Il teste un
coffre porté puis un distributeur chargé sur une poule embarquée.
Le parcours natif passe en **1 min 13 s** sur Minecraft 26.3/macOS :
- 13 cas : bateau et radeau vanilla, les huit formats Sanctuary, radeau 3 × 3,
poule bébé et familier installé comme passager pour vérifier sa protection.
- Vrai ciblage du corps depuis le siège, y compris vers larrière ; aucun
remplacement artificiel du résultat de visée dans le test.
- Clic droit : ouverture du coffre natif contenant les sept diamants attendus.
- Clic gauche : perte de vie de la poule, une flèche consommée et un projectile
réel créé par le distributeur, sans éjection de lanimal.
- Familier : même tir au toucher, vie inchangée. Une fois porté sur la tête,
protection symétrique conservée et aucun nouveau déclenchement au toucher.
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryBoatPassengers091ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Journal : `build/boat091-client.log`, marqueur `BOAT091_PASS`.
## Livraison
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 20 s**, 124 tâches. Journal : `build/boat091-check.log`.
Les deux exports sont vérifiés contre les JAR et leurs sources. Les textures,
modèles, données et JEI restent identiques à beta.090 ; ses archives sont intactes.
Le reçu local est `build/boat091-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.091.mrpack), SHA-256
`0d0e847e5b8f22637b6e280d0694ab5a2cdb8cb01a47442d92c5103e3e3f53ac`.
- [Pack Test](../build/Sanctuary-Test-beta.091.mrpack), SHA-256
`392773b8e5fc8948cdb5ea9cd7e8cc8cd97ed43bdc5fe413fef32b05758f8edc`.
## Limites
Les essais utilisent un client natif et son serveur intégré de développement ;
pas de session LAN à deux clients pour cette livraison. Les tests dédiés restent
exclus et aucune EULA nest acceptée. Aucun déploiement dans une instance
personnelle ni publication du canal packwiz.
+85
View File
@@ -0,0 +1,85 @@
# beta.080 — portée de Construction et progression de Minage
Branche `codex/build-mining-balance-beta080`, Minecraft 26.3-pre-2, textures beta.070.
Construction augmente la distance de pose. Minage augmente indépendamment
la distance et la vitesse de casse. Le départ est inférieur au vanilla ;
les derniers paliers le dépassent modérément. Les coûts, sept achats par
compétence et tailles des groupes restent ceux du système existant.
| Rang | Vitesse de minage, référence vanilla | Portée de minage | Portée de pose |
| --- | --- | --- | --- |
| 0 | 75 % | 3 blocs | 3 blocs |
| 1 | 85 % | 3,5 blocs | 3,5 blocs |
| 2 | 95 % | 4 blocs | 4 blocs |
| 3 | 100 % | 4,5 blocs | 4,5 blocs |
| 4 | 107,5 % | 4,75 blocs | 4,75 blocs |
| 5 | 115 % | 5 blocs | 5 blocs |
| 6 | 122,5 % | 5,25 blocs | 5,25 blocs |
| 7 | 130 % | 5,5 blocs | 5,5 blocs |
Chaque colonne dépend de sa propre compétence. La vitesse sapplique via
lattribut natif de casse, avec les outils, enchantements et autres effets.
Les portées préservent les bonus externes de lattribut dinteraction ;
les valeurs du tableau supposent cet attribut à sa valeur survival de base.
Créatif, spectateur et joueurs sans progression Sanctuary conservent leur
portée native. Les infobulles FR/EN affichent le palier actuel et le suivant.
La visée peut sélectionner le plus éloigné des gestes disponibles ; les
validations de chaque action appliquent ensuite sa propre portée. Ainsi,
voir le contour dun bloc naccorde pas forcément la portée pour le miner
ou y poser un bloc : le même contour sert aux interactions ordinaires.
La portée des coffres, autres interactions et attaques naugmente pas.
Un coffre hors de portée native peut servir de support de construction,
sans souvrir à distance. La main gauche et les plantes aquatiques suivent
la portée de Construction.
Les deux sélections groupées vérifient leur ancre avec leur compétence.
Le plan et la veine verrouillés conservent leur contrat : les cellules du
groupe peuvent dépasser la portée de lancre. Les droits, protections,
collisions, stock, conditions de pose et chunks chargés restent vérifiés.
La validation réseau conserve la tolérance native de distance à lentrée
des paquets ; la pose vérifie aussi la distance du point cliqué côté serveur.
Aucun identifiant, schéma de sauvegarde ni terrain modifié. Les anciens
rangs reçoivent les nouvelles valeurs à leur application habituelle ; un
reset ou prestige revient aux valeurs de départ.
## Vérification
`Balance080ClientChecks` réussit en **1 min 03 s**, dans un monde plat solo
jetable, avec les gestes natifs et les paquets réels client/serveur :
- Les huit rangs, vitesse native de casse dun bloc et composition des bonus.
- Pose proche au rang zéro, refus de la pose lointaine sans perte de stock.
- Minage et pose au-delà de la portée vanilla ; indépendance des deux compétences.
- Pose en main gauche et refus serveur dun paquet visant trop loin.
- Coffre lointain utilisable comme support sans ouvrir son inventaire ; un
briquet en main principale ne profite pas de la portée du bloc en main gauche.
- Construction dun plan complet de neuf blocs à la nouvelle portée.
- Vein mining de neuf blocs à cette portée, regard détourné après verrouillage.
- Pose dun nénuphar, retour aux rangs zéro, créatif et joueur sans progression.
Journal : `build/balance080-client.log`. Les interactions des blocs portés
sur la tête ont également été relues : elles passent par leur contexte
propre, sans la pose de bloc interceptée ici.
`check build assemblePack assembleTestPack` réussit en **2 min 27 s**,
124 tâches (104 exécutées, 20 à jour), avec `-x :sanctuary:runGameTest`.
Journal : `build/balance080-check.log`.
Les **1 700 classes** du JAR correspondent aux fichiers compilés. Les 17
classes ajoutées ou modifiées par rapport à beta.079 concernent uniquement
ce ticket ; quatre libellés évoluent par langue. Sources et ressources
vérifiées, textures beta.070 identiques, même JAR intégré aux deux packs.
Les archives beta.079 sont conservées à lidentique.
Reçu : `build/balance080-artifact.json`. Aucun déploiement personnel.
Le serveur dédié reste exclu conformément au refus de son EULA ; le test
natif ci-dessus utilise le serveur intégré.
## Archives
- [Sanctuary-beta.080.mrpack](../build/Sanctuary-beta.080.mrpack).
SHA-256 : `feb20b882442149789ed6d90e32073aa6201314a57782105a0330394c76e796d`.
- [Sanctuary-Test-beta.080.mrpack](../build/Sanctuary-Test-beta.080.mrpack).
SHA-256 : `fc277f081f160ae8ae835501cddddd572cdffe4749454e1652a080a117bfb941`.
+43
View File
@@ -0,0 +1,43 @@
# beta.081 — portée de pose jusqu’à six blocs
Branche `codex/build-reach-six-beta081`, Minecraft 26.3-pre-2, textures beta.070.
À la demande du joueur, Construction atteint maintenant **six blocs**.
Les portées des rangs 0 à 7 sont : **3 ; 3,5 ; 4 ; 4,5 ; 4,75 ; 5 ; 5,5 ; 6**.
Le rang 6 est également ajusté pour terminer par deux gains dun demi-bloc.
La référence reste lattribut dinteraction vanilla sans bonus externe.
Le minage conserve sa portée maximale de 5,5 blocs et sa vitesse de 130 %.
Le contrat client/serveur, la pose en main gauche, les plans groupés et les
infobulles FR/EN utilisent déjà la même source des valeurs. Aucun changement
des coûts, identifiants, sauvegardes ou mondes ; les archives beta.080 restent
immuables.
## Vérification
Le scénario natif `Balance080ClientChecks`, ajusté à cette courbe, réussit
en **1 min 21 s** dans un monde solo jetable : pose réelle à 5,75 blocs,
refus serveur dun clic à 6,25 blocs sans perte de stock, et régression des
huit rangs, du minage indépendant, de la main gauche, des groupes, des
nénuphars, du créatif et des bonus externes.
Journal : `build/reach081-client.log`.
`check build assemblePack assembleTestPack` réussit en **2 min 30 s**,
124 tâches (103 exécutées, 21 à jour), avec `-x :sanctuary:runGameTest`.
Journal : `build/reach081-check.log`.
Les 1 700 classes et les sources correspondent aux fichiers compilés :
seule `BuildingLimits` change par rapport à beta.080. Ressources et textures
identiques, même JAR dans les deux packs, archives beta.080 préservées.
Reçu : `build/reach081-artifact.json`.
Le serveur dédié reste exclu
conformément au refus de son EULA ; le test utilise le serveur intégré.
Aucun déploiement personnel.
## Archives
- [Sanctuary-beta.081.mrpack](../build/Sanctuary-beta.081.mrpack).
SHA-256 : `7f789522eaa4a2574cc9bee4a4def7862a4893c8f462e88502ca858440c8ee02`.
- [Sanctuary-Test-beta.081.mrpack](../build/Sanctuary-Test-beta.081.mrpack).
SHA-256 : `7811cdc47ab4a8af2fc6ccd530775eb4a239f18894965362a1c57a5e0f12ded5`.
+205
View File
@@ -0,0 +1,205 @@
# CAPE-01 — Des capes rares aux pouvoirs durables
**Ticket local rédigé le 15 septembre 2026 — à arbitrer, puis à implémenter.**
Cette livraison prépare le ticket ; les effets et l'acquisition décrits ci-dessous
ne sont pas implémentés.
- Branche documentaire réservée : `codex/capes-ticket`.
- Branche d'implémentation prévue : `codex/capes-gameplay`.
- Aucun numéro `beta.xxx` réservé pour cette préparation documentaire.
## Ce que le joueur doit pouvoir faire
Trouver une cape Sanctuary doit être un événement : un objet très rare,
reconnaissable et désirable, que l'on a envie de porter pour son pouvoir.
Les capes donnent généralement un **bonus passif permanent**. Certaines peuvent
offrir un pouvoir exceptionnel, voire volontairement « cheaté », si son impact
reste acceptable dans la partie collective.
Un catalogue riche est souhaitable : il peut contenir beaucoup de modèles,
y compris plusieurs capes très puissantes. La diversité du catalogue et le
nombre d'exemplaires en circulation sont deux choix distincts.
### Intentions exprimées par le créateur
- Privilégier les bonus durables et l'envie d'utiliser les capes.
- Faire des capes des objets très rares.
- Garder ouverte la possibilité de malus ou de contreparties.
- Accepter des pouvoirs très forts ; leur puissance seule ne les exclut pas.
- Examiner leurs conséquences réelles sur le gameplay et les autres joueurs.
- Envisager la rareté et des périodes de fonctionnement comme moyens
d'équilibrage, sans rendre toutes les capes temporaires.
### Interprétation proposée de « permanent »
Le pouvoir reste disponible **tant que la cape est équipée dans sa case dédiée**,
sans renouveler une potion ou appuyer régulièrement sur une touche. Posséder
la cape dans un coffre ou l'inventaire n'accorde rien. Le retrait arrête son
effet ; découvrir plusieurs capes ne donne pas plusieurs bonus permanents au
personnage. Cette interprétation reste à confirmer avant le code.
Les exceptions temporaires sont annoncées cape par cape. Proposition : la cape
reste un objet de collection après sa période active ; c'est son pouvoir qui
s'endort. Une cape consommable ou détruite à l'expiration serait un autre choix,
à expliciter, pas une conséquence implicite du mot « temporaire ».
## État réel du socle
La [beta.018](companions-cosmetics-beta018.md) a livré la case cape, les gestes
d'équipement, la sauvegarde et le rendu partagé. Le code consulté contient une
seule cape, `sanctuary:zero_cape`, disponible en créatif ou par `/give`.
**Cape Zéro est actuellement visuelle : aucun bonus de gameplay n'est appliqué
par son service.** Son apparence est provisoire. Le filtre d'équipement et le
rendu reconnaissent explicitement cet objet ; un catalogue demande leur extension.
Les [lootboxes de capes](vision.md#panneaux-et-lootboxes) appartiennent à la vision.
Elles ne constituent pas une acquisition en survie déjà livrée. Les familiers,
la progression, le portage, les bateaux et le temps réel existent et devront
être pris en compte lors des essais des effets retenus.
## Périmètre proposé pour un premier lot jouable
Livrer **trois capes aux usages distincts**, leur description FR/EN, leur effet
serveur et une première voie d'obtention rare effectivement jouable. Le choix
des trois capes ci-dessous est une proposition de prototype, pas un catalogue
approuvé. Les autres modèles pourront suivre par petits lots.
| Piste FR / EN | Pouvoir envisagé | Point d'équilibrage à éprouver |
| --- | --- | --- |
| **Cape de la Brise / Breeze Cape** | Bonus permanent de vitesse de déplacement au sol. | Utilité quotidienne ; cumul avec Sprint, potions, familiers et ralentissement du portage. Un bonus simple peut rester sans malus. |
| **Cape du Brasier / Ember Cape** | Forte augmentation des dégâts de mêlée ; réduction de la vie maximale comme contrepartie possible. | Gain offensif réellement sensible ; risque assumé et lisible. Vérifier si le malus influe sur les combats ou s'annule facilement par une combinaison. |
| **Cape de l'Éclipse / Eclipse Cape** | Vol libre pendant une courte fenêtre récurrente, pouvoir volontairement exceptionnel. | Accès entre îles, exploration, transport et sortie de fenêtre en plein vol. Durée, fréquence et éventuelles restrictions à décider après essai. |
Pour chaque cape sélectionnée, renseigner avant implémentation : nom FR/EN,
identifiant stable, visuel et provenance, effet chiffré, conditions, éventuel
malus, cumuls, acquisition, fréquence d'obtention et règle temporelle complète.
Le devenir de Cape Zéro reste une décision distincte : ne pas attribuer
automatiquement un nouveau pouvoir aux exemplaires existants.
Ce lot réutilise la case existante. Il ne nécessite ni nouveau monde, ni nouvelle
génération, ni économie complète, ni système général de quêtes ou de lootboxes.
La source de récompense doit être choisie parmi les mécanismes effectivement
disponibles au démarrage ; si elle exige un chantier autonome, la référencer
comme dépendance. Un prototype accessible uniquement par `/give` valide les
pouvoirs, mais ne clôt pas le résultat « trouver une cape rare en survie ».
## Équilibrage : mesurer ce que la cape change
**La rareté ne suffit pas à prouver l'équilibre.** Une cape obtenue une seule fois
peut servir quotidiennement, être prêtée à tout un groupe ou aider son détenteur
à en obtenir d'autres. Une faible probabilité répétable peut finir par produire
beaucoup d'exemplaires. À l'inverse, une cape très forte dans un contexte précis
peut créer un moment mémorable sans dominer toute la progression.
L'objectif proposé est que plusieurs capes aient des usages désirables, tout en
gardant un parcours intéressant sans cape. Les exceptions qui court-circuitent
une étape doivent être identifiées et assumées dans leur fiche.
| Axe | Essai à réaliser et décision à en tirer |
| --- | --- |
| **Exploration et vide** | Comparer un trajet entre îles sans cape, avec cape et avec moyens de transport existants. Identifier les risques supprimés, les accès anticipés et l'utilité restante des infrastructures. |
| **Combat PvE et PvP** | Mesurer dégâts, survie et possibilité de réponse à équipement comparable, puis en combinaison forte. Décider explicitement du traitement PvP ; ne pas le désactiver par défaut dans la conception. |
| **Progression et production** | Relever temps gagné, ressources et XP obtenues. Vérifier si une cape rend superflus une compétence, une potion, un familier ou une étape collective. |
| **Cumuls et coopération** | Éprouver cape + familier + équipement + potions, portage et prêt entre joueurs. Une seule case cape ne limite pas les autres sources de bonus. |
| **Rareté dans le temps** | Estimer les exemplaires et détenteurs après une semaine et un mois, pour un joueur occasionnel, un joueur intensif et un groupe qui mutualise les récompenses. |
| **Plaisir et choix** | Observer si les joueurs veulent réellement porter chaque cape, changent selon l'activité ou choisissent toujours la même. Un malus qui conduit à tout laisser au coffre rate l'intention. |
Ajuster en priorité le contexte d'utilité, les cumuls, l'acquisition ou la période
active lorsqu'ils permettent de conserver un pouvoir spectaculaire. Réduire
la puissance ou ajouter un malus reste possible, sans imposer une pénalité à
chaque cape. Une cape maudite à malus seul reste une piste à arbitrer.
### Rareté et circulation
- Fixer la source, les joueurs éligibles, la fréquence des tentatives, le taux
ou quota éventuel et la possibilité de renouveler la récompense.
- Distinguer rareté d'un modèle et rareté de l'ensemble : beaucoup de modèles
très rares peuvent rendre l'obtention d'une cape quelconque fréquente.
- Examiner les prêts, échanges, doublons, récompenses rejouées et New Game+.
Liaison au joueur et exemplaire unique au serveur sont des options, pas des
règles acquises. Les nouveaux arrivants doivent être inclus dans l'essai.
- Documenter les hypothèses de calcul et confronter la rareté attendue à des
essais. Un taux de butin bas, seul, n'est pas un critère d'acceptation suffisant.
### Périodes d'activité des capes exceptionnelles
Choisir, pour chaque cape concernée, **un modèle temporel explicite** : fenêtre
commune récurrente, durée depuis l'obtention, ou budget de temps d'utilisation.
Une période d'obtention limitée et une période d'effet limitée sont distinctes.
Le contrat précise l'horloge utilisée, début, fin, fréquence, temps hors ligne,
arrêts serveur et effet des changements de mode Vanilla/Real Time. Une fenêtre
liée à une heure réelle doit aussi être essayée du point de vue des joueurs
qui ne peuvent pas se connecter à cette heure.
Le serveur fait autorité. Retirer, rééquiper, prêter, mourir, se reconnecter ou
redémarrer ne doit pas réinitialiser involontairement une durée ou une recharge.
L'interface indique l'état actif/dormant, le temps restant et la prochaine
occasion lorsqu'elle est prévisible. Prévoir l'avertissement et la transition
de fin : pour le vol, définir une sortie praticable, sans mort surprise ni
prolongation illimitée par rééquipement.
## Contrat technique à écrire avant le code
- Une seule cape active par joueur ; effets et conditions calculés côté serveur.
Une préférence visuelle ne peut pas accorder ou prolonger un pouvoir.
- Appliquer et retirer uniquement la contribution de la cape. Préserver un
effet identique venant d'une potion ou d'un familier ; préciser addition,
multiplication, priorité ou plafond pour chaque cumul pertinent.
- Traiter changement de cape, mort, tombe, `keepInventory`, changement de
dimension, reconnexion et New Game+ avec les règles d'inventaire existantes.
Définir aussi le retrait d'un bonus de vie ou d'un malus de vie maximale,
sans soin gratuit par alternance de capes.
- Conserver `sanctuary:zero_cape` et les emplacements existants. Tout ajout de
données persistantes, notamment temporelles, exige un contrat de migration
explicite et des essais sur des copies de sauvegardes de développement.
- Décrire en FR/EN bonus, contrepartie, conditions et durée avant équipement.
Vérifier le rendu porté et les élytres sur la version Minecraft exacte du lot.
## Critères d'acceptation de la future livraison
- [ ] Les trois fiches sont complètes ; valeurs, obtention, cumuls et traitement
temporel sont fixés, avec les conséquences fortes assumées par la conception.
- [ ] Un joueur peut obtenir une cape par la voie de survie retenue, l'équiper,
comprendre son pouvoir et constater son effet réel. Une récompense unique
ne peut pas être réclamée plusieurs fois par reconnexion.
- [ ] Le bonus permanent reste actif au-delà de la durée d'une potion ordinaire
tant que la cape est portée. Stockage et retrait ne laissent aucun bonus indu.
- [ ] Deux joueurs voient un équipement cohérent ; changement rapide de cape,
effet concurrent et prêt ne produisent ni cumul résiduel ni duplication.
- [ ] Les limites de période fonctionnent avant, pendant et après la fenêtre,
y compris après arrêt/reprise et transfert ; la sortie d'un pouvoir dangereux
respecte la transition annoncée.
- [ ] Mort/tombe, `keepInventory`, dimension, reconnexion, redémarrage et
New Game+ conservent les objets et durées selon le contrat de migration.
- [ ] Un compte rendu compare sans cape, chaque cape seule et les combinaisons
les plus fortes, en début et en fin de progression, en solo et à 24 joueurs.
Il relève gains, abus possibles, circulation attendue et ajustements retenus.
- [ ] Aucun pouvoir n'est déclaré équilibré sur la seule base de sa rareté ou
d'un build réussi ; les limites de l'essai sont documentées.
- [ ] `./gradlew check build` passe avec les tests utiles aux effets retenus ;
`./gradlew assemblePack` vérifie la distribution. Versions et note de livraison
suivent [le compteur bêta](versioning.md). Parcours client FR/EN vérifié.
## Décisions encore ouvertes
1. Confirmer « permanent tant que porté » et le rôle des capes à malus seul.
2. Choisir les trois premières capes, leurs valeurs et le devenir de Cape Zéro.
3. Choisir la première acquisition jouable et la rareté visée, puis décider
des échanges et des éventuels quotas.
4. Choisir la règle temporelle des exceptions, leurs cumuls, leur traitement
PvP et les étapes de progression qu'elles peuvent volontairement dépasser.
## Références vérifiées pour cette préparation
- [Vision : progression](vision.md#inventaire-prestige-et-déblocages) et
[récompenses](vision.md#panneaux-et-lootboxes).
- [Service actuel des accessoires](../mods/sanctuary/src/main/java/fr/koka/sanctuary/cosmetics/AccessoryService.java),
[filtre et stockage](../mods/sanctuary/src/main/java/fr/koka/sanctuary/inventory/AccessoryContainer.java)
et [rendu](../mods/sanctuary/src/main/java/fr/koka/sanctuary/mixin/client/AccessoryAvatarRendererMixin.java).
- [Catalogue des familiers beta.032](spawn-eggs-v2-catalogue-beta032.md), à
confronter au code courant lors des essais de cumul.
Validation de ce ticket : lecture du socle, vérification des références locales
et relecture du diff documentaire. Aucun essai de gameplay ni build exécuté
pour cette rédaction ; les critères ci-dessus concernent la future implémentation.
+91
View File
@@ -0,0 +1,91 @@
# CARRY-08 — Fuite des animaux volants portés — beta.114
Contrat du 17 septembre 2026, branche `codex/carried-flight-panic-beta114`.
Un coup reçu par un animal volant porté sur la tête déclenche une fuite de
40 à 60 ticks : il entraîne son porteur vers le haut, dans une direction
aléatoire, avec des embardées. Le serveur choisit le départ et la trajectoire,
transmis au client pour la physique native. Les touches de déplacement et le
regard ne pilotent pas cette brève fuite. La caméra reste libre. Un nouveau coup peut relancer la fuite avec un autre
cap après dix ticks, sans cumuler les vitesses.
Le porteur peut viser et frapper son animal volant. Les animaux ordinaires
reçoivent les dégâts habituels ; le familier conserve son coup amical sans
perte de santé. Les attaques extérieures acceptées déclenchent aussi la fuite.
Les autres protections entre passagers et porteurs restent en place.
Les espèces reprennent le groupe déjà utilisé pour planer, poule comprise.
La vitesse reste bornée, les collisions sont natives et aucun bloc nest
traversé ni déplacé. Déposer lanimal (Maj + clic droit), le perdre, mourir,
se déconnecter ou changer de dimension arrête la propulsion. Immersion,
mode spectateur, vol créatif, élytres et porteur lui-même passager linhibent.
La fin de fuite rend le contrôle au joueur et conserve le planeur existant
si lanimal reste porté. Les montures colossales gardent leur pilotage actuel.
L’état de fuite est temporaire, synchronisé et non sauvegardé. Aucun format
persistant, identifiant existant ou monde personnel nest modifié. Les nouveaux
retours dinterface sont traduits FR/EN. Client et serveur utilisent beta.114.
## Vérifications natives
`CarryPanic114ClientChecks` passe en **56 secondes** avec un serveur intégré
Minecraft 26.3 et un monde plat jetable de graine 114 :
- Véritable ciblage du perroquet sur la tête et frappe avec la touche native,
perte de santé de lanimal ordinaire, décollage et déplacement du joueur.
- Trajectoire synchronisée et priorité sur les touches avant/droite/saut et
le regard ; comparaison exacte avec la vitesse du tick de physique.
- Expiration, suppression de l’état temporaire et retour au planeur normal.
- 32 trajectoires tirées côté serveur couvrent les quatre quadrants, toutes
dans les bornes de durée et de vitesse ; Maj + clic droit natif interrompt.
- Sept espèces ordinaires : poule, chauve-souris, abeille, allay, perroquet,
blaze et breeze. Une vache portée reste protégée et ne déclenche aucun vol.
- Attaque extérieure, mort, activation du vol créatif et détachement arrêtent
ou déclenchent la réaction selon le contrat.
- Plafond bas : aucune traversée ; le passager bloqué est déposé par les
contrôles de place existants et la propulsion sinterrompt.
- Véritable coup amical sur un familier perroquet : lancement sans perte de
santé, puis arrêt immédiat lors du détachement.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryCarryPanic114ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Marqueurs `CARRY114_NATIVE_FLIGHT_PASS` et `CARRY114_PASS` dans
`build/carry-panic114-client.log`. Capture en jeu relue dans
`build/carry-panic114-evidence/`. Le GameTest dédié reste exclu conformément
au refus antérieur de son EULA. Pas de test Windows, de réseau distant ou de
latence simulée ; aucun monde personnel na été ouvert.
## Livraison
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 22 s**, 125 tâches. Les sources JAR correspondent exactement
aux sources du dépôt. Les classes et ressources hors de ce ticket restent
identiques à beta.113, notamment les sculptures dargile. Les deux packs
contiennent le même JAR, sans monde, GLB ni classes de test.
- Sanctuary-beta.114.mrpack : 10179428 octets, SHA-256
`92aac61c2c00a2206f3f5ac3d170ab058f6765526cf5a2a64c5336261db3f5bf`.
- Sanctuary-Test-beta.114.mrpack : 10198350 octets, SHA-256
`5e8ec1f18e34ca51e09e2738f2b04f9a1bbac5d14c7a7c2d766218a4cff6021f`.
- JAR Sanctuary : SHA-256
`18105b76f63008210c62d5728f999c7abc083a861ecc1de2c7ee87262dde5a40`.
Reçu local : `build/carry-panic114-artifact.json`.
## Publication et installation
La [release beta.114](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.114)
est publiée depuis `21845bd7367a260ee6a3d189417a8620aa5bf738`. Le tag exact
et les artefacts sont immuables ; les téléchargements publics sont vérifiés.
Le canal packwiz avance à `c26f3bb59491c9bb4bbdd27f59571ef84f417f7b`.
Deux synchronisations isolées puis deux passages dans **Sanctuary Beta** ont
réussi. Un seul JAR Sanctuary beta.114 est actif, et le second passage conserve
les mêmes hashes. Les **923 fichiers personnels et réglages suivis** restent
identiques. Aucun monde personnel na été ouvert. La sauvegarde ciblée est
`sanctuary-backups/before-beta.114/` dans linstance existante. Reçus locaux :
`build/carry-panic114-isolated.json` et `build/carry-panic114-prism.json`.
+127
View File
@@ -0,0 +1,127 @@
# beta.099 — Progression, catalogue du Métabli et gestes K
Contrat de réalisation, 16 septembre 2026. Branche `codex/catalogue-progression-beta099`.
- Compétences en haut de la colonne gauche, arbre des progrès Minecraft intégré
dessous ; aptitudes à droite. Prestige et historique sous larbre.
- Catalogue visuel natif : trois derniers plans terminés en accueil, statues,
machines, bâtiments, infrastructures, décoration et bibliothèque. Même format
de fiches (aperçu, nom, dimensions, description et sélection).
- Historique personnel local de trois plans terminés, sans autorité sur le monde :
aucun choix de plan nest compté comme construction et chaque placement reste
contrôlé par le serveur. Le stockage est distinct des sauvegardes Minecraft.
- Palette de statue étendue aux blocs ayant un objet utilisable, échantillonnée
depuis le pack actif. Pas de blocs techniques sans objet ni de commandes.
- Clé dorée : modèle plat doutil Minecraft. Texture provisoire vanilla, à
remplacer par la texture que le créateur fournira ; aucune texture dessinée
à sa place.
- K bref ancre au bloc visé ; rappuyer sur le même point tourne de 90 degrés.
K maintenu ouvre le cockpit. Viser le vide ne repositionne pas le projet.
## Contrat de génération et de compatibilité
Le module EXPANSION_HALL conserve sa géométrie, ses appuis, son piédestal et son
identifiant. Les nouvelles pièces natives de la salle indépendante portent un
champ optionnel `SanctuaryMetatable099=true` : neuf parties de Métabli assemblées
sont posées au centre, un bloc au-dessus du piédestal. Une pièce enregistrée sans
ce champ conserve son comportement ancien (aucun ajout), même si un de ses chunks
n’était pas encore décoré. Le champ ne modifie ni le journal ni la graine ni les
identifiants de génération. Aucune régénération ou écriture dans un monde
personnel existant. Les nouvelles salles générées après cette version reçoivent
lexemple ; les salles déjà enregistrées ne sont pas modifiées.
Une fois généré, le Métabli suit les règles normales : le casser le désassemble,
et le reconstruire exige la clé dorée. Pas de réparation automatique au chargement.
Vérification prévue sur nouvelles sauvegardes de développement et round-trip NBT
avec et sans le champ optionnel, génération en plusieurs ordres de chunks.
## Validation
Deux essais natifs sur Minecraft **26.3 finale**, nouveaux mondes de développement :
- `Catalogue099ClientChecks` : **réussi en 1 min 33 s**. Génération et construction
dune statue de Creeper de 32 blocs (1 542 cellules) avec la palette étendue ;
construction des plans Fourneau et Abri, confirmation/annulation, retrait du
créatif pendant la confirmation et refus dun envoi falsifié en survie. Pose
manuelle via le contrôleur Minecraft consommant exactement un bloc. Trois plans
terminés mémorisés, conservés au changement de monde, écrits sur disque et
décodés. Catalogue physique, catégories, aperçus, import/export, abandon et
destruction du Métabli ; K bref/rotation/visée vide/maintien. Arbre des progrès
sous les compétences, clic droit passant par l’écran et activant réellement le
suivi. Interfaces FR/EN, échelles 2 et 3, petite fenêtre et fenêtre 1280 × 800.
- `Temple097ClientChecks`, étendu à la salle : **réussi en 4 min 48 s**, graine
**-4700804240597771092**, génération racine `sanctuary:island_v24`. Origine des
neuf parties du Métabli : **(-56, 169, -117)**, sur le piédestal de pierre lisse.
Les neuf états `part=0..8` sont présents après génération puis après sauvegarde
et réouverture du monde de développement. Aller-retour NBT du nouveau champ ;
ancien tag sans champ restant sans champ. Régression des deux temples natifs,
coffres, pièges et cache de planification réussie.
Les captures dinterface vérifiées sont dans `build/catalog099-evidence/`.
Journaux : `build/catalog099-client.log` et `build/catalog099-hall.log`.
La capture de la salle prise immédiatement après téléportation précédait le
rendu des chunks et nest pas utilisée comme preuve visuelle ; les assertions
sur les blocs, appuis et sauvegardes constituent la validation de sa génération.
Les premiers passages ont détecté deux problèmes corrigés : les petits blocs
(fleurs) favorisés par une comparaison de couleur seule, et la protection native
des vestiges refusant lajout du Métabli hors de leur contexte de génération.
Des clics automatisés immédiatement après redimensionnement donnaient aussi un
rayon de caméra périmé : les interactions physiques répétées du test passent
maintenant par le contrôleur client Minecraft et son protocole normal, avec
contrôle serveur de la consommation et de louverture. Les gestes K et le suivi
des progrès restent testés par les événements dentrée natifs.
`check build assemblePack assembleTestPack` : **réussi en 3 min 7 s**, 124 tâches.
Le GameTest sur serveur dédié est exclu ; les tests client natifs ci-dessus
utilisent uniquement les mondes de développement.
Les deux exports packwiz sont vérifiés : version, sources Java, contenu du JAR,
absence des classes de test et conservation des archives beta.098. Reçu complet :
`build/beta099-artifact.json`.
| Archive | Octets | SHA-256 |
| --- | ---: | --- |
| `Sanctuary-beta.099.mrpack` | 9 908 941 | `9722e2410e18bba34cf5db835facec4bb29fc3bd7f071942e7c8321a60d955ed` |
| `Sanctuary-Test-beta.099.mrpack` | 9 927 866 | `7ce02718c2e4c780197f9984b1ac7bc7a443f78eaa3e7d8ea248aa6b2e75745a` |
Aucune publication du canal ni installation personnelle effectuée.
## Détails du catalogue
Les vignettes de plans utilisent les quads, UV et textures du pack actif.
Les blocs rendus par un moteur spécial sans quads (certains conteneurs) ont une
silhouette issue de leur forme. Les vignettes sont mises en cache (48 au maximum),
invalidées lors dun rechargement du pack. Les échantillons sont bornés à 64 × 64
par texture et prennent la première image des textures animées.
Les statues du catalogue affichent le modèle natif adulte ; le choix ouvre les
réglages de hauteur et de palette avant génération. Sur les petites fenêtres,
la description et les dimensions passent dans linfobulle pour garder le choix
visible sous la vignette.
La palette « Tous les blocs » parcourt les blocs enregistrés ayant un objet,
sans inclure les blocs techniques sans objet ou les blocs de commande. La
comparaison de couleur utilise Oklab ; un coût de forme favorise les volumes
pleins, et les blocs soumis à la gravité sont moins favorisés. Les feuilles
utilisent leur état persistant, comme après une pose par un joueur. Les palettes
mixte, laine et béton restent disponibles.
Lhistorique `schematics/sanctuary/recent-completed.nbt` contient au maximum
trois plans distincts, écrits atomiquement hors du fil de rendu. Il enregistre
une transition dincomplet à complet observée dans le monde, en créatif ou en
survie. Sélectionner un plan, lapercevoir ou lenvoyer au serveur ne suffit pas.
Il sagit dun historique personnel de cette installation, pas dun catalogue
partagé par le serveur. Aucun inventaire ou entité nest enregistré.
K bref utilise un rayon de 96 blocs sur les blocs du monde. La case adjacente à
la face visée sert de centre dancrage horizontal. Une seconde pression sur ce
même point tourne autour de cet ancrage ; déplacer le regard vers un autre
point déplace le plan. Le maintien de 10 ticks ouvre les commandes sans exécuter
le geste bref à la relâche. Les raccourcis remappés utilisent la même logique.
## Texture de la clé
Le modèle est `minecraft:item/handheld` ; la texture provisoire est une copie
de la pioche dorée vanilla. Le créateur pourra remplacer uniquement
`mods/sanctuary/src/main/resources/assets/sanctuary/textures/item/golden_wrench.png`
par son propre PNG. Aucune illustration personnalisée na été créée à sa place.
+40
View File
@@ -0,0 +1,40 @@
# beta.104 — Contraste des argiles grise et noire
Branche `codex/clay-contrast-beta104`, Minecraft 26.3.
Le gris devient plus soutenu et le noir plus sombre, pour distinguer clairement
les trois argiles gris clair/gris/noir. Les nuances du dessin vanilla sont
renforcées : facteur 1,35 au lieu de 0,85. Le mélange conserve davantage de la
couleur des briques fournies (80 % pour le gris, 90 % pour le noir).
Les textures de bloc et de boule dargile sont accordées, toujours en 16 × 16
avec les silhouettes et transparences vanilla. La recoloration exacte par
script reste la méthode choisie par le créateur. Les quatorze autres couleurs
et toutes les briques restent identiques. Le rangement beta.103 est conservé.
[Aperçu avant/après](../build/clay-contrast-beta104-preview.png).
Le générateur écrit désormais son aperçu au nom de la version courante,
pour préserver les aperçus historiques.
## Validation et livraison
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussi
en 2 min 22 s (124 tâches). Comparaison visuelle avant/après effectuée.
Pas de nouvelle session Minecraft pour cette modification de textures.
La vérification des archives confirme exactement quatre textures modifiées :
blocs et boules dargile gris/noir. Toutes les classes Java, recettes, modèles,
autres assets et anciennes archives beta.103 sont inchangés.
Les images conservent leur taille 16 × 16 et leur transparence pixel par pixel.
Le contraste mesuré augmente de plus de 40 % sur chacune des quatre textures.
Luminance moyenne des blocs : gris clair 168,4 ; gris 118,0 ; noir 68,4.
Sources, métadonnées et contenu des packs vérifiés ; `git diff --check` réussi.
Reçu : `build/beta104-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.104.mrpack), SHA-256 :
`83f087cce41316eed620e9764ff0b643c3d5af40fa5b4cebdff5720740708631`.
- [Pack de test](../build/Sanctuary-Test-beta.104.mrpack), SHA-256 :
`adbaad161550ab80dcbc88c27d760e2f735eef9a69ba3f9e2e69bbd25e895147`.
Les GameTests dédiés restent exclus. Aucun monde, canal ou installation
personnelle modifié ; archives locales uniquement.
+90
View File
@@ -0,0 +1,90 @@
# STAT-04 — Sculptures dargile et accroche au bord — beta.113
Contrat du 17 septembre 2026, branche `codex/clay-sculpture-grid-beta113`.
Les miniatures de latelier deviennent des « sculptures dargile » / « Clay
sculptures ». Le nom du modèle reste dans leur infobulle. Les statues en blocs
du Métabli restent une catégorie distincte.
À la pose, le bord horizontal le plus proche du point visé accueille la
sculpture. Lautre axe est centré au pixel entier le plus proche, sur la grille
de 1/16 de bloc. Sur une face latérale, elle touche le bord du bloc support.
À égalité exacte entre deux bords, laxe Z départage ; au centre exact,
le bord côté joueur est retenu. Lorientation suit toujours le regard.
Le bouton Tourner prépare le modèle avant fabrication. Les marges horizontales vides du modèle ne créent pas de décalage au bord.
Tous les sommets restent
sur la grille entière, même avec des dimensions impaires et après rotation.
## Compatibilité préalable
La propriété native additive `anchor` du bloc `sanctuary:statuary` mémorise
`center`, `north`, `south`, `east` ou `west`. Un ancien état sans cette propriété
prend `center` : il reste centré, avec la correction visuelle du demi-voxel.
Le schéma 1, les voxels, noms de modèles et identifiants ne changent pas.
Il ny a aucun parcours ni réécriture de chunks existants. La sauvegarde native
conserve laccroche ; les rotations et miroirs de structures la transforment.
Casser et reposer choisit une nouvelle accroche sans modifier le modèle.
Les nouveaux objets emploient le nom traduit de leur type ; les noms déjà
enregistrés et les noms personnalisés restent conservés. La collision cubique
et la limite dune sculpture par bloc restent inchangées. Client et serveur
doivent utiliser ensemble beta.113.
## Vérifications natives
Le parcours `Statuary106ClientChecks`, étendu par `Sculpture113ClientChecks`,
passe en **1 min 25 s**, sur Minecraft 26.3 et un monde plat jetable de graine 106 :
- 5 120 combinaisons de largeur/profondeur, orientation et accroche : contrôle
de la géométrie émise, grille exacte de 1/16 et absence de dépassement du bloc.
- Modèles avec marges transparentes, repères colorés pour vérifier le sens du
rendu et égalité de la géométrie centrée entre lobjet et le bloc.
- Vrais clics de pose sur les quatre bords : orientation, bord côté serveur,
réception côté client, butin/repose et conservation après reconnexion.
- Contextes natifs de pose sur les faces latérales et coordonnées négatives.
- Rotation/miroir de chaque combinaison daccroche et dorientation ; lecture
des anciens états sans `anchor`, avec et sans `facing`.
- Noms français/anglais des objets fabriqués, menu aux échelles 2 et 3,
fabrication payée, Maj-clic limité à la hotbar et régression Métabli.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryStatuary106ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Marqueurs `STATUARY113_PASS` et `SCULPTURE113_GEOMETRY_PASS` dans
`build/clay-grid113-client.log`. Captures relues dans
`build/clay-grid113-evidence/`. Le GameTest dédié reste exclu conformément au
refus antérieur de son EULA ; ces essais utilisent le serveur intégré macOS.
Pas de validation Windows ni depuis deux ordinateurs. Aucun monde personnel
na été ouvert.
## Livraison
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **3 min 11 s**, 125 tâches. Les sources JAR correspondent exactement
aux sources du dépôt. Les classes et ressources hors du ticket sont identiques
à beta.112. Les deux packs contiennent le même JAR, sans monde, GLB ni test.
- Sanctuary-beta.113.mrpack : 10173807 octets, SHA-256
`ed082ff29a0e9a70fd6786bc024241b276cb516bc09fb5151d6cb324604429bb`.
- Sanctuary-Test-beta.113.mrpack : 10192733 octets, SHA-256
`387f54dc77884a9c9bccdcc1904778ca7f0b2fbda126754fdc49b10a492e4602`.
- JAR Sanctuary : SHA-256
`e242d9fd2edeede922a72a10e988e29c2b49dea52105cfc9fc8573154849ead3`.
Reçu local : `build/clay-grid113-artifact.json`.
## Publication et installation
La [release beta.113](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.113)
est publiée depuis `6166d0aa9eba3c3dd84b8b9f1501e3346231ac82`. Le tag exact
et les artefacts sont immuables ; les téléchargements publics sont vérifiés.
Le canal packwiz avance à `e4c16d517bfda4f2b688604cc61945a46a4513a9`.
Deux synchronisations isolées puis deux passages dans **Sanctuary Beta** ont
réussi. Un seul JAR Sanctuary beta.113 est actif, et le second passage conserve
les mêmes hashes. Les **923 fichiers personnels et réglages suivis** restent
identiques. Aucun monde personnel na été ouvert. La sauvegarde ciblée est
`sanctuary-backups/before-beta.113/` dans linstance existante. Reçus locaux :
`build/clay-grid113-isolated.json` et `build/clay-grid113-prism.json`.
+79
View File
@@ -0,0 +1,79 @@
# STAT-03 — Atelier dargile limité à la hotbar — beta.112
Contrat du 17 septembre 2026, branche `codex/clay-workshop-hotbar-beta112`.
Le menu utilise uniquement les neuf cases de la hotbar active du joueur,
avec les deux emplacements de fabrication. Les rangées de réserve, y compris
les extensions Sanctuary, ne sont ni ajoutées au menu ni utilisées par ses
transferts. La rangée choisie avant louverture reste la hotbar courante.
La touche Tab retrouve la navigation des boutons dans ce menu.
Le cadre nine-slice tient dans une hauteur fixe de 202 pixels dinterface.
Il ne grandit plus avec la capacité de linventaire. Le Maj-clic du résultat
cherche uniquement une place dans la hotbar ; sans place, il ne consomme pas
dargile. Les touches 19 restent utilisables, pas l’échange avec la seconde
main. À la fermeture, la restitution native des objets restants est conservée.
Les identifiants, sauvegardes, données de sculpture et orientations beta.111
restent inchangés. Aucun monde existant nest ouvert ou réécrit. Client et
serveur doivent utiliser ensemble beta.112 pour les nouveaux indices du menu
temporaire (11 cases au total).
## Vérifications natives
Le parcours `Statuary106ClientChecks`, étendu à beta.112, passe en **1 min 13 s**
sur Minecraft 26.3 avec serveur intégré et monde plat jetable de graine 106 :
- Menu FR/EN aux échelles 2 et 3 : hauteur fixe, neuf cases de hotbar native,
deux cases de fabrication et absence de panneau dinventaire évolutif.
- Fabrication par Maj-clic depuis la hotbar, avec de largile aussi présente
dans la réserve, lextension et la seconde main : ces stocks restent intacts.
- Rejet des indices de cases absents et de l’échange avec la seconde main.
- Hotbar remplie de neuf piles : Maj-clic sans fabrication ni consommation.
- Une seule place dans une pile de 63 statuaires : production dun seul objet,
coût dune argile, aucune statue transférée dans une case cachée.
- Restitution de largile restante à la fermeture, seize teintes, quatre
orientations, butin/repose et sauvegarde/reconnexion sans fichier GLB.
- Régression du Métabli et annulation dimport conservées.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryStatuary106ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Marqueur `STATUARY112_PASS` dans `build/clay-hotbar112-client.log` ; captures
relues dans `build/clay-hotbar112-evidence/`. Le GameTest dédié reste exclu
conformément au refus antérieur de son EULA. Pas de test Windows ni depuis
deux ordinateurs ; aucun monde personnel na été ouvert.
## Livraison vérifiée
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **3 min 6 s**, 125 tâches. Les sources JAR correspondent aux sources
Java du dépôt. Les classes et ressources hors de ce ticket sont identiques
à beta.111, notamment les données et le rendu orienté des statuaires.
Les deux packs contiennent le même JAR, sans monde, GLB ni classes de tests.
- Pack normal : 10 169 337 octets, SHA-256
`55723a5d7cb99e350ad8fe150e92e0567430b5261ca4685abd900be34068658f`.
- Pack Test : 10 188 262 octets, SHA-256
`987818bf817ad80fd055b97e84bf4775fca54820d7c3055d6fd4089dc7a5a3c0`.
- JAR : SHA-256
`9007a770bbe69db5846f93140d910514f10839cc34ec7c6315a9381d8850adaa`.
Reçu local : `build/clay-hotbar112-artifact.json`.
## Publication et installation
La [release beta.112](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.112)
est publiée depuis `1eaa976ecf328c6c20afe5e4eb67c48118f87f95`. Le tag exact
et les artefacts sont immuables ; les téléchargements publics sont vérifiés.
Le canal packwiz avance à `573c5b0d84fcb3e9fec7cc8a83981cf35eaa1ead`.
Deux synchronisations isolées puis deux passages dans **Sanctuary Beta** ont
réussi. Un seul JAR Sanctuary beta.112 est actif, et le second passage conserve
les mêmes hashes. Les **923 fichiers personnels et réglages suivis** restent
identiques. Aucun monde personnel na été ouvert. La sauvegarde ciblée est
`sanctuary-backups/before-beta.112/` dans linstance existante. Reçus locaux :
`build/clay-hotbar112-isolated.json` et `build/clay-hotbar112-prism.json`.
+128
View File
@@ -0,0 +1,128 @@
# INTEGRATE-110 — Atelier d'argile dans la version complète
Demande du 17 septembre 2026 : inclure le Clay Workshop dans la version avec
la fonte saisonnière. Branche `codex/clay-workshop-integration-beta110`.
État : version commune vérifiée, publiée et synchronisée dans Sanctuary Beta.
## Périmètre et compatibilité
La beta.110 réunit le Clay Workshop / atelier d'argile, le Statuaire et l'import
GLB de beta.106 avec les œufs de beta.107, la neige en volume de beta.108 et
la fonte saisonnière de beta.109. Aucune fonction retirée de ces livraisons.
Le Métabli conserve son import de modèles 3D en plans de construction.
Les sources du dossier principal correspondent déjà à cette union : les
30 fichiers de production du Statuaire sont ceux de la livraison beta.106 ;
les traductions FR/EN et listes de mixins sont la réunion exacte des deux bases,
sans conflit de valeur ni doublon. Les autres sources restent celles de beta.109.
Les fichiers Finder `.DS_Store` sont exclus par la configuration Gradle existante.
Les identifiants et contrats de données restent ceux des tickets existants :
[Statuaire](statuary-beta106.md), [œufs](spawn-eggs-acquisition-beta107.md),
[accumulation](snow-accumulation-beta108.md),
[fonte](seasonal-snow-melt-beta109.md). Aucun format changé, aucune migration,
aucune génération ou expansion activée. Les tests créent des mondes de
laboratoire et rouvrent seulement leurs propres sauvegardes jetables.
Les compteurs `mod_version`, `pack_version` et le manifeste packwiz passent
ensemble à beta.110. Les archives beta.106 à beta.109 restent immuables.
Le créateur a ensuite demandé de tout mettre à jour : publication de la
version vérifiée sur le canal stable puis synchronisation de linstance
Sanctuary Beta existante, après sauvegarde des fichiers gérés.
## Validation exécutée
Réutilisation des essais natifs de l'atelier (fabrication, rendu, Métabli et
sauvegarde/rechargement), des œufs (reproduction, éclosion et générateurs), et
de la neige (accumulation et fonte selon les saisons, provenance et rechargement)
sur les mêmes sources réunies. Puis `check build assemblePack assembleTestPack`.
Le GameTest dédié reste exclu conformément au refus antérieur de son EULA ;
les tests natifs tournent avec le serveur intégré.
## Contrat de mise à jour de l'instance existante
Cible unique : `Sanctuary-0.1.0-alpha.1`, nom affiché **Sanctuary Beta**, déjà
reliée au canal `sanctuary-beta/packwiz`. Les instances historiques 26.2 et les
instances importées séparément restent hors de cette synchronisation.
Minecraft 26.3-pre-2 passe à 26.3 finale, Fabric Loader reste en 0.19.5,
Fabric API passe de 0.160.0+26.3 à 0.160.5+26.3 ; Java 25 est déjà configuré.
L'installateur packwiz est chargé de remplacer les deux JAR suivis et d'ajuster
les composants de lancement. Sauvegarde préalable des JAR gérés, du suivi
packwiz, de `instance.cfg` et de `mmc-pack.json` hors de `mods/`.
Aucun monde personnel ne sera ouvert, converti, régénéré ou exploré pendant
l'opération. Les fichiers de sauvegarde, réglages, captures et packs personnels
sont comparés par empreintes avant/après. Seuls les composants gérés du pack et
la version du lanceur changent. Les anciennes règles de génération enregistrées
dans les mondes restent intactes ; aucune promesse de migration automatique de
sauvegarde entre versions Minecraft n'est déduite de la mise à jour des fichiers.
Le canal est publié avec un artefact immuable et testé deux fois dans une
installation isolée avant les deux synchronisations de l'instance existante.
## Résultats de la version commune
Tous les parcours sont exécutés sur les mêmes sources beta.110, sous Java 25,
Minecraft 26.3 et Fabric API 0.160.5+26.3 :
- Atelier d'argile : **1 min 6 s**, `STATUARY106_PASS` et import Khronos indépendant.
Fabrication payante, 16 argiles, placement, butin, Métabli et rechargement sans
le fichier source. Captures relues dans `build/integration110-evidence/`.
- Œufs : **29 s**, `EGGS107_NATIVE_PASS` ; reproduction, variantes, œufs utilisés
et distribués, générateurs et monde sans règles Sanctuary.
- Neige : **42 s**, `SNOW108_NATIVE_PASS` et `MELT109_NATIVE_PASS` ; limite de
deux blocs, saisons, protection des constructions et sauvegarde/rechargement.
- `./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest` :
**2 min 20 s**, **125 tâches**, réussite.
Le JAR est comparé à l'union exacte des classes et ressources des deux livraisons
immuables beta.106 et beta.109. Les traductions et mixins réunissent tous les
éléments, sans doublon. Les sources JAR correspondent aux fichiers Java locaux.
Aucun GLB de test, classe de test, monde ou fichier Finder embarqué.
[Pack normal](../build/Sanctuary-beta.110.mrpack) ·
[Pack Test](../build/Sanctuary-Test-beta.110.mrpack).
| Artefact | SHA-256 |
| --- | --- |
| Normal | `12a7b7279e831bf5d3489d033b875437ad9e8ba1e8cbecc6107a890d312e3029` |
| Test | `ffed5e4fcd32ca32ac96186da8e987905cd7fc4de792afe61aca9ad064895e0b` |
| JAR Sanctuary | `7cb121a6e208cdd184d80ebe61f8bc52b6703b1c1d7611eeeb700aa88d158b46` |
Reçu : `build/integration110-artifact.json`, manifeste des sources :
`build/integration110-source-manifest.json`. Journaux :
`build/integration110-{statuary,eggs,snow,check-build}.log`.
Les essais natifs sont macOS avec serveur intégré ; pas de test Windows ni
connexion depuis un second ordinateur. La neige antérieure non suivie garde
la limite de fonte documentée dans beta.109.
Le script de publication a été corrigé pour autoriser uniquement `icon.png`
en plus des manifestes TOML, après contrôle de l'index et comparaison à l'icône
source. Les JAR restent exclusivement des pièces jointes de release. Cette
correction de distribution ne change aucun binaire ni le tag source beta.110.
## Publication et installation terminées
[Release beta.110](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.110),
tag source `468743bfe75087ecb0160b85a0864fa81bcdded5`. Les sources cumulatives
depuis beta.092 sont enregistrées ; les anciens tags et artefacts sont conservés.
Les corrections du script de distribution et ce reçu complètent la branche
source sans déplacer ce tag ni remplacer les binaires.
Canal packwiz : `828353a6e2bd747f4f473ae9fb9e965d38032419`. Chaque manifeste et
l'icône publiés correspondent aux fichiers validés localement. JAR, archives
normale/Test et ZIP d'amorçage Prism sont disponibles dans la release.
Deux synchronisations de l'installateur packwiz dans un dossier neuf, puis deux
dans la même instance **Sanctuary Beta**, ont réussi. Le second passage ne
change aucun fichier géré. Un seul JAR Sanctuary beta.110 est actif, Fabric API
0.160.5+26.3 est installé, Minecraft est réglé sur 26.3 et Loader sur 0.19.5.
L'icône déclarée dans le pack est ajoutée. `instance.cfg` et les **923 fichiers
personnels et réglages suivis** conservent leurs empreintes. Aucun monde ouvert,
converti ou régénéré ; aucune autre instance ni serveur personnel modifié.
Sauvegarde ciblée dans l'instance : `sanctuary-backups/before-beta.110/`.
Reçus ignorés : `build/integration110-publication.json`,
`build/integration110-isolated.json`, `build/integration110-prism.json`.
Les journaux de chaque synchronisation et les listes d'empreintes avant/après
sont conservés dans le dossier de développement et dans la sauvegarde ciblée.
+99
View File
@@ -0,0 +1,99 @@
# STAT-02 — Atelier dargile et orientation — beta.111
Contrat du 17 septembre 2026, branche `codex/clay-workshop-ui-beta111`.
## Résultat attendu
Le menu utilise le cadre `task_frame_unobtained.png` fourni par le créateur,
sans retouche, comme sprite Sanctuary avec les métadonnées nine-slice natives
de Minecraft. Les coins restent à leur taille dorigine. Catalogue, aperçu,
fabrication, explications et inventaire évolutif tiennent dans ce cadre.
La texture reste remplaçable par un pack de ressources.
La pose dun statuaire suit le regard horizontal du joueur, dans les quatre
directions. Le bouton Tourner règle toujours lorientation du modèle importé.
Le placement ajoute ensuite lorientation du bloc sans réécrire ses voxels.
## Contrat de compatibilité préalable
Ajout de la propriété native `facing` au bloc `sanctuary:statuary`, avec `south`
par défaut : cette orientation correspond au rendu historique, sans rotation.
Les anciens états sans propriété prennent cette valeur à la lecture et gardent
leur apparence. Aucun parcours ni réécriture des anciens chunks nest effectué.
Le schéma 1 de la sculpture, ses voxels, ses identifiants et les données des
objets restent identiques. Casser puis reposer utilise le nouveau regard,
sans cumuler les orientations précédentes. Rotation et miroir de structures
transforment l’état du bloc. La collision cubique reste celle déjà livrée.
## Texture
Le fichier fourni, 26 × 26 pixels, est conservé octet pour octet sous
`assets/sanctuary/textures/gui/sprites/container/clay_workshop/frame.png`.
Le fichier adjacent `.png.mcmeta` utilise le moteur `nine_slice` de Minecraft
avec une bordure fixe de quatre pixels et un centre extensible. Lidentifiant
du sprite est `sanctuary:container/clay_workshop/frame` ; aucun sprite global
Minecraft nest remplacé. Les emplacements utilisent `minecraft:container/slot`.
## Vérifications natives
`Statuary106ClientChecks`, étendu aux cas beta.111, passe en **1 min 3 s** sur
Minecraft 26.3, avec serveur intégré et monde plat jetable de graine 106 :
- Fabrication payée, restitutions, Maj-clic et teintes des seize argiles.
- Menu FR/EN aux échelles 2 et 3, cases et actions contenues dans le cadre.
- Six rangées dinventaire à l’échelle 3 : affichage borné et défilement.
- Vrais clics de pose aux quatre points cardinaux : état côté serveur,
transmission au client et rotation du rendu alignés sur le regard.
- Rotation et miroir de structures ; lecture dun ancien état sans `facing`.
- Butin dune statue orientée au nord puis repose vers louest : nouvelle
orientation, mêmes voxels. Sauvegarde/réouverture et transmission sans GLB.
- Conversion au Métabli et annulation dimport conservées.
Commande :
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryStatuary106ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Marqueurs `STATUARY106_PASS`, `STATUARY106_INTEROP_PASS` et `STATUARY111_PASS`
dans `build/clay-ui111-client.log`. Captures dans `build/clay-ui111-evidence/`,
dont les menus français et anglais relus visuellement.
Le GameTest dédié reste exclu conformément au refus antérieur de son EULA.
Les essais tournent sur macOS avec serveur intégré ; pas de validation depuis
deux ordinateurs ni sur Windows. Aucun monde personnel nest ouvert.
## Livraison vérifiée
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 33 s**, 125 tâches. Les sources JAR correspondent exactement
aux fichiers Java du dépôt. Le contenu du mod hors classes et ressources de
ce ticket est identique à beta.110 ; œufs, neige et fonte restent inclus.
Les deux MRpack contiennent le même JAR vérifié, sans monde, GLB ni classe de test.
- Pack normal : `build/Sanctuary-beta.111.mrpack`, 10 169 372 octets,
SHA-256 `f83098f80ac2edb8e32877bf8d5a362cd75f2fa9020593c2c7e4f9abe8b3e9f6`.
- Pack Test : `build/Sanctuary-Test-beta.111.mrpack`, 10 188 298 octets,
SHA-256 `1234b10eb4685d99aa7421de46bc54fd114b791f1b4d63803a09afc926d2c9d9`.
- JAR Sanctuary : SHA-256
`b3e967db7b336b970e4121981e3ef8140fe90f0ecc5850ce90a70caaf3772684`.
Reçu local : `build/clay-ui111-artifact.json`.
## Publication et installation
La [release beta.111](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.111)
est publiée depuis le commit source `289697becf19db4acf50d224b1dd3d753eff1153`.
Le tag exact et les artefacts sont immuables ; leurs téléchargements publics
ont été vérifiés. Le canal packwiz avance au commit
`87c9f81761309316c601ed32fa922c1a5893952c`.
Deux synchronisations isolées puis deux passages dans linstance existante
**Sanctuary Beta** ont réussi. Un seul JAR Sanctuary beta.111 est actif ; le
second passage conserve les mêmes hashes. Les **923 fichiers personnels et
réglages suivis** restent identiques. Aucun monde personnel na été ouvert.
La sauvegarde ciblée est dans `sanctuary-backups/before-beta.111/` de cette
instance. Reçus : `build/clay-ui111-isolated.json` et
`build/clay-ui111-prism.json`.
+49
View File
@@ -0,0 +1,49 @@
# beta.077 — tourbillon de nuages au-dessus du vide
Branche `codex/cloud-vortex-beta077`. Minecraft 26.3-pre-2, textures beta.070.
La dernière précision du créateur fixe la couche à **Y = 0**, et non 64.
Les nuages supérieurs restent présents. Un tourbillon continu tourne autour
du centre de l’île de Sanctuary ; son diamètre vaut deux fois celui de l’île
(1 448 blocs / environ 91 chunks pour l’île habituelle de 724 blocs).
Une révolution dure 20 minutes de simulation. Le style garde les cellules de
12 blocs, l’épaisseur de 4 blocs et l’éclairage des nuages Minecraft.
Le serveur transmet uniquement le centre et le diamètre déjà définis par le
générateur. Aucun chunk, bloc, sauvegarde ou génération nest modifié. Les
mondes classiques/plats et les autres dimensions ne reçoivent pas de couche.
Les réglages de nuages désactivés/rapides/détaillés sont respectés.
La géométrie est calculée une fois puis conservée sur le GPU. La rotation et
la couleur passent par les uniforms natifs, sans remaillage à chaque mouvement
de caméra. Les passes normales et de transparence Fabulous réutilisent les
pipelines de nuages du jeu. Les buffers sont libérés à la déconnexion.
Cette livraison inclut les [correctifs de menus beta.076](menu-navigation-beta076.md)
et le retrait du lien web de la [bibliothèque beta.075](plans-library-beta075.md).
## Vérifications
Parcours client natif réussi en 1 min 8 s : formes connectées pour les îles de
512, 724 et 1 024 blocs ; rendu rapide/détaillé/Fabulous (passages OIT réellement
exécutés), rotation, vues au-dessus/dessous/dans la couche, désactivation et
extension finie. Une seule construction de géométrie pendant les mouvements
et changements de qualité. 5 888 cellules pour l’île habituelle.
Captures : `build/cloud077-evidence/`.
`check build assemblePack assembleTestPack` réussit en 3 min 22 s (124 tâches),
avec le serveur dédié exclu conformément au refus de son EULA.
Les 1 693 classes et les sources du JAR correspondent au build ; seuls les
menus et le nouveau rendu changent depuis beta.075. Les textures, données de
jeu et le resource pack restent identiques. Les onze libellés sont présents
en FR/EN. Les deux packs sont vérifiés et 155 archives précédentes restent
identiques. Reçu : `build/cloud077-artifact.json`.
Pas de déploiement dans une installation personnelle ni de serveur dédié.
Les shaders externes qui remplacent entièrement le rendu des nuages restent
à vérifier séparément ; aucune compatibilité non testée nest promise.
## Archives
- [Sanctuary-beta.077.mrpack](../build/Sanctuary-beta.077.mrpack), 9608669 octets.
SHA-256 : `1c3839f086e9545c920e4ebfc13f99a25d0684fa6f2dc8e1b2a842a8e7044045`.
- [Sanctuary-Test-beta.077.mrpack](../build/Sanctuary-Test-beta.077.mrpack), 9627602 octets.
SHA-256 : `1b0c302b9d4d5f59d5e954adbecde4acbacd9409c8cd6a743ccbe116826d7c0a`.
+9
View File
@@ -249,6 +249,15 @@ Identifiant proposé : `sanctuary:clay_and_bricks`. **10 recettes primaires.**
**Précision :** Le vase décoré appartient à Archéologie ; la terre cuite à C11.
**Extension Sanctuary beta.102 :** seize couleurs de briques, dalles, escaliers,
argile pastel et leurs deux items, soit 192 recettes supplémentaires. Elles
sont déclarées dans `scripts/data/collections-sanctuary.json`, sans changer
le recensement vanilla ci-dessus.
**Extension Sanctuary beta.106 :** atelier dargile et statuaires importés. La
recette de latelier rejoint C06 ; la fabrication dune miniature utilise son
menu et un bloc dargile, avec le modèle choisi localement.
[Recettes et inventaire exacts de C06](collections-minecraft-inventaire.md#c06).
[Définition serveur beta.035](../mods/sanctuary/src/main/resources/data/sanctuary/sanctuary_recipe_collections/clay_and_bricks.json).
+83
View File
@@ -0,0 +1,83 @@
# beta.118 — Murets en briques de couleur
Ticket sur `codex/colored-brick-walls-beta118`, Minecraft 26.3.
Les seize familles de briques reçoivent un muret natif `WallBlock`, sous
l'identifiant `sanctuary:<couleur>_brick_wall`. Chaque muret réutilise la texture
de briques fournie de sa couleur, sans nouvelle image ni recoloration.
Les murets forment une série de seize dans **Blocs colorés**, après les dalles
et avant les argiles, dans l'ordre des couleurs vanilla retenu en beta.103.
Les libellés sont traduits FR/EN.
Recettes : six briques de même couleur, en deux rangées de trois, donnent six
murets ; le tailleur de pierre donne un muret par bloc de briques. Les deux
recettes par couleur rejoignent la collection Argile et briques et leurs
déblocages. Totaux des ajouts colorés : 80 blocs, 112 objets dont ces blocs,
224 recettes. Les recettes et identifiants préexistants sont conservés.
Piliers, raccords entre couleurs et aux murets vanilla, côtés hauts/bas,
collisions et immersion dans l'eau viennent du jeu. Tags natifs `walls`
pour blocs et objets, pioche et butin de la bonne couleur. États, modèles
multipart et butins sont repris des ressources exactes Minecraft 26.3.
La génération reste reproductible dans `tools/generate-colored-bricks.py` ;
elle conserve les ajouts externes à ses briques, notamment la recette du
Clay Workshop et les membres Sculpture/Atelier. Le compilateur des collections
reste leur seul générateur. Aucun ajout au
terrain, changement de format ou migration de sauvegarde. Les dépendances
et le pack de textures intégré beta.090 restent inchangés.
## Vérifications et livraison
Le scénario natif `Bricks102ClientChecks`, complété par `Walls118Checks`,
passe en **38 secondes** sur un nouveau monde plat de graine 102 avec serveur
intégré Minecraft 26.3 :
- Seize murets réellement posés, dont une seconde série dans l'eau.
- Recette de six murets et tailleur de pierre pour chaque couleur ; les
anciennes recettes de briques, dalles, escaliers et argiles passent aussi.
- Raccords entre couleurs et au muret vanilla, retrait des piliers intermédiaires,
côtés relevés sous un bloc plein, collisions identiques au muret vanilla.
- Eau conservée, pioche, butin de la bonne couleur, collection et recettes
découvertes, recette du Clay Workshop toujours découverte, série créative
de seize dans l'ordre natif.
- États et modèles de tous les blocs de la famille vérifiés, sans texture
manquante ; sauvegarde et reconnexion conservent les murets et leur eau.
Log : `build/walls118-client.log`, marqueur `WALLS118_PASS`. Capture de la
galerie relue dans `build/walls118-evidence/`. Aucun essai Windows ou LAN ;
GameTest dédié exclu selon le refus antérieur de son EULA. Aucun monde personnel
ouvert. La régénération finale conserve à l'identique 2 024 fichiers de
ressources et métadonnées.
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussit
en **2 min 5 s**, 125 tâches dont 101 exécutées. Sources et JAR concordants,
intégrité ZIP, versions, modèles natifs, recettes et empreintes vérifiés.
La comparaison avec beta.117 limite les changements de classes à
`ColoredBricks` et ses classes internes ; les sculptures et chapeaux restent
identiques. Les textures existantes sont toutes conservées octet pour octet.
- `Sanctuary-beta.118.mrpack` : 10216437 octets, SHA-256
`75bb04aad981644888690aaeda9a293a94c5d32f6439ca24613365a41aba1b6b`.
- `Sanctuary-Test-beta.118.mrpack` : 10235359 octets, SHA-256
`f7f0a177b8472f0e8c34ad99a1ccef5d61396014017d260e934e910c4e6eb00f`.
- JAR Sanctuary :
`fc6edf4046a8ace357d561ed942213a22c7a27164fa160cdb4316f72ec302575`.
Reçu : `build/walls118-artifact.json`.
## Publication et instance
La [release beta.118](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.118)
est publiée : JAR, MRpack normal/Test et amorçage Prism, téléchargements publics
et empreintes vérifiés. Le tag immuable désigne
`0a81b3c1471c43d705eec4e31a8f6f1820049ca8`. Le canal packwiz avance au commit
`e6bab433bea9528f67d39af0d6c7bcb6443e4817`.
Deux synchronisations isolées puis deux dans l'unique instance **Sanctuary
Beta** réussissent, la seconde passe laissant les fichiers gérés identiques.
Un seul JAR Sanctuary beta.118 est actif. Les 923 fichiers personnels et
réglages suivis sont inchangés ; aucun monde personnel n'a été ouvert.
Copie préalable des fichiers remplacés dans `sanctuary-backups/before-beta.118/`.
Reçus : `build/walls118-isolated.json`, `build/walls118-prism.json`.
+73
View File
@@ -0,0 +1,73 @@
# beta.102 — Briques et argile de couleur
Branche `codex/colored-bricks-beta102`, Minecraft 26.3.
## Contrat
Les seize PNG de briques fournis sont présents. Ils sont intégrés sans altération.
Par couleur : bloc de briques, dalle, escalier, bloc dargile pastel, boule dargile
et brique (items). Les 64 blocs apparaissent dans longlet natif des blocs colorés,
les 32 items dans les ingrédients. Les composants ont des identifiants stables
`sanctuary:<couleur>_*` et des libellés français et anglais.
La recoloration exacte par script a été choisie explicitement par le créateur.
Les silhouettes, la transparence et les nuances des textures vanilla 16 × 16
sont conservées ; les couleurs proviennent des PNG fournis. Aucun dessin IA.
Recettes natives : teinture de largile et des briques, assemblage des blocs,
cuisson de largile en briques, argile colorée en terre cuite vanilla de même
couleur, fabrication des dalles/escaliers et tailleur de pierre. Les recettes
rejoignent la collection existante argile/briques et les découvertes Sanctuary.
Dalles doubles, escaliers connectés, orientation, eau, outils et butin utilisent
les mécanismes natifs. Les blocs ne sont pas ajoutés à la génération du terrain.
Aucune migration de sauvegarde et aucune modification dun monde existant.
## Génération reproductible
`tools/generate-colored-bricks.py --minecraft-jar <minecraft-client.jar 26.3>`
requiert Python avec Pillow. Les briques sources sont conservées dans les assets
et les couleurs/empreintes sont consignées dans `tools/colored-bricks-palette.json`.
Les extensions de collection sont compilées par `scripts/compile_collections.py`
depuis `scripts/data/collections-sanctuary.json` ; le recensement vanilla reste intact.
## Validation native
`Bricks102ClientChecks` sur Minecraft 26.3, monde plat neuf avec serveur intégré :
- 16 familles, 64 blocs et 96 entrées ditems (dont 64 BlockItems).
- 192 recettes chargées ; fabrications, teintures, cuissons et tailleur exécutés.
- Butin des briques et escaliers ; dalle simple/double ; argile normale et Toucher de soie.
- Tags pioche/pelle et états immergés des dalles/escaliers.
- Onglets natifs : 64 blocs colorés, 32 ingrédients.
- Tous les états des 64 blocs possèdent des modèles cuits sans texture manquante.
- Découverte de largile : la collection ajoute les nouvelles recettes.
- Sauvegarde/réouverture du monde neuf : blocs et état de dalle haute conservés.
Parcours final réussi en 41 s, `build/bricks102-client.log`.
[Aperçu des textures](../build/colored-bricks-beta102-preview.png) ·
[Capture Minecraft](../build/bricks102-game.png).
La vérification du rendu utilise le client natif local. Aucun test multijoueur
distant nest revendiqué, aucune sauvegarde personnelle ni installation modifiée.
## Livraison
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussi
en 2 min 19 s (124 tâches). Les GameTests du serveur dédié restent exclus ;
le parcours client/serveur intégré décrit ci-dessus a été exécuté séparément.
`git diff --check` et la régénération identique octet pour octet sont vérifiés.
Les archives, sources, 192 recettes, 192 progrès de recettes, 96 libellés FR/EN,
les seize PNG fournis et les transparences vanilla ont été contrôlés.
La comparaison avec beta.101 ne trouve aucune autre classe de jeu modifiée
que linitialisation Sanctuary et les trois nouvelles classes ColoredBricks.
Les archives beta.101 conservent leurs empreintes.
Reçu : `build/beta102-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.102.mrpack), 10 052 986 octets.
SHA-256 : `f324db41e9992df0635d870a766ec9c486167d7fc2e1ed5080f05deaf824d3c4`.
- [Pack de test](../build/Sanctuary-Test-beta.102.mrpack), 10 071 908 octets.
SHA-256 : `bf6b4a207f6b952295c01d59e788eb742d7dbee18ff5e0ad1e61ba78078348fb`.
Livraison locale, sans publication de canal, tag ou déploiement Prism.
+33
View File
@@ -0,0 +1,33 @@
# beta.103 — Rangement des blocs colorés
Branche `codex/colored-bricks-order-beta103`, Minecraft 26.3.
Dans Blocs colorés, les ajouts sont regroupés par type : les 16 blocs de briques,
puis les 16 escaliers, les 16 dalles, les 16 blocs dargile. Dans Ingrédients :
les 16 boules dargile, puis les 16 briques.
Chaque série suit lordre de couleurs de longlet natif Minecraft 26.3,
vérifié dans `CreativeModeTabs.bootstrap` : blanc, gris clair, gris, noir,
marron, rouge, orange, jaune, vert clair, vert, cyan, bleu clair, bleu, violet,
magenta, rose. Lordre denregistrement des blocs/items reste stable.
Les identifiants, recettes, textures et sauvegardes sont inchangés.
## Validation et livraison
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussi
en 2 min 41 s, 124 tâches. `git diff --check` réussi. Pas de nouveau test
ni de nouvelle session graphique pour ce changement limité au rangement.
Les sources et les deux archives ont été vérifiées. Les textures, recettes,
modèles et autres données sont identiques à beta.102, dont les archives sont
conservées. Seul le comportement de `ColoredBricks` change ; la classe interne
Stairs conserve exactement son code exécutable (seuls les numéros de lignes
de débogage changent). Reçu : `build/beta103-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.103.mrpack), SHA-256 :
`5c0b475410c7586275a59a8b14ac1770648f8196983e62c85a98dcd0fa5a1207`.
- [Pack de test](../build/Sanctuary-Test-beta.103.mrpack), SHA-256 :
`222765733711a08861e25db94ae12a4a6483bc11dbfdcaf54930786c10511d0e`.
Les GameTests du serveur dédié restent exclus. Aucun monde personnel,
aucune installation ni aucun canal de distribution modifié.
+36
View File
@@ -0,0 +1,36 @@
# beta.078 — Combats / Battles
Branche `codex/battle-menu-beta078`. Minecraft 26.3-pre-2 ; textures beta.070.
Le bouton et le titre « Duels et arènes » deviennent **Combats** en français
et **Battles** en anglais. Le lien depuis les duels de familiers utilise
également ce libellé. Les annonces dinscription indiquent le menu pause,
et les résultats renvoient au nouveau nom pour récupérer les gains.
Le [plan des menus](menu-architecture.md) conserve cette appellation. Le reste
de cette réorganisation reste une proposition ; l’économie est différée.
Aucune règle de combat, sauvegarde ou transaction nest modifiée.
## Vérification
`check build assemblePack assembleTestPack` réussi en 2 min 33 s, avec le
serveur dédié exclu conformément au refus de son EULA. Après la précision
du créateur sur le pluriel, les ressources et packs sont reconstruits en
8 s ; vérification finale des quatre traductions par langue et de leurs
paramètres de formatage.
Les 1 693 classes du JAR sont identiques à beta.077. Les textures, données
de jeu et le resource pack restent inchangés. Les deux archives embarquent
le JAR vérifié ; les archives beta.077 sont conservées à lidentique.
Reçu : `build/battle078-artifact.json`. Journaux : `build/battle078-check.log`
et `build/battle078-assemble.log`.
Pas de nouveau parcours client graphique pour ce changement de libellés.
Aucun déploiement dans une installation personnelle.
## Archives
- [Sanctuary-beta.078.mrpack](../build/Sanctuary-beta.078.mrpack).
SHA-256 : `9adfa5b5b8d49ed10943121ac2a2561d880886925a5f76db5ba98f0377d8d7e3`.
- [Sanctuary-Test-beta.078.mrpack](../build/Sanctuary-Test-beta.078.mrpack).
SHA-256 : `92bc1d59723546c31a6e7476dd9f53225c7957e5180091dfeaeade69ff265a86`.
+74
View File
@@ -0,0 +1,74 @@
# beta.098 — Construire le plan en créatif
Ticket CONSTRUCTION-098, branche `codex/creative-construction-beta098`.
À la demande du créateur, le parcours manuel du Métabli est complété par une
construction immédiate réservée au mode créatif.
## Parcours
Choisir une statue, une machine, un bâtiment ou un plan importé au Métabli.
Positionner et orienter laperçu avec K. Le bouton **Construire le plan…**
apparaît sous les coordonnées en créatif seulement. La confirmation indique
le nombre de blocs, lorigine et le fait que le plan entier sera construit,
même si une seule couche est affichée. Annuler revient aux réglages.
Confirmer pose les blocs sans consommer de matériaux, via le protocole serveur
existant. Le plan garde son origine, son orientation et son suivi davancement.
Les machines reçoivent leurs composants natifs : la clé dorée reste nécessaire
pour assembler le multibloc fonctionnel. Les inventaires et entités ne sont
pas copiés depuis les fichiers de plans.
Le bouton disparaît si le mode de jeu change. Une confirmation devenue périmée
(changement de plan, position, monde ou perte du créatif) ne lance rien.
Lenvoi en cours désactive le bouton et ne peut pas être remplacé par un second.
En survie, la construction reste manuelle et le serveur refuse toujours les
envois fabriqués sans passer par linterface.
Les validations serveur existantes restent applicables : cases libres ou déjà
conformes, zone chargée, hauteur et bordure du monde, distance de 192 blocs,
absence dentité à lemplacement, permissions et interdiction des blocs
techniques sans objet. Aucun changement de génération ni format de sauvegarde.
## Vérifications
Suite native `Plans072ClientChecks`, Minecraft 26.3, nouveau monde plat de
développement, graine 72 : **réussie en 47 secondes**.
- Bouton créatif visible et confirmation inspectés en capture native.
- Annulation sans placement ; statue de Creeper de 32 blocs de haut, 1 542
cellules, construite avec vérification de chaque matériau côté serveur.
- Fourneau et abri choisis dans le catalogue physique, rotation, filtre sur
une seule couche : le bouton construit bien toutes les couches du plan.
- Perte du créatif pendant la confirmation : aucun bloc posé, bouton absent.
- Envoi falsifié en survie refusé ; pose manuelle consommant exactement un bloc.
- Régression des 88 modèles natifs, export, matériaux et interfaces FR/EN.
Le premier passage enchaînait les plans en moins dune seconde et rencontrait
la limite denvoi serveur existante. Le test attend désormais 25 ticks entre
constructions ; aucun changement de cette limite na été nécessaire.
Le test Métabli conserve son assertion dabsence de catalogue à distance,
mais ne considère plus le nouveau bouton créatif comme interdit.
Captures dans `build/creative098-evidence/`, journal
`build/creative098-client.log`.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussi en **2 min 7 s**, 124 tâches. Les GameTests sur serveur dédié restent
exclus conformément au refus antérieur daccepter son EULA. Aucun serveur
dédié lancé ; essais uniquement sur un nouveau monde client de développement.
Les archives ont été vérifiées : version Minecraft 26.3 et compteur beta.098,
JAR sources identiques aux fichiers de travail, aucun test embarqué. Par
rapport à beta.097, seules les classes PlanClient/PlansScreen et trois libellés
FR/EN changent dans Sanctuary. Textures, données, resource pack et archives
beta.097 conservés. Reçu : `build/beta098-artifact.json`.
## Livraison locale
- `build/Sanctuary-beta.098.mrpack`, 9 880 395 octets ; SHA-256
`f06d0cc0256c6c55b1081019d0f00d2f9d29963cbf06d63b8cf1d9b303970f7a`.
- `build/Sanctuary-Test-beta.098.mrpack`, 9 899 316 octets ; SHA-256
`f2424a39b6b96076bdff8ac2a93e74ce83d77f453aa9bfbdd18a5fa17444f573`.
Aucun déploiement dans une instance personnelle, aucune sauvegarde personnelle
ouverte ou modifiée, aucun avancement du canal packwiz.
+5
View File
@@ -29,6 +29,11 @@ et ses règles restent versionnées pour éviter de déplacer un site au recharg
## Placement des temples
**Évolution beta.097** : le refus bloquant décrit dans cette version historique
est remplacé par une recherche de secours, puis un placement garanti des pièces
vanilla avec fondation si nécessaire. Les sites historiques admissibles restent
prioritaires. Voir le [contrat du correctif](temple-crash-beta097.md).
Les candidats sont des chunks de lintérieur de chaque île, à au moins 48 blocs
de son centre, ordonnés par un tirage déterministe. La recherche filtre le type
voulu, puis conserve les conditions natives de biome, de pente et de fondation.
+85
View File
@@ -0,0 +1,85 @@
# beta.100 — Statues découvertes et promenade des familiers
Branche `codex/exploration-familiers-beta100`. Minecraft 26.3.
## Contrat
Le catalogue des statues et son sélecteur ne proposent que les espèces
observées, tuées ou ayant tué le joueur. Le Métabli envoie une liste calculée
par le serveur à partir des notes `seen_mobs` et des statistiques natives.
Le champ didentifiant et la capture de cible respectent aussi cette liste.
Les plans déjà construits/importés restent des plans de blocs ordinaires.
Aucun nouveau format de sauvegarde, aucune migration ni changement de terrain.
Les familiers au repos choisissent une destination atteignable puis font une
pause. Le tempérament existant règle leur rayon, leur allure et leurs pauses :
curieux explorateur, joueur plus vif, calme plus posé. Les protecteurs restent
près du point gardé. Les déplacements dattaque, la fuite, les ordres, le portage
et les montures gardent la priorité. Les volants ne suivent plus une orbite
perpétuellement recalculée. Les chemins ratés sont abandonnés et les recherches
restent bornées dans les chunks chargés. Les identités et caractères existants
ne sont pas retirés au sort.
## Validation
`Exploration100ClientChecks` : **réussi en 4 min 37 s**. Nouveau monde plat
avec serveur intégré, sans serveur dédié :
- Une vache réellement visée débloque sa statue. Les statistiques natives
tué/par-qui-tué ajoutent zombie et squelette. Un œuf de cochon porté ne suffit
pas. Le client reçoit la liste du serveur ; une génération de cochon reste
refusée même en créatif. Capture du catalogue inspectée.
- Douze promenades réelles : loup, poule, slime, chauve-souris, chacun calme,
curieux et joueur. Plusieurs cases traversées, pauses, maintien près du joueur.
Le tempérament calme est testé avec personnalité protectrice, les deux autres
avec pacifiste pour isoler le déplacement au repos.
- Régression `Autonomy074ClientChecks` complète : quatre personnalités,
déplacements et dégâts réels, garde, cibles neutres, permissions, obstacles,
mode travail, ordres H bref/maintenu et touche reconfigurée.
- `.schem` Sponge v2/v3 : renommage natif ancien `grass` vers `short_grass`,
conservation exacte du fichier source et refus explicite dun bloc de mod absent.
Journal : `build/exploration100-client.log`. Captures :
`build/exploration100-evidence/`. La matrice ne constitue pas un nouveau playtest
visuel de toutes les espèces, ni une validation à plusieurs clients distants.
`Schematics100ClientChecks` : **réussi en 1 min 2 s**. Le client refuse un
fichier incompatible dans le Métabli sans fermer le menu, affiche son identifiant
fautif, puis importe un `.schem` valide. Fermeture, réouverture de la même
sauvegarde et ouverture dun deuxième monde passent, avec conservation de la
structure et remise à zéro du plan/de la session datelier. Le fichier rejeté
reste identique. Journal : `build/schematics100-client.log`.
Ces essais macOS ne reproduisent pas le crash Windows rapporté ; ils ne
constituent pas une correction démontrée de cet incident. `check build assemblePack assembleTestPack` réussit en **2 min 17 s**,
124 tâches, avec `-x :sanctuary:runGameTest` (serveur dédié exclu conformément
au refus de son EULA). Les deux packs sont vérifiés : même JAR testé, sources
correspondantes, libellés FR/EN, textures et archives beta.099 conservées.
Reçu : `build/beta100-artifact.json`. Aucun déploiement personnel ni publication
du canal packwiz.
## Import `.schem` et incident Windows signalé
Les palettes Sponge v2/v3 utilisent maintenant le convertisseur natif
`References.BLOCK_STATE` quand leur `DataVersion` est connue et antérieure.
Seule une copie de palette en mémoire est convertie ; le fichier importé et
les sauvegardes ne sont jamais réécrits par cette opération. Une version
future, un bloc de mod absent ou une propriété réellement incompatible restent
refusés. Sans version source, le parseur reste strict et ne devine pas une
conversion. Le message dimport indique le bloc/état fautif.
Le signalement Windows décrit un échec douverture, un monde absent de la liste
puis une fermeture du client lors du choix dun autre monde. Aucun journal ni
fichier précis nest disponible. Linspection ne trouve aucun accès de suppression
des mondes dans limporteur ; les plans actifs sont effacés en mémoire lors des
changements de connexion. Cela ne prouve pas la cause du signalement : sa
reproduction et le diagnostic Windows restent ouverts. Les fichiers utiles sont
`logs/latest.log` et, sil existe, le rapport daté de `crash-reports/` dans le
dossier Minecraft de linstance concernée. Ne pas supprimer ni convertir les
sauvegardes pour tenter de résoudre cet incident.
## Archives locales
- [Sanctuary-beta.100.mrpack](../build/Sanctuary-beta.100.mrpack), 9914561 octets.
SHA-256 : `7e24ba5e77c7fbb88cfadb55b3e373ad7e998381fd1c56e431aa79b4619a8075`.
- [Sanctuary-Test-beta.100.mrpack](../build/Sanctuary-Test-beta.100.mrpack), 9933483 octets.
SHA-256 : `a43bf61dc38c3c91f4cb09022040099ee1ca9274a6b00751178c80ee204dd944`.
+98
View File
@@ -0,0 +1,98 @@
# beta.074 — autonomie et ordres des familiers
Branche `codex/familiar-autonomy-beta074`. Implémentation et parcours client natif vérifiés.
## Comportements
| Personnalité | Décision autonome |
| --- | --- |
| Agressif | Engage les monstres quil voit à 12 blocs du joueur, accompagne ses attaques et riposte. |
| Protecteur | Garde 6 blocs autour du joueur, intercepte en priorité les monstres qui le ciblent, défend le joueur et lui-même. Abandonne la poursuite au-delà de 10 blocs du point gardé. |
| Passif | Nengage pas de combat spontanément ; défend le joueur attaqué et riposte sil est frappé. |
| Pacifiste | Évite le combat et s’écarte dun agresseur. Attend un ordre dattaque ou de garde. |
La vue est celle du familier : son propriétaire na pas besoin de voir le
monstre ou de le viser. Les animaux paisibles, les monstres neutres non engagés,
les alliés et les autres joueurs ne sont pas attaqués par la détection de
proximité. La riposte PvP et les ordres conservent les permissions du monde,
les factions et les règles des duels/arènes.
Un ordre dattaque prime sur la personnalité et les autres menaces. « Protéger »
ordonne explicitement de garder un allié visé, soi-même par défaut, ou le point
visé en maintenant Maj. Même un pacifiste peut exécuter cette garde demandée.
Pendant une poursuite spontanée, le protecteur peut changer de cible pour
intercepter une menace qui commence à viser son joueur ou lallié gardé.
Une cible morte laisse place à une nouvelle décision, au plus tard lors du
prochain balayage. Le protecteur revient près de son point de garde.
Les espèces de soutien disposent du coup de défense lorsquelles sengagent ;
leurs signatures, leurs dégâts existants et leurs coûts en fournitures restent inchangés.
## Commandes
H bref : attaquer lennemi visé, ou revenir au suivi sil ny a pas de cible.
H maintenu environ 0,4 seconde : ouvrir le menu dordres. La touche reste
configurable ; F échange les mains, G déclenche la technique. Relâcher après
louverture du menu ne lance pas dattaque. Les messages brefs confirment
lordre. « Suivre » suspend les réactions spontanées pendant cinq secondes.
## Exécution et conservation
Une recherche dentités chargées par seconde, décalée entre les familiers.
Aucun chargement de chunk ; chemins demandés au maximum toutes les dix ticks.
Une cible autonome perdue de vue cinq secondes, ou sans progression six
secondes, est écartée temporairement pendant dix secondes. Les commandes
explicites peuvent la désigner de nouveau. Les montures, familiers portés,
œufs rappelés et mode travail nentament pas de recherche autonome.
Le tirage de personnalité, les UUID, les 88 profils, la santé, lXP et les
souvenirs sont conservés. Aucun format de sauvegarde, terrain ni journal de
mise ne change. Les règles de combat des arènes restent prioritaires.
Textures beta.070, Minecraft 26.3-pre-2 et dépendances identiques.
## Vérifications
Le parcours `Autonomy074ClientChecks` réussit en **1 min 44 s** avec un
client et son serveur intégré, dans un nouveau monde plat de développement :
- Les quatre personnalités : recherche à 12/6 blocs, attaque du propriétaire,
dégâts réellement reçus par le joueur et déplacement jusqu’à la cible.
- Protecteur villageois : interruption dune poursuite pour une menace visant
le joueur, dégâts sans bouclier, cible suivante et retour dans la zone.
- Abeille neutre paisible puis agressive, garde explicitement demandée à un
pacifiste et priorité dune cible ordonnée.
- Vue propre au familier, obstacle opaque, cible enfermée, permissions,
mode travail, suspension puis reprise après Suivre.
- Événements clavier natifs : H bref/maintenu, reconfiguration sur Y,
absence dattaque au relâchement du menu, F natif ; fiches FR/EN.
La régression `Familiar071ClientChecks` réussit en **1 min 50 s** :
352 000 identités sur les 88 profils, réactions, dégâts, araignées montées,
Strider sur lave et les deux Nautilus aux tailles 2 500 et 6 000 ‰.
La fermeture/réouverture du monde conserve lUUID et le caractère.
Journaux : `build/autonomy074-client.log`, `build/autonomy074-mounts.log`.
Captures de la fiche actuelle et des montures : `build/autonomy074-evidence/`.
`Arena073ClientChecks` et la régression `Duel054Checks` passent en
**1 min 10 s** : arènes de familiers/joueurs/mixtes, 25 inscrits simulés,
consentement PvP, K.-O., morts réelles, mises, remboursements et récupération
après interruption. Journal : `build/autonomy074-arenas.log`.
`check build assemblePack assembleTestPack` réussit en **3 min 6 s**
(124 tâches). Les deux exports packwiz sont vérifiés : **1 689 classes**
comparées au JAR, sources testées identiques, huit libellés FR/EN mis à jour,
ressources et textures beta.070 intactes. Seules les quatre classes sources
prévues changent par rapport à beta.073. Les neuf archives précédentes
beta.070 à beta.073 restent strictement identiques.
Reçu : `build/autonomy074-artifact.json`.
Ces essais couvrent lIA commune ; ils ne constituent pas un nouveau playtest
des 88 techniques ni un test à plusieurs clients distants. Le serveur dédié
reste exclu (`-x :sanctuary:runGameTest`) conformément au refus daccepter
son EULA ; les essais natifs utilisent le serveur intégré.
Aucun monde personnel ni déploiement Prism.
## Archives locales
- [Sanctuary-beta.074.mrpack](../build/Sanctuary-beta.074.mrpack), 9595113 octets.
SHA-256 : `cc73e93c2ae17d6b52b6c8dd53639771645c5e5becd848e2c76765e32c919c5d`.
- [Sanctuary-Test-beta.074.mrpack](../build/Sanctuary-Test-beta.074.mrpack), 9614048 octets.
SHA-256 : `0851e10350788b76efa96ec1a50db951a74200213399e2a4216f8d5b1b8fafcb`.
+80
View File
@@ -0,0 +1,80 @@
# beta.067 — touche du familier et dragon volant
Branche `codex/familiar-controls-beta067`.
## Contrat
La touche des ordres du familier passe de H à F. La touche G de technique
reste indépendante. Le réglage H hérité est déplacé une seule fois vers F
au démarrage ; les autres touches personnalisées restent conservées. Un
marqueur local `config/sanctuary-familiar-key-v1.txt` permet ensuite de choisir
à nouveau H sans être remappé au démarrage suivant. L'action reste configurable.
Pendant le jeu Sanctuary, ouvrir les ordres avec F ne déclenche plus l'échange
des objets des deux mains. Le raccourci natif garde son comportement dans les
inventaires et hors Sanctuary ; réassigner les ordres libère également F.
Le modèle natif du dragon utilise un axe avant opposé aux modèles vivants
ordinaires. Son historique de vol reçoit cette correction d'orientation ;
la direction physique du familier et des attaques reste inchangée.
Le petit dragon porté utilise le planeur existant : descente bornée à
0,12 bloc par tick, distance de chute accumulée effacée. Le grand dragon porté
(taille existante > 1 200 et < 2 500 millièmes) permet une montée maintenue avec
la touche de saut, bornée à 0,18 bloc par tick. Relâcher reprend la descente
planée. Le seuil colossal de 2 500 reste une monture sur laquelle le joueur
s'assoit ; il ne peut pas être porté sur la tête. Seul le dragon reçoit la
montée lorsqu'il est porté ; les autres petits animaux volants gardent leur
plané et les montures colossales leur pilotage existant.
La physique du joueur reste native avec collisions. Le serveur n'exempte du
contrôle d'immobilité aérienne que la montée réellement soutenue par un grand
dragon porté et la touche de saut reçue. Retrait du familier, immersion,
déconnexion et perte du portage interrompent l'assistance. Les règles
existantes de collision du passager s'appliquent au dragon sur la tête.
Aucun changement du format des œufs, des sauvegardes ou de la génération.
Les indications de montée dans l'infobulle utilisent la touche de saut
configurée, avec libellés FR/EN.
## Vérification
`Familiar067ClientChecks` réussit en 55 secondes sur un monde plat de
développement avec serveur intégré :
- F ouvre réellement les ordres sans changer les objets des deux mains ; H
ne les ouvre plus. Réassigner sur K fonctionne et libère l'échange natif F.
- La position de la tête dans le modèle de dragon soumis au rendu est devant
le corps pour quatre directions cardinales, pas derrière.
- Dragons de tailles 350 et 650 : Maj + clic droit natif, passager synchronisé,
descente bornée côté client, distance de chute effacée des deux côtés ;
Espace ne permet pas de monter avec ces petits.
- Taille 1 500 : montée de plus de huit blocs en maintenant Espace pendant
cent ticks, connexion maintenue, reprise du plané au relâchement, collision
au plafond sans traversée du joueur.
- Taille 3 500 : le joueur monte sur le dragon, puis décolle avec Espace.
Le plané des petits existait déjà : le parcours le confirme sur le dragon.
Le nouveau comportement de montée concerne la catégorie « grand » portée.
La transparence de proximité existante reste conservée.
Journaux : `build/familiar067-client.log` et `build/familiar067-check.log`.
L'attente initiale de tous les chunks du rayon échouait dans le parcours ;
le test attend désormais la partie jouable et utilise sa zone de test locale.
`./gradlew check build assemblePack assembleTestPack` réussit en 2 min 12 s
avec `-x :sanctuary:runGameTest -PsanctuaryClientTests=true
-PsanctuaryQuickTests=true`. Le parcours natif est lancé séparément avec
`-PsanctuaryFamiliar067ClientTests=true -PsanctuaryClientNoVsync=true`.
Les deux MRpacks contiennent les 1 646 classes compilées et leurs ressources
vérifiées. Les différences avec beta.066 se limitent aux cinq classes du
correctif, au mixin enregistré, à l'indication FR/EN et aux versions des mods.
JEI, les textures, les données de génération et les archives beta.066 restent
identiques. Reçu : `build/familiar067-artifact.json`.
[Pack normal](../build/Sanctuary-beta.067.mrpack) ·
[Monde plat rapide](../build/Sanctuary-Test-beta.067.mrpack).
Validation en client natif avec serveur intégré, sans serveur dédié ni essai
à plusieurs clients distants. Aucun canal publié, instance personnelle ou
monde existant modifié.
+55
View File
@@ -0,0 +1,55 @@
# beta.069 — retour des ordres du familier sur H
Branche `codex/familiar-orders-h-beta069`.
Les ordres du familier reviennent sur **H**. **F** conserve l’échange natif des
objets entre les mains ; **G** reste la technique du familier. Les touches
restent configurables dans les options et les libellés FR/EN existants suivent
le raccourci assigné.
Le remplacement introduit en beta.067/.068 est annulé au premier démarrage :
une ancienne affectation F des ordres devient H. Les autres touches
personnalisées sont conservées. Le nouveau marqueur local
`config/sanctuary-familiar-key-v2.txt` rend cette opération unique, même si le
marqueur v1 existe déjà. Les modifications manuelles ultérieures ne sont pas
réécrites. Le filtrage qui consommait les actions du raccourci d’échange des
mains est supprimé. Aucun changement du serveur ou des sauvegardes.
## Vérifications natives
Le parcours `Familiar067ClientChecks`, actualisé pour le retour sur H, réussit
en **1 min 7 s** : H ouvre les ordres sans échanger les mains ; F échange un
diamant et un lingot dor dans les deux sens sans ouvrir de menu ; G conserve
son affectation par défaut ; une personnalisation des ordres sur K fonctionne.
Le reste de ce parcours existant (orientation, plané et vol du dragon) passe
également. Le test utilise un monde plat de développement et un serveur intégré.
Après le parcours, les options enregistrées sont bien H/F/G et le marqueur v2
contient beta.069 (`build/familiar069-controls.json`). Le lanceur réinitialise
la configuration de test ; ce parcours ne prétend donc pas valider la mise à
jour complète dune ancienne installation. La conversion conditionnelle F→H
et le garde par marqueur ont été vérifiés dans le code ; la configuration
personnelle de Prism na pas été modifiée.
Journal : `build/familiar069-client.log`. Le sélecteur de ce parcours reste
`-PsanctuaryFamiliar067ClientTests=true`, avec `-PsanctuaryClientTests=true
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true`.
## Livraison locale
`check build assemblePack assembleTestPack` réussi en **2 min 13 s**, 122 tâches,
avec exclusion du serveur
dédié (`-x :sanctuary:runGameTest`) et les profils client/test rapide.
Voir `build/familiar069-check.log`. Aucun serveur dédié ni acceptation dEULA.
Les 1 647 classes du mod correspondent à la compilation. Seule la classe
`FamiliarClient` change par rapport à beta.068 ; textures, traductions,
chargement, dragon et JEI restent identiques. Les archives beta.068 gardent
leurs empreintes. Reçu : `build/familiar069-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.069.mrpack), 5726225 octets.
SHA-256 : `1c923452ff4d5d186309390fac3306b8e05162143c852619b7519741002aa165`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.069.mrpack), 5745158 octets.
SHA-256 : `bed499fa29f4247a9e321207df503b3147b8b4fc8c8541d817cdfe2a2db9a945`.
Aucune instance personnelle ni canal public modifié.
+169
View File
@@ -0,0 +1,169 @@
# beta.071 — personnalité et engagement des familiers
Branche `codex/familiar-personality-beta071`.
## Comportement
Chaque œuf individualisé possède une personnalité de combat, visible dans
son infobulle et sa fiche de familier. Les ordres restent sur H, la technique
sur G et l’échange des mains sur F.
| Personnalité | Réaction spontanée | Poursuite | Cadence dinitiative |
| --- | --- | --- | --- |
| Agressif | Engage les monstres proches, accompagne les attaques et riposte | ×1,55 | délai ×0,90 |
| Protecteur | Accompagne les attaques et défend le joueur, lallié protégé et lui-même | ×1,45 | délai habituel |
| Passif | Riposte seulement lorsquil est frappé | ×1,35 | délai ×1,05 |
| Pacifiste | S’éloigne du danger, sans attaque automatique | ×1,35 sur ordre | délai habituel |
**Tous obéissent à un ordre explicite dattaque**, y compris le pacifiste.
Une autre menace ne remplace pas une cible désignée tant quelle reste valide.
Un Enderman ou un Piglin zombifié non engagé est laissé tranquille ; les
familiers et les joueurs ne déclenchent pas cette recherche de proximité. Le PvP conserve ses règles et les
duels leur consentement. Suivre suspend les réactions automatiques cinq
secondes ; Rappeler ou le mode travail interrompent lengagement spontané.
Les vitesses sont des multiplicateurs de navigation : la poursuite utilisait
auparavant ×1,15. Lapproche gagne donc environ 17 à 35 % selon le caractère,
sans changer la vitesse de promenade, celle des montures ni les dégâts.
Les attaques à distance gardent leur distance utile. Les feintes au contact
cessent suffisamment tôt pour entrer réellement à portée. Les préparations
dattaque restent lisibles : leurs durées ne sont pas raccourcies.
Les espèces de soutien conservent leurs techniques signature. Un villageois
agressif, ou un soutien explicitement envoyé attaquer, dispose dun coup au
contact (2 dégâts de base, préparation 0,25 s, intervalle 2 s), sans exiger un
bouclier dans linventaire du joueur. Les techniques offensives natives des
espèces restent utilisées.
## Individus et tendances
Le tirage utilise lUUID déjà enregistré et lidentifiant despèce. Sa fonction
et son sel sont figés dans `FamiliarPersonality`. Il ne dépend ni du nom, ni
de la taille, ni de lXP, ni du propriétaire ou de la reconnexion. Les anciens
œufs identifiés reçoivent donc un caractère stable sans conversion de fichier.
Un œuf sans identité le découvre à sa première individualisation habituelle.
| Tendance despèce | Agressif | Protecteur | Passif | Pacifiste |
| --- | --- | --- | --- | --- |
| Vindicateur et espèces farouches listées dans le code | 70 % | 20 % | 7 % | 3 % |
| Villageois et espèces paisibles listées dans le code | 5 % | 15 % | 25 % | 55 % |
| Autres espèces et futurs profils sans règle spécifique | 25 % | 40 % | 25 % | 10 % |
Toutes gardent des exceptions. Le tempérament historique hors combat
(curieux, calme, joueur), les souvenirs, les identifiants, les 88 profils et
les schémas de sauvegarde restent intacts. Changer ces seuils ultérieurement
changerait le caractère d’œufs existants : cela demanderait un contrat de
migration, pas une simple retouche d’équilibrage.
## Araignées
Laraignée et laraignée venimeuse utilisent la navigation descalade native.
En monture colossale, avancer contre une paroi les fait grimper à environ
quatre blocs par seconde. Relâcher ou s’écarter permet de redescendre. La
vérification porte sur le corps de laraignée : un plafond touché par le joueur
ne déclenche pas une ascension. Les collisions du corps et de la tête du
cavalier restent actives. Un espace vide nautorise aucune montée.
L’éligibilité à la monte reste celle des familiers colossaux ; les petits
familiers se portent selon les règles existantes.
## Effets des montures natives
Audit du code de Minecraft **26.3-pre-2** : `AbstractHorse` et ses variantes,
`Camel`/`CamelHusk`, `Pig`, `Strider`, `HappyGhast` et
`AbstractNautilus`/`Nautilus`/`ZombieNautilus`. Les sources de comparaison
sont extraites du JAR utilisé par le build dans `build/native071-source/`.
| Espèces natives pouvant recevoir un cavalier | Effet transmis au cavalier | Trait de déplacement |
| --- | --- | --- |
| Cheval, âne, mule, cheval squelette, cheval zombie | Aucun effet d’état natif | Déplacement et saut terrestres |
| Lama, lama de marchand | Aucun | Montables, mais pas pilotables en vanilla |
| Dromadaire, dromadaire momifié | Aucun | Déplacement terrestre ; dash natif distinct dun effet d’état |
| Cochon | Aucun | Direction à la carotte sur bâton en vanilla |
| Strider | Aucun bonus de résistance au feu au joueur | Appui à la surface de la lave |
| Ghast joyeux | Aucun | Vol |
| Nautilus, Nautilus zombie | **Souffle du Nautilus** | Nage et dash natifs |
Le Souffle du Nautilus est ajouté au moment de monter et entretenu tant que
le joueur reste sur son Nautilus colossal. Il utilise leffet Minecraft
original : durée de 60 ticks, renouvellement toutes les 40 ticks, niveau zéro.
Lair restant est figé sous leau, sans être rempli comme avec une potion.
Après la descente, leffet expire naturellement sous trois secondes ; il
nest pas supprimé brutalement au risque deffacer une autre source.
Il fonctionne pour les deux espèces, sur toute la plage colossale existante
(2 500 à 6 000 ‰, y compris les plus grands « titans »), sans achat de
technique ou condition de personnalité. Porter simplement l’œuf ou le petit
familier sur sa tête ne donne pas cet effet de **cavalier**.
Le Strider retrouve le support de collision de lave et la remontée natifs,
avec une infobulle dédiée. Il maintient son cavalier au-dessus de la surface ;
ce nest pas une immunité personnelle à la lave après avoir sauté du Strider.
Les autres espèces nappliquent pas de potion native à leur cavalier : aucune
na été inventée. Les commandes Sanctuary de ces montures restent communes,
comme demandé lors de leur introduction. Cet audit des traits ne porte pas
les selles, harnais, coffres d’équidés, sièges supplémentaires, charges de saut
ou commandes de dash propres aux interfaces natives. Les pouvoirs familiers
existants restent disponibles selon leurs règles.
## Coût et validation
La recherche agressive est locale, dans les entités déjà chargées à huit
blocs du propriétaire, une fois par seconde, décalée entre familiers. Aucun
chargement de chunk. La navigation reste limitée à une demande de chemin
par dix ticks. Les décisions et les dégâts font autorité côté serveur.
Le parcours `Familiar071ClientChecks` réussit en **2 min 23 s** dans un
nouveau monde plat de développement, avec le client et son serveur intégré :
- 352 000 UUID répartis entre les 88 espèces ; quatre caractères possibles,
tendances villageois/vindicateur, stabilité après changement dXP et de souvenirs.
- Quatre personnalités de loups : réactions aux événements, ordre explicite,
navigation jusqu’à la cible et dégâts réels. Verrouillage de combat maintenu
même pour un familier qui refuse lengagement spontané.
- Villageois agressif : initiative spontanée et dégâts sans bouclier ; la cible
manuelle garde sa priorité. Fiche FR/EN et nom du familier inspectés.
- Araignée et araignée venimeuse colossales : touches natives, ascension du mur,
collision du cavalier avec le plafond et absence de montée dans lespace vide.
- Strider colossal : déplacement avec les touches natives à la surface dun
bassin de lave, cavalier hors de la lave et sans potion de résistance au feu.
- Nautilus et Nautilus zombie : tailles 2 500 et 6 000 ‰, cavalier effectivement
immergé, air figé à 40 pendant 90 ticks, renouvellement de leffet, expiration
et reprise de la consommation après la descente. Équiper l’œuf seul ne le donne pas.
- Fermeture puis réouverture réelle du monde : même UUID et même personnalité.
Les captures sont dans `build/familiar071-evidence/`, le journal dans
`build/familiar071-client.log`. La matrice de personnalité couvre les 88
profils ; elle ne constitue pas un nouveau playtest de toutes leurs techniques.
Pas de validation à deux clients distants ou sur serveur dédié dans cette passe.
La construction de la distribution est effectuée dans
`build/familiar071-workspace/` : les sources de la release beta.070, puis les
changements ciblés de la 71. Cette copie évite de compiler les fichiers de
statues de la beta.072 ajoutés simultanément dans le dossier partagé.
`build/familiar071-source-snapshot.json` fixe les empreintes de cette copie.
Les sources courantes du familier conservent les mêmes changements.
`check build assemblePack assembleTestPack` réussit en **5 min 50 s**,
124 tâches (108 exécutées, 16 à jour), dans cette copie isolée. Le serveur
dédié `:sanctuary:runGameTest` reste exclu conformément au refus daccepter
son EULA ; le parcours natif utilise uniquement le serveur intégré du client.
Les deux exports MRpack sont vérifiés : version exacte, dépendances figées,
JAR comparé aux **1 651 classes compilées** et aux ressources traitées,
égalité normal/Test sauf module de test, absence de classes de test dans le
mod livré. Seuls les neuf fichiers Java prévus et douze libellés par langue
changent par rapport à beta.070 ; les schémas, le catalogue, JEI, le code de
Demeure et les 150 fichiers du resource pack restent identiques. Le manifeste
de Demeure suit seulement le nouveau numéro du pack.
Reçu et empreintes : `build/familiar071-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.071.mrpack), 9 462 323 octets.
SHA-256 : `1ab36663fe24313597c5328170a3eb2ca2e33bfdfc4c6fbc85c1f5c03102628c`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.071.mrpack), 9 481 258 octets.
SHA-256 : `06309f4cd382053fb42d80c3f131152932e07523ace799c50d1d899026029a92`.
Le resource pack demeure beta.070, actif par défaut et désactivable. Aucun
monde personnel, aucune instance Prism et aucun canal public ne sont modifiés.
+67
View File
@@ -0,0 +1,67 @@
# beta.079 — ordres et défense des familiers en solo
Branche `codex/familiar-solo-beta079`, Minecraft 26.3-pre-2, textures beta.070.
Signalement : les familiers paraissent passifs en solo ; H ouvre le menu,
mais les ordres ne semblent pas exécutés. Espèces citées : slime, loup, poule.
## Causes reproduites
Louverture du menu H envoie `refresh`. Cette lecture consommait la même
limite de fréquence que les ordres : un clic immédiatement après louverture
était rejeté sans message. La mise à jour possède désormais sa propre limite,
sans affaiblir celle des actions. Le test natif échouait sur Rappeler avant
cette correction et réussit ce passage après séparation des requêtes.
Suivre suspendait pendant cinq secondes toutes les réactions automatiques,
y compris la défense du joueur attaqué. Le délai ne concerne désormais que
les initiatives spontanées. Une personnalité qui défend son propriétaire
ou riposte peut réagir immédiatement aux dégâts. Le pacifiste conserve son
comportement ; lordre explicite de protection reste prioritaire.
Les ordres du menu confirment leur réception : suivi, attaque, protection
ou rappel. Une attaque sans familier disponible, sur une cible refusée ou
avec un familier porté/monté donne une explication au lieu dune confirmation
dattaque inexécutable. FR/EN disponibles. H bref et H maintenu sont conservés.
Le mode utilitaire continue de suspendre les attaques autonomes. La santé,
les UUID, les personnalités, les capacités et les sauvegardes sont conservés.
Les nouveaux compteurs de requêtes sont temporaires côté serveur ; aucune
migration ni modification dun monde personnel.
## Vérification
Deux reproductions natives avant correction : rejet de Rappeler juste après
louverture de H ; absence de défense dun loup passif juste après Suivre.
Le scénario utilise un nouveau monde plat solo de développement, sans
commandes, sans droits opérateur et sans achat du Lien actif.
`Solo079ClientChecks` réussit en **1 min 53 s** : rappel immédiatement après
louverture de H, retour au suivi, garde du joueur, attaques ordonnées et
défense immédiate après Suivre pour le loup, le slime et la poule. Les tests
attendent le déplacement et la frappe, contrôlent la baisse de santé et
identifient le familier comme auteur du dégât, pour exclure le soleil ou les
autres dégâts environnementaux. Les confirmations sont reçues côté client.
`Autonomy074ClientChecks` réussit en **1 min 58 s** : quatre personnalités,
garde, vue et obstacles, cibles neutres, priorité des ordres, permissions,
mode utilitaire, délai avant les poursuites spontanées, H bref/maintenu,
touche reconfigurée et échange des mains avec F. Fiches FR/EN vérifiées.
Journaux : `build/solo079-client-final.log`, `build/solo079-regression.log`.
Captures : `build/solo079-evidence/`.
`check build assemblePack assembleTestPack` réussit en **2 min 21 s**,
124 tâches, avec `-x :sanctuary:runGameTest` conformément au refus du serveur
dédié. Les 1 693 classes du JAR correspondent au build ; seules
`FamiliarBattle` et son état temporaire changent par rapport à beta.078.
Deux nouveaux libellés par langue, ressources et textures inchangées.
Sources vérifiées, même JAR embarqué dans les deux packs ; archives beta.078
conservées à lidentique. Reçu : `build/solo079-artifact.json`.
Aucun déploiement personnel ; les essais utilisent le serveur intégré.
## Archives
- [Sanctuary-beta.079.mrpack](../build/Sanctuary-beta.079.mrpack).
SHA-256 : `7df042d720e2511310387183efcc432cafec4786623e530e5552fd2ba36ca7db`.
- [Sanctuary-Test-beta.079.mrpack](../build/Sanctuary-Test-beta.079.mrpack).
SHA-256 : `0ca193b2918c7d650503c2ce2fa97d2b3c626fee5ddd99df0cf51ea05a2bb82e`.
+81
View File
@@ -0,0 +1,81 @@
# beta.062 — soleil et chapeaux des familiers
Branche `codex/familiar-sunlight-beta062`.
Le familier reprend la sensibilité solaire du type natif de son œuf : tag
`minecraft:burn_in_daylight`, avec respect de l'immunité native au feu. La
vérification utilise le moteur Minecraft 26.3-pre-2 : lumière, ciel dégagé,
eau/pluie/neige poudreuse et attribut environnemental `MONSTERS_BURN`.
Les bébés familiers concernés brûlent aussi. Les autres espèces conservent
leur comportement actuel.
Tout objet équipé dans l'emplacement de tête Sanctuary protège des nouvelles
inflammations solaires, sur un mob ordinaire comme sur un familier. Maj + clic
droit avec un objet l'équipe ; Maj + clic droit à main vide le récupère.
L'armure de tête native conserve sa protection et son usure habituelles quand
aucun chapeau Sanctuary n'est équipé. Un chapeau ne rend pas résistant au feu :
une flamme déjà allumée termine sa durée native, ou s'éteint dans l'eau.
Les familiers sensibles perdent leur santé de combat en brûlant, jusqu'au K.-O.
habituel, sans détruire l'œuf. Leur feu reste dangereux pendant un duel ; les
attaques extérieures au duel restent exclues. Les flammes suivent la taille
visible du compagnon. Une indication FR/EN sur les œufs concernés explique le
besoin d'un chapeau, sans achat préalable d'une aptitude.
Aucun identifiant ni format de sauvegarde ne change. Le chapeau utilise
l'équipement existant : il est rendu au sol quand le familier disparaît et
n'est pas stocké dans son œuf. Aucun monde existant ni canal n'est modifié.
## Vérifications
`Sunlight062ClientChecks` passe dans le client natif 26.3-pre-2, sur un monde
plat de développement neuf :
- 88 œufs exposés au moteur solaire natif : zombies, villageois zombies,
noyés, chevaux zombies, nautiles zombies, squelettes, vagabonds, embourbés
et phantoms brûlent ; les autres conservent leur immunité, dont le Wither
squelette naturellement résistant au feu ;
- mob ordinaire avec pierre, diamant, bâton et torche en chapeau, protection
et usure du casque natif conservées, reprise du feu après retrait ;
- vrai paquet Maj + clic droit pour équiper puis retirer un diamant de la
tête du familier, synchronisation de l'objet sur son modèle côté client ;
- santé persistée qui baisse sur les vrais ticks de feu, feu déjà allumé qui
expire sous un chapeau, absence de nouvelle inflammation ;
- toit, nuit, pluie et immersion ; l'eau éteint aussi les flammes existantes ;
- K.-O. déclenché par un tick natif de brûlure, identité et œuf conservés ;
- brûlure et fin normale d'un duel au K.-O., refus des coups directs d'un
joueur extérieur et des autres dégâts environnementaux pendant le duel ;
- flammes synchronisées aux dimensions visibles du familier bébé, capture
inspectée dans `build/sun062-evidence/sunburn.png`, indication FR/EN.
Journal `build/sun062-client.log` : **55 s**, marqueurs
`SUNLIGHT062_SPECIES_PASS` et `SUNLIGHT062_PASS`. La première tentative de
lancement a été arrêtée au blocage OpenGL de synchronisation verticale ;
le parcours réussi utilise `-PsanctuaryClientNoVsync=true` et le réglage VSync
uniquement dans le dossier du client de développement.
L'essai de duel utilise deux entités serveur avec une connexion simulée pour
la seconde ; aucun essai avec deux clients humains n'est revendiqué. La
capture inspectée est celle du zombie bébé ; le rendu individuel des huit
autres espèces sensibles n'a pas été revu visuellement.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest
-PsanctuaryClientTests=true -PsanctuarySunlight062ClientTests=true
-PsanctuaryQuickTests=true` réussit : **122 tâches**, **2 min 10 s**.
Le parcours client est exécuté séparément par `:sanctuary:runClientGameTest`
avec les mêmes propriétés et `-PsanctuaryClientNoVsync=true`.
Aucun EULA de serveur dédié n'a été accepté.
## Archives locales
- [Pack normal](../build/Sanctuary-beta.062.mrpack), 5678508 octets.
SHA-256 : `3eb3729023bcb1f6931198d50694ecac1fee1c660aeb0cf1edc9776aebbfe2fa`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.062.mrpack), 5697441 octets.
SHA-256 : `f71dd47ef228d2acab99fe9b7b58e11d4f39234f926d7a313956bdd69e9cd2b6`.
Les **1624 classes** embarquées correspondent au build. Le reçu
`build/sun062-artifact.json` vérifie le contenu des archives, les différences
ciblées avec beta.061, les dépendances imbriquées et la conservation des
archives précédentes. JEI, la génération et les autres ressources du pack
restent identiques. Aucun canal publié, instance personnelle ni monde
existant n'est modifié.
+58
View File
@@ -0,0 +1,58 @@
# beta.101 — Atterrissage des familiers volants
Branche `codex/flying-landing-beta101`, Minecraft 26.3.
Le profil de vol du familier doit désactiver laccumulation et le traitement des
chutes de son entité commune. Une descente pilotée, autonome ou un contact avec
le sol ne doit causer ni dégâts, ni animation/son de coup, ni entrée en combat.
Les vraies attaques et les chutes des familiers terrestres gardent leurs règles.
Aucun changement de navigation, de sauvegarde, de texture ou de terrain.
## Cause et correction
Lentité Sanctuary commune hérite de `PathfinderMob`. Son contrôle de vol et
labsence de gravité ne remplacent pas les méthodes natives de chute. Ces
méthodes pouvaient appeler `FamiliarBattle.hurt`, produire son animation/son de
coup, interrompre une technique et enregistrer du combat.
`checkFallDamage` remet maintenant la distance à zéro pour les profils volants.
`causeFallDamage` refuse aussi un appel avec une distance déjà calculée, avant
les sons et les dégâts natifs. Les autres profils délèguent toujours au code
Minecraft. Les sources de dégâts ordinaires ne sont pas filtrées.
## Validation
Reproduction native sur beta.100 : le perroquet accepte le callback de chute,
et lassertion « Flying familiar rejects native fall callback » échoue.
Journal conservé : `build/landing101-before.log`.
`Landing101ClientChecks` réussit après correction en **1 min 5 s**, dans un
nouveau monde plat de développement avec le serveur intégré :
- Les douze espèces du registre ayant un profil volant : perroquet,
chauve-souris, abeille, allay, Wither, breeze, phantom, vex, blaze, ghast,
ghast joyeux et dragon.
- Callback natif de chute à sept blocs, descente à 0,25 bloc par tick jusquau
contact réel avec le sol, puis mouvement rapide vers le sol.
- Santé inchangée, distance de chute nulle et absence de mise à jour de
`lastHurt`, donc pas de passage dans la branche qui diffuse le faux coup.
- Une attaque de zombie reste acceptée et enlève de la santé pour chaque espèce.
- Un loup terrestre conserve les dégâts de sa chute.
Les descentes sont pilotées par le test via les collisions natives ; ce nest
pas un nouveau playtest de tous les trajets autonomes ou un essai multiclient.
Journal : `build/landing101-client.log`. Aucun monde personnel nest utilisé.
`check build assemblePack assembleTestPack` réussit en **2 min 22 s**,
124 tâches, avec le serveur dédié exclu (`-x :sanctuary:runGameTest`).
Les archives normal/Test embarquent le même JAR vérifié et ses sources exactes.
Seul `FamiliarEntity` et les numéros de ligne de deux classes internes changent
par rapport à beta.100. Les ressources, textures et archives beta.100 sont
conservées. Reçu : `build/beta101-artifact.json`. Aucun déploiement personnel
ni publication du canal packwiz.
## Archives
- [Sanctuary-beta.101.mrpack](../build/Sanctuary-beta.101.mrpack), 9914792 octets.
SHA-256 : `3008127d2bb09556c4997c00350e82ff26af5402b69bc7c09c822b24ff4bfe74`.
- [Sanctuary-Test-beta.101.mrpack](../build/Sanctuary-Test-beta.101.mrpack), 9933717 octets.
SHA-256 : `854a8b6a42ac7ca0236e0c19b9000808535df273911b9c6a72844097a49358a0`.
+79
View File
@@ -0,0 +1,79 @@
# beta.094 — Foyers allumés du Fourneau
La chaleur partagée allume toute la façade du Fourneau, y compris si la cuisson
se déroule dans une case intérieure. Les deux ouvertures reçoivent des braises
orange et jaunes. La pierre et les trois textures originales sont conservées.
Quand la chaleur est épuisée, la façade reprend son aspect éteint.
Les 27 sources de particules des fours composants sont remplacées par une seule
animation de façade : une flamme et une fumée dans chacun des deux foyers.
Leurs positions correspondent aux pixels des ouvertures, à 0,02 bloc devant la
face, dans les quatre orientations. Un four isolé garde son animation native.
La dissociation rétablit l'état lumineux individuel des fours.
## Assets et rendu
- Original inchangé : `assets/sanctuary/textures/block/fourneau/front.png`.
- Variante de feu : `assets/sanctuary/textures/block/fourneau/front_on.png`.
- `tools/fourneau-embers.json` délimite les bandes des ouvertures à illuminer.
- `python3 tools/generate-fourneau-models.py` régénère les modèles éteints/allumés.
La variante a été créée avec l'outil intégré **imagegen**, puis réduite en
48 × 48 par échantillonnage au plus proche pour la densité native du modèle.
La génération ayant aussi redessiné la pierre, le rendu prélève uniquement les
pixels de feu dans les ouvertures ; tout le reste utilise l'image originale.
Les fines faces de braises sont décalées de 0,002 pixel pour éviter le z-fighting.
Prompt retenu : « Edit the provided 48 by 48 pixel Minecraft furnace facade
texture. Create its LIT variant. Preserve the pixel-art grid, grey stone, mortar,
arches, outer edges and dimensions. Change only the black/dark interiors of the
two arched openings to Minecraft-style orange, red and yellow embers/fire pixels,
bright yellow near the bottom, orange above. Flames stay inside the holes.
No perspective, border, labels or new elements. »
Le choix du modèle utilise l'état `LIT` natif. Les snapshots d'assemblage, leurs
paquets réseau et le schéma de sauvegarde restent identiques. Aucun paquet de
particules n'est envoyé par le serveur. Aucun monde personnel n'est modifié.
Le pack de textures intégré reste à son édition beta.090 ; ces assets sont ceux
du mod beta.094.
## Vérifications
Le test client natif avec serveur intégré est passé sur un nouveau monde plat de
développement, graine 85 (`build/fourneau094-client.log`, 1 min 5 s) :
- 27 composants synchronisés à cheval sur quatre chunks, quatre orientations.
- Chauffe réelle depuis une case intérieure, façade entière allumée puis éteinte.
- 800 émissions interceptées à la sortie de l'animation native : coordonnées
devant la façade, sur un pixel de feu situé dans une ouverture sombre originale.
- Aucune nouvelle particule à froid ; particules natives d'un four isolé conservées.
- Rechargement des ressources, départ/retour dans les chunks, dissociation,
reconstruction et destruction ; conservation du contenu d'origine.
- Captures allumé/éteint inspectées dans `build/fourneau094-evidence/`.
Commande du test :
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryFourneau085ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Les particules déjà émises finissent naturellement leur durée de vie après
l'extinction, comme celles des fours Minecraft. Test natif macOS ; pas de test
avec shaders tiers ni de session LAN à deux clients pour cette livraison.
Le serveur dédié de GameTest est exclu, conformément au refus antérieur de son
EULA. Aucun déploiement personnel ou changement de sauvegarde.
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` : réussi
en 2 min 31 s, 124 tâches (`build/fourneau094-check.log`). La régénération des
216 modèles est reproductible. `git diff --check` passe.
Les archives normal/Test ont été exportées et vérifiées : Minecraft 26.3,
version beta.094, même JAR Sanctuary intégré aux deux packs, sondes de test
absentes. Les assets existants, JEI et les archives beta.093 sont inchangés.
Le reçu `build/fourneau094-artifact.json` conserve les empreintes SHA-256 ;
`build/verify-fourneau094.py` reproduit ces contrôles.
- [Pack normal](../build/Sanctuary-beta.094.mrpack).
- [Pack de test plat](../build/Sanctuary-Test-beta.094.mrpack).
+60
View File
@@ -0,0 +1,60 @@
# beta.085 — textures du Fourneau
Les trois images originales de 48 × 48 pixels fournies par le créateur sont
conservées, octet pour octet, dans `assets/sanctuary/textures/block/fourneau/`.
Chaque image couvre une face entière du cube de trois blocs de côté. Les UV
des 27 composants prélèvent chacun un tiers de l'image, à la densité native
de 16 pixels par bloc. Façade dans l'orientation choisie à l'assemblage ;
côtés et arrière avec `side`, dessus et dessous avec `top`.
## Contrat de compatibilité
Aucun changement au schéma 1 de `sanctuary:multiblocks`, aux identifiants des
blocs ou aux données de leurs inventaires. Les assemblages beta.084 utilisent
leur orientation déjà enregistrée. Un four isolé garde le modèle de son pack
de ressources. Les nouveaux modèles ne s'appliquent qu'aux fours assemblés.
Dissocier ou casser un composant rétablit les modèles ordinaires ; cuisson,
combustible et objets restent dans les BlockEntities vanilla.
Le serveur transmet seulement l'apparence des machines dans les chunks
suivis par le joueur : à l'envoi natif du chunk, à l'assemblage et à la
dissociation. Aucun paquet par tick de cuisson. Le client invalide les
sections concernées et utilise les modèles de blocs natifs via Fabric,
avec éclairage, occultation des faces et destruction habituels. Il efface
son cache au déchargement d'un chunk, au changement de monde et à la
déconnexion. Les modèles sont rebâtis lors du rechargement des ressources.
Les modèles JSON se régénèrent avec `python3 tools/generate-fourneau-models.py`.
Les textures originales ne sont pas générées. Le pack intégré beta.070
reste inchangé : ces nouveaux assets appartiennent au mod beta.085.
## Limites visuelles
Aucune variante allumée n'a été fournie : l'image reste celle du créateur,
y compris pendant la cuisson. L'état lumineux natif du Fourneau est conservé.
Le Fût conserve son apparence de barils dans cette livraison.
## Vérifications et livraison
- `check build assemblePack assembleTestPack` : tâches réussies dans
`build/fourneau085-check.log`. La première extension du test visuel de chauffe
surveillait par erreur la case de diamants, qui ne cuit pas ; son attente a
échoué après les tâches de construction. Le scénario a été corrigé pour
observer le compartiment contenant le minerai, sans changement du code livré.
- `Fourneau085ClientChecks` relancé avec succès : nouveau monde plat intégré,
quatre orientations, 27 modèles répartis sur quatre chunks, état allumé,
rechargement des ressources, rejet d'un paquet d'une autre dimension,
déchargement réel puis retour, dissociation, casse et conservation des
17 diamants stockés. Journal final : `build/fourneau085-client-final.log`.
- Contrôle des trois PNG à l'octet près, des 108 modèles et de leurs UV,
des sources embarquées, des archives et de la préservation des assets
antérieurs. Reçu : `build/fourneau085-artifact.json`.
- Captures natives : `build/fourneau085-screenshots/`, dont
`0001_fourneau085-north.png` et `0006_fourneau085-lit.png`.
Archives locales vérifiées : `build/Sanctuary-beta.085.mrpack` et
`build/Sanctuary-Test-beta.085.mrpack`. Les archives beta.084 restent inchangées.
Le canal packwiz et l'instance Prism n'ont pas été déployés. Aucun monde
personnel modifié, aucune EULA acceptée, aucun serveur dédié lancé : le test
utilise uniquement le serveur intégré au client. Le rendu avec deux clients
LAN distincts et avec un moteur de shaders tiers reste à éprouver séparément.
+74
View File
@@ -0,0 +1,74 @@
# beta.115 — Dépôts et chauffe du Fourneau
Ticket sur `codex/fourneau-transfers-beta115`, après le signalement de piles
qui se réalignent pendant les dépôts rapides avec Maj, dans Ingrédients et
Combustibles, et d'une chauffe difficile à comprendre.
## Diagnostic
La méthode `mayPlace` de la case serveur utilisait `index`, masqué par le
champ hérité `Slot.index` (position affichée). Elle validait donc successivement
une entrée, un combustible et une sortie, au lieu des 27 entrées ou des
27 combustibles. Le client acceptait le dépôt puis le serveur le refusait.
Le test reproduit le refus dun déplacement de la case 1 vers la case 23.
Le correctif utilise explicitement `physicalIndex` pour la validation.
## Comportement
Les transferts Maj dans les vues complètes du Fourneau sont anticipés sur le
client, avec les mêmes destinations et règles de combustible que le serveur.
Les cases se remplissent dans l'ordre, après fusion des piles compatibles.
Un dépôt manuel conserve la case choisie ; aucun tri périodique des ingrédients
n'est ajouté. Les recherches masquent une partie du stock : leurs transferts
entrants continuent d'attendre la réponse du serveur, qui connaît tout le stock.
La chauffe emprunte du combustible à une autre case uniquement pendant le tick
natif. La pile non brûlée retourne immédiatement à sa case d'origine, avec tous
ses composants. Les restes natifs restent associés à leur cuisson : un seau de
lave devient un seau, puis un seau d'eau avec une éponge mouillée.
Les 27 entrées ont chacune une barre et une infobulle : cuisson en cours,
manque de combustible avec progression conservée, résultat bloqué, absence de
recette. Le panneau indique le nombre de cuissons et la réserve allumée en
secondes de travail cumulées. Ce n'est pas une durée réelle restante : les
cuissons parallèles se partagent la réserve. « Fonctionnement » explique les
onglets, les gestes et le rendement normal du combustible en FR/EN.
Les recettes, résultats, expérience et règles de trémies restent natifs.
Aucun changement de format, de monde ou de génération ; les 27 fours physiques
conservent l'unique copie des objets et de leurs temps de chauffe.
## Vérifications
Le test natif `Furnace115ClientChecks` passe avec un serveur intégré, sur un
nouveau monde plat de graine 115 : vrai glisser avec Maj sur neuf piles nommées,
remplissage consécutif, déplacement manuel vers la case 23 et répartition native
sur six cases de colonnes différentes. Les 27 cases de chaque onglet valident
leur rôle physique. Le combustible nommé conserve sa position et ses composants.
La cuisson parallèle, ses états synchronisés, la progression conservée à court
de combustible, les 27 cuissons ravitaillées, le seau de lave et l'éponge,
l'extraction des résultats et la sauvegarde native passent. Captures FR/EN
relues dans `build/furnace115-evidence/`. Marqueur `FURNACE115_PASS` dans
`build/furnace115-client.log`.
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussit
en 2 min 29 s, 125 tâches. Le panneau d'aide reçoit ensuite une dernière
vérification client et une reconstruction ; la livraison commune beta.116
repasse les contrôles complets en 2 min 23 s et le scénario Fourneau en 42 s.
Le GameTest dédié reste exclu conformément au refus antérieur de son EULA.
Pas d'essai Windows ou de réseau distant avec latence simulée. Aucun monde
personnel ouvert. Cette étape reste locale et rejoint la livraison commune
avec les matériaux de sculpture : [beta.116](sculpture-materials-beta116.md).
Archives locales vérifiées (même JAR Sanctuary, sources concordantes, aucune
classe de test ni changement de production extérieur au ticket) :
- `Sanctuary-beta.115.mrpack` : 10184430 octets, SHA-256
`8fcac63b1bf5a01f680fb46666924705db3a2675e102037278e9d650d04cbf22`.
- `Sanctuary-Test-beta.115.mrpack` : 10203354 octets, SHA-256
`5b98fdb8842690158a20b422d6aa5496d74e572b3429498ffb25476d24e87f8a`.
- JAR Sanctuary : `2066d3191d7ee27904927fab269d8160136f048742c3223713e8ed4fe90dd8f5`.
Reçu : `build/furnace115-artifact.json`.
+60
View File
@@ -0,0 +1,60 @@
# beta.088 — Navigation du Fût sans recentrage de souris
Branche : `codex/fut-navigation-beta088`.
## Problème et correction ciblée
Changer de page ou appliquer une recherche remplaçait le menu serveur via
`openMenu`. Minecraft envoyait d'abord une fermeture au client, puis une
ouverture. Cette fermeture reprenait la souris pour le jeu et la recentrait,
obligeant à revenir sur le bouton à chaque clic.
La transition nettoie désormais l'ancien menu côté serveur avec
`doCloseContainer`, sans envoyer l'écran de fermeture intermédiaire. Le
nouveau menu est ensuite ouvert normalement : la souris reste libérée et
conserve sa position. Cela concerne la pagination et la recherche du Fût,
ainsi que les onglets du Fourneau qui utilisent la même navigation.
Chaque page garde un nouvel identifiant de menu : les paquets de clics ou de
navigation de la page précédente sont toujours rejetés. Les contrôles de
portée, d'accès, de structure, d'objet porté au curseur et la limite de
fréquence restent en place. La fermeture réelle du coffre reste native.
Aucun changement de stockage, de sauvegarde, de textures ou de libellés.
## Vérifications
Le parcours natif existant a été étendu avec un contrôle des paquets réseau
sur un second joueur de test : sans correction, la navigation envoie un
`ClientboundContainerClosePacket` et le test échoue. Avec la correction,
aucune fermeture intermédiaire, et une fermeture réelle envoie toujours
son paquet. Ce contrôle reste valable si la fenêtre de test est inactive.
Côté client, le test place réellement le curseur sur le bouton puis clique
trois fois sur Suivant et deux fois sur Précédent sans le déplacer. Sa
position est vérifiée après chaque page, après une recherche localisée en
français et après chacun des trois onglets du Fourneau. Échap ferme le menu
normalement côté client et côté serveur.
Les essais existants passent également : 729 cases, deux joueurs utilisant
le même stock, objets au curseur, identifiants périmés, transfert rapide,
hoppers, démontage, casse, persistance et cuisson native partagée.
Aucun serveur dédié lancé, aucune EULA acceptée, aucun monde personnel touché.
Journaux : `build/fut088-before-client.log` (régression reproduite) et
`build/fut088-client.log` (succès en 39 secondes). Le parcours reste activé
par `-PsanctuaryMultiblocks084ClientTests=true` avec
`-PsanctuaryClientTests=true -PsanctuaryQuickTests=true`.
`check build assemblePack assembleTestPack` réussit en 2 min 23 s
(124 tâches, 103 exécutées), avec le GameTest dédié explicitement exclu.
Journal : `build/fut088-check.log`. Le reçu `build/fut088-artifact.json`
vérifie les sources, le JAR, les archives normal/Test et la conservation de
tous les assets beta.087. Seules `MultiblockMenu` et sa classe interne de
transfert changent dans les classes compilées (décalage des lignes de debug
pour cette dernière).
Livraison locale : `build/Sanctuary-beta.088.mrpack` et
`build/Sanctuary-Test-beta.088.mrpack`. Les archives beta.087 restent intactes.
Aucun déploiement dans l'instance Prism ni sur le canal publié. Un essai LAN
avec deux clients distincts reste à réaliser ; le test d'accès partagé utilise
un second joueur serveur dans le client de développement.
+51
View File
@@ -0,0 +1,51 @@
# beta.086 — textures du Fût
Le Fût assemblé reçoit les trois images originales de 48 × 48 pixels :
côtés, dessus et dessous. Chacune couvre une face entière de trois blocs
sur trois, avec 16 pixels par bloc et sans retouche de l'image.
## Contrat avant implémentation
Aucun changement de sauvegarde : les 27 barils et leurs 729 cases restent
vanilla, avec le même registre d'appartenance et les mêmes données. Seul le
modèle affiché change quand le Fût est assemblé. Les barils indépendants
conservent le modèle du pack de ressources actif. Dissociation et casse
rétablissent leur apparence. Les textures du Fourneau beta.085 sont conservées.
Le Fût ajoute un paquet client `sanctuary:fut_appearance_v1` ; le paquet
du Fourneau reste inchangé. Les deux utilisent la même mise en cache visuelle
par chunk et le même rendu natif. Aucun paquet supplémentaire par tick,
aucun stockage parallèle d'objets. Le pack intégré beta.070 reste inchangé ;
les textures du Fût appartiennent aux assets du mod beta.086.
## Rendu et vérifications
Les modèles JSON se régénèrent avec `python3 tools/generate-fut-models.py`.
Les PNG sources sont conservés dans `assets/sanctuary/textures/block/fut/`.
Aucune variante ouverte n'a été fournie : le Fût conserve le même dessus
pendant l'accès à son inventaire.
`Fut086ClientChecks` a réussi dans un nouveau monde plat intégré : Fût et
Fourneau voisins, modèles distincts, raccords des côtés/dessus/dessous,
ouverture et prélèvement dans les 729 cases, rechargement des ressources,
déchargement réel puis retour dans quatre chunks, dissociation et casse.
Les objets conservés restent dans les mêmes barils physiques ; retirer la
façade du Fût ne retire pas celle du Fourneau voisin.
Journal du client : `build/fut086-client.log`. Captures natives :
`build/fut086-screenshots/`, notamment `0001_fut086-top-side.png` et
`0002_fut086-bottom-side.png`. Le Fût est suspendu dans cette scène de test
pour que le dessous puisse être inspecté.
`check build assemblePack assembleTestPack` a réussi en 2 min 36 s
(124 tâches, 104 exécutées), sans serveur dédié ; journal
`build/fut086-check.log`. Le reçu `build/fut086-artifact.json` vérifie
l'identité des PNG, les 27 modèles, les sources embarquées et les archives,
ainsi que la conservation de tous les assets beta.085 du Fourneau.
Livraison locale : `build/Sanctuary-beta.086.mrpack` et
`build/Sanctuary-Test-beta.086.mrpack`. Les archives beta.085 restent
immuables. Aucun déploiement sur Prism ou sur le canal publié, aucun monde
personnel modifié, aucune EULA acceptée. Les vérifications multijoueur
avec deux clients distincts et avec un moteur de shaders tiers restent
à effectuer séparément.
+152
View File
@@ -0,0 +1,152 @@
# GEM-01 — Gemmes, argile et découvertes — beta.126
Contrat du 17 septembre 2026, branche `codex/gems-beta126`, Minecraft 26.3.
Deux gemmes natives complètent l'émeraude : `sanctuary:ruby` et
`sanctuary:sapphire`. Chaque famille comprend un bloc de stockage, un minerai
ordinaire et un minerai des abîmes. Les huit PNG du créateur sont copiés à
l'identique ; leurs empreintes figurent dans `tools/gems-textures-beta126.json`.
Les noms des fichiers français `saphir` sont associés aux identifiants anglais
stables `sapphire`, sans modifier les pixels. Les deux items utilisent les fichiers de remplacement
`Desktop/ruby.png` et `Desktop/saphir.png` fournis en fin de livraison.
L'ordre créatif est émeraude, rubis, saphir : ingrédients, blocs de stockage,
minerais ordinaires et minerais des abîmes dans leurs onglets natifs respectifs.
Minage à la pioche de fer ou mieux, résistance et expérience comme l'émeraude,
Fortune, Toucher de soie, cuisson/four à fusion et conversion 9 gemmes ↔ 1 bloc.
Les blocs peuvent former un socle de balise et les gemmes servir de paiement.
Les recettes rejoignent la collection actuelle de l'émeraude, sans ajouter de
transactions de villageois. Libellés français et anglais, tags communs `c:`.
## Génération procédurale et contrat de compatibilité
Profil initial **gemmes 1 / beta.126** : quatre tentatives par chunk et par
gemme, filons natifs de taille 3, hauteur uniforme Y0256, probabilité de rejet
au contact de l'air de 0,25. Ces nombres sont un réglage initial à équilibrer
lors de la future refonte ; aucun quota de gemmes par chunk n'est garanti.
Les variantes ordinaires remplacent les roches du tag vanilla
`stone_ore_replaceables`, les variantes des abîmes celles de
`deepslate_ore_replaceables`.
Les fichiers `worldgen/feature/ore_<gemme>.json`,
`worldgen/placed_feature/ore_<gemme>.json` et les tags de biomes
`has_ore/<gemme>` séparent les cibles, la forme, la fréquence, la hauteur et
les régions. Un datapack peut les remplacer sans recompiler le mod. Le code
réutilise `OreFeature` et le hasard natif issu de la graine ; il limite ces
filons aux mondes utilisant `SanctuaryChunkGenerator`. Les biomes vanilla
partagés avec Sanctuary restent compatibles sans ajouter les gemmes aux
mondes vanilla, au Nether ou à l'End.
Cette évolution additive est autorisée pour les **nouveaux chunks uniquement**.
Aucun remplissage rétrospectif, aucune régénération, aucun remplacement de chunk
sauvegardé ni activation d'expansion. Les codecs du relief, les dimensions et
le format des sauvegardes restent inchangés. Les filons suivent les protections
existantes de la décoration native. Les anciens profils expérimentaux précédant
le générateur Sanctuary unifié ne sont pas étendus.
## Argile spéciale dans le Clay Workshop
Le bloc d'argile vanilla conserve les couleurs échantillonnées sur le modèle
original, animal découvert ou import GLB. Les argiles colorées et les autres
blocs continuent à transférer leur palette de texture. Une même règle est
appliquée à l'aperçu client et au résultat serveur. Le changement de matériau
invalide le résultat même si les deux palettes sont identiques. Le texte de
l'atelier explique l'exception en français et en anglais.
Une sculpture coûte toujours un bloc ; aucune recette, découverte, donnée de
sculpture déjà fabriquée ni règle de placement n'est modifiée.
## Commande de découverte commune
`/sanctuary discovery all` découvre tous les blocs, objets et espèces enregistrés.
Les variantes `blocks all`, `items all` et `mobs all` ciblent une catégorie ;
`block <identifiant>`, `item <identifiant>` et `mob <identifiant>` ciblent une
entrée avec la complétion native. Un sélecteur de joueurs en fin de commande
est facultatif ; sans cible, elle s'applique au joueur qui l'exécute.
Exemples :
```mcfunction
/sanctuary discovery all
/sanctuary discovery mobs all
/sanctuary discovery block minecraft:stone
/sanctuary discovery item minecraft:diamond
/sanctuary discovery mob minecraft:cow
/sanctuary discovery all @a
```
La permission suit « Autoriser les commandes » en solo et les droits opérateur
sur serveur. La console doit préciser la cible. Les identifiants invalides,
l'air et les types d'entités sans espèce découvrable sont refusés.
Les blocs passent par le registre de découvertes et son événement existant ;
les objets passent par `RecipeService.discover`. Les collections et recettes
sont ensuite recalculées normalement. Les espèces rejoignent `seen_mobs`,
la même donnée que l'observation naturelle, consommée par les familiers,
le Métabli et le Clay Workshop. Il n'existe aucun drapeau de déblocage parallèle.
Les catalogues déjà ouverts sont à rouvrir après la commande.
La commande conserve les quantités possédées et les compteurs de combat,
minage, pose et fabrication. Elle ne donne pas d'objets, n'achète pas les skills
et n'attribue pas d'advancements. Les recettes réservées aux opérateurs gardent
leurs règles. Les historiques personnels sont enrichis sans changer leur
schéma ; la commande refuse les données illisibles plutôt que les remplacer.
## Vérifications
Client natif Minecraft 26.3 / Java 25, `Gems126ClientChecks`, réussi en
1 min 08 s. Les mondes sont jetables, sans sauvegarde personnelle ouverte :
- Les huit items et six blocs sont présents, avec les huit textures exactes.
Quatre groupes créatifs respectent émeraude → rubis → saphir, sans doublons.
- Douze recettes natives, découverte du bloc de stockage, outil fer minimum,
Fortune III, Toucher de soie et balises passent les contrôles serveur.
- Graine **126**, profil gemmes 1, 81 chunks autour de l'origine : 7 rubis dans
la pierre et 8 dans la roche des abîmes ; 15 saphirs dans la pierre et 10 dans
la roche des abîmes. La génération est refusée dans le monde plat vanilla.
Les minerais persistent à la reconnexion, et un minerai retiré ne réapparaît pas.
- L'argile conserve exactement les couleurs des voxels d'une vache et d'un GLB
texturé. Bois et argile colorée transfèrent toujours leur palette. Le retour
à l'argile, l'égalité aperçu/résultat et le coût d'un bloc en survie sont vérifiés.
- La commande native respecte « Autoriser les commandes », accepte une cible
et la console, refuse les identifiants invalides et permet une espèce, un
bloc, un objet, toutes les espèces ou tout le contenu. Les recettes liées
sont recalculées. La répétition est idempotente et les découvertes survivent
à la reconnexion sans inventer de compteurs de combat ou de possession.
Logs et captures dans `build/gems126-client.log` et
`mods/sanctuary/build/run/clientGameTest/screenshots/`. Le GameTest dédié
reste exclu conformément au refus antérieur de son EULA. Le build complet et
les archives sont vérifiés séparément avant publication.
Build final `./gradlew check build assemblePack assembleTestPack
-x :sanctuary:runGameTest` réussi en **2 min 10 s**, 126 tâches. Les contrôles
natifs de gameplay précèdent uniquement le remplacement final des deux PNG
d'items ; les huit fichiers livrés sont vérifiés à l'octet près contre les
sources, tous en 16 × 16. Les JAR de sources correspondent aux sources courantes.
L'audit entre les binaires beta.125 et beta.126 ne trouve que les 112 entrées
de production prévues. Les archives normal/Test contiennent le même mod et
le template reproduit exactement ses ressources exportables.
| Artefact | SHA-256 |
| --- | --- |
| `Sanctuary-beta.126.mrpack` | `716221ce24549781ab91f5437ad2310497b198a4b61c43c40c67a27984365ae5` |
| `Sanctuary-Test-beta.126.mrpack` | `bbf22d7dd72e6746538b4ec28686f699225d4a59372304e5db42140a80e88bd1` |
| `sanctuary-beta.126.jar` | `85dbe1b41d98751029bb62e87d259522f8609758896c797b1e02fa7656ec0342` |
## Publication et synchronisation
[Release beta.126](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.126)
publiée depuis `99860af312a1737d938812f3515fcc4acb4291b2` ; artefacts
immuables retéléchargés et vérifiés. Canal packwiz : `31749b95d21ce5bced6b9e5759499da6f8a67e6e`.
Deux synchronisations isolées, puis deux synchronisations de l'instance existante
**Sanctuary Beta** ont réussi. Un seul JAR Sanctuary beta.126, correspondant
à l'empreinte ci-dessus. Les **923 fichiers personnels** suivis sont conservés,
sauvegardes restées fermées ; copie préalable dans
`sanctuary-backups/before-beta.126/`.
Packs normal/Test et template copiés et vérifiés dans
`sanctuary-beta/build/`. Reçus locaux : `build/gems126-artifact.json`,
`build/gems126-isolated.json`, `build/gems126-prism.json` et
`build/gems126-publication.log`.
+50
View File
@@ -0,0 +1,50 @@
# Synchronisation Git jusqu’à beta.061
Ticket du 15 septembre 2026, branche `codex/git-sync-beta061`.
La livraison beta.061 sest terminée pendant le
[rattrapage Git beta.060](git-sync-beta060.md). Ses sources finales sont
enregistrées dans un second commit, au-dessus du point de sauvegarde beta.060.
Les tags `beta.060` et `beta.061` désignent ces deux états ; `main` rejoint
beta.061 par avance directe, sans réécriture de lhistorique.
Le numéro reste celui de la livraison existante. Aucun changement de gameplay
nest ajouté par cette synchronisation. Les références courantes du README
et de lexemple dexport packwiz sont actualisées.
## Validation des sources livrées
Les sources et tests sont copiés après la fin de la tâche
`codex/intro-familiar-mount-beta061`. Son
[compte rendu de livraison](arrival-mount-beta061.md#vérifications), vérifié
dans les journaux locaux, donne :
- `check build assemblePack assembleTestPack` avec la sélection beta.061
et `-x :sanctuary:runGameTest` : réussite en 3 min 14 s, 122 tâches.
- Parcours client natif `ArrivalMount061ClientChecks` : réussite en
1 min 32 s, marqueurs `ARRIVAL061_MUSIC_PASS` et `ARRIVAL_MOUNT061_PASS`.
- Reçu `build/arrival-mount061-artifact.json` : 1 623 classes Sanctuary,
ressources, dépendances et conservation des archives beta.060 vérifiées.
La copie destinée à Git est ensuite reconstruite dans le worktree isolé avec
`assemblePack assembleTestPack`, en excluant les tâches `check` déjà exécutées
sur les sources livrées. La comparaison des JAR contrôle que cette copie
produit le même code que la livraison testée. La reconstruction réussit en
**15 s**, avec **21 tâches** ; tous les contenus des entrées du JAR sont
strictement identiques, y compris les 1 623 classes, les ressources, les
métadonnées et les dépendances imbriquées.
Reçus locaux : `build/git-sync-beta061-verification.json` et
`build/git-sync-beta061-assemble.log`. Les empreintes des deux archives
MRpack originales sont également conformes au reçu de livraison.
La suite serveur générale a été exécutée sur beta.060 pendant ce rattrapage :
**235 réussites sur 246**, avec [11 échecs consignés](git-sync-beta060.md#vérifications).
Ces scénarios restent à trier ; le parcours ciblé beta.061 ne constitue pas
une nouvelle exécution ni une réussite de cette suite générale.
## Distribution
Cette opération publie les sources et leurs tags sur le Git du projet.
Les archives bêta restent locales, le canal packwiz reste sur alpha.30.7,
et aucune instance Prism ou sauvegarde personnelle nest modifiée.
+77
View File
@@ -0,0 +1,77 @@
# Synchronisation Git jusqu’à beta.092
Ticket du 16 septembre 2026, branche `codex/git-sync-beta092`.
Le dépôt distant était resté sur [beta.061](git-sync-beta061.md). Cette
synchronisation enregistre les sources, ressources, outils et comptes rendus
locaux jusqu’à la livraison **beta.092**, pour **Minecraft 26.3**. Elle inclut
le commit déjà local du resource pack beta.070. `main` avance directement et
le tag exact `beta.092` désigne les sources de la livraison vérifiée.
Le compteur reste à beta.092 : ce rattrapage najoute aucun changement de jeu.
Les documents de conception restent des intentions, selon leurs contrats.
Les anciens tags et les posts de release existants sont conservés. Les versions
intermédiaires ne reçoivent pas artificiellement un tag pointant sur beta.092.
## Sources et vérifications
Une copie des 2 636 fichiers sources non ignorés est figée dans un worktree
isolé, sans modifier les fichiers de travail. Les JAR générés, archives ZIP,
MRpack, sauvegardes et dépendances téléchargées restent ignorés ; seul le
wrapper Gradle est versionné. Les références courantes des README sont mises
à jour, avec ce compte rendu.
Les journaux et le reçu de la [livraison beta.092](multiblock-pick-beta092.md)
confirment :
- `./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussi en **3 min 1 s**, **124 tâches**.
- Parcours client natif `Pick092ClientChecks` réussi en **1 min 19 s**, avec
`PICK092_PASS` : **864 états**, douze combinaisons normal/gluant et six
directions, vrais clics molette, inventaire de survie, parties mobiles et
Ctrl + clic sans données techniques.
- Les empreintes des deux MRpack locaux correspondent au reçu de livraison.
La copie destinée à Git est reconstruite sous Java 25 avec :
```sh
./gradlew assemblePack assembleTestPack \
-x :sanctuary:check -x :demeure:check \
-x :jei:check -x :sanctuary-test:check
```
Réussite en **48 s**, **23 tâches**. Les contrôles déjà réussis sur la livraison
ne sont pas relancés pour cette copie. La vérification des manifestes packwiz
et des ressources graphiques passe pendant lassemblage. Les quatre JAR
reconstruits sont **identiques octet pour octet** à ceux de la livraison :
| JAR | Entrées | Classes |
| --- | ---: | ---: |
| Sanctuary beta.092 | 2 960 | 1 753 |
| Demeure beta.092 | 24 | 14 |
| Sanctuary Test beta.092 | 25 | 3 |
| JEI 30.32.0-sanctuary.3 pour 26.3 | 1 378 | 1 101 |
Les 811 fichiers Java des trois modules Sanctuary, Demeure et Test correspondent
également aux archives de sources de la livraison. Les ressources, métadonnées
et dépendances imbriquées sont incluses dans la comparaison des JAR.
SHA-256 du JAR Sanctuary :
`8eb91eb41d0236ac6d6d064e9638c99802d28a2d83b8aef5ff1291c9495bcc8c`.
Reçus locaux ignorés : `build/git-sync-beta092-verification.json`,
`build/git-sync-beta092-assemble.log`, `build/pick092-artifact.json`,
`build/pick092-check.log` et `build/pick092-client.log`.
## Limites et distribution
Les essais beta.092 utilisent un client macOS et son serveur intégré ; pas de
session LAN à deux clients. Le serveur GameTest dédié est exclu et aucune EULA
nest acceptée. La dernière exécution générale consignée dans le rattrapage
[beta.060](git-sync-beta060.md#vérifications) comptait 235 réussites sur 246,
avec 11 échecs à trier ; elle ne constitue pas une validation de beta.092.
Cette synchronisation ne prétend pas résoudre ces échecs ni valider Windows/Linux.
Les sources et leur tag sont publiés sur Git. Les archives bêta restent locales,
le canal packwiz reste sur alpha.30.7 et aucune instance Prism, sauvegarde
personnelle ou installation de serveur nest modifiée.
+109
View File
@@ -0,0 +1,109 @@
# TOOL-01 — Clé dorée et états de blocs — beta.120
Contrat du 17 septembre 2026, branche `codex/golden-wrench-beta120`.
Le créateur valide les gestes du debug stick : clic gauche choisit la propriété,
clic droit parcourt ses valeurs, Maj inverse le parcours. L'orientation est
proposée en premier, puis les propriétés de forme et les autres états natifs.
La sélection est personnelle, par type de bloc, pour la session courante.
Une indication dans la barre d'action affiche la propriété et sa valeur.
La clé ne casse pas le bloc, y compris en créatif, et ne remplace pas son type.
Les propriétés natives sont disponibles en survie avec la clé, sans condition
opérateur, dans le respect des droits de construction, protections, portée et
verrous de conteneurs. Comme avec le debug stick, les formes choisies restent
en place immédiatement ; les mises à jour ultérieures du jeu peuvent recalculer
les états dynamiques (redstone, connexions, cultures…).
Les multiblocs assemblés gardent leurs commandes d'ouverture/dissociation et
leurs propriétés techniques ne sont pas éditées individuellement. Un assemblage
complet garde priorité au clic droit ; Maj permet de régler les composants
non assemblés. Hors d'un assemblage complet, même un four, un baril, un piston
ou un établi reçoit l'action générique.
## Rotation de texture et contrat de stockage
La terre n'a pas d'orientation dans son blockstate vanilla. Une propriété
supplémentaire de la clé, « Rotation des textures », parcourt 0°, 90°, 180° et
270° sur les faces des modèles de blocs. La géométrie, l'éclairage, les teintes,
les ressources actives, le bloc, son inventaire et son butin restent natifs.
Les rendus spéciaux d'entités de blocs ne sont pas transformés par ce réglage
des faces ; leur orientation demeure modifiable par leurs états natifs.
Nouvelle donnée facultative `sanctuary:wrench_textures_v1`, attachée au chunk :
table immuable position entière → quart de tour (1 à 3). Une absence signifie
0°. Elle n'est créée qu'après une action de clé ; revenir à 0° retire l'entrée,
puis l'attachement s'il est vide. Aucun état vanilla ni format existant n'est
modifié ; aucun parcours, conversion ou régénération des anciens mondes.
Les modifications de blockstate du même type conservent la rotation. Casser,
remplacer ou déplacer par piston retire la rotation à l'ancienne position ;
les objets récupérés restent ordinaires. Les nouveaux clients la reçoivent
après le chunk natif, par lots bornés de 1 024 entrées au maximum.
Déconnexion, changement de dimension et déchargement libèrent le cache visuel.
Revenir à une ancienne version du mod supprime seulement cet effet visuel ;
les blocs conservent leurs identifiants, données et états natifs.
## Vérifications et livraison
Le parcours `Wrench120ClientChecks` passe en **47 s** sur Minecraft 26.3,
client macOS et serveur intégré, dans un monde plat jetable de graine 120 :
- **2 522 propriétés natives** parcourues, avec valeurs inverses et type conservé.
- Vrais clics sur les escaliers : orientation, moitié supérieure et forme,
sans casser le bloc en créatif ; gestes inverses et sélection distincte.
Les doubles événements créatifs d'un même clic sont filtrés à la cadence
native de cinq ticks.
- Terre en survie : rotation réelle des UV émis, positions des sommets et nombre
de faces identiques ; retour exact après quatre quarts de tour ou un inverse.
- Rechargement des ressources conservant les UV tournés ; capture de terre relue.
- Coffre tourné avec ses 23 diamants intacts, sans ouverture accidentelle.
- Assemblage/dissociation par vrais clics des quatre familles : Métabli, Fût,
Fourneau et super piston. Un clic gauche sur un assemblage ne modifie pas
les numéros de composants ; barils et pistons isolés tournent normalement.
- Refus en aventure, spectateur ou hors portée ; retrait des données visuelles
après remplacement, maintien lors d'un changement d'état du même bloc.
- Sauvegarde/reconnexion : rotation de terre côté serveur et client, état
natif de l'escalier et inventaire du coffre conservés.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryWrench120ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Marqueurs `WRENCH120_PASS` et `WRENCH120_PROPERTIES 2522` dans
`build/wrench120-client.log`, captures dans `build/wrench120-evidence/`.
Aucun monde personnel ouvert ; pas de validation Windows ni depuis deux
ordinateurs. Les rendus de faces natifs et le rechargement du pack sont vérifiés ;
pas de validation spécifique d'un shader tiers.
Le GameTest dédié reste exclu conformément au refus antérieur de son EULA.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 12 s**, 125 tâches. Les sources JAR correspondent exactement
aux sources du dépôt. La comparaison avec beta.119 limite les différences de
production aux classes de clé/assemblage, aux deux nouveaux hooks, au rendu
et aux libellés prévus ; toutes les autres ressources sont identiques.
Les packs normal/Test contiennent le même JAR Sanctuary et aucune sauvegarde
ni fixture de test.
- Sanctuary-beta.120.mrpack : 10237973 octets, SHA-256
`86b5e480a12ba20b5c1e308c77dbb54bdf8a56806915fb32ca2d16f9a72cc9c9`.
- Sanctuary-Test-beta.120.mrpack : 10256895 octets, SHA-256
`2e3818483ba7dfa6e5652b97933e105a44e7cc4b269fc567116bf895d54bd8d9`.
- JAR Sanctuary : SHA-256
`8e35ef0f134a46b7760604175ad768264946d31fdd0694982e049e7a928fde2a`.
Reçu local : `build/wrench120-artifact.json`.
## Publication et installation
La [release beta.120](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.120)
est publiée depuis `248dff47b7a0ebd11026230581fe69641dbde76d`. Le tag exact et les
artefacts sont immuables ; leurs téléchargements publics sont vérifiés.
Le canal packwiz avance à `e8060764a444a58b0a17318a3821dfeb1a0c33c6`.
Deux synchronisations isolées puis deux dans **Sanctuary Beta** réussissent.
Un seul JAR Sanctuary beta.120 est actif ; le second passage est identique.
Les **923 fichiers personnels et réglages suivis** restent inchangés, sans
ouvrir de monde personnel. Copie préalable dans
`sanctuary-backups/before-beta.120/` de l'instance existante. Reçus locaux :
`build/wrench120-isolated.json` et `build/wrench120-prism.json`.
+65
View File
@@ -0,0 +1,65 @@
# beta.066 — cosmétiques animés sans doublon
Branche `codex/cosmetic-render-beta066`.
## Contrat
Un coffre porté n'affiche qu'un coffre : son couvercle s'ouvre et se ferme
sans laisser un second coffre fermé dessous. Une cloche portée conserve
son support et une seule cloche qui oscille. Le même correctif s'applique
aux modèles partagés avec les mobs portant un cosmétique.
Minecraft 26.3 distingue la géométrie du bloc posé de son modèle isolé.
Ce dernier peut déjà inclure un coffre fermé, une cloche fixe ou un livre.
Sanctuary dessinait ce modèle isolé puis le rendu animé de l'entité de bloc.
Le rendu avec une entité de bloc utilise désormais la géométrie native du
bloc posé pour ses parties fixes, avec les teintes et la lumière du bloc,
puis l'entité de bloc pour les parties animées.
Les panneaux conservent leur modèle isolé : Sanctuary soumet séparément
leur texte, pas une deuxième planche. Les bannières et les têtes conservent
leur rendu personnalisé ; les lits et portes gardent leurs deux moitiés.
Le feu de camp conserve sa base et les aliments synchronisés. Aucun asset
n'est remplacé. Aucun changement serveur, d'interaction, de stockage,
de sauvegarde ou de génération.
## Vérification
Le parcours `Cosmetic066ClientChecks` crée un monde plat de développement,
utilise les modèles et le collecteur de rendu natifs, et reçoit les événements
du serveur intégré. Avant correction, le test reproduit deux soumissions
`ChestModel` pour un seul cosmétique ouvert. Après correction, les
contrôles n'en comptent plus qu'une.
Le parcours client réussit en 40 secondes :
- coffres normal, piégé, de l'Ender et Shulker : une seule représentation,
ouverture et fermeture issues des événements serveur ;
- cloche : un seul modèle animé, un support fixe, oscillation puis arrêt ;
- feu de camp : base conservée et aliment reçu du serveur visible ;
- table d'enchantement : un seul livre sur sa base ; panneaux, bannière,
tête de joueur, lit complet, porte complète, four et étagère conservés ;
- douze cas de coffres/cloches sur poules, vaches et zombies adultes ou bébés.
Le test compte les soumissions réelles de modèles, pas seulement la présence
d'un état d'animation. Les captures avant/après du coffre et celle de la cloche corrigée ont
été relues dans `build/cosmetic066-evidence/`.
Journaux : `build/cosmetic066-before.log`, `build/cosmetic066-client.log`.
`./gradlew check build assemblePack assembleTestPack` réussit en 2 min 22 s
avec `-x :sanctuary:runGameTest -PsanctuaryClientTests=true
-PsanctuaryQuickTests=true`. Le parcours client dédié utilise aussi
`-PsanctuaryCosmetic066ClientTests=true -PsanctuaryClientNoVsync=true`.
Les tests avec serveur dédié restent exclus ; la validation des animations
utilise le serveur intégré du client.
Les deux archives sont vérifiées contre les 1 645 classes et les ressources
compilées. Seul `HeadCosmeticModels` change dans les sources principales
par rapport à beta.065. Les textures, JEI et les archives beta.065 restent
identiques. Le code de Demeure reste identique ; sa version suit le pack.
Reçu : `build/cosmetic066-artifact.json` ; build : `build/cosmetic066-check.log`.
[Pack normal](../build/Sanctuary-beta.066.mrpack) ·
[Monde plat rapide](../build/Sanctuary-Test-beta.066.mrpack).
Archives locales, sans publication du canal ni déploiement personnel.
Une session avec plusieurs clients distants n'a pas été relancée.
+3 -2
View File
@@ -39,8 +39,9 @@ Le fond sonore combine l'ambiance de la vallée des âmes, le portail assourdi,
une écoute lointaine et huit battements de Warden de plus en plus rapprochés,
puis louverture du portail de lEnd. Les sons proviennent de Minecraft **26.3-pre-2**, déjà requis ; aucune
nouvelle dépendance ou copie de fichier audio vanilla n'est ajoutée. Le mixage
respecte les volumes **Général / Ambiance**. La musique est interrompue pendant
la séquence, sans modifier les réglages. Les sons sont arrêtés à la sortie.
respecte les volumes **Général / Ambiance**. Dans beta.031, la musique était interrompue pendant
la séquence. [Beta.061](arrival-mount-beta061.md) déclenche désormais la musique
à la révélation du portail, puis la conserve jusque dans le monde, sans modifier les réglages. Les ambiances de la cinématique sont arrêtées à la sortie.
Le voile blanc est abandonné à une déconnexion ou à un écran derreur ;
les menus ne sont pas masqués.
+143
View File
@@ -0,0 +1,143 @@
# beta.105 — Météo saisonnière, captures et chapeaux vivants
Branche `codex/living-hats-seasons-beta105`, Minecraft 26.3.
## Contrat avant modification
- Molette dans le fût : navigation entre pages, bornée, sans perdre les objets
du curseur ni déplacer la souris au centre.
- Panoramas : couleurs et brume du shader Sanctuary actif, six faces cohérentes,
profondeur conservée et caméra restaurée même après erreur.
- Real Time : probabilités liées aux saisons astronomiques du calendrier réel.
Été surtout ensoleillé sans profil ciel gris ; automne plus humide ; hiver
avec neige. Des journées claires restent possibles dans les quatre saisons.
Le créateur demande explicitement flocons et accumulation naturelle au sol.
Le tirage du jour déjà sauvegardé reste stable ; nouveaux tirages saisonniers
les jours suivants, commandes opérateur disponibles. Aucune Weather TNT.
- Mobs équipés : coups et boules de neige activent lobjet ; briquet, feu
dartifice propulsant le porteur, spawner natif configuré, paratonnerre attirant
les éclairs. Les consommables et lusure restent réels.
- Cultures sur tête : croissance et récolte des produits/graines, sans duplication
de la graine initiale au retrait. Les aliments attirent les espèces qui les
mangent ; une carotte sur bâton guide les cochons vers le porteur.
- Livre et plume : journal intime écrit en réaction aux caresses et blessures,
voix différente selon les quatre personnalités ; souvenirs variés, pas de log
technique. Pages existantes conservées et limites natives respectées.
## Contrat de données
Aucune sauvegarde personnelle nest modifiée pendant les essais. Les objets et
leur état continuent dutiliser les données additives existantes de chapeau.
Les journaux restent de véritables livres Minecraft récupérables. L’éventuel
nouveau profil neige étend l’énumération météo : anciens états lisibles, aucune
conversion automatique du jour courant. Un retour à une ancienne version après
une journée neige nécessite dabord de sélectionner un profil météo ancien.
La neige peut modifier les blocs exposés pendant le jeu, selon la demande du
créateur ; pas de régénération, dexpansion ni de changement de terrain au chargement.
## Utilisation
- Dans le fût, molette vers le bas : page suivante ; vers le haut : précédente.
Le défilement concerne le coffre et sa colonne de contrôles. Un objet tenu au
curseur bloque le changement de page, comme les boutons existants.
- `/sanctuary weather forecast` annonce les sept prochains jours.
`/sanctuary weather snow` et `snow_showers` sélectionnent respectivement neige
continue et averses ; leurs équivalents `/weather` sont également disponibles.
Le mode Vanilla conserve le cycle Minecraft.
- Sur un mob équipé, clic droit à main vide : caresse du livre, activation du
briquet/de la fusée, récolte dune culture mûre. Coup ou boule de neige :
activation. Maj + clic droit à main vide : récupération de lobjet.
- Blé, carottes, pommes de terre, betteraves : croissance des cultures portées,
récolte native et replantation. Les produits mûrs sont aussi rendus si lon
retire la graine. Les plantes décoratives et tiges de melon/citrouille ne
deviennent pas des cultures de fruit mobiles.
- Le spawner conserve lespèce configurée et les contraintes Minecraft :
proximité dun joueur, espace, lumière et limite dentités. Une activation
lance une tentative immédiate ; elle ne garantit pas une apparition si
ces conditions ne sont pas réunies.
- Le paratonnerre attire les éclairs naturels sous un ciel dégagé à portée
native, puis émet son impulsion redstone. Le briquet respecte la règle de modification du terrain par les mobs.
La fusée consomme lobjet, utilise ses effets natifs et propulse le porteur.
- Les aliments portés attirent les animaux qui les consomment dans un rayon
de 10 blocs, avec abandon à 12 blocs ou sans visibilité. La carotte sur bâton
guide ainsi les cochons. Priorités de fuite et de reproduction conservées.
- Le journal reprend la personnalité du familier ; celle dun animal ordinaire
est déterminée de façon stable par son identité et son espèce. FR/EN selon
la langue du premier lecteur-interacteur. Les pages précédentes sont
conservées (limite native 100 pages), mais ne sont pas diffusées dans le
paquet dapparence du chapeau.
## Calendrier et périmètre
Longitude solaire apparente calculée localement à partir des formules publiques
[NOAA Solar Calculator](https://gml.noaa.gov/grad/solcalc/), avec contrôle des
quatre passages 2026 contre les horaires de l[US Naval Observatory](https://aa.usno.navy.mil/data/Earth_Seasons).
Le tirage est journalier : le jour civil dun équinoxe/solstice adopte la nouvelle
saison, selon le fuseau Real Time. Lhémisphère sud inverse les saisons via la
latitude solaire configurée. Il ne sagit pas de la météo réelle dune ville.
Les pondérations de `weather.json` restent la base, modulée par la saison.
Sur 10 000 graines par saison : journées claires 64,41 % / 94,79 % / 40,25 % /
49,05 % (printemps/été/automne/hiver) avec la configuration par défaut.
La neige passe par les précipitations natives des chunks chargés, respecte
la limite native daccumulation, la lumière et les supports Minecraft. Les biomes
sans précipitations restent secs. Les chaudrons reçoivent aussi de la neige.
La neige déposée reste un bloc natif : pas de balayage saisonnier supprimant
les blocs des constructions. Sa fonte suit les règles Minecraft.
Les captures intègrent le post-traitement et la brume Sanctuary ; aucune
compatibilité avec un moteur externe Iris/Canvas/Oculus nest déclarée.
## Vérifications
- `seasonal105Smoke` : 40 000 tirages, stabilité par graine/jour,
équinoxes/solstices 2026 à ± une heure, inversion sud, proportions saisonnières,
persistance dune journée de neige et passage au lendemain.
- `Living105ClientChecks` : client natif Minecraft 26.3 avec serveur intégré,
nouveau monde plat jetable. Journal avec page préalable, caresse/blessure,
récupération, récolte/replantation/retrait, vache attirée par le blé, cochon
guidé, vraie méthode dimpact de boule de neige, feu/usure, vol dune vache,
apparition du spawner configuré, éclair/impulsion/extinction du paratonnerre,
neige déposée par `tickPrecipitation`, requête de flocons côté client,
molette suivant/précédent/bornes et deux panoramas complets de six faces.
- Pour chaque face à saturation 0, contrôle des pixels désaturés ; comparaison
à saturation 200, présence de `sanctuary:vanilla_light` et profondeur du sol
conservée. Les vues sont soumises séparément au GPU pour éviter de réutiliser
les tampons natifs avant leur soumission. Aucun échec de post-traitement dans
lessai final (53 secondes).
Commande de reproduction :
```sh
JAVA_HOME=/chemin/vers/jdk25 ./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryLiving105ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Le délai serveur de trois ticks entre changements de page est supprimé : les
paquets sont toujours validés contre lidentifiant du menu ouvert et son curseur.
Les anciennes pages ne peuvent donc pas accepter de clics après remplacement.
Le client et le serveur doivent utiliser ensemble beta.105 pour les nouveaux
profils réseau de neige. Les anciens états enregistrés restent lisibles.
## Livraison locale
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussi
sur la copie isolée `build/release-beta105` : 2 min 43 s, 125 tâches.
Le test dédié est exclu conformément au refus antérieur de son EULA ; le test
natif de cette livraison utilise un serveur intégré dans un monde neuf jetable.
La copie part des sources et ressources vérifiées beta.104, auxquelles sont
appliqués les 25 fichiers Java concernés, les libellés météo FR/EN et les mixins.
Elle évite dembarquer les modifications du chantier Statuaire beta.106 arrivé
en parallèle dans le dossier partagé. Le travail beta.106 est conservé.
`build/beta105-source-manifest.json` décrit les sources de cette compilation.
Les sources JAR correspondent à cette copie ; les ressources du pack beta.104
restent identiques sauf les deux fichiers de langue. JAR sans classes de test,
archives et métadonnées 26.3 vérifiées ; archives beta.104 inchangées. Rapport :
`build/beta105-artifact.json`. Aucun déploiement ni publication du canal.
- [Sanctuary-beta.105.mrpack](../build/Sanctuary-beta.105.mrpack), 10083681 octets.
SHA-256 : `396c31ad80b4826e5cc0530001e90e498dfb3d36f951cb46d01b32870bf3212a`.
- [Sanctuary-Test-beta.105.mrpack](../build/Sanctuary-Test-beta.105.mrpack), 10102603 octets.
SHA-256 : `6398eb413ea45cf383b71d5be07cb1eef6995158fe0909b06deabb36c1623ce4`.
+68
View File
@@ -0,0 +1,68 @@
# beta.068 — animation discrète du préchargement
Branche `codex/loading-animation-beta068`, ticket LOAD-03.
## Comportement
Une ligne de neuf glyphes SGA, encadrée de crochets ASCII, accompagne les
étapes réelles de préparation. Elle utilise la police denchantement native
`minecraft:alt` : les lettres de Sanctuary, avec une lumière grise/blanche
qui parcourt la ligne dans les deux sens en 3,2 secondes. Le fond uni et les
textes Minecraft restent sobres. Aucun pourcentage fictif ni nouvelle texture.
Lanimation dépend de lhorloge monotone lue pendant chaque rendu, pas des
ticks : elle continue pendant les longs calculs dune même phase. Les glyphes
sont préparés une seule fois, sans sondage de terrain ni travail serveur.
La même ligne accompagne ensuite le téléchargement natif du terrain, sous la
carte des chunks lorsquelle existe. La carte et la barre de progression de
Minecraft conservent leur rendu et leur comportement. Si une interface trop
petite ne laisse pas de place sous les chunks, lindicateur est masqué plutôt
que de recouvrir la progression. Les transports par portail sont hors de ce
changement. Lintroduction longue, sa musique, le flash et Hello World restent
inchangés, comme le cache dérivé et les étapes publiées par le serveur.
## Vérifications natives
Client natif 26.3-pre-2 réussi en **41 s**. Huit captures pendant une phase
identique, avec la méthode `tick()` de l’écran volontairement inactive. Les
sept comparaisons de pixels successives diffèrent uniquement dans la ligne
de glyphes ; le titre, le fond et l’étape restent identiques.
Inspection FR/EN dans la fenêtre native 854 × 480, réglages GUI 2/3/4 avec
le plafonnement automatique de Minecraft à la taille disponible. La carte des
chunks et sa barre native restent visibles ; le message générique hors
préparation garde son rendu habituel. Ces écrans de test utilisent des états
fixes, sans créer de monde ni simuler un pourcentage dans le code livré.
Les caches et les cycles de démarrage nont pas été modifiés ni remesurés ici.
Preuves locales : `build/loading068-client.log`, les captures et la comparaison
`build/loading068-evidence/animation-check.json`. Le test ne lance aucun serveur
et ne demande aucune acceptation dEULA.
```sh
JAVA_HOME=/Users/koka/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home \
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryLoading068ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
## Livraison locale
`check build assemblePack assembleTestPack` réussi en **2 min 15 s**, 122 tâches,
avec `-x :sanctuary:runGameTest -PsanctuaryClientTests=true
-PsanctuaryQuickTests=true`. Aucun serveur dédié lancé.
Les **1 647 classes** de larchive correspondent à la compilation. Seuls
`LoadingGlyphs`, `PreloadScreenMixin` et `PreloadTerrainScreenMixin` changent
par rapport à beta.067. Intro, Hello World, cache, logique serveur, textures,
sons, traductions et JEI restent identiques. Les archives beta.067 gardent
leurs empreintes. Reçu : `build/loading068-artifact.json`.
- [Pack normal beta.068](../build/Sanctuary-beta.068.mrpack), 5726390 octets.
SHA-256 : `cfb55d414186e6be5f0e19770049158302d4fbf37c0fa696306acda428594a2e`.
- [Monde plat rapide beta.068](../build/Sanctuary-Test-beta.068.mrpack), 5745324 octets.
SHA-256 : `643913caf577ee61b23747f378e9a21f5b1a54531901791d47d8ad0a75531dff`.
Aucun déploiement dans Prism, aucune publication du canal et aucun monde
personnel modifié.
+138
View File
@@ -0,0 +1,138 @@
# beta.064 — cache des plans et préchargement natif
Branche `codex/loading-cache-beta064`. Reprend l'audit beta.063 et conserve les
travaux préexistants (HUD du resource pack et documentation des capes inclus).
## Contrat du cache dérivé
Le cache est facultatif et reconstructible dans `cache/sanctuary-plans-v1/`
sous le dossier du monde. Il ne change aucun chunk, aucun journal d'expansion,
aucune donnée d'habitant ni les paramètres du générateur. Un ancien monde sans
cache suit exactement le calcul existant et remplit le cache ; supprimer ce
répertoire rétablit le même calcul. Pas de migration de sauvegarde nécessaire.
Les clés comprennent la graine, le générateur et ses paramètres, l'option
structures, les versions des mods et toutes les couches de ressources de
génération (`worldgen`, `structure`, `tags`, `dimension`, `dimension_type`) et
les modèles NBT locaux de `generated/`. Les
plans structurels incluent aussi la liste des îles concernées. Un changement
invalide le cache ; une entrée illisible, incomplète ou dont l'empreinte diffère
est ignorée puis recalculée. Écriture temporaire, synchronisation et renommage
atomique. Aucun objet Minecraft vivant, monde, chunk ou état RNG n'est sérialisé.
Les index dérivés sont reconstruits à partir des géométries validées.
Le cache couvre l'hydrologie régionale (eau, terrasses, écoulements et lave),
les traversées, salles souterraines, sanctuaire minier, ruines et patrimoine de
la racine, ainsi que les pièces natives du village, des mines, des temples et
des ruines asséchées. Ces dernières utilisent le NBT natif de Minecraft, dont
la lecture doit restituer exactement la même écriture ; sinon elles sont
recalculées. Les pièces restaurées appartiennent au nouveau serveur, sans
réutiliser les objets du serveur précédent. Le lecteur vanilla des pièces jigsaw
recalcule leurs limites à partir du modèle et perd les extensions réservées aux
jonctions : le cache réapplique ces limites enregistrées, puis exige une égalité
NBT complète. Cette correction reste locale au lecteur du cache, sans mixin de
chargement des chunks ni modification des structures sauvegardées.
Les plans aériens conservent leur journal persistant existant, qui fait
également autorité. Les anciennes générations et les villes des expansions
conservent leurs planificateurs actuels ; la livraison cible les plans de
l'île Sanctuary actuelle (`generation24`, terrain alpha.30.7).
## Préchargement
Texte et étapes issus du travail réel du serveur intégré, fond uni et graphisme
Minecraft. Aucun portail du Nether dans cette préparation. L'introduction,
Hello World, sa durée, sa musique et le flash restent inchangés. Les étapes de
calcul n'affichent pas de pourcentage inventé ; Minecraft fournit sa progression
réelle des chunks dès qu'elle est disponible. La préparation locale affiche
les étapes publiées par le serveur intégré avant même l'admission réseau.
Un client distant ne reçoit pas de faux état d'un serveur qui n'a pas encore
ouvert sa connexion : il conserve les étapes natives du téléchargement.
Le transport dimensionnel par portail reste un écran Minecraft distinct.
Les libellés FR/EN suivent le travail : vérification/lecture du cache, eau et
lave, traversées, salles, sanctuaire minier, ruines, patrimoine, îlots aériens,
village, mines, temples, enregistrement et point d'arrivée. Deux lignes
centrées sur fond uni remplacent l'attente générique ; aucune texture ajoutée.
La progression native des chunks et ses conditions de fermeture restent gérées
par Minecraft. Aucun nouveau bouton d'annulation ne force un arrêt au milieu
d'un calcul ou d'une écriture.
## Vérification reproductible
Client natif 26.3-pre-2, serveur intégré uniquement, monde de développement
neuf : graine `42`, île moyenne de diamètre `724`, structures actives,
distances de rendu et simulation de `8`. Première arrivée avec les 29,5 secondes
dintroduction complètes. Ensuite réouverture du même monde, puis remplacement
dune seule entrée de cache par un contenu tronqué et nouvelle réouverture.
Le contrôle compare les géométries des plans, leau et la lave, les index par
colonne et par chunk, les écritures de blocs et de butin des renderers et une
grille de points de protection. La lecture des pièces natives exige une égalité
NBT complète après restauration. Les essais de fichiers couvrent labsence,
le changement de clé, une copie sous une mauvaise identité, un checksum faux,
une validation refusée et un gzip tronqué. Chaque refus retombe sur le calcul.
L’écran est rendu par Minecraft en FR/EN pour inspection visuelle. Les phases
observées pendant le véritable démarrage sont enregistrées indépendamment des
ticks du client, qui ne tournent pas pendant sa première boucle de chargement.
Mesure locale du 15 septembre 2026, même scénario que laudit beta.063 :
| Parcours | Durée jusquau jeu |
|---|---:|
| Première création, cache vide, introduction complète | 122,255 s |
| Réouverture avec cache | 2,126 s |
| Entrée structurelle corrompue, recalcul automatique | 39,177 s |
| Référence beta.063, réouverture sans cache | 58,701 s |
Il sagit dune mesure sur cette machine et cette graine, pas dune garantie de
durée. Le cache accélère surtout les réouvertures ; un monde neuf doit toujours
calculer ses plans et préparer ses chunks. Les mises à jour de version ou de
ressources invalident volontairement les anciennes entrées. La première
réouverture dun ancien monde sans cache sert à le remplir.
Réouverture : **3 lectures réussies, 0 échec, 0 écriture**. Récupération :
**3 lectures réussies, 1 échec attendu, 1 remplacement**. Comparaison identique
des **217 053 écritures de blocs/butin** et de 93 150 points de protection,
ainsi que des plans et des index fluides. Les 17 étapes utiles du scénario ont
été observées ; les libellés FR/EN et les captures natives sont vérifiés.
Preuves locales : `build/loading064-client.log`,
`build/loading064-evidence/timings.json` et captures dans le même dossier.
```sh
JAVA_HOME=/Users/koka/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home \
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryLoading064ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Le drapeau de test rapide facilite lautomatisation ; ce scénario réactive
explicitement lintroduction longue avant la validation de Hello World.
Aucun serveur dédié lancé, aucune EULA acceptée, aucun monde personnel modifié.
## Livraison locale
`./gradlew check build assemblePack assembleTestPack` réussi en **2 min 21 s**,
**122 tâches**, avec `-x :sanctuary:runGameTest -PsanctuaryClientTests=true
-PsanctuaryQuickTests=true`. Le parcours natif plat/classique, avec Sanctuary
activé/désactivé puis réouverture, passe ses **8 ouvertures** en 53 s
(`build/gameplay064-client.log`). Les tests dédiés exclus restent remplacés ici
par les essais du serveur intégré, conformément au refus daccepter leur EULA.
Archives comparées à beta.063 : **1 645 classes conformes à la compilation**,
ressources FR/EN, mixins, métadonnées, dépendances exactes et absence de tests
dans le mod. Les classes de Hello World, de lintroduction, les sons, les
textures, les données de génération et JEI sont inchangés. Les variantes
normal/Test diffèrent uniquement par le module de test rapide et leur nom.
Les anciens MRpacks beta.063 conservent leurs empreintes originales.
- [Pack normal beta.064](../build/Sanctuary-beta.064.mrpack), 5720330 octets.
SHA-256 : `c05b78e2caf27d52cb318979ee66e19e5bca9c90673f8868ae50f85f0e2ff2c0`.
- [Monde plat rapide beta.064](../build/Sanctuary-Test-beta.064.mrpack), 5739264 octets.
SHA-256 : `962800291875ab5bebda1abaedc798e7cf110ba0ef13ac168a0b85b3b2c19d24`.
Reçu : `build/loading064-artifact.json`. Aucun canal publié ni instance Prism
modifié. Les optimisations de sondages partagés et de parallélisation de la
première création proposées dans laudit restent des tickets ultérieurs.
+231
View File
@@ -0,0 +1,231 @@
# beta.063 — audit du chargement et règle de jeu Sanctuary
> Suite livrée dans [beta.064](loading-cache-beta064.md) : cache des plans et
> étapes réelles sur fond uni, sans le portail de la proposition ci-dessous.
> Laudit et les mesures beta.063 restent conservés ici.
Branche `codex/loading-audit-gameplay-beta063`, après beta.062 conservée.
## Contrat
L'audit mesure séparément le démarrage du client, la création du terrain,
Hello World, l'introduction et l'arrivée. Il compare une île neuve, sa
réouverture, un monde plat et un monde Minecraft classique, sans utiliser
de sauvegarde personnelle. L'habillage du préchargement est une proposition
à examiner, pas une optimisation de terrain déjà livrée.
La règle native `sanctuary:use_sanctuary`, « Utiliser Sanctuary », permet
de choisir les règles Sanctuary à la création d'un monde, indépendamment
de son générateur. Elle est activée par défaut dans le pack ; la désactiver
avant la création conserve les capacités ordinaires du joueur. Activée sur
un monde plat ou classique, elle apporte Hello World, la progression,
l'inventaire, les familiers, les factions et les systèmes qui en dépendent,
ainsi que les modes temporel et météorologique Sanctuary.
Cette règle ne change jamais le générateur, le spawn natif, les chunks ou les
structures du monde choisi. Les fonctions propres aux îles et aux expansions
restent réservées à ce terrain. Les ressources et ajouts autonomes du mod
restent chargés, y compris quand cette règle est désactivée.
Le choix est fixé pour la partie : les commandes et options d'une partie
déjà ouverte ne peuvent pas le basculer. Le serveur conserve le choix natif
dans `level.dat` ; les données existantes d'habitant continuent d'identifier
une partie Sanctuary lors des réouvertures. Pas de nouveau format propriétaire.
Les parties Sanctuary et le module plat de test antérieurs conservent leur
admission historique ; la protection existante des anciennes parties sans
progression reste appliquée. Aucun Overworld classique déjà joué n'est
converti automatiquement. Une conversion reste hors de cette livraison,
conformément à la précision de l'utilisateur.
## Mesures du 15 septembre 2026
Client natif Minecraft **26.3-pre-2**, Fabric **0.19.5**, API
**0.160.0+26.3**, Java 25 ; Mac Apple M1, huit processeurs logiques,
tas JVM 2 Gio. Une exécution par scénario dans le même client, dans cet
ordre, avec enregistrement JFR `profile`. Graine **42**, île Moyen **724**,
structures actives, distances de rendu et de simulation **8**. Les autres
applications du bureau restent ouvertes. Ce sont des observations locales,
pas une moyenne représentative ni une preuve de gain entre versions.
Le compteur commence à la demande de création/ouverture. « Jouable » signifie
joueur présent, écran de jeu actif et fondu d'arrivée terminé. Hello World est
validé automatiquement ; le temps passé à choisir son personnage est exclu.
L'introduction complète reste active, même sur les terrains Minecraft.
| Scénario | Hello World prêt | Fin de la séquence d'introduction | Jouable |
| --- | ---: | ---: | ---: |
| Nouvelle île Sanctuary | 74,292 s | 103,889 s | **122,101 s** |
| Réouverture de cette île | Déjà accompli | Non rejouée | **58,701 s** |
| Nouveau monde plat + Sanctuary | 0,929 s | 30,489 s | **33,246 s** |
| Nouveau monde classique + Sanctuary | 3,809 s | 33,458 s | **37,632 s** |
Le premier lancement du processus client jusqu'au début du parcours au menu
prend environ **15 s**, en plus de ces durées. Il utilise les ressources déjà
présentes sur cette machine : ce n'est pas une installation ou un cache disque
à froid. Le profilage commence aux scénarios monde ; ce démarrage client est
chronométré, mais pas attribué fonction par fonction.
## Ce qui se passe réellement
1. Le client charge les classes, ressources, textures et sons. L'enregistrement
des services Sanctuary n'est pas encore la planification complète des îles.
2. Après « Créer », le serveur intégré construit les niveaux. Dans
`ExpansionRuntime.register`, l'événement `ServerLevelEvents.LOAD` prépare les
plans du générateur : eau, traversées, réseaux souterrains, sanctuaire minier,
patrimoine, village et expéditions. Cette étape bloque l'accès à Hello World.
3. Le serveur choisit le spawn et prépare les chunks d'arrivée. La configuration
réseau ouvre Hello World puis l'introduction ; une partie de la préparation
du monde continue pendant ces **29,5 s** de cinéma.
4. La séquence se termine, mais le monde peut ne pas être prêt. L'écran blanc
couvre alors l'attente, puis le fondu rend le jeu visible. Sur l'île mesurée,
environ **18,2 s** séparent la fin de l'intro de l'état jouable.
La première planification de l'Overworld occupe environ **58,8 s** entre
`SERVER_STARTING` et la fin de son événement `LOAD`. À la réouverture, elle
occupe encore **56,8 s**. La majeure partie de ces plans est recalculée à chaque
nouvelle instance du générateur ; le journal aérien existant ne met pas tous
les autres plans en cache.
Le `Time elapsed` natif est trompeur pour cet audit : il annonce **434 ms** à
la réouverture alors que l'entrée prend **58,7 s**. Ce compteur démarre après
les calculs lourds. Il ne doit pas servir seul de mesure du chargement complet.
## Où part le CPU
Les journaux de cette réouverture attribuent **23,913 s** aux traversées,
**14,590 s** au patrimoine, **7,758 s** au sanctuaire minier et **2,999 s** au
village. L'hydrologie annonce **13,052 s**, mais elle est appelée pendant la
préparation des traversées : **ne pas additionner ces deux durées**.
Dans les échantillons JFR des méthodes Java en exécution à la réouverture :
| Méthode | Part des échantillons |
| --- | ---: |
| `SmearedPerlinNoise.addToVolume` | 37,81 % |
| `NoiseStack.Perlin.get` | 22,80 % |
| `GradientNoise.permute` | 8,51 % |
Ces trois fonctions de bruit totalisent **69,12 %** des échantillons. Ce n'est
ni une part exacte du temps mural ni un gain récupérable annoncé. Les pauses
GC totalisent **838 ms** sur le profil de réouverture, contre **1,71 s** pour
la création de l'île. La pression mémoire existe, mais elle n'explique pas
l'essentiel de cette attente ; augmenter seulement la RAM ne cible pas le
coût dominant identifié.
Les profils incluent quelques secondes de jeu et la fermeture du monde.
Une première tentative avec `waitForChunksDownload()` a attendu la complétion
du rendu au-delà de l'arrivée jouable ; elle est conservée à part et exclue
des résultats ci-dessus. Les assertions finales utilisent la présence du joueur,
l'écran natif et la fin du fondu, pas ce critère plus strict du banc de tests.
Sources : `ExpansionRuntime.java:35`, `SanctuaryChunkGenerator.java:93` et `:291`,
`ProgressionService.java:194`, `IntroScreen.java:51` et `:170`,
`IntroSpawnFlash.java:20`. Les appels répétés à `prepareTransit` sont gardés :
certains sont protégés et certains prennent en compte les liens du patrimoine.
L'audit n'en déduit pas qu'ils peuvent simplement être supprimés.
## Habillage proposé, après retour utilisateur
**Conserver toute l'introduction**, sa durée, sa musique au dévoilement du
portail et son flash. L'habillage proposé concerne uniquement l'attente qui
précède Hello World et la réouverture d'une partie.
Écran sobre proche de Minecraft : fond sombre uni, portail natif au centre,
texte Minecraft discret et bouton Annuler natif. Aucun grand logo ajouté,
aucune carte décorative, aucun encadrement ni panneau de diagnostic permanent.
Les textures du portail, de l'obsidienne, du bouton et la police bitmap de la
proposition proviennent des ressources locales de Minecraft 26.3-pre-2.
Le texte décrit l'étape réelle : ressources, calcul du terrain, préparation
des alentours. Une barre et un compte de chunks peuvent apparaître uniquement
lorsque leur total est connu ; les calculs de plans restent sans faux pourcentage.
Le compteur `86 / 225` de la maquette est un exemple d'état, pas une mesure.
Annuler demande un arrêt propre au serveur, sans quitter au milieu d'une
écriture. Son comportement réel devra être intégré et testé avec l'écran.
La proposition interactive a été simplifiée après rejet de la première
direction. **Elle n'est pas intégrée au rendu du jeu dans beta.063.**
## Prochains tickets proposés
| Priorité | Résultat vérifiable | Garde-fous / validation |
| --- | --- | --- |
| 1 — Cache des plans | Réouvrir une île en relisant ses plans dérivés validés | Clé graine, révision de génération, paramètres et configurations ; écriture atomique ; corruption ou cache absent → recalcul ; comparaison exacte des plans et chunks, sans régénérer de monde utilisateur. Contrat de cache à formaliser avant développement. |
| 2 — Préchargement natif | Afficher l'écran épuré dès le début de la création et à la réouverture | Phases instrumentées, fermeture propre, texte FR/EN, annulation et erreur visibles ; intro intacte ; mesures du coût de l'écran. |
| 3 — Réutiliser les sondages | Éviter les colonnes de terrain recalculées entre plusieurs planificateurs | Cache borné, mêmes entrées et mêmes valeurs, empreintes bit à bit sur plusieurs graines ; reprendre la méthode de `docs/initial-loading.md`. |
| 4 — Travail en parallèle | Réduire le chemin critique restant après les caches | Seulement sur données immuables ; aucun accès au niveau Minecraft depuis des threads arbitraires ; gains mesurés et déterminisme vérifié. |
Aucun gain de ces futurs tickets n'est compté comme livré. La génération et
ses paramètres sont inchangés dans beta.063. La proposition respecte le choix
de conserver l'intro ; l'attente blanche mesurée reste un constat, pas une
modification autorisée de cette séquence.
## Utiliser la règle de jeu
À la création d'un nouveau monde, choisir le terrain **classique** ou
**plat**, puis laisser **Utiliser Sanctuary : Oui** dans les règles de jeu,
catégorie Joueur. Hello World et les règles Sanctuary s'appliquent au terrain
natif. Les capacités ordinaires sont conservées avec **Non**. Ce choix ne
nécessite pas une installation du module de test rapide.
`/gamerule sanctuary:use_sanctuary` permet de consulter le réglage. Une tentative
de changement en jeu est refusée avec une explication FR/EN ; les autres règles
restent modifiables. La capture du choix se fait au chargement de l'Overworld :
dans cette version, `getGlobalGameRules()` n'est pas disponible avant sa création.
## Vérifications
- Audit client natif : île neuve, même île réouverte, plat et classique neufs,
intro complète ; `LOADING063_AUDIT_PASS`.
- Parcours fonctionnel client et serveur intégré : plat/classique × activé/
désactivé, chacun créé puis réouvert, soit **8 ouvertures** ;
`GAMEPLAY063_PASS`. Vérifie Hello World uniquement si activé, sa non-répétition,
le familier initial conservé, les 3/10 cœurs et 1/4 rangées selon le mode,
l'absence de session d'expansion sur terrain natif, le temps et la météo.
- Vérifie le refus des mutations en jeu des règles globales et du niveau,
le refus explicite de la commande et la modification d'une autre gamerule.
Libellé et description natifs testés en français et en anglais.
- La non-conversion des anciens mondes classiques repose sur la garde
d'admission examinée dans le code ; aucun monde personnel n'est ouvert.
Commandes reproductibles (Java 25) :
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryLoading063ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryGameplay063ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Preuves locales ignorées : `build/loading063-audit.log`,
`build/loading063-evidence/timings.tsv` (extrait des événements du journal),
les deux profils JFR d'île et leurs vues CPU/GC dans ce même dossier,
`build/gameplay063-client.log`. Les JFR plat/classique du dossier temporaire
du runner ont été nettoyés au test suivant ; leurs chronométrages restent dans
le journal intégral. Archiver `mods/sanctuary/build/run/clientGameTest/loading063/`
avant de relancer un parcours pour conserver tous les profils.
`./gradlew check build assemblePack assembleTestPack` réussit en **2 min 22 s**,
avec `-x :sanctuary:runGameTest -PsanctuaryClientTests=true
-PsanctuaryGameplay063ClientTests=true -PsanctuaryQuickTests=true
-PsanctuaryClientNoVsync=true`. Les tests serveur dédiés restent exclus, selon
le refus antérieur d'accepter leur EULA ; les huit ouvertures ci-dessus utilisent
le serveur intégré au client natif et vérifient réellement les règles côté serveur.
Les deux archives locales sont vérifiées : dépendances exactes, ZIP, identité
des **1 628 classes compilées**, ressources, absence de classes de test, même
contenu normal/Test sauf le module rapide. Le JAR, les classes d'introduction,
les ressources et les sons non concernés sont comparés à beta.062 ; le terrain
et toute la séquence d'introduction restent identiques. Les anciens packs
beta.062 sont conservés avec leurs empreintes originales.
- [Pack normal beta.063](../build/Sanctuary-beta.063.mrpack), SHA-256
`1af1ff168f5cf97d7f44bb28398eb79efae8e1c4858f05d5b4291b1dfe48ad93`.
- [Pack Test beta.063](../build/Sanctuary-Test-beta.063.mrpack), SHA-256
`405a55e76233c8403f27320f104e09ee590cae652b97b4396dd6a5b1a7dd0531`.
Reçu `build/loading063-artifact.json`, build `build/loading063-check.log`.
Pas de déploiement Prism, de changement de canal ou de sauvegarde personnelle.
+136
View File
@@ -0,0 +1,136 @@
# Menus Sanctuary — organisation
Cadrage du 15 septembre 2026, à partir de beta.077.
Branche documentaire initiale : `codex/menu-architecture`.
**Statut : organisation appliquée en [beta.083](menu-organization-beta083.md).
Le renommage Combats / Battles a été livré en [beta.078](combat-beta078.md).**
Objectif : retrouver une pause compacte, avec une rubrique par intention et
des sous-pages cohérentes. Conserver les composants Minecraft, les textures
existantes et le retour vers l’écran dorigine.
## Pause
Reprendre la partie occupe toute la première ligne. Les rubriques suivent :
| Colonne gauche | Colonne droite |
| --- | --- |
| Découvertes / Discovery | Progression / Progression |
| Monde / World | Habitant / Inhabitant |
| Factions / Factions | Combats / Battles |
Options et Options du monde restent dessous, puis Sauvegarder et quitter ou
Déconnexion. Les entrées séparées Progrès et Statistiques sont déplacées dans
Progression et Découvertes. Monde ouvre toujours directement la carte.
Combats regroupe duels et arènes et reste un accès direct, conformément au
choix déjà confirmé.
**Économie est différée à la demande du créateur : aucun bouton économique,
même désactivé, nest prévu dans cette première passe.**
## Découvertes : ce que je connais et ce que jai fait
Un seul bandeau de catégories accueille le catalogue et
les statistiques correspondantes :
| Catégorie FR / EN | Contenu cible |
| --- | --- |
| Général / General | Statistiques générales vanilla : temps, déplacements, morts et autres compteurs existants. |
| Blocs / Blocks | Catalogue de blocs découverts, avec les compteurs disponibles : minés, posés, etc. |
| Objets / Items | Objets connus, avec leurs compteurs disponibles : fabriqués, utilisés, récupérés, etc. |
| Créatures / Mobs | Créatures découvertes et statistiques vanilla de rencontres mortelles : tuées et morts causées. |
| Recettes / Recipes | Recettes révélées et collections qui permettent de les débloquer. |
Les statistiques dun objet ou dune créature sont accessibles dans sa fiche,
sans imposer douvrir un second catalogue. Les compteurs vanilla et Sanctuary
gardent leur sens et leur source ; ne pas inventer un compteur absent ou
additionner deux compteurs décrivant la même action.
À la première ouverture, conserver lentrée actuelle sur les blocs possédés.
Les filtres de connaissance et laptitude Catalogue restent en vigueur :
« Tout » signifie tout ce qui est déjà découvert, jamais les éléments inconnus.
Les statistiques ne deviennent pas une voie de contournement de ces règles.
Les outils opérateur restent invisibles et désactivés en mode normal.
La beta.083 réunit les cinq catégories. Objets reprend les découvertes et
les compteurs existants ; Créatures sappuie sur les victimes et les morts
causées. Les simples observations de créatures ne sont pas enregistrées dans
les sauvegardes actuelles et ne sont donc pas présentées comme connues.
## Progression : où je vais et ce que je débloque
- Le titre et le nombre de niveaux disponibles ont une ligne réservée.
- À gauche, un accès **Progrès / Advancements**, au-dessus des six compétences.
Il ouvre larbre Minecraft existant et conserve le suivi des objectifs.
- Sous cet accès, les compétences gardent leurs barres dXP, leurs coûts et
leurs commandes dachat. Le remboursement opérateur reste conditionné
aux permissions.
- À droite, les **Aptitudes / Abilities** restent à leur place, avec leur
propre défilement.
- **Prestige / Prestige** et **Historique / History** occupent une rangée
dédiée, indépendante du compteur dXP. Lhistorique conserve les achats,
remboursements et événements personnels existants.
- Factions disparaît de cette navigation. Les sous-pages Prestige et
Historique ne doivent pas recréer lancien trio PrestigeFactionsHistorique.
Larbre de Progrès conserve son écran complet : limbriquer dans la colonne
des compétences rendrait les deux illisibles. « Au-dessus des compétences »
désigne ici son accès, pas un arbre miniature.
### Chevauchement corrigé en beta.083
Les boutons Prestige, Factions et Historique occupaient la même ligne que
les niveaux disponibles. La beta.083 réserve une ligne au compteur, puis
une rangée à Prestige / Historique, avant les deux colonnes de contenu.
## Monde, Habitant, Factions et combats
**Monde** conserve laccès direct à la carte et ses réglages. **Habitant**
reste la fiche personnelle : nom, bio, prestige, faction, personnage et
familier. Le nom de faction peut ouvrir la même page Factions que la pause.
**Factions** devient une destination dédiée : ma faction, membres,
invitations, capacité, gestion et journal de faction. Sans faction, cette
page présente la création et les invitations reçues. La navigation ne change
ni les coûts ni les règles existantes : dix niveaux pour créer, deux places
initiales, extensions liées aux charges de prestige.
**Combats** conserve sa liste publique de duels et arènes, les inscriptions, règles et
paris actuels. Les mises en objets existantes ne nécessitent pas de créer
l’économie générale pour fonctionner.
## Idées économiques conservées pour plus tard
Le créateur souhaite à terme une entrée Économie rassemblant le marché,
la banque, la bourse, la loterie, les navets, le marché noir, les offres,
requêtes et contacts. Aucun de ces services nest implémenté par ce cadrage.
Proposition à reprendre ultérieurement : un tableau daffichage commun aux
missions, contrats, projets et annonces, relié aux habitants et aux factions.
Une fiche indique lauteur, le besoin, la récompense éventuelle et l’état ;
des liens ouvrent le même contenu depuis chaque rubrique concernée.
Courrier et contacts permettent de se répondre dans une présentation proche
des livres, panneaux et inventaires Minecraft. La texture de courrier
mentionnée par le créateur reste à retrouver ou recevoir avant intégration.
Ne pas fixer ici une nouvelle monnaie, un transfert automatique dobjets,
une banque sans risque ou les conditions dun contrat. La vision contient
déjà des intentions sur les trois gemmes, la mailbox, le coffre-fort et les
navets du dimanche ; elles devront être conciliées dans un ticket dédié.
## Première passe vérifiable
1. Réorganiser la pause et séparer Factions de la navigation personnelle.
2. Réserver une ligne aux niveaux disponibles ; placer laccès Progrès
au-dessus des compétences, en conservant les aptitudes à droite.
3. Rattacher les statistiques à Découvertes en conservant tous les accès
existants, puis unifier les catégories selon les données disponibles.
Contrôler en français et en anglais, aux échelles GUI 2 et 3, avec retour
Échap/Terminé vers le bon parent, textes longs, défilement, mode normal et
opérateur. Vérifier le suivi des Progrès, les achats et remboursements,
Prestige, invitations de faction et fermeture des arènes avant réponse réseau.
Les nouveaux regroupements ne modifient ni sauvegardes ni transactions.
Le cadrage initial était documentaire. Sa livraison de code, ses limites et
ses vérifications sont décrites dans [beta.083](menu-organization-beta083.md).
+40
View File
@@ -0,0 +1,40 @@
# beta.076 — navigation et pouvoirs sélectionnés
Branche `codex/menu-navigation-beta076`. Minecraft 26.3-pre-2 ; textures beta.070.
Le menu pause ouvre directement **Duels et arènes**. **Progression** contient
les accès **Prestige**, **Factions** et **Historique**. La carte reste accessible
par **Monde**. Les retours reviennent à l’écran dorigine.
Lhistorique regroupe les événements de prestige/faction et les achats ou
remboursements du cycle actuel, avec les aptitudes conservées. Cette dernière
liste était restée dans lancienne page Monde, devenue inaccessible depuis
louverture directe de la carte. Les achats des cycles terminés restent dans
larchive serveur : aucun nouveau format de sauvegarde ou réseau nest ajouté.
Les noms de faction invalides et invitations vides ne proposent plus un clic
inutile. Le serveur conserve toutes ses validations et les confirmations.
« Usages historiques » devient **Choisir le pouvoir utilitaire**. Le mode
sélectionné et son pouvoir sont visibles, le prérequis Lien actif est expliqué,
et le contrôle affiché suit la touche configurée. La sélection ne lance pas
le pouvoir : fermer le menu puis utiliser la touche (G par défaut). Les
messages des pouvoirs utilitaires retrouvent leurs traductions propres.
La dérogation opérateur existante est conservée.
Les arènes souvrent immédiatement avec un état de chargement. Une réponse
arrivée après fermeture ne rouvre plus l’écran.
## Vérification
Parcours client natif final réussi en 1 min 3 s : FR/EN, échelles 2/3, navigation,
fermeture avant réponse, achats, fondation à deux places, annulation et
confirmation de prestige, conservation de faction/aptitude, sélection utilitaire
et message de recharge via G. Correction dun rafraîchissement manquant lors
de la réception du déblocage Lien actif. Le défilement est conservé lors
dun changement de pouvoir et ce comportement est aussi vérifié.
Captures : `build/navigation076-evidence-final/`.
Ce lot est distribué avec beta.077 et sa couche de nuages, ajoutée à la
demande du créateur pendant cette passe. Aucun pack beta.076 publié. Le build complet et les deux archives beta.077
sont vérifiés ; voir [la livraison](cloud-vortex-beta077.md).
Aucun déploiement personnel. Pas de serveur dédié (EULA non autorisée).
+108
View File
@@ -0,0 +1,108 @@
# beta.083 — organisation des menus
Application du [plan des menus](menu-architecture.md), sur la branche
`codex/menu-organization-beta083`.
## Navigation
La pause conserve Reprendre, puis trois rangées de deux rubriques :
Découvertes / Progression, Monde / Habitant, Factions / Combats.
Options, Options du monde et la sortie restent natifs, ainsi que les
éventuels ajouts du serveur. Aucun accès Économie nest ajouté.
Progression réserve une ligne aux niveaux disponibles, puis une rangée
Prestige / Historique. Progrès ouvre larbre Minecraft complet au-dessus
des compétences de gauche ; les aptitudes gardent leur défilement à droite.
Les sous-pages Prestige et Historique ne proposent plus Factions.
Factions devient une entrée directe, avec gestion et journal de faction.
Les coûts, confirmations, invitations, permissions et transactions restent
inchangés. Le journal reprend les événements de faction autorisés par le
serveur, y compris les événements personnels des anciennes factions.
Lhistorique personnel conserve les achats, remboursements et événements
déjà disponibles.
## Découvertes et statistiques
Un bandeau unique donne accès à Général, Blocs, Objets, Créatures et Recettes.
Changer de catégorie conserve le même écran parent : Échap / Terminé revient
directement à la pause, sans retraverser les catégories visitées. Les fiches
de statistiques reviennent à leur liste.
- **Général** : tous les compteurs généraux natifs, avec leurs unités et
leur format Minecraft (temps, distances, etc.).
- **Blocs** : catalogue Sanctuary existant, par défaut sur Possédés,
avec recherche, filtres et compteurs existants.
- **Objets** : par défaut les objets portés, y compris extension et
accessoires. Laptitude Catalogue permet dafficher également les objets
déjà découverts. Une fiche présente fabrication, utilisation, casse,
récupération et abandon, chacun avec son compteur natif distinct.
Une recette révélée ne suffit pas à déclarer son résultat découvert.
- **Créatures** : espèces déjà tuées ou ayant tué le joueur, avec leurs
deux compteurs natifs. Les sauvegardes nont pas de registre persistant
des simples observations de mobs ; cette limite est indiquée dans la
page. Les créatures inconnues ne sont pas listées.
- **Recettes** : catalogue et collections existants, avec le même contrôle
daccès à laptitude et aux recettes connues.
Les statistiques sont demandées au serveur à louverture ou à lactualisation,
puis affichées après réception du paquet Minecraft. Aucun compteur nest
additionné à son équivalent Sanctuary. Aucun format de sauvegarde, règle
de gameplay ou identifiant existant ne change.
## Hello World et arrivée
Hello World dessine un fond uni `#171717`, identique au préchargement, sans
le panorama hérité de l’écran principal. À la réception de lintro après
Hello World, ce fond sassombrit progressivement jusquau noir en une
seconde. La séquence originale de 29,5 secondes commence ensuite intégralement.
La musique reste liée à lapparition du portail, et le flash darrivée reste
inchangé. Rejouer lintro en jeu conserve son départ noir habituel.
## Vérifications
`Menus083ClientChecks` est passé dans un client Minecraft 26.3-pre-2 natif :
- français / anglais, GUI 2 et 3, captures de la pause, des catégories,
de Progression, de Factions et des fiches ;
- six destinations de pause, accès direct à la carte et aux combats,
fermeture conservée si une réponse darène arrive après Échap ;
- catégories sœurs et retours vers leur parent ; objets portés avant
Catalogue, objets déjà découverts après achat, objets et mobs inconnus
toujours masqués ;
- clic réel sur un Progrès pour activer/désactiver son suivi, arbre complet
et retour dans Progression ;
- achat de compétence, remboursement opérateur du dernier coût, visibilité
des contrôles après activation/révocation native des commandes ;
- création de faction avec annulation puis confirmation, deux places,
journal de faction séparé des achats, historique avec remboursements ;
- passage de prestige avec conservation de la faction et des aptitudes,
remise des compétences à zéro, charge reçue une seule fois.
`Welcome083ClientChecks` est passé en 53 secondes. Les captures natives
confirment le gris uniforme aux quatre coins, puis les valeurs RVB neutres
23 → 19 → 12 → 4 → 0 pendant le fondu. Le test vérifie aussi lintro complète,
le départ musical au portail, le replay noir et la fin sans double validation.
La passe native des menus a duré 1 min 30 s.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
est passé en **2 min 38 s**, avec 124 tâches. Les sources du JAR et ses
1 706 classes correspondent aux sorties vérifiées. La comparaison avec
beta.082 confirme que seuls les écrans et leur intégration changent ; données,
textures, resource pack beta.070 et classes serveur sont conservés.
Archives locales vérifiées :
| Archive | SHA-256 |
| --- | --- |
| `Sanctuary-beta.083.mrpack` | `83b98db727665ab29fc3f0070f1616d781d2995efde1d2d344b50436251300ee` |
| `Sanctuary-Test-beta.083.mrpack` | `1aea33aecbf247088702a39229815a1365afa54b53ba91be06f70fb89e1e86d3` |
Le reçu est dans `build/menus083-artifact.json`, les journaux dans
`build/menus083-client.log`, `build/welcome083-client.log` et
`build/menus083-check.log`. Les archives beta.082 restent intactes.
Pas de déploiement dans une instance personnelle ni de publication du canal
packwiz dans cette tâche. Le GameTest serveur dédié reste exclu conformément
au refus précédent daccepter son EULA ; les tests avec serveur intégré
utilisent uniquement des mondes plats de développement.
+104
View File
@@ -0,0 +1,104 @@
# beta.096 — Métabli et commandes de construction
Le parcours créatif est complété depuis [beta.098](creative-construction-beta098.md)
par un bouton de construction immédiate. Le présent document décrit beta.096.
## Contrat de monde avant implémentation
Neuf établis à plat, en carré 3 × 3, sont assemblés volontairement à la clé
avec la confirmation habituelle. Aucun établi existant n'est converti au
chargement. Les neuf composants deviennent `sanctuary:metatable`, propriété
`part` de 0 à 8 (x + 3z). Leur origine est déduite de cette propriété.
Ces états sont stockés normalement dans les chunks ; aucun SavedData ancien
n'est modifié, aucun inventaire ou contenu n'est copié. Pas de BlockEntity.
Le contrôle des neuf cases est borné et n'impose pas de chargement de chunk.
Une dissociation restaure neuf établis. Casser un composant dépose son établi
selon le butin natif et restaure les autres sans drops supplémentaires.
Les composants déchargés sont contrôlés à leur reprise. Une machine partielle
est inaccessible jusqu'à validation/restauration. Les pistons ne déplacent pas
un Métabli assemblé. Les permissions serveur s'appliquent à chaque composant.
Les deux PNG fournis sont conservés octet pour octet : dessus 48 × 48,
côtés 48 × 16, prélevés par tiers sans étirement. Le dessous utilise les
planches de chêne du pack actif.
## Parcours retenu
Clic droit au Métabli → catalogue → choix unique du projet → retour dans
le monde. K ouvre les commandes du projet : ancrer au point visé, décaler,
tourner, afficher une couche, masquer/afficher et consulter les besoins.
Changer de projet, créer une autre statue, importer ou abandonner le plan
se fait au Métabli. Esc ferme seulement l'interface et ne retire pas le plan.
Un import ou une génération en cours n'est accepté que si le joueur est encore
à l'atelier qui a initié le choix. Le choix ne pose aucun bloc.
Construction manuelle avec l'inventaire natif. Aucun collage ni chantier
automatique dans ce parcours, même en créatif. Les fonctions serveur de collage
créatif historiques restent contrôlées par leurs règles existantes.
Le projet et son aperçu restent locaux au joueur, comme dans beta.072 ; ils
sont effacés au changement de monde/dimension ou à la déconnexion. L'export
reste disponible pour les conserver. Le chantier partagé persistant, les
catalogues en datapack serveur et les services commerciaux sont des lots futurs.
Aucune économie n'est ajoutée.
## Catalogue initial et extension
- Statues : les modèles natifs déjà pris en charge, avec hauteur et palette.
- Machines : Fourneau, Fût, super piston normal et gluant. Le plan guide les
blocs sources ; la clé réalise ensuite leur assemblage fonctionnel.
- Bâtiments : abri de 5 × 5 et passerelle de 3 × 7, deux plans simples de départ.
- Mes plans : bibliothèque locale et imports existants `.litematic`, `.schem`
et `.nbt`. Les anciens `.schematic` demandent une conversion externe.
`ConstructionCatalog.ENTRIES` est le point dextension des plans intégrés :
identifiant, catégorie et fabrique de `BuildPlan`, avec nom et aide FR/EN.
Une machine fonctionnelle conserve son implémentation serveur propre : un plan
ne lui confère ni inventaire prérempli ni commandes ni service commercial.
Le catalogue configurable par datapack reste à implémenter.
## Utilisation
Poser neuf établis en carré à plat. Deux clics à la clé dorée confirment le
Métabli ; clic droit pour louvrir. Choisir un plan ferme le catalogue.
K ouvre les commandes de construction, avec aperçu, décalage dun bloc,
rotation par quart de tour, couches et matériaux restants. Poser les blocs
normalement ; revenir au Métabli pour changer de choix ou abandonner.
Maj + clic droit à la clé dissocie latelier.
## Vérifications
Deux suites natives sur Minecraft 26.3, en nouveaux mondes de développement :
- `Metatable096ClientChecks`, graine 96 : assemblage en deux clics sur quatre
chunks, ouverture par clic droit natif, quatre rubriques, sélection unique,
K réservé aux réglages, refus de changement/import à distance, rotation et
translation, pose native payée, annulation dune génération en quittant
latelier, statue puis export/import, interfaces FR/EN, casse pendant le menu,
un seul drop et huit établis restaurés, réassemblage, déchargement réel des
chunks puis retour, dissociation des neuf cases. Réussi en 1 min 11 s.
- Régression `Plans072ClientChecks` adaptée au Métabli : capture des **88 modèles**
sans refus, statue de 32 blocs, rotations, matériaux, export, ancien protocole
de collage créatif et refus en survie, pose native consommant son bloc,
interfaces FR/EN. Réussi en 1 min 7 s.
Captures inspectées dans `build/metabli096-evidence/`. Le premier passage du
nouveau test attendait le déchargement via `ClientLevel.hasChunkAt`, qui ne
reflète pas le cache client ; le test utilise désormais `getChunkNow`, comme
les autres essais natifs. Le parcours fonctionnel précédant cette attente
avait déjà réussi. Ce premier journal est conservé séparément.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussi : 124 tâches, 2 min 20 s. Voir `build/metabli096-check.log` et le reçu
`build/metabli096-artifact.json`. Textures dorigine comparées octet pour octet,
modèles découpés par tiers, JAR sources et archives vérifiés ; archives beta.095
conservées. Les tests dédiés sont exclus conformément au refus antérieur dEULA.
Aucun serveur dédié démarré, aucune EULA acceptée, aucun déploiement personnel.
## Livraison locale
Packs normal et Test `build/Sanctuary-beta.096.mrpack` et
`build/Sanctuary-Test-beta.096.mrpack`, Minecraft 26.3 finale.
Le canal packwiz et linstance Prism ne sont pas modifiés. Les dépendances et
le pack de textures intégré beta.090 restent identiques ; les textures du
Métabli sont les ressources propres du mod.
+185
View File
@@ -0,0 +1,185 @@
# Métabli — atelier de construction et catalogue extensible
Statut : **conception de référence**, le 16 septembre 2026.
Le catalogue, les commandes K et lexemple généré évoluent dans
[beta.099](catalogue-progression-beta099.md).
Le premier lot est livré dans [beta.096](metabli-beta096.md), branche
`codex/metabli-beta096` : multibloc, catalogue et commandes de construction.
Les chantiers partagés persistants, datapacks de catalogue et services décrits
ci-dessous restent des propositions pour les lots suivants. Le contrat beta.096
précise le fonctionnement effectivement implémenté.
## Direction demandée
Un multibloc posé dans le monde ouvre le menu de construction. Aucun bouton
supplémentaire dans le menu pause. Le système réunit statues, machines et
bâtiments, et doit pouvoir accueillir de nouveaux contenus et usages.
« Métabli » reprend ici le nom du nouveau message ; le catalogue historique
employait « Métablit ». Aucun identifiant publié n'est renommé.
## Ce que le jeu possède déjà
- `PlansScreen` propose Statue, Bibliothèque et Construction via K.
- `StatueVoxelizer` et la capture cliente produisent des statues à partir des
modèles et textures du jeu ; `BuildPlan` porte les blocs et leurs états.
- `PlanClient` sait ancrer un aperçu, le tourner, isoler une couche et compter
les blocs corrects, restants et en conflit. Cet état est actuellement local.
- `SchematicIO` lit les formats pris en charge dans la bibliothèque ; l'import
ne reprend pas les inventaires, scripts ou entités des fichiers tiers.
- `PlanService` autorise le collage uniquement en créatif. En survie, le joueur
pose aujourd'hui ses blocs lui-même : aucun moteur de chantier automatique.
- La clé dorée et les machines existantes donnent un précédent pour l'assemblage
volontaire, la dissociation et l'autorité serveur.
Références : [plans existants](statues-plans-beta072.md),
[multiblocs existants](multiblocs-beta084.md),
[catalogue historique](multiblocs-conception.md).
## Le Métabli dans le monde
Proposition de forme : **neuf établis à plat, en 3 × 3 sur un bloc de hauteur**,
assemblés volontairement avec la clé dorée. Forme et apparence à confirmer
avant le code ; ne pas imposer les 27 composants du Fourneau à cette machine.
Un clic droit sur un composant assemblé ouvre le même atelier.
Le Métabli sert à choisir, préparer et gérer un projet. La construction est
ancrée à un autre emplacement choisi dans le monde ; elle n'a pas à occuper
la place de l'atelier. L'aperçu indique clairement sa base et son orientation.
Proposition initiale : un chantier actif par Métabli, plusieurs participants.
K reste disponible pour l'aperçu et les réglages du plan en cours. Le premier
lot ne supprime pas les outils locaux déjà livrés ; le nouveau catalogue et
la gestion du chantier partagé sont accessibles depuis le Métabli.
## Un menu commun
Interface native et sobre : catégories en haut, liste et recherche à gauche,
aperçu et fiche du projet à droite, actions en bas. Les catégories n'ouvrent
pas quatre nouveaux menus indépendants.
| Catégorie | Contenu | Réglages utiles |
| --- | --- | --- |
| Statues | Générateur actuel de mobs ; autres modèles ultérieurement | Modèle, taille, palette |
| Machines | Fourneau, Fût, super pistons ; plans de circuits redstone validés | Orientation, variante, entrées et sorties |
| Bâtiments | Maisons, ateliers, ponts et autres plans ajoutés au catalogue | Dimensions, variantes de matériaux compatibles |
| Mes plans | Bibliothèque locale et imports actuels | Nom, dimensions, matériaux, rotation |
Une fiche affiche la fonction réelle, l'encombrement, les matériaux requis
et manquants, ainsi que la condition de déblocage éventuelle. Les exemples de
bâtiments et de circuits ci-dessus sont des contenus à créer, pas un catalogue
déjà présent. Une fonction absente du jeu n'est pas présentée comme disponible.
Parcours proposé : choisir → configurer → positionner l'aperçu → confirmer
l'emplacement → construire → utiliser. Une fiche de chantier conserve
l'avancement et les besoins en matériaux. Le mode retenu par le créateur est la **construction manuelle guidée** :
les joueurs apportent leurs matériaux et posent eux-mêmes les blocs.
## Mode retenu : construction manuelle guidée
Décision confirmée par le créateur le 16 septembre 2026. Le Métabli ne place
pas les blocs et ne prélève pas les objets. La pose, les outils, les matériaux
et les règles de voisinage restent ceux du jeu. Aucun moteur automatique,
réserve de chantier, délai de fabrication ou consommation différée à créer.
Réutiliser l'aperçu existant : les blocs terminés s'effacent de la projection,
les conflits sont signalés et les couches permettent de suivre un grand plan.
Le chantier commun pourra partager l'ancrage et la progression ; chaque joueur
contribue avec son propre inventaire. Le contrôle de droits sur la construction
elle-même reste celui du monde, indépendamment des droits d'édition du plan.
La fiche distingue **blocs à placer** et **objets nécessaires**. Le compteur
actuel travaille sur les états de blocs ; annoncer une liste exacte d'objets
exige d'adapter les portes et lits (un objet, deux cases), les dalles doubles
(deux objets) et les autres cas particuliers. Aucun de ces calculs ne peut
modifier ou doubler la consommation native du joueur.
## Une construction a un plan et, parfois, une fonction
Le **plan** décrit la forme : blocs, états, variantes et points de raccordement.
La **fonction** décrit un comportement éventuellement ajouté par Sanctuary.
- Une statue ou une maison ordinaire a seulement besoin de son plan.
- Un circuit redstone fonctionne grâce aux blocs réellement construits.
- Un Fourneau doit en plus être validé et assemblé par le système existant.
- Une boutique aura besoin d'un composant commercial : propriétaire, stock,
offres et échanges. Construire son bâtiment ne crée pas ce service à lui seul.
Pour les machines reconnues, le plan complet et les permissions sont vérifiés
avant l'assemblage final ; un simple import de blocs ne peut pas s'attribuer une
fonction spéciale. Les ports indiqués dans le plan tournent avec la structure
(entrée d'objets, sortie, commande redstone, face d'interaction).
La demande de boutique donne un point d'extension, **pas une livraison de
l'économie maintenant**. On pourra préparer un local de boutique et lui
rattacher le service lorsque le commerce sera défini et implémenté. Son futur
signal redstone pourra par exemple indiquer un stock disponible ou une vente,
sans confondre le signal avec l'opération d'échange elle-même.
## Étendre le catalogue sans refaire l'interface
Proposition : des définitions de catalogue en datapack serveur, avec des
identifiants stables et une version de définition. Une entrée comporte :
- nom et description FR/EN, catégorie et tags ;
- source du plan ou générateur connu, paramètres et variantes autorisées ;
- condition de déblocage vérifiable côté serveur ;
- matériaux et opérations de placement, calculés depuis la variante retenue ;
- ports de raccordement et type de fonction facultatif.
Ajouter un bâtiment ou un circuit utilisant les mécanismes existants revient
à ajouter un plan et sa fiche. Une nouvelle mécanique, comme le commerce ou
une machine inédite, demande un module de code serveur enregistré, puis une
fiche qui l'utilise. Un datapack ne devient pas un interpréteur de commandes
arbitraires et un fichier importé ne fournit pas son propre code exécutable.
Les générateurs de statues et les fichiers locaux deviennent deux fournisseurs
de plans parmi d'autres. Les catégories servent à naviguer ; elles ne dictent
pas le moteur de placement. Découvertes, advancements ou aptitudes pourront
débloquer des entrées, sans supposer que ces règles existent déjà pour les plans.
## Persistance et reprise à définir avant le code
Le registre actuel des multiblocs décrit un cube de 27 cases avec un booléen
Fourneau/Fût. Il n'est pas extensible à un Métabli par ajout d'une troisième
valeur. Prévoir un registre dédié pour cette nouvelle machine et ses chantiers,
sans modifier le schéma existant ; un contrôle commun empêchera de partager
un composant avec les anciennes machines.
Le futur contrat versionné devra fixer l'identité du Métabli et du projet,
la dimension, l'ancrage, l'orientation, les droits d'édition et la reprise
du suivi. Les matériaux restent dans les inventaires Minecraft ; aucun stock
dupliqué n'appartient au plan. Conserver une copie bornée du plan
validé et de sa révision évite qu'une mise à jour du catalogue transforme un
chantier en cours ou un bâtiment déjà posé. Les limites actuelles de `BuildPlan`
restent le point de départ, pas une promesse de gros plans sans limite.
Proposition de règles : aucune transformation automatique des établis existants ;
la projection n'écrase jamais le terrain ; suivi suspendu hors chunks chargés,
sans forcer leur chargement. Une casse du Métabli ou une annulation du projet
ne supprime aucun bloc déjà posé et ne restitue pas de matériaux déjà utilisés.
Les projets complets ne déclenchent pas une deuxième production.
L'activation d'une machine reconnue reste une action explicite, après contrôle
serveur, selon les règles de la clé. Le suivi partagé doit persister le plan,
pas une copie ancienne du monde à rejouer après reconnexion.
Ces règles et ce registre sont un cadrage, **pas une migration approuvée ni un
format livré**. La forme du Métabli, les droits de gestion, le rayon d'ancrage
et les déblocages restent à fixer avant le lot concerné.
## Lots proposés
1. Métabli ouvrable, interface commune, statues et bibliothèque actuelles,
sélection d'un plan et projection à l'emplacement voulu. Aucun bouton pause.
2. Chantier manuel partagé et persistant ; liste correcte des matériaux,
synchronisation du suivi et vérifications de reprise/annulation.
3. Catalogue initial de machines et bâtiments validés, assemblage final des
machines existantes et protocole d'ajout de contenu en datapack.
4. Modules de fonction supplémentaires lorsque leur gameplay est défini,
notamment le commerce ; hors premier lot.
Chaque lot devra avoir un résultat jouable, un contrat de sauvegarde s'il en
crée un, les libellés FR/EN et les vérifications client/serveur adaptées.
La validation du chantier manuel devra notamment couvrir deux joueurs, une
pose qui consomme réellement l'objet natif, un obstacle ajouté pendant la
construction, une porte/un lit, un circuit, le déchargement, la reconnexion et
la casse du Métabli sans disparition des blocs construits.
+102
View File
@@ -0,0 +1,102 @@
# beta.090 — Passage à Minecraft Java 26.3
Ticket de migration du projet, branche `codex/minecraft-26-3-beta090`.
## Cible et contrat avant modification
Passage de `26.3-pre-2` à la version finale **26.3**, publiée le 15 septembre
2026. Cible Java 25, Fabric Loader 0.19.5 et Fabric API 0.160.5+26.3.
Sanctuary, Demeure, le profil Test et le fork JEI sont compilés pour la même
version exacte. Le fork JEI devient `30.32.0-sanctuary.3`, avec sa provenance
et son patch reproductible ; aucune substitution du catalogue Sanctuary par
le JEI standard.
Cette livraison change les binaires du projet et les archives locales. Aucun
monde existant ni instance personnelle n'est ouvert ou modifié. Pas de
régénération, d'expansion activée ni de migration des schémas Sanctuary.
Les identifiants restent stables. Les essais utilisent des mondes neufs et
les graines documentées des parcours ; les algorithmes de génération
Sanctuary ne sont pas modifiés. Les résultats de génération sur la nouvelle
version sont validés par les contrôles existants, sans garantir l'identité
binaire de tous les chunks générés par deux versions de Minecraft.
Le pack de textures reçoit une édition beta.090 pour déclarer la cible 26.3.
Le format reste 97.1 et les images existantes sont conservées ; le manifeste
et l'archive beta.070 restent immuables. Les anciens packs beta.089 restent
également immuables.
## Sources vérifiées
- [Sortie officielle de Minecraft Java 26.3](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-3) : Java 25, données 121.0 et ressources 97.1.
- [Manifeste Minecraft officiel](https://piston-meta.mojang.com/mc/game/version_manifest_v2.json) : entrée release 26.3, métadonnées et empreintes Mojang.
- [Fabric Loader pour 26.3](https://meta.fabricmc.net/v2/versions/loader/26.3) : 0.19.5 stable.
- [Fabric API 0.160.5+26.3](https://modrinth.com/mod/fabric-api/version/0.160.5+26.3) : version déclarée pour 26.3, JAR et empreinte épinglés dans packwiz.
## Adaptations
- Les cibles Minecraft/Fabric sont communes à Sanctuary, Demeure, Sanctuary Test
et au fork JEI. Les métadonnées des JAR et les deux distributions reprennent
ces versions ; Fabric API est épinglé par URL et empreinte.
- Le bouton d'ouverture du dossier des plans utilise `Blaze3D.openPath` :
l'ancien `Util.getPlatform().openPath` n'existe plus dans la version finale.
- Le scénario client du catalogue utilise la règle actuelle « Allow Commands »
pour activer puis révoquer le mode opérateur. Sa vieille attente d'un second
bouton d'inspection est retirée ; aucune permission de production n'est changée.
- Le rapport TerrainAtlas récupère la version Minecraft réellement exécutée.
- Minecraft passe du DataVersion 5018 (pre-2) à 5023 (finale), protocole 777.
Les schémas Sanctuary restent inchangés. Les caches de plans dérivés incluent
déjà les versions des mods et de Minecraft dans leur identité : la nouvelle
version recalcule ses plans sans réutiliser un cache de l'ancien moteur.
## Vérifications
Les essais clients utilisent Minecraft **26.3** natif et des mondes de
développement neufs, graine **42**. Aucun serveur dédié n'est lancé et aucune
EULA n'est acceptée ; `:sanctuary:runGameTest` est explicitement exclu.
- Super pistons : états de collision client/serveur, six directions, versions
normale/gluante, course, charge 108/109, obstacles, transport, sauvegarde et
rechargement. Le correctif de collision beta.089 est conservé et retesté.
- Multiblocs : navigation du Fût et recherche avec souris immobile, onglets du
Fourneau, fermeture normale, stockage, cuisson et persistance. Le correctif
beta.088 ne réintroduit pas de paquet de fermeture entre deux pages.
- Catalogue JEI : découverte, familles de recettes débloquées par advancements,
permissions opérateur et révocation, transfert réel depuis la sixième rangée,
ressources FR/EN, prestige, mort puis rechargement du monde.
- Monde Sanctuary : génération neuve, graine 42, introduction complète, cache
écrit puis relu sans recalcul, corruption volontaire d'un cache de développement
puis reconstruction. Les 217 053 écritures de blocs contrôlées, plans, géométries
des fluides, butins et zones protégées restent identiques après les deux reprises.
Le parcours natif passe en 3 min 35 s. À titre d'observation locale, la création
avec introduction dure 147,4 s, la reprise avec cache 2,7 s et la reprise après
corruption 40,5 s ; ces parcours ne constituent pas un benchmark comparable.
Les journaux locaux des quatre parcours sont
`build/migration090-{piston,multiblocks,recipes,world}-client.log`.
## Assemblage vérifié
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe sous Java 25 : **124 tâches**, en 2 min 53 s. Les quatre parcours clients
séparés passent également. Les deux exports packwiz sont vérifiés après écriture.
- [Pack normal](../build/Sanctuary-beta.090.mrpack) — SHA-256
`4cbb9c06126874ce4c767b5fb6b3bf61c2903784e908f030ebbfbc662aac4dfc`.
- [Pack Test](../build/Sanctuary-Test-beta.090.mrpack) — SHA-256
`ffe9f70ec0f17d567d0c108478ed90915eb5d8cdc407be9ba39860dd87adfc05`.
- [Textures seules](../build/Sanctuary-Resource-Pack-beta.090.zip).
- [Reçu de vérification local](../build/migration090-artifact.json).
Les JAR imbriqués, leurs cibles Minecraft, les archives de sources et les versions
packwiz concordent. L'empreinte du JAR Fabric API téléchargé par Gradle correspond
à celle de la dépendance packwiz. Les images, modèles, données et identifiants du
JAR Sanctuary sont identiques à beta.089 ; seul le `pack.mcmeta` graphique change.
La seule classe de production Sanctuary différente est `PlansScreen`. Les archives
normal/Test beta.089 et les sources du manifeste graphique beta.070 sont conservées.
## Limites et distribution
Les clients testés sont natifs sur macOS, avec serveur intégré. Pas de validation
Windows/Linux ou LAN à deux clients pour cette migration, ni de conversion d'une
sauvegarde personnelle. Les archives locales n'avancent pas le canal packwiz et
ne mettent pas à jour une instance Prism existante.
+68
View File
@@ -0,0 +1,68 @@
# beta.092 — Clic molette sur les super pistons
Branche `codex/multiblock-pick-beta092`, Minecraft 26.3.
## Contrat
Le clic molette sur un super piston renvoie le piston Minecraft d'origine :
`minecraft:piston` pour le normal, `minecraft:sticky_piston` pour le gluant.
Cela couvre les neuf socles, toutes les têtes et les tiges, dans les six
orientations et à chaque profondeur de course. Une sélection reçue côté serveur
pendant une transition de mouvement retrouve aussi le composant source.
Les blocs techniques n'obtiennent pas d'objet dédié.
La sélection reste native : en créatif, un exemplaire ; en survie, sélection du
piston déjà présent dans l'inventaire, sans création d'objet. Ctrl + clic molette
ne copie pas les données techniques du contrôleur ou du piston mobile sur
l'objet ordinaire. Le comportement des autres blocs et charges mobiles vanilla
reste inchangé. Fourneau et Fût gardent leurs blocs source natifs, four et baril.
Aucun format de sauvegarde, identifiant, modèle, texture ou règle de génération
n'est modifié. Aucun monde existant n'est ouvert ou migré.
## Vérifications
Le parcours `Pick092ClientChecks` utilise un monde plat neuf de développement,
graine 42 : tous les états client/serveur, puis de vrais clics molette sur des
super pistons assemblés et étendus, en créatif et en survie.
Le parcours natif passe en **1 min 19 s** sur Minecraft 26.3/macOS :
- 864 états vérifiés côté client et serveur, avec et sans demande de données.
- Douze combinaisons normal/gluant × six directions ; vrais clics molette sur
chaque socle central, tête et les deux tiges du multibloc assemblé.
- Le résultat est exactement un piston natif, avec les composants ordinaires.
- En survie, un stack de cinq pistons présent est sélectionné sans duplication ;
inventaire vide, aucun objet n'est créé.
- Sélection des états mobiles d'extension/rétraction via le gestionnaire de paquet
serveur natif. Ctrl + clic ne transporte pas le NBT du contrôleur ou du mouvement.
- Les charges mobiles vanilla conservent leur comportement. Four et baril
conservent aussi leur sélection native.
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryPick092ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Journal : `build/pick092-client.log`, marqueur `PICK092_PASS`.
## Livraison vérifiée
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **3 min 1 s**, 124 tâches. Journal : `build/pick092-check.log`.
Les exports correspondent aux JAR et à leurs sources. Textures, modèles,
données, JEI et archives beta.091 sont conservés à l'identique.
Reçu local : `build/pick092-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.092.mrpack), SHA-256
`3c1907fb3427e3df421eb84eb8f05c2e89c7cb3d27ef30d856602559cd33a383`.
- [Pack Test](../build/Sanctuary-Test-beta.092.mrpack), SHA-256
`a8acaffc0b803b81e12da7439af24abfb6dadfe890a952b6e89916317e9f4914`.
## Limites
Tests sur client natif macOS avec serveur intégré de développement ; pas de
session LAN à deux clients pour cette livraison. Serveur GameTest dédié exclu,
aucune EULA acceptée. Aucun déploiement dans une instance personnelle ni
publication du canal packwiz.
+98
View File
@@ -0,0 +1,98 @@
# beta.084 — Clé dorée, Fût et Fourneau
Premier lot implémenté sur `codex/multiblocs-beta084`.
Référence historique lue, sans modification : `../26.2/anotherworld`,
`VaultStructure`, `SafeVaultMenu` et `SafeVaultScreen`. Reprise du repérage
borné autour d'un centre et du contrôle serveur, pas du stockage monétaire,
de la propriété privée ni de sa forme creuse à 26 composants.
## Contrat de sauvegarde et de migration — avant implémentation
Aucune génération ni conversion automatique d'une construction existante.
L'assemblage est une action volontaire avec une clé dorée. Nouveau SavedData
par dimension `sanctuary:multiblocks`, schéma 1 : origine du cube, type,
orientation et identifiant UUID. Aucun contenu d'inventaire dans ce registre.
Les 27 BlockEntities vanilla conservent leurs objets, composants, temps de
cuisson, combustible restant et expérience. Les identifiants de blocs restent
`minecraft:barrel` et `minecraft:furnace`. Le chargement d'une ancienne
sauvegarde sans ce registre ne change rien : aucun fichier nest écrit avant
le premier assemblage. Le codec refuse un schéma inconnu et le chargeur refuse
d’écraser un fichier illisible. La catégorie native de stockage NBT est
`SAVED_DATA_COMMAND_STORAGE` ; les données métier restent dans notre codec.
Une dissociation retire seulement l'appartenance : elle ne restitue jamais
une copie du stock initial. Une casse ou explosion laisse Minecraft déposer
le contenu du composant cassé et dissout la machine ; les autres composants
restent en place. Une partie déchargée suspend l'accès commun et la chauffe,
sans chargement forcé ni rattrapage hors ligne. À la reprise, validation des
27 composants. Les sauvegardes suivent l'atomicité native des chunks ; ce
lot n'ajoute pas de journal transactionnel inter-chunks en cas de crash brutal.
Les anciens inventaires ouverts sont fermés à l'assemblage/dissociation.
## Gestes et valeurs de la première version
- Clé : recette de trois lingots d'or en tête et un bâton en manche, sans usure.
- Clic droit sur 27 barils ou fours en cube plein : repérage et confirmation
par un deuxième clic dans les dix secondes. Une forme ambiguë est refusée.
- Maj + clic droit sur une machine assemblée : dissocier.
- Maj + clic droit sur un four ou baril indépendant : tourner, en conservant
ses données. Pas de rotation d'une machine chargée.
- Clic droit sans clé sur une façade : ouvrir le stock commun public.
- Fût : 729 cases physiques, 54 par page, recherche par nom et identifiant.
Les noms localisés sont résolus côté client en identifiants dobjets, puis
filtrés uniquement dans le stock accessible validé par le serveur. Le
Maj-clic de dépôt utilise tout le stock, même pendant une recherche.
Une recherche fige ses emplacements jusqu'à la prochaine recherche.
Changer de page/recherche ouvre un nouvel identifiant de menu et exige un
curseur vide ; les anciens paquets de clic ne peuvent pas viser une autre page.
- Fourneau : les 27 entrées, combustibles et sorties natifs, trois vues.
Jusqu'à 27 cuissons simultanées à vitesse vanilla, avec chaleur partagée.
Chaque cuisson paie un tick de combustible par tick de travail : le débit
augmente, pas le rendement par charbon. Les combustibles et leurs restes,
les recettes et l'XP restent gérés par le four vanilla. Pas de recette
culinaire It's Alive dans ce lot. Une panne de combustible met le travail
en attente sans effacer sa progression ; ajouter du combustible le reprend.
Le débit correspond aux 27 fours physiques, sans multiplicateur de minerai.
- Trémies : stock commun du Fût ; Fourneau, entrées en haut, combustible
latéral, résultats en bas, en respectant les règles natives des seaux.
- Apparence : composants vanilla conservés ; les fours montrent leur chauffe.
Aucune nouvelle grande texture de façade dans cette première livraison.
## Vérifications
`Multiblocks084ClientChecks` tourne dans un nouveau monde plat intégré :
confirmation volontaire, refus de chevauchement, cube traversant une frontière
de chunks, fichier SavedData écrit puis relu, schéma inconnu, sérialisation
native des objets nommés et de la cuisson, deux joueurs serveur dont un invité
automatisé, trémies natives, inventaire plein, recherche localisée, pagination,
curseur plein et paquet périmé, dissociation, casse et explosion avec conservation
du stock. Cuisson : deux recettes simultanées, rendement du charbon partagé,
sortie pleine, seau de lave/éponge mouillée, résultat natif/XP et panne puis
reprise des 27 cuissons. Captures natives en FR/EN aux échelles 2 et 3.
Validation finale réussie : `check build assemblePack assembleTestPack`
et `:sanctuary:runClientGameTest`, en excluant `:sanctuary:runGameTest`
(serveur dédié/EULA non autorisés). 131 tâches, 105 exécutées, en 3 min 16 s.
Le dernier scénario couvre aussi les six rangées, le dépôt depuis la rangée
supplémentaire et le maintien des menus voisins sans lien avec la machine.
Archives locales : `build/Sanctuary-beta.084.mrpack` et
`build/Sanctuary-Test-beta.084.mrpack`. Journaux :
`build/multiblocs084-check.log` ; reçu dintégrité :
`build/multiblocs084-artifact.json`. Pack de textures beta.070 inchangé.
Le canal publié reste inchangé.
Pour essayer rapidement : fabriquer la clé avec le motif `G G / G / S `
(G = lingot dor, S = bâton), ou obtenir `sanctuary:golden_wrench` en mode
opérateur. Construire un cube plein de 27 barils ou de 27 fours et cliquer
deux fois avec la clé. Maj-clic avec un autre bloc permet toujours den poser
un contre la façade, notamment une trémie.
Limites de cette livraison : façade composée des blocs vanilla ; comparateurs
sur le contenu du composant physique ; commandes de chauffe avancées et
recettes composées différées. La sauvegarde est vérifiée par relecture disque
et sérialisation native, pas par redémarrage complet dune session à deux
clients. Le déchargement réel dune moitié de machine pendant un transfert
reste à éprouver manuellement ; le refus daccès aux chunks absents est testé.
Aucun serveur dédié démarré, aucune EULA acceptée, aucun déploiement Prism
ou monde personnel modifié.
+204
View File
@@ -0,0 +1,204 @@
# Multiblocs — reprise du catalogue
**Cahier rouvert le 15 septembre 2026. Conception, aucune machine livrée ici.**
Le créateur demande de reprendre **tout le catalogue** avant de choisir un
premier appareil. Ce document remet les décisions historiques à portée de la
bêta ; les propositions nouvelles restent indiquées comme telles.
Le [ticket MB-01](multiblocs-ticket.md) suit ce cadrage et prépare les lots de code.
**Reprise du 16 septembre 2026 : le premier duo choisi est Fourneau + Fût.**
La séance porte sur leur conception avant intégration. Le créateur confirme
ensuite l'inclusion de la clé, le Fût à 729 cases avec recherche et pages et
le principe des fournées à combustible commun. Les gestes de la clé et les
détails de chauffe restent ouverts ; les autres appareils restent au catalogue
pour plus tard. Le créateur précise ensuite que tout It's Alive sera fusionné
dans Sanctuary, mais ultérieurement ; le Fourneau pourrait remplacer sa
cuisinière. Voir le [cadrage corrigé](multiblocs-itsalive-contrat.md).
Les huit propositions de la [recherche du 15 septembre](multiblocs-recherche.md)
ont été **rejetées par le créateur**, jugées sans intérêt ou contraires au
contrat Minecraft Vanilla. Le travail reprend sur le catalogue antérieur
ci-dessous ; cette recherche ne constitue pas une liste d'implémentation.
## Les dossiers retrouvés
La source principale est le [cahier des machines que l'on construit](../../sanctuary-conception/docs/machines-multiblocs.md),
dans le chantier de conception WG-26. Sa dernière modification est le commit
`0e95da36ae7ebc99be5768a2f51e7be65aaf6702`, du 11 septembre 2026 :
« valider lassemblage volontaire avec la clé dorée ». Le fichier consulté
ne comporte pas de modification locale.
Les dossiers complémentaires sont :
- [Redstone Language — ensemble](../../sanctuary-conception/docs/redstone-language-extensions.md) :
catalogue des composants, transport, capteurs et connexions.
- [Fiches des composants](../../sanctuary-conception/docs/redstone-language-composants.md) :
contrôleur, terminal, afficheur et disquettes.
- [Langage et machines](../../sanctuary-conception/docs/langage-et-machines.md) :
programmation et installation d'expansion Galactium.
- [Vision historique](../../sanctuary-conception/docs/vision.md) et
[backlog historique](../../sanctuary-conception/docs/backlog.md) : recoupement
des choix retenus et des propositions.
Ces liens pointent vers un autre worktree local. Le commit source est conservé
pour retrouver la référence si ce worktree est déplacé. Les dossiers historiques
restent consultés en lecture seule. Ils décrivent de la conception ; leur
présence ne prouve pas une implémentation dans la bêta actuelle.
## Le principe déjà retenu
**Des blocs identiques réunissent leur fonction dans une construction plus grande.**
Le joueur pose les composants, les assemble volontairement à la clé dorée,
utilise une machine commune, puis peut retrouver ses blocs indépendants.
- **La pose ne fusionne rien.** Un cube de fours peut rester une batterie de
fours ; neuf hoppers voisins peuvent garder neuf circuits.
- **La clé à molette dorée assemble, dissocie et oriente.** Ces fonctions sont
retenues ; recette, obtention, usure et gestes précis restent ouverts.
- **Dissocier laisse les composants sur place.** La machine ne se transforme
pas implicitement en un objet transportable. La séparation persiste après
rechargement, même si la forme reste complète.
- **Le stock actuel est conservé une seule fois.** Dissocier ne restaure pas
des ingrédients déjà consommés. La répartition entre composants est à définir.
- **L'usage local suffit.** Four, collecte ou musique restent utilisables sans
ordinateur ; la programmation pourra coordonner les appareils.
## Catalogue principal
« Retenu » désigne une décision consignée dans l'ancien cahier, encore ouverte
à une révision explicite pendant cette séance. Cela ne signifie pas « codé ».
| Appareil | Construction / fonction retenue | Ce qui reste à concevoir |
| --- | --- | --- |
| **Fourneau** — nom proposé | **27 fours ordinaires**, cube plein **3 × 3 × 3** ; chauffe commune, fournées et recettes à chaud. | Façade, orientation, entrées/sorties, chaleur, capacité, durée, rendement et première recette composée utile. |
| **Fût** — nom retenu | **27 barils**, cube plein **3 × 3 × 3** ; stockage commun par pages et/ou défilement. | Capacité réelle, pagination, dessin, faces d'accès et répartition au démontage. |
| **Grand baril de fermentation** — nom retenu | Plusieurs stacks d'**une même recette**, éventuellement à plusieurs ingrédients. | Composants, forme, volume, proportions du lot, conditions, vieillissement et temps hors ligne. |
| **Présentoirs** — nom proposé | **9 objets par face de bloc**, **81 par façade 3 × 3**, **324 distincts sur quatre façades**. Une façade seule suffit. | Bloc support et fabrication, gestes de dépôt/retrait, modèles, consultation des cartes/plans, coût du rendu. |
| **Méga-pistons** | **9 pistons en façade 3 × 3**, tête commune **3 × 3**, **course de 3 blocs** ; variante collante demandée. | Charge déplaçable, durée, collisions, traction, slime/miel, pièces déployées et interruption. |
| **Trémie** — nom retenu | **9 hoppers à plat en 3 × 3**, surface de collecte commune et **45 cases**. Assemblage facultatif. | Sortie, débit, redstone, comparateur, insertion et orientations rendues au démontage. |
| **Carillon** — nom retenu | Blocs musicaux **adjacents choisis**, pour accords et courtes séquences ; aucun carré ni nombre de neuf imposé. | Sélection, ordre, taille maximale, tempo, déclenchement, retour au début et réparation. |
| **Métablit** — nom proposé par l'auteur | La fonction d'**établi collectif avec projet persistant** est une proposition. | Confirmer cette fonction, ses composants, sa grille et ce qu'elle apporte par rapport à l'établi et au crafter. |
### Fourneau : faire une fournée et transformer une recette
Les 27 fours forment un cube **plein**, centre compris. L'ancien four creux
entouré de briques a été remplacé par ce choix. Le volume ne promet ni 27 fois
la vitesse ni un multiplicateur de minerais.
L'ancien cahier propose deux usages explicites : **cuisson par lots**, avec
les résultats des recettes admises, et **recette à chaud**, qui transforme
ensemble plusieurs ingrédients. Neuf cases d'entrée et une réserve de
combustible commune sont des propositions, pas des valeurs validées.
Le premier alliage reste à choisir avec un objet utile auquel il sert.
L'ancien cahier prévoyait de reprendre le rôle du kitchen oven en conservant
It's Alive autonome. **La direction actuelle remplace cette architecture :
tout It's Alive sera fusionné dans Sanctuary, plus tard.** Le Fourneau pourrait
alors remplacer la cuisinière, dont les usages précis restent à recenser.
Concevoir le Fourneau pour pouvoir accueillir ces recettes ultérieurement ;
le premier lot n'importe pas It's Alive et ne dépend pas d'une passerelle.
### Fût et fermentation : stockage et transformation
Le Fût conserve un stock fini, partagé entre toutes ses ouvertures ; changer
de page ne change pas les objets accessibles à l'automatisation. **729 cases**,
soit la somme des capacités de 27 barils ordinaires, ont été acceptées le
16 septembre 2026, avec recherche et pages. Ce choix actuel ne provient pas
de l'ancien cahier. La taille d'une page et l'intégration à l'inventaire
Sanctuary restent à préciser.
La fermentation engage un lot d'une recette : les ingrédients ajoutés ensuite
n'acquièrent pas rétroactivement son âge. Cette règle de lot est proposée dans
l'ancien cahier. La composition du Fût n'est pas automatiquement celle de la
cuve, et les règles du vin ne s'appliquent pas implicitement à la bière.
### Présentoirs : une collection réellement exposée
Les **81 objets d'une façade sont visibles ensemble**, sans pagination.
Un angle peut présenter deux faces avec des contenus distincts ; dessus et
dessous ne rajoutent pas implicitement des places aux 324 objets confirmés.
Cartes, photos, plans, recettes, disquettes, disques et œufs étaient demandés.
Un objet physique par emplacement est proposé ; accepter tous les autres
objets reste à éprouver. La disponibilité des supports futurs ne doit pas
être supposée dans la bêta.
### Méga-pistons : un mouvement commun
La tête parcourt réellement trois blocs. Les **27 cellules balayées** ne
définissent pas une limite de 27 blocs poussables. L'ancien cahier propose
un refus de tout le mouvement si une partie est bloquée et un démontage
uniquement rétracté et immobile. Poids, traction et déplacement de conteneurs
restent ouverts ; les états de neuf pistons indépendants ne suffisent pas
à décrire cette mécanique.
### Trémie : collecter sur une surface
La proposition historique est **une sortie sous le centre**, raccordable à
un hopper ordinaire pour poursuivre sur le côté. Cette sortie n'est pas encore
retenue. Même distinction pour la commande : alimenter le centre pour bloquer
toute la Trémie était proposé. **45 cases ne signifie pas débit multiplié par 9.**
Une destination pleine doit laisser les objets dans la réserve ; une réserve
pleine ne supprime pas les nouveaux drops.
### Carillon : construire un instrument
La forme libre adjacente remplace l'ancienne préférence pour une rangée.
L'ordre de sélection comme ordre musical reste proposé. Le cahier compare :
- **Accord :** une impulsion joue les notes ensemble.
- **Séquence :** une impulsion avance d'une note, avec tempo donné par la redstone.
- **Variante à discuter :** une impulsion lance toute une phrase au tempo interne.
Chaque note garde son instrument, notamment son support propre. Les gestes
d'accordage doivent rester accessibles. Le nombre de notes, les silences et
la manière de réordonner la mélodie restent à concevoir.
## Pistes et installations voisines
| Piste | État retrouvé |
| --- | --- |
| **Veilleur** | Proposition : 9 observateurs en façade pour surveiller les positions devant eux et identifier laquelle a changé. |
| **Batterie de distribution** | Proposition : 9 distributeurs en façade, sélection d'une bouche ou séquence avec leur stock réel. |
| **Bassin de traitement, serre climatique, écluse, alambic** | En réserve ; pas automatiquement des assemblages de blocs identiques. |
| **Presse à moule** | Écartée par l'auteur, fonction jugée déjà couverte par le crafter. |
| **Afficheur programmable** | Cahier voisin : panneaux coplanaires, rectangle plein, texte continu et huit lignes par bloc de hauteur. Ses règles de regroupement ont leur propre contrat, à confronter à celles de la clé. |
| **Installation Galactium** | Proposition voisine : construction autour d'un contrôleur, ressources et charge collective pour une expansion. Dépend du contrat d'expansion ; ne fait pas partie d'un premier appareil autonome. |
Le **terminal en titane reliant jusqu'à 128 coffres** est un réseau de stockage
distinct du Fût. Le coffre 3 × 3 × 3 cité dans la discussion historique n'y a
pas été identifié comme implémenté. Ces références ne deviennent pas de nouvelles
machines validées par leur simple mention.
## Proposition pour reprendre la conception ensemble
Pour chaque appareil, partir de **ce que la construction change dans le jeu** :
une chauffe partagée, un dépôt commun, une collection visible, une grande
course, une surface de collecte ou une phrase musicale. Puis compléter une
fiche courte :
1. **Construire :** blocs, forme, taille fixe ou variantes, orientation.
2. **Reconnaître :** aspect assemblé, pièces actives, état visible, nom FR/EN.
3. **Utiliser :** gestes, inventaire éventuel, recette ou commande, effet obtenu.
4. **Raccorder :** faces d'entrée/sortie, hoppers et redstone.
5. **Démonter :** casse, dissociation, récupération du contenu et reprise.
6. **Progresser :** obtention, matériaux, intérêt par rapport aux blocs séparés.
Les trois premiers arbitrages transversaux proposés sont **l'aspect des blocs
une fois réunis**, **les gestes de la clé** et **les tailles disponibles**.
Le 3 × 3 et le 3 × 3 × 3 sont retenus pour certains appareils ; les étendre
à toutes les machines effacerait le choix particulier du Carillon et des
façades de collection. Aucun nouvel arbitrage n'est acquis à ce stade.
## État et vérification de cette reprise
Le catalogue et ses statuts ont été recoupés avec le cahier, la vision et le
backlog de conception. La recherche ciblée dans les sources et les traductions
de la bêta n'a pas retrouvé ces appareils sous leurs noms ; elle ne constitue
pas un audit exhaustif de tout le code historique.
La cible déclarée reste celle de `gradle.properties`, **26.3-pre-2** au moment
de la lecture. Les anciennes vérifications d'API ne dispensent pas le futur
ticket de vérifier ses usages sur cette version exacte.
Cette reprise modifie uniquement la documentation. Aucun build ni essai en
jeu n'est nécessaire pour le catalogue ; les validations de gameplay figurent
dans le ticket et seront exécutées lors des lots concernés.
+51
View File
@@ -0,0 +1,51 @@
# Fourneau et It's Alive — fusion future dans Sanctuary
16 septembre 2026. Cadrage corrigé après clarification du créateur.
Aucun portage, adaptateur ou changement de sauvegarde livré ici.
## Direction retenue
Le créateur souhaite intégrer **tout It's Alive dans Sanctuary**, mais
**pas maintenant**. La proposition précédente de maintenir deux mods
indépendants reliés par un module multiblocs partagé est abandonnée pour ce
chantier. Aucune passerelle entre mods n'est un prérequis au premier lot.
Le lot actuel reste **clé dorée, Fourneau et Fût**. Le Fût à 729 cases avec
recherche et pages et le principe du Fourneau à fournées et combustible commun
sont retenus. Les gestes de la clé, la chauffe et les détails de fonctionnement
restent à concevoir dans le ticket multiblocs.
## Place future du Fourneau
Le Fourneau **pourrait remplacer la cuisinière d'It's Alive** lors de la
fusion. C'est la piste exprimée par le créateur (« je pense »), pas encore
un remplacement détaillé et définitivement arbitré.
Ne pas réduire cette intention à la seule classe historique
`KitchenOvenBlockEntity` : il faudra identifier précisément les usages de
la cuisinière à reprendre au moment de la fusion. Les autres appareils,
recettes et systèmes d'It's Alive seront examinés dans ce futur chantier.
Pour éviter une réécriture inutile, concevoir la cuisson du Fourneau de façon
à pouvoir accueillir ultérieurement des recettes culinaires composées.
Cette possibilité d'évolution n'impose aujourd'hui ni import de recettes,
ni moteur culinaire complet, ni nouveau module autonome.
## Références techniques conservées pour plus tard
Le projet bêta charge Sanctuary, Demeure, JEI et le module de test ; It's
Alive n'est pas déclaré dans `settings.gradle`.
La référence consultée en lecture seule est `../26.2/itsalive/` :
- son manifeste cible Minecraft `~26.2`, pas `26.3-pre-2` ;
- `KitchenOvenBlockEntity` possède neuf cases d'ingrédients, une case de
combustible et une sortie ;
- `AbstractTimedCulinaryBlockEntity` recherche les recettes, calcule les lots,
suit leur durée, consomme les ingrédients et produit les résultats.
Ces constats serviront à l'inventaire du futur portage, sans présumer que
ce four constitue à lui seul toute la cuisinière visée par le créateur.
La reprise des identifiants, des contenus déjà stockés et des travaux en
cours devra recevoir son contrat de migration avant toute conversion.
Les sources historiques et les sauvegardes restent inchangées.
+290
View File
@@ -0,0 +1,290 @@
# Multiblocs — recherche de compléments au catalogue
**Recherche du 15 septembre 2026, pour MB-01. Propositions rejetées par le créateur.**
**Décision après présentation :** les huit candidats sont écartés, jugés sans
intérêt ou contraires au contrat Minecraft Vanilla. Le contenu ci-dessous est
conservé comme historique de recherche, y compris son ordre proposé désormais
sans valeur de sélection. Reprendre le [catalogue antérieur](multiblocs-conception.md)
pour déterminer la liste d'implémentation ; ne pas réintroduire ces propositions
comme candidates actives sans nouvelle demande du créateur.
La demande est de compléter le [catalogue retrouvé](multiblocs-conception.md)
avant de déterminer ensemble la liste d'implémentation. Aucune nouvelle entrée,
forme, recette ou priorité ci-dessous n'est une décision du créateur.
## Conclusion proposée avant rejet — historique
Huit candidats méritent une discussion : **Atelier de taille, Alambic,
Compostière, Citerne, Broyeur, Tisserie, Discothèque et Antenne sculk**.
L'Alambic précise une piste déjà en réserve. La Citerne donne un usage de
stockage au thème des bassins, distinct d'un bassin de transformation.
Je commencerais la sélection des ajouts par **Atelier de taille, Alambic et
Compostière**, puis **Discothèque** pour un usage collectif musical. La
**Citerne** devient intéressante si l'on souhaite des installations de liquides.
Le **Broyeur** mérite un arbitrage sur les ressources avant d'être retenu.
**Tisserie** et **Antenne sculk** ont un potentiel plus spécialisé à éprouver.
Leur intérêt vient respectivement des commandes de chantier, des préparatifs
d'expédition, de la valorisation des récoltes, d'une programmation musicale,
d'une réserve liquide, de transformations minérales, de motifs textiles et
de la lecture des vibrations. Les rangs ci-dessus sont mon appréciation de
conception, pas des mesures de popularité ou de temps de développement.
## Ce que les références apportent
Recherche dans les documents des projets et de Mojang. Les exemples attestent
des principes de jeu ; **leur compatibilité avec Fabric 26.3-pre-2 n'a pas été
évaluée et aucun de ces mods/plugins n'est proposé comme dépendance**.
| Référence consultée | Fait utile à la conception | Application proposée à Sanctuary |
| --- | --- | --- |
| [Create — Mechanical Crafter](https://github.com/Creators-of-Create/Create/wiki/Mechanical-Crafter), ancien wiki du projet, page de 2021 | Liaisons et direction se règlent à la clé ; des groupes adjacents peuvent rester distincts. | Faire voir l'appartenance et les raccords, garder les ingrédients lisibles dans la construction. |
| [Create — Crushing Wheels](https://github.com/Creators-of-Create/Create/wiki/Crushing-Wheels), page de 2024 | Deux roues transforment des objets introduits entre elles, avec des recettes de broyage. | Donner au Broyeur un geste et une transformation identifiables ; choisir nos propres recettes et rendements. |
| [Create — Mechanical Pump](https://github.com/Creators-of-Create/Create/wiki/Mechanical-Pump), page de 2021 | Pompage, sens et tuyaux assurent le transfert physique des fluides. | Distinguer réserve, transfert et transformation ; une Citerne seule n'est pas une pompe. |
| [Botania — Botanical Brewery, dans le Lexicon](https://botaniamod.net/lexicon.html) | La préparation rassemble récipient, ingrédients et mana avant de produire un breuvage. | Montrer le lot engagé et son état dans un atelier ; mana et breuvages Botania ne sont pas repris. |
| [CraftBook — Bridge](https://craftbook.enginehub.org/en/3.x/mechanics/bridge/) | Une construction de pont peut être commandée par panneau ou redstone. | Concevoir des usages architecturaux des méga-pistons : passage, porte et quai mobile. |
| [Immersive Engineering — changelog 1.21.1](https://github.com/BluSunrize/ImmersiveEngineering/blob/1.21.1/changelog.md) | Le projet documente des corrections de pertes de contenu à la casse de machines et de problèmes de fluides au chargement des chunks. | Mettre conservation du contenu et reprise dans le premier scénario de réception, avant de multiplier les appareils. |
Ces anciens documents de Create sont utilisés comme références historiques de
conception. Le [wiki GitHub annonce son déplacement](https://github.com/Creators-of-Create/Create/wiki)
vers un nouveau site ; ses pages récentes n'ont pas été récupérées lors de cette
recherche. Les descriptions ci-dessus ne prétendent donc pas résumer la dernière
version distribuée de Create.
## Huit fiches candidates
Les gabarits et noms anglais sont proposés pour rendre les idées examinables.
Ils restent modifiables. Tous les regroupements suivent la clé volontaire et
la dissociation durable du catalogue. Aucun appareil ne fonctionne gratuitement
du seul fait qu'il est plus grand.
### 1. Atelier de taille / Stoneworks
**Base vérifiée :** le tailleur de pierre transforme un matériau selon une
recette choisie. [Présentation Mojang du tailleur de pierre](https://www.minecraft.net/de-de/article/block-week--stonecutter).
**Proposition :** neuf tailleurs de pierre en plateau **3 × 3** donnent un
atelier de préparation de chantier. Le joueur prépare une commande avec
plusieurs sorties et quantités : par exemple escaliers, dalles et murets dans
la même pierre. L'atelier répartit les matériaux apportés entre les recettes,
montre ce qui manque et s'arrête aux quantités demandées.
Le bénéfice est une commande persistante avec approvisionnement commun,
utilisable à la main et par hoppers. Un raccord ultérieur aux besoins d'un plan
peut préparer la liste, mais le premier atelier fonctionne par saisie manuelle.
Il produit des objets ; les règles de pose et la compétence Construction
continuent de s'appliquer lors du chantier.
**À décider :** nombre de lignes de commande, coût du travail, cadence et
sorties. Réutiliser les recettes admises ; ne pas ouvrir silencieusement le
catalogue encore inconnu du joueur. **Essai :** deux commandes concurrentes,
stock insuffisant puis complété, sortie pleine, reprise sans surproduction.
### 2. Alambic / Brewing Array
**Base vérifiée :** l'alambic vanilla combine fioles et ingrédients avec du
combustible. [Présentation Mojang de l'alambic](https://www.minecraft.net/en-us/article/taking-inventory--brewing-stand).
**Proposition :** neuf alambics en plateau **3 × 3** deviennent un atelier
commun de potions. Préparer un lot homogène, afficher ses étapes, puis les
enchaîner avec les ingrédients physiquement déposés. Exemple : préparer les
potions de résistance au feu d'une expédition et les récupérer terminées.
Une capacité de **27 fioles** est une proposition issue des trois fioles par
composant, pas une capacité déjà approuvée.
Le regroupement doit apporter la préparation d'un lot et le suivi des étapes.
Les recettes de potions et leurs effets restent ceux admis par le jeu.
La fermentation alimentaire garde son propre appareil et sa temporalité.
La forme et le rôle de cet Alambic précisent la piste ancienne sans l'imposer.
**À décider :** consommation par groupe de fioles, partage de chauffe,
cadence et ordre des ingrédients. Une seule dose ne traite pas arbitrairement
27 fioles. **Essai :** un lot partiel, ingrédient manquant au milieu, retrait
pendant le cycle et redémarrage ; aucune étape ni consommation doublée.
### 3. Compostière / Composting Bed
**Base vérifiée :** le composteur accepte des matières végétales et produit
de la poudre d'os ; leur efficacité varie. [Présentation Mojang du composteur](https://www.minecraft.net/en-us/article/block-month--composter).
**Proposition :** neuf composteurs à plat **3 × 3**, une réserve commune
alimentée par les récoltes et une maturation visible. La construction reçoit
un lot mélangé d'objets compostables ; la poudre d'os terminée est récupérée
dans une sortie identifiée. Le travail peut accompagner un jardin partagé.
Le gain est la gestion d'un lot et la collecte de ses résultats, avec un
remplissage lisible sur une grande surface. Le premier essai conserve les
matières admises et compare le résultat à neuf composteurs indépendants.
Un compost spécial, des engrais ou des sols enrichis seraient une extension
à concevoir avec It's Alive ! ; ils ne sont pas requis pour cette première fiche.
**À décider :** progression commune ou neuf cellules de maturation derrière
le stock commun, rendement, cadence et éventuel travail manuel.
**Essai :** graines acceptées, objet non compostable refusé, mélange de stocks,
sortie pleine et maturation conservée après déchargement.
### 4. Citerne / Cistern
**Base vérifiée :** les chaudrons stockent notamment eau et lave ; certaines
fonctions de potions et de teinture de leur présentation appartiennent à
Bedrock. [Présentation Mojang des chaudrons](https://www.minecraft.net/en-us/article/cauldron).
**Proposition :** neuf chaudrons en **3 × 3** forment une réserve commune
avec niveau visible et point de puisage. Premier usage proposé : l'eau,
apportée et retirée avec de vrais récipients. La lave serait un autre contenu
admis, à décider avec son comportement de rupture. Un bassin unique conserve
un seul contenu compatible ; aucune conversion d'un liquide en un autre.
La Citerne peut devenir le réservoir d'une cuisine ou d'un atelier de potions.
Son intérêt augmente avec les futures connexions physiques ; stockage et
pompage restent deux fonctions distinctes. La capacité ne doit pas seulement
dupliquer celle d'un coffre de seaux sans avantage d'usage perceptible.
**À décider :** capacité, unités, pluie éventuelle, raccords, récipients et
restitution au démontage. Les hoppers déplacent les objets récipients selon
le contrat ; ils ne deviennent pas implicitement des tuyaux de liquide.
**Essai :** remplir, prélever une quantité, reprendre après sauvegarde et
dissocier sans créer de seaux ni déverser involontairement tout le stock.
### 5. Broyeur / Crusher
**Référence :** Create documente le broyage de cobblestone en gravier et de
gravier en sable dans sa liste de transformations. [Crushing Wheels](https://github.com/Creators-of-Create/Create/wiki/Crushing-Wheels).
**Proposition :** deux rangées de trois meules, séparées par un passage,
forment deux rouleaux qui traitent des matériaux déposés. Une autre forme
compacte reste possible. Il s'agit d'une **nouvelle fonction** donnée aux
meules assemblées, à valider explicitement : la meule vanilla n'est pas un
broyeur de roche. Le trajet des objets explique visuellement la transformation.
Des granulats pour la construction seraient un premier usage. La mouture des
aliments reste à coordonner avec le moulin déjà prévu dans It's Alive !.
Recettes de recyclage, pigments et traitement des minerais sont des extensions
distinctes ; aucun doublement de minerai n'est adopté par la référence à Create.
**Arbitrage central :** la chaîne pierre renouvelable → gravier → sable
modifierait l'intérêt des gisements et de l'exploration dans Sanctuary.
Décider si ce résultat est souhaité, puis choisir rendement et coût réel.
**Essai :** bilan de matière d'une recette, cadence, arrêt et boucles de
recyclage ; le retour ne doit pas fabriquer plus de matière qu'il n'en engage.
### 6. Tisserie / Textile Workshop
**Base vérifiée :** le métier à tisser applique des motifs et couleurs
successifs aux bannières. [Présentation Mojang du métier à tisser](https://www.minecraft.net/en-us/article/block-week--loom).
**Proposition :** six métiers à tisser en façade **3 × 2** deviennent un
atelier qui conserve une composition de motifs, ses couleurs et une commande
de bannières. Plusieurs joueurs apportent supports, colorants et motifs ; la
construction présente un grand aperçu et prépare la série demandée.
L'intérêt à éprouver est l'édition persistante d'une composition et son suivi
matériel, par exemple pour une faction. Une simple copie de bannière ne suffit
pas à justifier cette machine. Textile culinaire, tentures et nouveaux tissus
ne deviennent pas des dépendances obligatoires de cette proposition.
**À décider :** avantage sur les outils de bannière existants, format du modèle,
droits sur les motifs, consommation et lien avec les collections.
**Essai :** réalisation d'un motif composé, réapprovisionnement et reprise ;
une bannière rare ou un motif manquant ne doit pas être copié gratuitement.
### 7. Discothèque / Record Console
**Base vérifiée :** Minecraft Java permet déjà les interactions des hoppers
et droppers avec les jukebox, ainsi qu'un signal pendant la lecture.
[Notes officielles Java 1.19.4](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-19-4).
**Proposition :** plusieurs jukebox adjacents choisis, par exemple un meuble
**3 × 2**, forment une collection écoutable avec ordre de lecture, prochain
morceau, arrêt et répétition. Chaque disque reste un objet réel ; une seule
lecture commune est émise. Le meuble pourrait montrer les disques disponibles.
La valeur est le choix et la modification d'une programmation musicale
sur place. Le Carillon compose des notes ; la Discothèque joue des disques.
Une simple boucle automatique serait trop proche des montages déjà possibles.
**À décider :** sélection du groupe, capacité, interface, commandes redstone,
reprise du morceau et portée sonore. **Essai :** modifier la liste pendant
l'écoute, rejoindre à deux joueurs, retirer le disque actif et casser un
composant ; pas de musique fantôme ni de disque perdu.
### 8. Antenne sculk / Vibration Array
**Base vérifiée :** un capteur sculk calibré filtre les vibrations suivant
un signal ; Mojang documente également la réémission avec l'améthyste.
[Snapshot Java 23w12a](https://www.minecraft.net/de-de/article/minecraft-snapshot-23w12a).
**Proposition :** neuf capteurs calibrés en surface **3 × 3**, avec lecture
commune des catégories reçues et petite mémoire des derniers événements.
Plusieurs catégories peuvent être surveillées et affichées ensemble. Exemple :
une porte réagit à une courte suite de gestes ; l'instrument permet de voir
lequel a été reçu ou manque. La durée de mémoire reste bornée.
Le Veilleur observe des changements de blocs devant lui. L'Antenne apporte
une lecture d'événements vibratoires ; elle ne révèle pas automatiquement le
nom d'un joueur, ses coordonnées ou des lieux hors de portée. Le simple gain
de rayon ne suffit pas à justifier neuf composants.
**À décider :** filtres, lecture visible, sorties et distinction avec un
contrôleur branché sur des capteurs ordinaires. **Essai :** catégories distinctes,
obstacles de laine, événements simultanés, boucles provoquées par la propre
machine et expiration de la mémoire.
## Compléter les machines existantes avant de les multiplier
| Idée examinée | Recommandation pour notre catalogue |
| --- | --- |
| Grande fonderie, four à alliages, grand fumoir | Examiner d'abord les modes et recettes du **Fourneau** ; un autre bâtiment doit offrir un procédé distinct. |
| Silo à matériau unique | Examiner un réglage du **Fût** avant d'ajouter un deuxième stockage volumineux. |
| Table de fabrication géante | Préciser le **Métablit** ; le [crafter vanilla automatise déjà la fabrication](https://www.minecraft.net/en-us/article/crafting-crafter). Une grille plus grande demande des recettes et un usage propres. |
| Pont rétractable, grande porte, élévateur court | En faire des montages de réception des **méga-pistons**, avec leur course de trois blocs. Un ascenseur à longue course demanderait un autre contrat. |
| Mur de cartes, bibliothèque de plans | Éprouver les **présentoirs** et les plans existants avant de créer une table cartographique supplémentaire. |
| Grand afficheur lumineux | Confronter à l'**afficheur programmable** déjà conçu ; ne pas créer deux systèmes d'écran par simple changement de nom. |
| Presse à moule | Conserver le choix historique d'abandon. La présence de presses dans d'autres mods ne réouvre pas cette décision à elle seule. |
| Serre qui accélère tout, carrière automatique, générateur de ressources | Réserver une conception propre avec coûts et conséquences sur exploration, métiers, progression et terrain. |
## Ancienne base de liste d'implémentation — non retenue
**Ordre conseillé, encore à choisir ensemble.** Chaque appareil reste un lot
jouable autonome ; les groupes ci-dessous rapprochent les usages et dépendances.
La clé arrive avec le premier appareil. Aucune branche de code n'est créée ici.
| Groupe proposé | Entrées | Pourquoi cet ordre / condition |
| --- | --- | --- |
| **1. Première construction** | **Clé dorée + Fût** | Éprouver assemblage volontaire, contenu commun, accès à deux et dissociation avec une fonction immédiatement utilisable. |
| **2. Atelier quotidien** | **Trémie, Fourneau, Atelier de taille, Compostière** | Faire circuler, transformer et préparer les matériaux. Le Fourneau exige sa première recette composée utile et un choix de chauffe. |
| **3. Lieux collectifs** | **Présentoirs, Carillon, Discothèque** | Donner des usages visibles aux collections et à la musique ; ces lots peuvent avancer indépendamment des recettes industrielles. |
| **4. Préparation et liquides** | **Alambic, fermentation, Citerne** | Fixer les lots, consommations et règles de temps. La fermentation dépend du contrat culinaire ; l'Alambic peut fonctionner avec ses fioles sans attendre la Citerne. |
| **5. Mécanismes** | **Méga-pistons, Veilleur, batterie de distribution** ; **Antenne sculk** à départager | Éprouver grandes constructions mobiles, observation et commandes. L'Antenne doit démontrer son apport face aux capteurs et au futur contrôleur. |
| **6. Recettes et ateliers spécialisés** | **Broyeur, Métablit, Tisserie** | Choisir respectivement l'effet sur les ressources, le rôle du projet collectif et l'avantage d'une composition textile persistante. |
Les familles historiques retenues gardent leur statut ; les nouvelles entrées
de cette table sont des candidates. Si la première livraison doit montrer
prioritairement une transformation plutôt qu'un stockage, **Fourneau + clé**
reste une alternative cohérente au Fût. Ce choix appartient à la prochaine
discussion, pas à la recherche seule.
## Vérification de la cible et limites de l'étude
Lecture complémentaire du JAR de sources Minecraft **26.3-pre-2** déjà présent
dans le cache Gradle local, sans copie des dépendances dans Git :
- `StonecutterMenu` : recettes à entrée unique, sélection et résultat natif.
- `BrewingStandBlockEntity` : trois positions de fioles ; combustible lu via
`DataComponents.BREWING_FUEL`, durée influencée par son multiplicateur.
- `ComposterBlock` : couches apportées par le composant `Compostable` et son
contexte, plutôt qu'une table d'efficacité à recopier depuis un vieux guide.
- `CalibratedSculkSensorBlockEntity` : filtre de fréquence et rayon d'écoute
local de 16 blocs ; aucune portée de multibloc décidée par cette lecture.
- `JukeboxBlockEntity` : lecteur de morceau, objet conservé et données de reprise.
Ces lectures vérifient des points précis et ne constituent pas un prototype
de multibloc ni une mesure de performance. Le modèle de chaudron de Bedrock
n'est pas une preuve de comportement Java ; le futur contrat des liquides doit
être vérifié sur la cible avant implémentation.
La recherche a porté sur les fonctions, les gestes, les recouvrements et les
dépendances. Le coût relatif d'implémentation est une appréciation technique ;
aucune estimation de durée ni compatibilité de mod externe n'est promise.
Liens locaux et diff documentaire vérifiés. Aucun code ou binaire modifié.
+153
View File
@@ -0,0 +1,153 @@
# MB-01 — Cadrer le catalogue des machines multiblocs
**Ticket local ouvert le 15 septembre 2026 — conception en cours.**
Le créateur demande de reprendre tout le catalogue avant de sélectionner le
premier lot d'implémentation. Le [cahier de reprise](multiblocs-conception.md)
conserve les sources, les anciennes décisions et les propositions ouvertes.
**Décision sur le complément :** les huit candidats de la
[recherche sourcée](multiblocs-recherche.md) sont rejetés par le créateur,
jugés sans intérêt ou contraires au contrat Minecraft Vanilla. Reprendre
la liste antérieure ; les recommandations de cette recherche ne sont pas retenues.
Branche documentaire réservée : `codex/multiblocs-ticket`.
Elle est créée ; le checkout de travail existant reste sur sa branche en cours.
Aucun numéro `beta.xxx` réservé et aucune issue distante publiée.
## Ce que le joueur doit pouvoir faire à terme
Construire une machine à partir de blocs, choisir de les réunir avec la clé
à molette dorée, bénéficier d'une fonction commune visible, puis retrouver
les composants indépendants sans perdre ni dupliquer le stock actuel.
Les blocs simplement voisins gardent leur fonctionnement individuel.
## Résultat vérifiable de ce ticket de conception
Obtenir un catalogue dont chaque entrée indique sa fonction, son statut,
ses choix ouverts et un scénario jouable de réception. Compléter ensuite les
fiches retenues et ouvrir des tickets d'implémentation autonomes avec leur
branche. **MB-01 ne déclare pas toutes les machines prêtes à coder en un seul lot.**
**Sélection du 16 septembre 2026 : Fourneau et Fût.** Le créateur demande
de réfléchir à leur intégration. Ce duo constitue le premier périmètre à
concevoir ; aucun ordre de livraison entre les deux ni valeur de fonctionnement
supplémentaire n'est encore validé. Branche de cette reprise documentaire :
`codex/multiblocs-fourneau-fut-cadrage`.
Confirmation du créateur : **la clé dorée fait partie du premier lot**.
Les cubes pleins de 27 fours et de 27 barils, la cuisson par fournées avec
combustible commun et le Fût à **729 cases avec recherche et pages** sont
acceptés. Les neuf entrées du Fourneau, ses durées, son débit, les gestes et
la recette de la clé restent à préciser.
**Clarification : tout It's Alive sera intégré à Sanctuary ultérieurement,
pas dans ce lot.** Le Fourneau pourrait alors remplacer la cuisinière ; le
détail de ce remplacement reste à définir. Le [cadrage corrigé](multiblocs-itsalive-contrat.md)
remplace la proposition de passerelle entre mods autonomes. Le premier lot
multiblocs ne dépend pas d'un portage immédiat d'It's Alive.
## Périmètre à passer en revue
Fourneau, Fût, grand baril de fermentation, présentoirs, méga-pistons, Trémie,
Carillon et Métablit. Réexaminer séparément Veilleur et batterie de distribution.
Conserver les installations en réserve et les idées écartées avec leur statut.
Rapprocher les contrats de l'afficheur et de Galactium lorsque nécessaire,
sans imposer leur livraison aux machines utilisables localement.
## Décisions à produire avant les tickets de code
- [ ] Pour chaque entrée, confirmer maintien, révision, report ou abandon.
- [x] Compléments de la recherche arbitrés : les huit propositions sont
rejetées. Aucun de ces ajouts n'entre dans la liste d'implémentation.
- [x] Premier périmètre sélectionné : Fourneau et Fût, le 16 septembre 2026.
- [ ] Compléter les six rubriques de la fiche du cahier : construction,
apparence, usage, raccords, démontage et progression. Distinguer les nombres
retenus des valeurs d'essai, et donner les noms et libellés FR/EN nécessaires.
- [ ] Fixer les gestes de la clé sans conflit entre tourner, sélectionner,
assembler et dissocier ; décrire l'aperçu, l'annulation et les refus visibles.
- [ ] Fixer obtention, recette et éventuelle usure de la clé. Définir les premiers
blocs orientables, la conservation de leur état et les opérations admissibles.
- [ ] Décider apparence après assemblage, orientations et éventuelles tailles
supplémentaires, appareil par appareil.
- [ ] Choisir un premier résultat jouable et rédiger son ticket d'implémentation
avec valeurs d'essai, dépendances réelles et branche `codex/<sujet>`.
## Découpage d'implémentation proposé
Fourneau et Fût sont les deux lots retenus pour la conception de la première
intégration. Les autres lignes restent des **lots candidats**, sans ordre de
livraison validé ni sous-ticket distant publié. Le premier appareil livré emporte
la clé et le contrat commun nécessaires à son usage réel ; éviter de livrer
un mécanisme d'assemblage sans machine utilisable.
| Lot candidat / branche prévue | Résultat jouable et vérifiable |
| --- | --- |
| **Fourneau**`codex/multibloc-fourneau` | Assembler 27 fours, cuire une fournée, retirer le résultat, arrêter/reprendre et dissocier. Chauffe et capacités à préciser. Prévoir l'accueil futur de recettes composées ; la fusion culinaire d'It's Alive est différée. |
| **Fût**`codex/multibloc-fut` | Assembler 27 barils, déposer et retrouver un stock commun sur plusieurs pages, l'utiliser à deux joueurs et avec un hopper, puis dissocier sans perte. |
| **Fermentation**`codex/multibloc-fermentation` | Engager plusieurs stacks d'une recette aux bonnes proportions, suivre le lot et récupérer une seule production. Dépend d'un contrat culinaire et temporel explicite. |
| **Présentoirs**`codex/multibloc-presentoirs` | Remplir une façade de 81 objets distincts visibles et quatre façades totalisant 324, consulter les supports admis et récupérer les objets d'un angle cassé une seule fois. |
| **Méga-pistons**`codex/multibloc-mega-pistons` | Commander une tête 3 × 3 sur une course animée de trois blocs, vérifier un obstacle intermédiaire, la variante collante et une interruption. |
| **Trémie**`codex/multibloc-tremie` | Choisir entre neuf circuits individuels et une collecte commune de 45 cases, constater la sortie et son débit, le verrouillage retenu et le cas d'une destination pleine. |
| **Carillon**`codex/multibloc-carillon` | Choisir un groupe adjacent, jouer un accord puis une courte séquence selon le mode retenu, réaccorder une note et garder un groupe voisin indépendant. |
| **Métablit**`codex/multibloc-metablit` | Si la fonction est retenue : préparer un projet persistant à deux joueurs, quitter/revenir, apporter les pièces manquantes et produire un résultat unique. |
## Contrat commun requis par la première implémentation
Le code reste côté serveur pour l'appartenance des composants, les stocks,
les cycles et les opérations. Un bloc ne peut appartenir à deux machines.
La reconnaissance des formes est bornée ; elle ne charge pas des chunks
distants. Les protections effectivement présentes sont respectées.
Avant de créer des données persistantes, écrire un **contrat de sauvegarde
et de migration explicite** : identité de machine, composants et orientations,
contenu actuel, travail engagé, version, suspension et reprise. Charger une
ancienne construction ne doit pas l'assembler. Définir le devenir des matières
en cas de casse, d'explosion, de dissociation et d'interruption, ainsi que les
opérations refusées. Un démontage impossible faute de place attend une
récupération explicite ; il ne supprime pas le surplus.
Décharger une partie suspend le travail concerné sans produire deux fois ni
rattraper silencieusement une durée hors ligne. Une éventuelle fermentation
hors ligne reçoit son propre contrat. Le démontage conserve l'état courant,
y compris les combustibles déjà dépensés et les résultats déjà obtenus.
La représentation technique des composants reste à choisir. Aucun nouveau
registre ni renommage d'identifiant `sanctuary:*` n'est décidé par ce ticket.
Les plans et les recettes accessibles conservent leurs responsabilités
actuelles. La fusion future d'It's Alive ne rend pas ses fonctions disponibles
dans ce lot du seul fait de la conception historique.
## Vérifications exigées des futurs lots
- [ ] Sans clé, poser une forme complète conserve ses blocs indépendants.
Assembler, dissocier puis recharger conserve le choix explicite du joueur.
- [ ] Une forme incomplète, un chevauchement, une mauvaise orientation ou un
accès refusé donne une explication sans modification partielle.
- [ ] Deux interactions simultanées, un transfert automatique et deux façades
ouvertes travaillent sur le même stock ; aucune duplication de contenu.
- [ ] Inventaires pleins, stocks préexistants, rupture, déchargement partiel,
redémarrage et réassemblage conservent matières, état et résultats selon
le contrat retenu. Tester aussi les composants répartis entre deux chunks.
- [ ] Le scénario propre à la machine fonctionne en survie par la voie
d'obtention retenue, avec interface FR/EN, puis à deux joueurs.
- [ ] Les tests utiles et `./gradlew check build` passent. Si la distribution
change, `./gradlew assemblePack` passe ; livraison et incrément mod/pack
suivent [le versionnement](versioning.md). Aucun déploiement personnel
n'est implicite dans ce ticket.
## État de la préparation
Catalogue retrouvé, décisions historiques recoupées, scénarios proposés et
références locales vérifiées. Fourneau et Fût sélectionnés ; **leurs modalités
de fonctionnement et les autres arbitrages ci-dessus restent ouverts.**
La demande courante porte sur la conception : aucun code, binaire, monde ou
format de sauvegarde modifié, aucun test de gameplay présenté comme exécuté.
## Livraison du premier lot — beta.084
La demande a évolué du cadrage à limplémentation le 16 septembre 2026.
Clé, Fût et Fourneau sont implémentés sur `codex/multiblocs-beta084` ; le
[contrat de livraison](multiblocs-beta084.md) précise les valeurs retenues,
la sauvegarde, les tests et leurs limites. Il remplace l’état documentaire
« aucun code modifié » ci-dessus pour ce premier lot uniquement. Les autres
multiblocs et la fusion It's Alive restent différés.
+619 -1
View File
@@ -8,11 +8,600 @@ https://git.botsu.net/koka/sanctuary-beta/raw/branch/packwiz/pack.toml
```
Les sources sont sur la branche de travail du ticket. La branche `packwiz`
contient uniquement les manifestes de distribution produits par le build ; les
contient les manifestes de distribution produits par le build et licône
`icon.png` déclarée dans leur index ; les
JAR Sanctuary sont des pièces jointes de releases Gitea. Aucun JAR de mod ou
dépendance téléchargée n'entre dans l'historique Git. Le canal Beta est distinct
de l'ancien pack 26.2.
## beta.137 — Rayons solaires volumétriques
Rayons à travers les ouvertures et le feuillage, activés à 35 %, indépendants
du bloom et de l'affichage des ombres de surface. Carte solaire partagée.
[Contrat et vérifications](shader-beta137.md).
[Release beta.137](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.137)
publiée ; canal `68cb39a5edbf5d34def02f670e2488ee852605b8`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.137/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.136 — Lens flare rectangulaire
Rectangles à dégradé doux pour le soleil et la lune, activés à 30 % et
réglables indépendamment du bloom. Occultation par les blocs et phases lunaires.
[Contrat et vérifications](shader-beta136.md).
[Release beta.136](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.136)
publiée ; canal `dd5b545a7cfbb957f2c70e9dc17034b44caef98f`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.136/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.135 — SSGI en proximité et nouveaux défauts
Normales stables près des surfaces, atténuation progressive du rebond au contact.
Bloom à 20 %, PBR et SSGI activés par défaut, choix personnels existants conservés.
[Contrat et vérifications](shader-beta135.md).
[Release beta.135](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.135)
publiée ; canal `5b0df577fcd036937c25be3a1f4580f9db3103a1`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.135/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.134 — PBR optionnel et SSGI filtré
Normales procédurales en cache, rugosité/métallicité par famille et reflets
directionnels. Filtrage SSGI et suppression de sa forte réinjection neutre.
[Contrat et vérifications](shader-beta134.md).
[Release beta.134](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.134)
publiée ; canal `35ec0f6e145002f6367944df5b75e2703958eaef`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.134/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.133 — SSGI renforcé
Diffusion des couleurs rendue visible au réglage 35, même budget de rayons
et cibles GPU. [Contrat et vérifications](shader-beta133.md).
[Release beta.133](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.133)
publiée ; canal `9ceb5a5353c9d1b8bb7834a20e818fd65096ff98`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.133/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.132 — SSGI expérimental
Diffusion locale des couleurs visibles, rayon 2,5 blocs, intensité réglable,
initialement OFF. [Contrat et vérifications](shader-beta132.md).
[Release beta.132](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.132)
publiée ; canal `9edaaedc0205c525ecce9de66b5ca7827c56c28f`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis gardent leurs hashes. Aucun monde personnel ouvert ;
sauvegarde préalable `sanctuary-backups/before-beta.132/`.
Packs normal/Test/template vérifiés dans `sanctuary-beta/build/`.
## beta.131 — émissifs indépendants et précision étendue
Bloom, émissifs et highlight ON initialement. Couper le halo ou régler son
intensité à zéro garde les inclusions lumineuses. Précisions 64/128 ajoutées,
défaut 16 conservé. [Contrat et vérifications](shader-beta131.md).
[Release beta.131](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.131)
publiée ; canal `efb18c274d95d988a9566b8c52751469f002cdda`. Deux synchronisations isolées,
puis deux dans la même instance Sanctuary Beta réussies. Les 923 fichiers
personnels suivis sont conservés, préférences et sauvegardes comprises.
Aucun monde personnel ouvert ; sauvegarde `sanctuary-backups/before-beta.131/`.
Archives normal/Test/template vérifiées dans `sanctuary-beta/build/`.
## beta.130 — bloom et précision commune
Bloom réglable, masques sélectifs des vingt textures de minerais, précision
commune aux ombres et au highlight. Réglages initiaux 32/128/16 et Pixel Shadows
activé ; anciennes préférences conservées. [Contrat et vérifications](shader-beta130.md).
[Release beta.130](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.130)
publiée ; canal `68e06353bf880af04c1c72d4e3a159f11f94b619`. Deux synchronisations isolées
puis deux dans la même instance **Sanctuary Beta** réussies. Les 923 fichiers
personnels suivis, réglages de shaders compris, gardent leurs hashes. Aucun
monde personnel ouvert ; sauvegarde préalable `sanctuary-backups/before-beta.130/`.
Packs normal/Test et template vérifiés et copiés dans `sanctuary-beta/build/`.
## beta.129 — reflets CTM et portées 16256 blocs
Reflets connectés entre tous les matériaux coplanaires, portée indépendante,
ombres à 128/256 blocs, intensité rétablie à midi et correction du réalignement
cyclique de la grille lumineuse. [Contrat et vérifications](shader-beta129.md).
[Release beta.129](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.129)
publiée ; canal `2eaa0130a4cd475c598beefdab40f48fc8681ab7`. Deux synchronisations isolées
puis deux dans la même instance **Sanctuary Beta** réussies. Les 923 fichiers
personnels suivis, réglages de shaders compris, sont conservés. Aucun monde
personnel ouvert ; copie préalable dans `sanctuary-backups/before-beta.129/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
## beta.128 — stabilité des ombres, lune et feuillage
Ombres des blocs nettes et stabilisées, atténuation à midi, lune légère et
feuillage nuancé selon son épaisseur. [Contrat et vérifications](shader-beta128.md).
[Release beta.128](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.128)
publiée ; canal `eba01726ee132a6e548d129fa7ee04f24c880917`. Deux synchronisations isolées
puis deux dans la même instance **Sanctuary Beta** réussies. Les 923 fichiers
personnels suivis, réglages de shaders compris, sont conservés. Aucun monde
personnel ouvert ; copie préalable dans `sanctuary-backups/before-beta.128/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
## beta.127 — shader et ombres pixélisées
Ombres solaires optionnelles intégrées à Sanctuary · Vanilla Light, avec finesse
et portée réglables. Socle beta.126 conservé. [Contrat et vérifications](shader-beta127.md).
[Release beta.127](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.127)
publiée ; canal `7fd24a43e01ee497a23311e3c78e1dd3dddd877a`. Deux synchronisations
isolées puis deux dans la même instance **Sanctuary Beta** réussies.
Les 923 fichiers personnels suivis, réglages de shaders compris, sont conservés.
Aucun monde personnel ouvert ; copie préalable dans `sanctuary-backups/before-beta.127/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
## beta.126 — gemmes, argile et découvertes
Rubis et saphir, nouvelles textures d'items, argile conservant les couleurs
originales et commandes de découverte communes aux recettes et catalogues.
[Contrat et vérifications](gems-beta126.md).
[Release beta.126](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.126)
publiée ; canal `31749b95d21ce5bced6b9e5759499da6f8a67e6e`. Deux synchronisations
isolées puis deux dans la même instance **Sanctuary Beta** réussies.
Les 923 fichiers personnels et réglages suivis sont inchangés ; sauvegardes
restées fermées. Copie préalable dans `sanctuary-backups/before-beta.126/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
## beta.125 — placement, éclats et animaux sculptés
Coins et trois hauteurs, particules de voxels et espèces découvertes au Clay
Workshop. [Contrat et vérifications](sculpture-placement-beta125.md).
[Release beta.125](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.125)
publiée ; canal `47eb833911a96eef0b13805dafe65b2ab7b95c87`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable dans
`sanctuary-backups/before-beta.125/`. Packs normal/Test et template copiés
et vérifiés dans le dossier habituel `sanctuary-beta/build/`.
## beta.124 — une boîte par sculpture
Une boîte ajustée commune à la sélection et aux collisions ; détails physiques
simplifiés, orientation/ancrage et éclairage conservés.
[Contrat et vérifications](sculpture-bounds-beta124.md).
[Release beta.124](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.124)
publiée ; canal `67ebcc7d07f8b75e8988f6099e3d6e5704f123fb`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.124/`. Packs normal/Test et template également
copiés et vérifiés dans le dossier habituel `sanctuary-beta/build/`.
## beta.123 — clé dorée et clé de Steve
La clé dorée se limite aux orientations cohérentes ; la clé de Steve reprend
les états et textures libres, utilisables aussi en survie dès sa récupération.
[Contrat et vérifications](wrench-safety-beta123.md).
[Release beta.123](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.123)
publiée ; canal `f988d01b901f2d3eda0b4ab47a48540dc627d1b5`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.123/`.
## beta.122 — formes et lumière des sculptures
Sélection et collisions sur les voxels réels ; suppression de l'occlusion cubique.
[Contrat et vérifications](sculpture-shape-light-beta122.md).
[Release beta.122](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.122)
publiée ; canal `3d340bea0093b709c6018624795a1b3ca557b72d`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.122/`.
## beta.121 — texture de clé et pack personnel
PNG du créateur et copie complète modifiable depuis l'écran des packs.
[Contrat et vérifications](resourcepack-template-beta121.md).
[Release beta.121](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.121)
publiée ; canal `e3e6572da9288fbbcfa36bf6b7dd3aa0d1c54f5e`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.121/`. Le template personnel est créé par le
joueur, jamais géré ou réécrit par packwiz.
## beta.120 — clé dorée et états de blocs
Gestes du debug stick, rotation des textures et assemblages prioritaires.
[Contrat et vérifications](golden-wrench-beta120.md).
[Release beta.120](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.120)
publiée ; canal `e8060764a444a58b0a17318a3821dfeb1a0c33c6`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.120/`.
## beta.119 — pose centrée des sculptures
Centre accessible au point visé, bords conservés et grille entière de 1/16.
[Contrat et vérifications](sculpture-center-beta119.md).
[Release beta.119](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.119)
publiée ; canal `5e823af7807f524f6394acad402fe62328c7e4ab`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.119/`.
## beta.118 — murets en briques colorées
Seize murets natifs, recettes, tailleur, eau et série créative par couleurs.
[Contrat et vérifications](colored-brick-walls-beta118.md).
[Release beta.118](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.118)
publiée ; canal `e6bab433bea9528f67d39af0d6c7bcb6443e4817`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.118/`.
## beta.117 — grain des textures et sculptures en chapeau
Échantillonnage des pixels de plusieurs textures, grain stable même sur un
modèle uni et conservation des données du chapeau.
[Contrat et vérifications](sculpture-texture-grain-beta117.md).
[Release beta.117](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.117)
publiée ; canal `a5b75a70f86e42afb8e06ba4daa9880d61c6373e`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.117/`.
## beta.116 — palettes de sculpture et Fourneau
Le Clay Workshop utilise les nuances des textures de blocs ; le Fourneau
corrige les décalages de cases et explique la chauffe.
[Contrat et vérifications](sculpture-materials-beta116.md).
[Release beta.116](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.116)
publiée ; canal `c741870160f8a21f0a9793f20f0e624ebdbacdb6`. Deux
synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussies. Les 923 fichiers personnels et réglages suivis sont inchangés ;
sauvegardes restées fermées. Copie préalable des fichiers remplacés dans
`sanctuary-backups/before-beta.116/`.
## beta.110 — version commune
Clay Workshop, Statuaire et import GLB intégrés aux œufs et à la neige saisonnière.
[Contrat, vérifications et suivi de mise à jour](clay-workshop-integration-beta110.md).
[Release beta.110](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.110)
publiée ; canal `828353a6e2bd747f4f473ae9fb9e965d38032419`. Deux synchronisations
isolées puis deux dans la même instance **Sanctuary Beta** réussies. Minecraft
26.3 finale, Loader 0.19.5, Fabric API 0.160.5+26.3. Les 923 fichiers personnels
et réglages suivis sont inchangés ; sauvegardes restées fermées. Copie préalable
des fichiers remplacés : `sanctuary-backups/before-beta.110/`.
## beta.105 — archives locales
Saisons et neige, chapeaux vivants, molette du fût et panoramas avec shader.
[Contrat, tests et empreintes](living-hats-seasons-beta105.md).
Archives normales/Test construites en copie isolée pour préserver le chantier
beta.106 simultané. Aucun déploiement ni publication du canal.
## beta.104 — archives locales
Contraste des argiles grise et noire et rangement beta.103.
[Validation](clay-contrast-beta104.md). Packs normal/Test locaux, aucun déploiement.
## beta.103 — archives locales
Rangement créatif par séries de 16. [Détails](colored-bricks-order-beta103.md).
Packs normal/Test locaux ; aucune publication ni installation personnelle.
## beta.102 — archives locales
Briques et argiles des seize couleurs, Minecraft 26.3. Les nouvelles textures
sont embarquées dans le mod ; le resource pack beta.090 reste compatible.
[Contrat et validation](colored-bricks-beta102.md).
Aucune publication du canal ni installation personnelle.
## beta.101 — archives locales
Correctif datterrissage des familiers volants, Minecraft 26.3, resource pack
beta.090 inchangé. [Validation](flying-landing-beta101.md).
Aucune publication du canal ni installation personnelle.
## beta.100 — archives locales
`Sanctuary-beta.100.mrpack` et `Sanctuary-Test-beta.100.mrpack` : statues
conditionnées aux découvertes et promenade des familiers. Minecraft 26.3,
resource pack beta.090 inchangé. Voir [validation](exploration-familiers-beta100.md).
Aucun canal publié ni déploiement personnel pour cette livraison.
## beta.099 — Catalogue et Progression
Packs normal/Test locaux pour Minecraft 26.3 finale.
[Contrat, génération et vérifications](catalogue-progression-beta099.md).
Les anciennes salles sauvegardées restent inchangées. Aucun canal ou instance
personnelle modifié.
## beta.098 — Construction créative
Packs normal/Test locaux pour Minecraft 26.3 finale. Ajout du bouton créatif
pour construire le plan du Métabli. [Contrat](creative-construction-beta098.md).
Aucun canal ni instance personnelle modifié.
## beta.097 — Temples et plans texturés
Packs normal/Test locaux pour Minecraft 26.3 finale. Présence des temples de
secours et aperçu avec les textures du pack actif.
[Contrat et vérifications](temple-crash-beta097.md).
Le rapport initial concerne beta.089 sur 26.3-pre-2 ; le correctif cible la
version 26.3 finale du dépôt. Aucun canal ni instance personnelle modifié.
## beta.096 — Métabli
Les packs locaux normal/Test ajoutent latelier et séparent son catalogue des
commandes de construction accessibles avec K. Minecraft 26.3, dépendances et
pack intégré beta.090 conservés. [Détails et vérifications](metabli-beta096.md).
Aucun canal publié ni instance personnelle modifié.
## beta.095 — Texture de la tige des super pistons
Les packs locaux normal/Test corrigent quatre modèles de la tige centrale.
Minecraft 26.3, dépendances et pack intégré beta.090 conservés.
[Détails et vérifications](piston-shaft-beta095.md).
Aucun canal publié ni instance personnelle modifié.
## beta.094 — Fourneau allumé
Les packs locaux normal/Test ajoutent les braises de façade et corrigent les
particules du Fourneau. Minecraft 26.3, dépendances et pack de textures intégré
beta.090 conservés. [Détails et vérifications](fourneau-allume-beta094.md).
Aucun canal publié ni instance personnelle modifié.
## beta.093 — Recherche créative
Les packs locaux normal/Test beta.093 corrigent laccès graphique depuis les
infobulles indexées en arrière-plan. Cible Minecraft 26.3 finale ; le rapport
initial provenait de beta.089 sur 26.3-pre-2. Dépendances et textures inchangées.
[Diagnostic et vérifications](tooltip-crash-beta093.md). Aucun canal publié
ni instance personnelle modifié.
## beta.092 — Clic molette des super pistons
Les packs locaux normal/Test beta.092 corrigent la sélection des composants
de super piston. Dépendances et textures beta.090 conservées.
[Contrat et vérifications](multiblock-pick-beta092.md). Aucun canal publié
ni instance personnelle modifié.
## beta.091 — Interactions des passagers
Les packs locaux normal/Test beta.091 ajoutent les clics sur les animaux embarqués
et permettent de les viser à larrière du bateau. Minecraft 26.3, Fabric et JEI
restent ceux de beta.090 ; les textures beta.090 sont conservées.
[Contrat et vérifications](boat-passengers-beta091.md). Aucune publication du canal
ou installation personnelle nest effectuée.
## beta.090 — Minecraft 26.3 finale
La cible locale passe à Minecraft 26.3, Fabric API 0.160.5+26.3, avec Loader
0.19.5 et Java 25. Demeure et JEI sont reconstruits pour la même version ;
le pack graphique devient beta.090. [Contrat et vérifications](minecraft-26-3-beta090.md).
Les archives normal/Test beta.090 sont des livraisons locales : le canal
publié et l'instance Prism ne sont pas modifiés par cette migration du projet.
## beta.077 — tourbillon et navigation
[Nuages](cloud-vortex-beta077.md) · [Menus](menu-navigation-beta076.md).
Client natif, `check build`, sources et archives normal/Test vérifiés.
Textures beta.070 et 155 anciennes archives conservées. Le lot de menus
beta.076 est inclus ici ; aucun pack intermédiaire beta.076 na été publié.
Aucun déploiement dans une instance personnelle ni sur le canal distant.
- [Sanctuary-beta.077.mrpack](../build/Sanctuary-beta.077.mrpack), 9608669 octets.
SHA-256 : `1c3839f086e9545c920e4ebfc13f99a25d0684fa6f2dc8e1b2a842a8e7044045`.
- [Sanctuary-Test-beta.077.mrpack](../build/Sanctuary-Test-beta.077.mrpack), 9627602 octets.
SHA-256 : `1b0c302b9d4d5f59d5e954adbecde4acbacd9409c8cd6a743ccbe116826d7c0a`.
## beta.075 — bibliothèque locale
[Correctif et vérifications](plans-library-beta075.md). Retrait du bouton
Minecraft Schematics. Build, sources, JAR et exports normal/Test vérifiés ;
onze archives précédentes conservées. Aucun déploiement personnel ou distant.
- [Sanctuary-beta.075.mrpack](../build/Sanctuary-beta.075.mrpack), 9594917 octets.
SHA-256 : `fba6e648c2569b115713060862166b80ffc38620929f2fb3e110868d61d6257e`.
- [Sanctuary-Test-beta.075.mrpack](../build/Sanctuary-Test-beta.075.mrpack), 9613850 octets.
SHA-256 : `65a7f40f8c10c58437980cf6ea40e45b5b8c9e1e75e8dbadcc981aa5f41e19fd`.
## beta.074 — autonomie des familiers
[Contrat et vérifications](familiar-autonomy-beta074.md). Quatre comportements
spontanés distincts, garde locale et ordres H bref/maintenu. Textures beta.070.
Trois parcours client natifs et `check build assemblePack assembleTestPack`
réussis. JAR, 1 689 classes et sources comparés ; neuf archives précédentes
conservées. Aucun déploiement sur le canal ou dans une instance personnelle.
- [Sanctuary-beta.074.mrpack](../build/Sanctuary-beta.074.mrpack), 9595113 octets.
SHA-256 : `cc73e93c2ae17d6b52b6c8dd53639771645c5e5becd848e2c76765e32c919c5d`.
- [Sanctuary-Test-beta.074.mrpack](../build/Sanctuary-Test-beta.074.mrpack), 9614048 octets.
SHA-256 : `0851e10350788b76efa96ec1a50db951a74200213399e2a4216f8d5b1b8fafcb`.
[Reçu de vérification](../build/autonomy074-artifact.json).
## beta.073 — arènes et paris
Livraison locale isolée sur Minecraft 26.3-pre-2. Le resource pack reste
beta.070. [Contrat du ticket](arenas-beta073.md). Aucun canal distant ni aucune
instance personnelle n'est modifié. Client natif, `check build`,
assemblage et vérification des archives réussis.
- [Pack normal beta.073](../build/Sanctuary-beta.073.mrpack), 9 592 283 octets.
SHA-256 : `9ef9c1c2f156d1eb9dcb31ae0f0364a798e46867ce86d56ae25fa2ae5c5105ca`.
- [Monde plat rapide beta.073](../build/Sanctuary-Test-beta.073.mrpack), 9 611 218 octets.
SHA-256 : `5394215474faea6a321cf44d64c01acaaa7fda554448110a3c8b47dcddf2f9c7`.
- [Contrôles et provenance](../build/arena073-artifact.json).
## beta.072 — statues et plans natifs
[Contrat, formats et essais](statues-plans-beta072.md). Outil K intégré à
Sanctuary, création de statues à partir des modèles et textures du jeu,
import/export de plans, aperçu et collage créatif contrôlé côté serveur.
Sans dépendance Litematica/MaLiLib ; textures beta.070 conservées.
- [Pack normal beta.072](../build/Sanctuary-beta.072.mrpack), 9 534 082 octets.
SHA-256 : `ccadfa614595f4409cb8eab9c795f112e65854c8e84864c8a8fb67dbc2de450e`.
- [Monde plat rapide beta.072](../build/Sanctuary-Test-beta.072.mrpack), 9 553 013 octets.
SHA-256 : `cb1786ffbf0290fc2cc5437647423e96abee8bca7737537aecbb12de98aee811`.
Reçu `build/statues-research/artifacts.json` : 1 671 classes, 758 sources Java,
150 ressources graphiques conformes ; index et ZIP vérifiés. Client natif,
sept tests serveur et 130 tâches Gradle réussis. Archives locales uniquement ;
aucun canal public ni instance personnelle modifié.
## beta.071 — personnalités et montures
[Contrat, audit et tests](familiar-personality-beta071.md). Quatre caractères,
poursuite plus vive, araignées grimpantes, Nautilus qui préserve lair du
cavalier et Strider à la surface de la lave. Construction depuis les sources
isolées de la 71 pour préserver le chantier simultané de la 72.
- [Pack normal beta.071](../build/Sanctuary-beta.071.mrpack), 9462323 octets.
SHA-256 : `1ab36663fe24313597c5328170a3eb2ca2e33bfdfc4c6fbc85c1f5c03102628c`.
- [Monde plat rapide beta.071](../build/Sanctuary-Test-beta.071.mrpack), 9481258 octets.
SHA-256 : `06309f4cd382053fb42d80c3f131152932e07523ace799c50d1d899026029a92`.
Reçu `build/familiar071-artifact.json` : 1 651 classes conformes, seules les
classes du familier prévues par le ticket changent. Les 150 ressources de la
beta.070, JEI, les autres ressources et les archives précédentes sont intacts.
Aucun canal public ni instance personnelle modifié.
## beta.070 — resource pack embarqué
[Contrat et vérifications](resourcepack-beta070.md). La source versionnée du
pack est embarquée dans le JAR et activée par défaut via Fabric ; aucun fichier
doptions personnelles nest distribué. Les variantes normal/Test et le ZIP
autonome utilisent les mêmes 150 ressources, comparées octet pour octet.
- [Pack normal beta.070](../build/Sanctuary-beta.070.mrpack), 9451989 octets.
SHA-256 : `9a582e17394bcb7327bd3b5a5a789b297431e41bf43409ed117fac728bbda46c`.
- [Monde plat rapide beta.070](../build/Sanctuary-Test-beta.070.mrpack), 9470924 octets.
SHA-256 : `5732e570c1af20f4d4896292c51bb38fb5c642d0ec81c6a1273ba27318938cd4`.
- [Resource pack autonome beta.070](../build/Sanctuary-Resource-Pack-beta.070.zip), 3757596 octets.
SHA-256 : `fe81653d09584f67da5f56c4fd6c866c733ec81e07559a5f132a44d44bbaadb6`.
Source du resource pack : commit `85e062ed91c7`. Reçu
`build/resourcepack070-artifact.json`, 1 648 classes conformes et archives
beta.069 intactes. Aucun canal public ni instance personnelle modifié.
## beta.069 — ordres du familier sur H
[Contrat et vérifications](familiar-orders-beta069.md). Retour des ordres
sur H et du changement de main sur F ; G reste le pouvoir. Parcours client,
compilation générale et archives vérifiés.
- [Pack normal](../build/Sanctuary-beta.069.mrpack), 5726225 octets.
SHA-256 : `1c923452ff4d5d186309390fac3306b8e05162143c852619b7519741002aa165`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.069.mrpack), 5745158 octets.
SHA-256 : `bed499fa29f4247a9e321207df503b3147b8b4fc8c8541d817cdfe2a2db9a945`.
Reçu `build/familiar069-artifact.json` : 1 647 classes conformes, seule
`FamiliarClient` change ; anciens packs conservés. Aucun canal public ni
instance personnelle modifié.
## beta.068 — animation du préchargement
[Contrat et vérifications](loading-animation-beta068.md). Petite ligne SGA
animée pendant lattente, étapes réelles et progression native conservées.
Client natif, comparaison de huit captures et compilation générale réussis.
- [Pack normal](../build/Sanctuary-beta.068.mrpack), 5726390 octets.
SHA-256 : `cfb55d414186e6be5f0e19770049158302d4fbf37c0fa696306acda428594a2e`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.068.mrpack), 5745324 octets.
SHA-256 : `643913caf577ee61b23747f378e9a21f5b1a54531901791d47d8ad0a75531dff`.
Reçu `build/loading068-artifact.json` : 1 647 classes conformes ; archives
beta.067, introduction, cache, textures et JEI préservés. Aucun canal public
ni instance personnelle modifié.
## beta.067 — touche et vol du dragon
[Contrat et vérifications](familiar-controls-beta067.md). F ouvre les ordres,
le dragon regarde devant lui, le grand porté monte avec la touche de saut.
Client natif et compilation générale réussis.
- [Pack normal](../build/Sanctuary-beta.067.mrpack), 5724176 octets.
SHA-256 : `a0dd2dc94aee0418b6ec8e29c24c847506627d63f6d22f1980ef7eacf38bc3fa`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.067.mrpack), 5743110 octets.
SHA-256 : `e2605534bbe7eed0559304f7c2cb9bd6618178eb64b042e45ff2aa596f0bec22`.
Reçu `build/familiar067-artifact.json` : 1 646 classes compilées conformes ;
archives beta.066, textures et JEI inchangés. Aucun déploiement personnel
ni modification du canal public.
## beta.066 — cosmétiques animés sans doublon
[Contrat et vérifications](head-render-beta066.md). Le rendu sépare les parties
fixes des blocs portés de leur animation native : plus de second coffre fermé
ou de cloche immobile. Parcours client et compilation générale réussis.
- [Pack normal](../build/Sanctuary-beta.066.mrpack), 5721524 octets.
SHA-256 : `04e584ba7047e87e66316ba6e06f9d809e2813a6f4227067f20ca2ace7239f3a`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.066.mrpack), 5740457 octets.
SHA-256 : `de6563aa48dededb6c1afa967987bd25e5134644596ea1908b1fa1768463aae5`.
Reçu `build/cosmetic066-artifact.json`. Archives beta.065, textures et JEI
préservés ; seule la source principale `HeadCosmeticModels` change.
Aucun canal ni instance personnelle modifié.
## beta.065 — collisions des bateaux
[Contrat et vérifications](boat-collisions-beta065.md). Les coques complètes et
les virages respectent les murs. 88 variantes et seize parcours pilotés en eau
ou en vol vérifiés. Build et comparaison des archives réussis.
- [Pack normal](../build/Sanctuary-beta.065.mrpack), 5721084 octets.
SHA-256 : `71ff1736817e2953f88a8afda5858b2e7ae23c360efdb7e25f149cbff049d764`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.065.mrpack), 5740018 octets.
SHA-256 : `4c4931146a05d6f57e9abf2303b039ab7a7bc16471a0b864873b86bef297431d`.
Reçu `build/boat065-artifact.json`. Archives beta.064 intactes ; seul
`CrewBoat` change dans le code principal. Aucun canal ni instance personnelle
modifié.
## beta.064 — cache et préparation du monde
[Contrat et vérifications](loading-cache-beta064.md). Plans dérivés réutilisés
à la réouverture, étapes réelles sur fond uni, portail de préparation supprimé.
Introduction complète conservée. Build et parcours client natif réussis.
- [Pack normal](../build/Sanctuary-beta.064.mrpack), 5720330 octets.
SHA-256 : `c05b78e2caf27d52cb318979ee66e19e5bca9c90673f8868ae50f85f0e2ff2c0`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.064.mrpack), 5739264 octets.
SHA-256 : `962800291875ab5bebda1abaedc798e7cf110ba0ef13ac168a0b85b3b2c19d24`.
Reçu `build/loading064-artifact.json` : 1 645 classes conformes au build,
archives beta.063 préservées. Aucun canal ni instance personnelle modifié.
## beta.061 — musique au portail et montures colossales
[Contrat et vérifications](arrival-mount-beta061.md). Musique démarrant au
portail et conservée jusqu'au monde ; poids des familiers selon leur taille,
monte des colossaux avec commandes et collisions serveur. Build et parcours
client natif réussis.
- [Pack normal](../build/Sanctuary-beta.061.mrpack), 5676845 octets.
SHA-256 : `c97424d94b2e2960c071795670cbc1300cf5a805c4dadbfa5dad33fccb79edbb`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.061.mrpack), 5695778 octets.
SHA-256 : `2c3a9c3cfa849a3f24c38ceaf112ef4a96f6b182faa99d1eb78f00f8f2293c63`.
Reçu `build/arrival-mount061-artifact.json` : 1623 classes conformes au
build, dépendances et archives beta.060 préservées. Aucun canal ni instance
personnelle modifié.
## beta.060 — objets et blocs sur les mobs
[Contrat et vérifications](mob-head-blocks-beta060.md). Équipement par
@@ -1533,3 +2122,32 @@ sauvegardes personnelles sont restées fermées pendant les essais et la synchro
Références officielles : [installation packwiz](https://packwiz.infra.link/tutorials/installing/packwiz-installer/),
[commandes Prism](https://prismlauncher.org/wiki/help-pages/custom-commands/),
[bootstrap v0.0.3](https://github.com/packwiz/packwiz-installer-bootstrap/releases/tag/v0.0.3).
### beta.107 — Œufs, essai isolé
Archives locales normal/Test vérifiées : [contrat](spawn-eggs-acquisition-beta107.md).
Construites sur beta.105 dans `sanctuary-eggs-beta107` ; le Statuaire beta.106,
en développement parallèle, nest pas embarqué. Les sources des œufs sont aussi
présentes dans le répertoire principal. Aucun canal, instance Prism, serveur ou
sauvegarde personnelle mis à jour.
### beta.108 — Neige en volume, essai isolé
Archives locales normal/Test vérifiées : [contrat](snow-accumulation-beta108.md).
Construites sur beta.107 dans `sanctuary-snow-beta108`, avec les œufs et un
plafond de neige confirmé à deux blocs. Statuaire beta.106 reste dans sa livraison
séparée. Sources de neige aussi présentes dans le répertoire principal, sans
modifier ses compteurs beta.106. Aucun canal, instance Prism, serveur ou
sauvegarde personnelle mis à jour.
### beta.109 — Fonte saisonnière, essai isolé
Archives locales normale/Test vérifiées. [Contrat et vérifications](seasonal-snow-melt-beta109.md). Base beta.108, avec
accumulation et œufs ; Statuaire beta.106 reste une livraison séparée. Les
nouveaux dépôts sont suivis dans les chunks et fondent progressivement selon
la saison. Les blocs antérieurs et les constructions sont conservés.
Assemblage dans `sanctuary-melt-beta109` ; sources aussi intégrées au répertoire
principal sans modifier son chantier et ses compteurs beta.106.
Aucune publication du canal, installation Prism ou sauvegarde personnelle.
+48
View File
@@ -0,0 +1,48 @@
# beta.095 — Texture du pilier des super pistons
La tige centrale utilise seulement le carré de bois central de la grande plaque
`sanctuary:block/super_piston/top`, pour les super pistons normaux et gluants.
Le prélèvement reste dans les pixels 16 à 32 de l'image originale de 48 × 48,
sans les bordures. Les UV suivent les dimensions réelles du pilier, à un pixel
par unité de modèle, sans étirement. Cela couvre aussi les segments courts dans
le socle ouvert et derrière la tête.
Les grandes plaques, le corps et les textures originales fournies restent
inchangés. La course, les collisions et les six orientations ne changent pas.
Seuls quatre modèles JSON et leur générateur sont modifiés ; aucun code Java,
identifiant ou format de sauvegarde n'évolue. La référence à la texture
Sanctuary respecte le pack de ressources actif. Aucune nouvelle image ni dépendance ajoutée.
Régénération : `python3 tools/generate-super-piston-models.py`.
## Vérifications et livraison
Le parcours client natif `Piston087ClientChecks` a réussi en 1 min 22 s
(`build/piston095-client.log`), dans un nouveau monde plat de développement,
graine 87 : six directions, normal/gluant, déplacement et retour, collisions,
charges de 108/109, obstacles, inventaires, adhérence, déchargement/rechargement
et démontage. Aucun avertissement de référence de texture manquante.
Les captures horizontales et verticales ont été inspectées dans
`build/piston095-evidence/`, notamment `0015_piston087-normal-face-open.png`
et `0001_piston087-normal-up.png`. Le bois est à la même densité que la plaque.
Le contrôle des quatre modèles vérifie que tous les prélèvements restent dans
le carré central 1632 pixels et que leurs dimensions en pixels correspondent
exactement à celles de leurs faces, raccords courts inclus. Géométrie, autres
faces et textures originales identiques à beta.094. Le générateur est reproductible.
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` a réussi
en 2 min 28 s, 124 tâches (`build/piston095-check.log`).
Les deux archives normal/Test ont été exportées et vérifiées : version beta.095,
Minecraft 26.3, même JAR Sanctuary embarqué. Les classes Java, les autres assets,
JEI et les archives beta.094 sont inchangés. Le reçu et les empreintes sont dans
`build/piston095-artifact.json` ; `build/verify-piston095.py` reproduit ces contrôles.
`git diff --check` passe.
[Pack normal](../build/Sanctuary-beta.095.mrpack) ·
[Pack test](../build/Sanctuary-Test-beta.095.mrpack).
Le serveur dédié GameTest est exclu (`-x :sanctuary:runGameTest`) pour respecter
le choix antérieur de tests client uniquement. Aucun déploiement dans une
instance personnelle, changement de monde ou publication du canal packwiz.
+128
View File
@@ -0,0 +1,128 @@
# Préparation locale des ombres portées pixélisées (ancien numéro beta.122)
Ticket du 17 septembre 2026, branche locale `codex/pixel-shadows-beta122`.
Cette préparation n'a jamais été publiée sous le numéro beta.122, déjà utilisé
par une autre livraison. Elle est intégrée au socle beta.126 et livrée en
[beta.127](shader-beta127.md). Les chemins et mesures ci-dessous décrivent
les essais historiques dans le dossier de préparation.
Demande : ajouter aux réglages de Sanctuary · Vanilla Light des ombres portées
pixélisées, avec une finesse et une distance réglables.
## Utilisation
Dans **Options → Shaders**, activer **Sanctuary · Vanilla Light**, puis
**Ombres portées pixélisées**. L'option est désactivée par défaut pour conserver
le coût et le rendu des installations existantes. Les choix sont :
- finesse de **8, 16 ou 32 pixels par bloc**, défaut 16 ;
- distance de **16, 32 ou 64 blocs**, défaut 32.
Ces préférences sont conservées dans `config/sanctuary-shaders.json`, avec les
anciens champs de couleur. Leurs valeurs numériques sont ramenées aux choix
admis au chargement. Les libellés et explications sont disponibles en FR/EN.
Les réglages s'appliquent sans recharger les ressources.
## Rendu et périmètre
Une carte de profondeur rend les formes d'occultation des blocs solides chargés
autour de la caméra, indépendamment de leur présence à l'écran. Les dalles et
escaliers conservent leurs formes. Le cache est invalidé par les changements de
blocs, les paquets de chunks et les reconstructions du moteur natif.
La direction solaire vient du ciel natif extrait par Minecraft, et respecte
ainsi l'angle solaire de Sanctuary. L'effet s'atténue sous la pluie, à l'horizon,
dans la brume et à la limite de sa portée. Il s'arrête la nuit, dans les dimensions
sans soleil, dans les fluides et lorsqu'un moteur externe suspend Vanilla Light.
La profondeur du monde est lue directement par le GPU après le rendu du monde,
avant la main et l'interface. L'inverse de la projection réelle inclut les effets
de caméra. Les points recevant l'ombre sont arrondis sur une grille ancrée dans
le monde ; le plan de la face est conservé pour limiter les auto-ombres.
La carte solaire utilise également une origine alignée sur ses texels.
Le HUD, la main, les étoiles et les captures panoramiques techniques gardent leur
chemin de rendu. Aucun niveau de lumière de gameplay, règle serveur, sauvegarde
ou générateur n'est changé. Aucune dépendance de rendu n'est ajoutée.
Cette première version couvre les **formes d'occultation des blocs** : les entités
conservent leurs ombres natives ; les feuillages ajourés, modèles non occultants,
block entities animés, eau et verre ne projettent pas de nouvelles silhouettes.
Les transparences et particules déjà composées peuvent recevoir l'assombrissement
du terrain derrière elles. Il n'y a pas d'ombres de lune ou de torches, ni de
séparation de l'éclairage local émissif dans cette passe d'assombrissement.
## Coût et cycle de vie
Les maillages sont mis en cache par section de 16³, avec au plus quatre sections
commencées par image et un budget souple de 3 ms pour leur construction. Les
ombres apparaissent progressivement pendant la préparation après activation ou
déplacement. Le volume des obstacles part de la portée choisie avec une marge de huit blocs,
puis s’étend vers le soleil sur deux fois cette portée, arrondi aux sections.
Les obstacles au-delà de ce volume ou dans des chunks non chargés ne sont pas
représentés. Les mises à jour de lumière seule ne reconstruisent pas les formes.
Le cache de sommets est plafonné à 96 Mio et omet les formes pathologiques qui
dépassent ses limites. Les textures de profondeur font entre 512 et 4 096 pixels
de côté selon finesse et portée. Le coût exact dépend de la scène et du GPU.
Les ressources sont libérées à la désactivation, au changement de monde, à la
reconstruction des ressources et à l'arrêt du client. Cette livraison est locale :
aucun avancement du canal packwiz ni installation personnelle ne fait partie du
ticket.
## Vérification
Validation native sur **Minecraft 26.3, Java 25, macOS / Apple M1, OpenGL 4.1**,
dans un nouveau monde plat de développement, graine **122** :
- Comparaison GPU activation/désactivation sur une plateforme blanche avec
pilier, dalle et escalier : **920 échantillons assombris**, 63 412 inchangés,
aucun éclairci sur les 64 332 échantillons de sol retenus.
- Pilier entièrement hors du frustum : **42 048 échantillons** restent dans
son ombre. Le retrait du pilier restitue la lumière sur **42 048 / 42 048**
échantillons et préserve les 23 616 échantillons déjà éclairés. Sa repose
restitue la même ombre, sans désactiver le cache entre ces manipulations.
- Les trois finesses et les trois portées sont appliquées en direct ; les cartes
GPU sont redimensionnées aux dimensions attendues. Désactiver l'option libère
la texture et ne soumet plus de passe d'ombres.
- À minuit, activer ou désactiver l'option donne la même image et aucune passe
solaire n'est soumise. Au retour du jour, le rendu reprend.
- Le rechargement des ressources restitue la même image. Les préférences
persistent à la relecture du fichier et leurs valeurs extrêmes sont bornées.
- Menus FR/EN inspectés en capture ; les libellés tiennent dans les contrôles
natifs à la taille de test. Les vues de finesse 8/16/32 sont conservées.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryPixelShadows122ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Succès en **1 min 17 s**, marqueur `PIXEL_SHADOWS122_CLIENT_PASS` dans
`build/pixel-shadows122-client.log`. Captures inspectées dans
`build/pixel-shadows122-evidence/final/`. Les pixels sont relus uniquement dans
le test ; le code de rendu de production n'effectue aucune lecture CPU de GPU.
Les premiers démarrages ont permis de corriger les identifiants de pipelines,
la directive GLSL `#include` attendue par 26.3 et deux libellés répétés du menu.
La commande de livraison est :
```sh
./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest
```
Le serveur GameTest dédié est exclu, conformément au refus de son EULA déjà
consigné dans les livraisons précédentes. Le test graphique utilise le serveur
intégré de son monde neuf. Aucun monde personnel n'est ouvert.
La construction finale **réussit en 2 min 18 s** (126 tâches), journal
`build/pixel-shadows122-build-final.log`. Le contrôle des archives confirme
**868 sources Java** et **1 869 classes** identiques aux sorties construites,
les ressources GLSL/FR/EN exactes dans le JAR et le template, et le même JAR
dans les profils packwiz normal et Test. Aucune fixture cliente n'est embarquée.
Reçu : `build/pixel-shadows122-artifact.json`.
Artefacts locaux : `mods/sanctuary/build/libs/sanctuary-beta.122.jar`,
`build/packwiz/`, `build/packwiz-test/` et `build/Sanctuary-Template-beta.122.zip`.
SHA-256 du JAR :
`66987681cede1d2adc1dda449078e8fa85310eb2c3fecd7a905d772ce75739c9`.
Pas de mesure de FPS, d'essai Windows/Vulkan, de pack Iris ni de silhouettes
animées revendiqués. Le shader reste un assombrissement graphique appliqué au
rendu opaque et déjà composé, avec les limites de transparence décrites plus haut.
+29
View File
@@ -0,0 +1,29 @@
# beta.075 — bibliothèque de plans
Branche `codex/plans-library-beta075`.
Dans **K → Bibliothèque**, le bouton « Rechercher sur Minecraft Schematics »
est retiré à la demande du créateur. Ses libellés FR/EN inutilisés sont supprimés.
Le placement des autres widgets se réajuste avec la disposition native.
Louverture du dossier, lactualisation, le glisser-déposer et limport des
plans locaux conservent leur fonctionnement. Aucun format, monde, texture ou
identifiant de contenu ne change. Minecraft 26.3-pre-2, resource pack beta.070.
## Vérifications
`check build assemblePack assembleTestPack` réussit en 2 min 39 s, 124 tâches.
Les 1 689 classes du JAR correspondent au build ; seul PlansScreen change
par rapport à beta.074. Les archives normal/Test et les sources sont vérifiées,
le lien est absent du bytecode et onze archives précédentes restent identiques.
Reçu : `build/library075-artifact.json`. Aucun nouvel essai client graphique.
Le serveur dédié reste
exclu conformément au refus daccepter son EULA (`-x :sanctuary:runGameTest`).
Aucun déploiement dans une instance personnelle.
## Archives
- [Sanctuary-beta.075.mrpack](../build/Sanctuary-beta.075.mrpack), 9594917 octets.
SHA-256 : `fba6e648c2569b115713060862166b80ffc38620929f2fb3e110868d61d6257e`.
- [Sanctuary-Test-beta.075.mrpack](../build/Sanctuary-Test-beta.075.mrpack), 9613850 octets.
SHA-256 : `65a7f40f8c10c58437980cf6ea40e45b5b8c9e1e75e8dbadcc981aa5f41e19fd`.
+13
View File
@@ -306,6 +306,19 @@ jusqu'à ce ticket. Mini-carte, marqueurs, partage, recettes, plans et autres
aptitudes gardent leurs tickets propres. Leur absence ne bloque pas le New
Game+ lorsque les six compétences sont au maximum.
Le [cadrage CLAIM-01 — titres de propriété temporaires](property-titles-ticket.md)
précise les décisions du 15 septembre 2026 : un titre couvre un seul chunk ;
il faut renommer l'objet puis faire un clic droit pour revendiquer le chunk.
Un autre titre portant le même nom permet d'étendre la même propriété,
y compris à un chunk séparé, sans revendiquer les chunks intermédiaires.
Les titres restent attachés aux chunks ; une réserve de **saphirs consommés
successivement** entretient leur protection en temps réel, même lorsque le
joueur est déconnecté, tant que le serveur tourne. À la fin de la période
payée, sans assez de saphirs pour renouveler, la protection disparaît
immédiatement. Acquisition des titres, tarifs d'entretien, paliers, durée des
périodes, traitement des arrêts du serveur et droits de réservation sans
protection restent à décider ; ce mécanisme n'est pas encore implémenté.
## Références et validation des livraisons
La référence historique est consultée en lecture seule dans `../26.2/sanctuary` :
+175
View File
@@ -0,0 +1,175 @@
# CLAIM-01 — Titres de propriété temporaires
**Ticket local — conception en cours, décisions du 15 septembre 2026.**
Ce document prépare le résultat jouable ; la protection n'est pas implémentée.
Branche réservée : `codex/property-titles`. Le checkout existant reste sur sa
branche de travail pour préserver les travaux en cours. Aucun numéro de
livraison réservé et aucune issue distante publiée.
## Intention et décisions confirmées
Le joueur achète des **titres de propriété temporaires** donnant des privilèges
sur un terrain. Il choisit un niveau de protection et constitue une réserve
de saphirs pour l'entretenir. Le titre reste attaché au chunk ; la protection
accordée est temporaire et renouvelable.
**Un titre couvre un seul chunk**, soit une emprise horizontale de 16 × 16
blocs alignée sur la grille Minecraft. Un même titre ne couvre pas plusieurs
chunks à la fois. Son entretien utilise ensuite des saphirs.
**Le titre est un objet à renommer avant utilisation.** Le joueur fait un
clic droit avec ce titre dans le chunk à revendiquer. Le nom donné au titre
sert de nom à la propriété ; utiliser un autre titre portant le même nom
dans un autre chunk étend cette propriété. Chaque chunk ajouté nécessite
son propre titre, conformément à la règle « un titre = un chunk ».
**Les chunks d'une même propriété peuvent être séparés** : aucune contiguïté
n'est requise. Les chunks situés entre eux ne sont pas revendiqués par cette
extension. Le moyen de renommer l'objet reste à préciser.
**Les saphirs sont consommés successivement pour entretenir le niveau de
protection choisi. Les titres restent attachés aux chunks.** À niveau et
emprise identiques, ajouter des saphirs prolonge l'entretien disponible.
Cette décision remplace la consommation successive de titres envisagée au
début de la discussion.
**L'entretien se fait en temps réel**, y compris lorsque le joueur est
déconnecté, tant que le serveur tourne. Il ne dépend pas du temps de présence
du titulaire. Le traitement du temps écoulé pendant un arrêt du serveur reste
à décider séparément.
**La protection disparaît immédiatement à épuisement de la couverture** :
lorsque la dernière période payée se termine et que la réserve ne contient
pas assez de saphirs pour renouveler, aucun délai de grâce ni baisse
progressive ne s'applique. Une réserve vide ne raccourcit pas la période
déjà payée. Le titre reste attaché au chunk ; la possibilité pour un autre
titulaire de revendiquer ce chunk sans protection reste à décider.
La protection envisagée rend les blocs plus longs à miner par les autres.
Le créateur évoque un premier ralentissement doublé et une protection pouvant
aller jusqu'à des blocs presque incassables, voire incassables. Les valeurs,
les bénéficiaires et la limite exacte restent à décider.
## Modèle proposé à préciser
Séparer dans le fonctionnement et l'interface :
- **Niveau choisi** : résistance appliquée et coût d'entretien associé.
- **Réserve** : saphirs disponibles pour les renouvellements successifs.
- **Échéance en cours** : moment de la prochaine consommation ou fin de
couverture, selon le contrat temporel à retenir.
Proposition : un niveau plus élevé coûte davantage de saphirs. Le coût et
la durée d'une période payée ne sont pas fixés ; l'emprise est d'un chunk
par titre. La gestion des réserves pour plusieurs chunks reste à préciser.
La consommation en temps réel est confirmée ; une consommation
supplémentaire provoquée par les attaques n'a pas été demandée.
Pour le premier ralentissement, l'interprétation proposée est un **temps de
minage multiplié par deux** pour un joueur non autorisé, à bloc, outil et
conditions identiques. Cela reste à confirmer. Les privilèges supplémentaires
du titulaire ne sont pas encore définis.
## Économie : entretien en saphirs, acquisition à définir
Le **saphir est retenu pour entretenir la protection des titres déjà posés**.
La [vision](vision.md#les-trois-gemmes) lui attribue déjà la réservation et la
sauvegarde de quantités limitées d'objets dans le catalogue. Ce nouvel usage
prolonge son rôle de conservation, sans supposer cette économie déjà disponible.
Restent à choisir : monnaie et prix d'achat initial des titres, lieu et geste
d'achat, obtention effective des saphirs, tarifs d'entretien, partage et
éventuel transfert. Le titre utilisable en jeu est un objet renommable ; le
registre serveur et le dépôt des saphirs dans la réserve restent à définir.
## Arbitrages nécessaires au premier lot jouable
- Emprise d'un chunk par titre confirmée ; préciser la portée verticale,
les dimensions concernées, le nombre maximal de chunks par titulaire et
les règles de chevauchement. Choisir une réserve par chunk ou une réserve
commune avec des règles explicites d'affectation des saphirs et de
renouvellement lorsque le solde ne suffit pas pour tous les chunks.
- Création et extension par titre renommé puis clic droit confirmées ;
préciser le moyen de renommage, les noms admis, leur comparaison et les
collisions entre titulaires. Les chunks séparés sont autorisés. Définir
comment départager le chunk du joueur et celui du bloc visé à une frontière,
et l'effet d'un clic dans un chunk déjà revendiqué.
Le nom sert au regroupement ; le serveur doit aussi vérifier les droits
d'extension pour qu'un nom identique ne permette pas de prendre le contrôle
de la propriété d'un autre titulaire.
- Titulaire : joueur, faction ou les deux ; droits des membres, invités et
tiers, et rapport éventuel au prestige. Demeure mesure l'habitation et ne
vaut pas attribution d'un titre.
- Paliers de résistance, privilèges et incassabilité éventuelle ; articulation
avec les outils, enchantements et aptitudes de minage existants.
- Coût en saphirs et durée réelle de chaque période selon le niveau ;
financement de la première activation ; traitement des chunks déchargés
et du temps écoulé pendant les arrêts du serveur. La déconnexion du joueur
ne suspend pas l'entretien.
- Changement de niveau : prise d'effet, traitement de la période payée et du
temps restant, pour éviter de gagner de la couverture par des changements
répétés.
- Avertissement avant épuisement, droits de réservation d'un titre sans
protection et réactivation après réapprovisionnement. Le titre reste attaché
au chunk et la protection disparaît immédiatement en fin de couverture.
- Abandon, transfert, conflits de réservation et devenir du stock restant.
- Portée de la protection face aux explosions, pistons, fluides, mobs,
inventaires et actions groupées ; distinguer les droits d'interaction de la
résistance au minage.
## Réception de la future implémentation
Le premier lot doit permettre d'obtenir des titres par la voie retenue,
réserver un terrain, choisir sa protection, approvisionner la réserve en
saphirs et observer leur consommation successive ainsi que l'effet sur le
minage, avec conservation du titre attaché au chunk.
- Renommer un titre « Verger » et faire un clic droit dans un chunk libre
crée la propriété « Verger ». Utiliser un autre titre de même nom dans un
second chunk admissible étend la même propriété à ce chunk. Une autre
propriété, nommée différemment, conserve son emprise.
- Répéter l'extension dans un chunk séparé du premier par des chunks libres :
les deux chunks appartiennent à la même propriété, sans revendiquer ni
protéger les chunks intermédiaires.
- Un titre non renommé ne revendique aucun chunk et explique le renommage
nécessaire. Un refus d'extension ou un conflit ne dépense pas de titre et
ne modifie pas de terrain ; vérifier les collisions de noms entre joueurs.
- Deux joueurs vérifient les droits et le ralentissement de chaque palier,
à conditions identiques, ainsi que les limites du terrain.
- Un titre couvre exactement le chunk désigné : sa protection ne déborde
pas sur le chunk voisin. Couvrir deux chunks nécessite des titres distincts ;
renouveler le même chunk ne modifie pas son emprise.
- Ajouter des saphirs à niveau et emprise constants prolonge l'entretien sans
modifier la résistance choisie. Un renouvellement conserve la couverture
et le titre attaché, sans exiger un nouveau titre pour le même chunk.
- Déconnecter le titulaire en laissant le serveur tourner : à son retour,
la réserve et la couverture reflètent le temps réel écoulé, y compris si
plusieurs renouvellements en saphirs ont eu lieu pendant son absence.
- Épuisement, réapprovisionnement et changement de niveau suivent les règles
arrêtées, avec un état et une échéance compréhensibles en FR/EN.
- Avec une réserve vide ou insuffisante pour renouveler, vérifier la
protection jusqu'à la fin de la période payée, puis sa disparition immédiate
à l'échéance, y compris lorsque le titulaire est déconnecté. Le titre reste
attaché ; le minage retrouve les règles ordinaires applicables, sans
résistance résiduelle provenant des titres.
- Achat, consommation et droits font autorité côté serveur. Des requêtes
répétées ou simultanées et un redémarrage ne dupliquent ni dépense, ni titre,
ni saphir, et ne remettent pas gratuitement la durée à zéro.
- Un contrat de sauvegarde et de migration explicite précède toute donnée
persistante. Le chargement d'une ancienne partie n'attribue aucun terrain
implicitement ; aucune régénération de chunks n'est nécessaire.
- Tester les interactions retenues ci-dessus et les actions groupées, puis
lancer `./gradlew check build`. Une livraison de distribution exige aussi
`./gradlew assemblePack` et le [versionnement](versioning.md) mod/pack.
## État actuel
L'emprise est fixée à un chunk par titre. Le titre est renommé puis utilisé
par clic droit ; un même nom permet d'étendre la propriété à un autre chunk.
Les chunks d'une même propriété peuvent être séparés.
Les titres restent attachés aux chunks. La consommation successive de saphirs
en temps réel pour maintenir un niveau choisi, y compris lorsque le joueur est
déconnecté, est confirmée.
La protection disparaît immédiatement lorsque la couverture est épuisée.
Les autres arbitrages sont explicitement ouverts ou proposés ci-dessus.
Ce cadrage est documentaire : aucun code, binaire, monde ou format de
sauvegarde modifié ; aucun test de gameplay exécuté pour ce ticket.
+90
View File
@@ -0,0 +1,90 @@
# beta.070 — resource pack versionné et actif par défaut
Branche `codex/resourcepack-beta070`.
## Source et version
La source unique est `ressources-pack/sanctuary/`. Le dossier fourni
`Sanctuary-Resource-Pack-base-26-3` contient 107 fichiers, dont 85 PNG.
Tous ses assets sont repris sans retouche. Sept images diffèrent de la base :
les six états `hud/food_*` et latlas `sanctuary/textures/gui/food_details.png`.
Les 47 cœurs vanilla déjà présents dans la source restent identiques.
Aucun remplacement des bulles de respiration.
`ressources-pack/sanctuary/releases/beta.070.json` fixe les empreintes des
150 fichiers distribués, la provenance des 107 fichiers fournis et le format
exact **97.1** de Minecraft **26.3-pre-2**. Les guides ont été actualisés ; le
manifeste Minecraft porte le numéro beta.070 et une description FR/EN.
Le numéro graphique `resource_pack_version` est distinct des versions du mod
et du modpack. Un correctif de code ultérieur peut garder ces mêmes textures.
Une retouche graphique demande un nouveau manifeste de release, en conservant
celui des versions précédentes. `verifyResourcePack` détecte toute dérive des
fichiers, des empreintes, des CRC PNG, des JSON ou du format.
## Chargement par défaut
Gradle copie directement cette source dans le mod à
`resourcepacks/textures/`. LAPI Fabric 0.160.0+26.3 enregistre le pack natif
`sanctuary:textures` avec `DEFAULT_ENABLED`. Il est donc actif dès sa première
apparition, y compris dans une instance existante qui découvre ce pack.
Le joueur garde la possibilité de le désactiver ou de placer un autre pack
au-dessus ; son choix nest pas réinitialisé à chaque lancement.
Aucun `options.txt` livré, ni écrasement des réglages personnels. La version
normal et la version Test embarquent le même resource pack dans le même mod.
Le ZIP `Sanctuary-Resource-Pack-beta.070.zip` est également exporté pour un usage
séparé ; il nest pas nécessaire de lajouter une seconde fois dans Sanctuary.
Il conserve les namespaces natifs : la jauge dynamique, les aperçus alimentaires
et les infobulles utilisent leurs chemins de textures existants.
## Vérifications natives
`ResourcePack070ClientChecks` réussit en **46 s** : activation au démarrage
sans modifier la sélection, format reconnu compatible, priorité effective et
égalité des octets chargés pour les sept PNG modifiés, respiration native,
désactivation conservée après redécouverte des packs, réactivation.
Captures inspectées : le pack est dans la colonne « Selected », la description
porte beta.070, les sprites de faim et de saturation proviennent des nouveaux
dessins dans latlas natif. Preuves : `build/resourcepack070-client.log` et
`build/resourcepack070-evidence/`. Pas de nouveau monde ni de serveur dans ce
test ; les formules alimentaires ne sont pas modifiées.
```sh
JAVA_HOME=/Users/koka/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home \
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryResourcePack070ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
./gradlew verifyResourcePack assembleResourcePack
```
## Livraison vérifiée
Source du resource pack enregistrée dans le commit `85e062ed91c74fcc3695e1e224fe51ac8fd010e0`.
Les **150 fichiers distribués** ont été relus dans lobjet Git et leurs
empreintes correspondent au manifeste. Ce commit ne contient que la source
du resource pack ; les chantiers de code préexistants restent dans larbre de
travail. Aucun push ni tag de lensemble des mods na été créé.
`check build assemblePack assembleTestPack` réussit en **2 min 28 s**, 124 tâches,
avec les profils client/test rapide et `-x :sanctuary:runGameTest`. Le serveur
dédié reste exclu conformément au choix de ne pas accepter son EULA.
Les deux MRpacks contiennent les mêmes textures que le ZIP et que la source.
**1 648 classes** conformes à la compilation, seuls `SanctuaryKnowledgeClient`
et `SanctuaryResourcePack` changent par rapport à beta.069. Les autres ressources
existantes et JEI restent identiques ; deux libellés FR/EN et le pack embarqué
sont ajoutés. Les archives beta.069 conservent leurs empreintes.
Reçu : `build/resourcepack070-artifact.json`.
- [Pack normal beta.070](../build/Sanctuary-beta.070.mrpack), 9451989 octets.
SHA-256 : `9a582e17394bcb7327bd3b5a5a789b297431e41bf43409ed117fac728bbda46c`.
- [Monde plat rapide beta.070](../build/Sanctuary-Test-beta.070.mrpack), 9470924 octets.
SHA-256 : `5732e570c1af20f4d4896292c51bb38fb5c642d0ec81c6a1273ba27318938cd4`.
- [Resource pack autonome beta.070](../build/Sanctuary-Resource-Pack-beta.070.zip), 3757596 octets.
SHA-256 : `fe81653d09584f67da5f56c4fd6c866c733ec81e07559a5f132a44d44bbaadb6`.
Aucun déploiement personnel, aucune publication du canal, aucun monde modifié.
+50
View File
@@ -0,0 +1,50 @@
# RP-HUD-01 — base de textures de vie et de faim
Ticket du 15 septembre 2026, branche `codex/resourcepack-hud-base`.
Demande du créateur : préparer les textures Minecraft d'origine pour qu'il
dessine ensuite lui-même la vie, la faim et les interfaces Sanctuary.
## Résultat
- 53 PNG ajoutés au resource pack existant : les 47 sprites de `hud/heart/`
et les six sprites `hud/food_*`, extraits sans retouche du client 26.3-pre-2.
- Manifeste corrigé du format provisoire `0` au format exact **97.1**,
avec `min_format` et `max_format`.
- [Guide de retouche FR/EN](../ressources-pack/sanctuary/HUD.md), correspondance
des variantes et recette d'export ZIP ; empreintes d'origine dans
[HUD-SOURCES.json](../ressources-pack/sanctuary/HUD-SOURCES.json).
- Menus, panorama, progression, aptitudes et atlas alimentaire existants
conservés. La respiration utilise toujours les ressources vanilla.
Le pack est une base graphique séparée du mod. Aucun code Java, identifiant,
format de sauvegarde ni manifeste packwiz ne change dans ce ticket ; aucun
nouveau binaire du mod n'est livré, donc aucun compteur beta n'est consommé.
Les modifications beta.062/beta.063 déjà présentes restent hors de ce lot.
## Vérification
Contrôles effectués sur la base et son export local :
- Les 53 sprites correspondent octet pour octet au client officiel ; tous
mesurent 9 × 9, conservent la transparence et passent le contrôle des CRC
PNG et la décompression des données d'image.
- Les 19 fichiers JSON et métadonnées se lisent correctement. Le format 97.1
correspond au `version.json` du client ; les champs du manifeste suivent
son lecteur `PackFormat`.
- 121 fichiers préexistants sont inchangés, dont toutes les textures déjà
présentes dans le resource pack et les travaux hors périmètre. Les seuls
fichiers de ce relevé modifiés sont le manifeste et les guides ciblés.
- Le ZIP contient 154 fichiers, avec `pack.mcmeta`, `pack.png` et `assets/`
à la racine. Son intégrité et l'égalité de chaque entrée avec sa source
sont vérifiées ; aucun fichier Finder `.DS_Store` n'est exporté.
Export local :
[`Sanctuary-Resource-Pack-base-26.3-pre-2.zip`](../ressources-pack/Sanctuary-Resource-Pack-base-26.3-pre-2.zip),
3 761 553 octets. SHA-256 :
`21b2ce42e9c381191508c93929d5ce02ee70beeeb519cf58a9ae6b3acd35f107`.
Reçu local ignoré : `build/resourcepack-hud-base/verification.json`.
Aucun essai de rendu en jeu ni installation personnelle effectué. Les
commandes Gradle ne sont pas lancées pour ce lot de PNG et de documentation :
le code et la distribution packwiz sont inchangés. Le contrôle visuel après
les futures retouches du créateur est décrit dans le guide HUD.
+125
View File
@@ -0,0 +1,125 @@
# RP-02 — Clé dorée et pack personnel — beta.121
Contrat du 17 septembre 2026, branche `codex/resourcepack-template-beta121`.
Le créateur fournit `golden_wrench.png` et valide un bouton qui crée une copie
personnelle complète, modifiable et jamais écrasée par les mises à jour.
## Résultat
La clé dorée reprend exactement le PNG fourni, 16 × 16, sans conversion ni
redessin. Le modèle reste un item plat `minecraft:item/handheld`. Empreinte :
`a97570908db75caf8e6fc2f5ecabf12c54fd99bfea7be634df66c4310dca22af`.
Le même fichier est fourni par le mod et par « Textures Sanctuary » ; désactiver
le pack intégré conserve donc aussi la nouvelle clé.
Dans **Options → Packs de ressources**, **Personnaliser Sanctuary** crée
`resourcepacks/Sanctuary-Custom/`. Le bouton devient **Ouvrir ma copie**.
La copie contient toutes les ressources client de Sanctuary : textures, modèles,
étiquettes d'items, blockstates, sons, shaders, langues et remplacements Minecraft
présents dans le pack intégré. Celui-ci prend priorité sur les assets de base
lors de l'export. Un guide FR/EN, la licence et les crédits accompagnent la copie.
Le joueur active sa copie avec les commandes natives et la place au-dessus des
packs qu'il veut remplacer. Créer la copie ne change ni l'ordre ni la sélection.
Une modification se recharge avec F3 + T ; désactiver le pack retrouve les
ressources fournies par le mod. L'écran de sélection des datapacks n'est pas modifié.
La copie est un **instantané**. Elle ne se synchronise pas avec les mises à jour :
les fichiers personnalisés restent toujours intacts. Le guide recommande de
supprimer les fichiers non personnalisés pour laisser les prochaines ressources
du mod s'appliquer. Pour repartir d'un instantané récent, renommer le dossier
existant puis créer une nouvelle copie. Aucun fichier utilisateur n'est écrasé.
La copie s'effectue hors du fil de rendu, dans un dossier temporaire voisin,
puis le résultat complet rejoint la liste native. Une erreur de copie est
signalée par le bouton et le journal du jeu ; un chemin occupé par un fichier
n'est pas remplacé. Aucune extraction au démarrage ni pendant les mises à jour.
## Distribution
`./gradlew assembleResourceTemplate` produit
`build/Sanctuary-Template-beta.121.zip`, un pack personnel complet à décompresser
dans `resourcepacks/Sanctuary-Custom/`. `assemblePack` le produit aussi.
`build/Sanctuary-Resource-Pack-beta.121.zip` reste l'export du pack graphique
intégré ; son manifeste versionné contient 151 fichiers et les images historiques
sont conservées. L'identifiant intégré `sanctuary:textures` reste stable et son
activation reste contrôlée par le joueur.
Le template ne contient pas tous les assets vanilla ni ceux des autres mods.
Il ne contient pas les recettes, règles serveur ou sauvegardes. Il conserve
les crédits et conditions des ressources d'origine. Aucune génération, aucun
identifiant de bloc et aucun format de sauvegarde ne changent.
## Vérifications
Le parcours `ResourceTemplate121ClientChecks` passe en **35 s** sur le client
Minecraft 26.3 macOS, sans ouvrir de monde :
- Bouton natif et disposition FR/EN aux échelles 2 et 3, captures relues.
- Export complet de **1 202 fichiers**, empreintes identiques aux ressources
sources après application des priorités du pack intégré.
- PNG fourni vérifié par SHA-256 et affiché avec sa transparence.
- Création sans changer la sélection ni l'ordre des packs.
- Modification d'une texture et ajout d'un fichier personnel : aucun octet
réécrit lors d'un second export ni au rechargement des ressources.
- Priorité réelle de la texture personnalisée, puis retour à la clé fournie
après désactivation. Activation et désactivation conservées à la redécouverte.
- Chemin occupé par un fichier refusé sans le modifier ; aucun bouton ajouté
à l'écran des datapacks.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryResourceTemplate121ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Marqueur `TEMPLATE121_PASS` dans `build/template121-client.log` ; captures et
empreintes de la copie dans `build/template121-evidence/`. Le premier essai
avait échoué dans l'aperçu du test qui créait un ItemStack avant connexion à
un monde ; cet aperçu affiche maintenant directement la texture résolue.
Le modèle plat existant n'est pas modifié. Pas d'essai Windows ni d'ouverture
automatisée du gestionnaire de fichiers. Le GameTest serveur dédié reste exclu
conformément au refus antérieur de son EULA.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 10 s**, 126 tâches. Les sources JAR correspondent aux sources
Java du dépôt. La comparaison avec beta.120 limite les différences de production
aux deux nouvelles classes, au hook d'interface, aux libellés et aux ressources
prévues (12 entrées). Aucun changement de gameplay, de données serveur ou de
monde. Les packs normal/Test contiennent le même JAR Sanctuary, sans fixture
ni sauvegarde. Le ZIP du template et l'export natif ont exactement les mêmes
1 202 fichiers et empreintes. Le pack intégré conserve ses 151 fichiers vérifiés.
Reçu : `build/template121-artifact.json`. Artefacts locaux validés :
- `Sanctuary-beta.121.mrpack` : 10261791 octets, SHA-256
`040d68f342155120fa21e0ffcdf34aa38e3225c78862960536622de53ed9fd9f`.
- `Sanctuary-Test-beta.121.mrpack` : 10280716 octets, SHA-256
`7f5bbd4e13aea4c245d072725c094ca64826ee8debc8607623783c114d437685`.
- `Sanctuary-Resource-Pack-beta.121.zip` : 3757952 octets, SHA-256
`bbf3c18ea6abc64d951911215975cb6c48c7fc5e0246f6e5f5192a3d061c211d`.
- `Sanctuary-Template-beta.121.zip` : 4315131 octets, SHA-256
`6fad376c53474fa8bcb0a2e6ae4c13ea61ab91bdd78735be443032d485ed541a`.
JAR Sanctuary : SHA-256
`4276f4fc9834805e3e6d12cd19adba7837e3007656b77f31d525c7b976f9925d`.
## Publication et installation
La [release beta.121](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.121)
est publiée depuis `d9b3dd6bedf32448f8c6e5bfa4da10cb69968bc7`. Tag et artefacts immuables,
téléchargements publics vérifiés. Canal packwiz :
`e3e6572da9288fbbcfa36bf6b7dd3aa0d1c54f5e`.
Deux synchronisations isolées puis deux dans **Sanctuary Beta** réussissent.
Un seul JAR Sanctuary beta.121 est actif ; le second passage est identique.
Les **923 fichiers personnels et réglages suivis** restent inchangés,
y compris les packs de ressources. Aucune copie personnelle n'est créée par
la mise à jour : chaque joueur utilise le bouton quand il le souhaite.
Aucun monde personnel ouvert. Copie préalable dans
`sanctuary-backups/before-beta.121/` de l'instance existante ; reçus
`build/template121-isolated.json` et `build/template121-prism.json`.
- [Template personnel complet](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.121/Sanctuary-Template-beta.121.zip).
- [Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.121/Sanctuary-beta.121.mrpack).
- [Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.121/Sanctuary-Test-beta.121.mrpack).
+93
View File
@@ -0,0 +1,93 @@
# SCULPT-10 — Une boîte par sculpture — beta.124
Contrat du 17 septembre 2026, branche `codex/sculpture-bounds-beta124`.
Le créateur choisit **une seule boîte pour la sélection et les collisions**.
Ce ticket remplace la forme physique détaillée de beta.122.
La boîte englobe exactement les dimensions occupées par la sculpture, après
orientation et ancrage au centre ou au bord. Elle suit toujours la grille 1/16,
y compris les tailles impaires et les modèles comportant des marges vides.
Les trous et petits détails restent visibles mais n'ont plus leurs propres
surfaces de collision : on ne grimpe plus sur leurs petites marches. Une arche
se sélectionne et bloque désormais sur tout son volume englobant.
La pose utilise la même boîte avant la création de l'entité de bloc : elle
refuse une intersection avec le joueur, y compris dans les trous visuels.
Les petites sculptures laissent libre le reste du bloc autour de leur boîte.
La forme reste mise en cache par modèle et état ; elle ne se recalcule qu'après
un changement de modèle, d'orientation ou d'ancrage. Les requêtes physiques et
le contour partagent cette même forme native.
Le calcul parcourt les cellules une seule fois, sans créer de copies tournées
ni de grille de collisions 16³. Le contour émet toujours douze arêtes.
Il s'agit d'une simplification du travail géométrique ; aucun gain de FPS global
n'est annoncé sans mesure sur une scène représentative.
Le rendu des sculptures et les règles de lumière de beta.122 restent inchangés :
pas d'occlusion de cube plein, pas d'émission artificielle de lumière. Aucun
identifiant, format d'item ou de sauvegarde ne change. Les anciennes sculptures
utilisent la nouvelle forme à partir de leurs données existantes, sans réécriture
des mondes ni régénération de chunks. L'atelier et les clés restent inchangés.
## Vérifications
Le parcours `Sculpture122ClientChecks`, adapté au nouveau contrat, passe en
**39 s** sur Minecraft 26.3, client macOS et serveur intégré jetable de graine 122.
- Sélection native de tout le volume, y compris le trou visuel d'une arche ;
contour rectangulaire relu dans la capture.
- Même boîte physique et de sélection sur client et serveur ; intérieur rempli,
dimensions exactes sans profondeur artificielle de bloc entier.
- **80 cas** : boîte unique comparée aux limites du maillage réellement émis,
douze arêtes exactement, même objet réutilisé lors des requêtes répétées.
Arche, marges vides, cube de 4 096 cellules et voxel unique, dans les quatre
orientations et cinq ancrages.
- **5 120 placements** de rendu toujours alignés sur la grille entière.
- Pose refusée dans le joueur, y compris entre deux piliers séparés ; petite
sculpture autorisée à côté du joueur, hors de sa boîte physique.
- Cache renouvelé après changement d'orientation/ancrage ou de modèle ;
conservation après sauvegarde/reconnexion.
- **75 sculptures superposées** : ciel à 15 ; toit de pierre témoin sombre ;
lumière de bloc transmise avec atténuation normale ; pièce close à 0.
Marqueurs dans `build/sculpture124-client.log`, notamment
`SCULPTURE124_BOUNDS_PASS 80`, plus les contrôles de régression de beta.122.
Captures relues dans `build/sculpture124-evidence/`. Aucun essai Windows,
client distant ou shader tiers ; le coût des boîtes est simplifié sans benchmark
FPS global.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 9 s**, 126 tâches (110 exécutées, 16 à jour).
Les sources des JAR correspondent aux sources du dépôt. La comparaison avec
beta.123 limite les différences de production aux trois classes de
`SculptureGeometry` ; ressources, clés, interfaces, données et éclairage restent
identiques. Les packs normal/Test contiennent le même JAR, sans sauvegarde
ni fixture. Le template personnel conserve exactement les ressources de beta.123.
- Pack normal : 10 271 059 octets, SHA-256
`2075e4ac7a7e7e2effcd82586d46769607ca1a67e8d9110b000fa378d1bc5506`.
- Pack Test : 10 289 985 octets, SHA-256
`88263e6896590ea9694b18084666e7234e934064e8d7d596d34866a68cc5ea23`.
- JAR Sanctuary : SHA-256
`b3969b1a3738b8a5d332b2083db0dd722900239f73035c335b738f70328d43f1`.
Reçu local : `build/sculpture124-artifact.json`. Les packs normal/Test et le
template sont aussi copiés, avec vérification octet pour octet, dans le dossier
habituel `sanctuary-beta/build/`.
Le GameTest dédié reste exclu conformément au refus antérieur de son EULA.
Aucun monde personnel n'est ouvert par les essais.
## Publication et installation
La [release beta.124](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.124)
est publiée depuis `00179e30ef0b45ef98378bc164a7810552dd1bdd`.
Le tag exact et les artefacts sont immuables, leurs téléchargements publics
vérifiés. Canal packwiz : `67ebcc7d07f8b75e8988f6099e3d6e5704f123fb`.
Deux synchronisations isolées puis deux dans **Sanctuary Beta** réussissent.
Un seul JAR Sanctuary beta.124 est actif, conforme au hash vérifié ; le second
passage ne change rien. Les **923 fichiers personnels et réglages suivis**
restent inchangés, sans ouverture de monde personnel. Copie préalable dans
`sanctuary-backups/before-beta.124/` de l'instance existante.
Reçus : `build/sculpture124-isolated.json` et `build/sculpture124-prism.json`.
+84
View File
@@ -0,0 +1,84 @@
# STAT-07 — Pose centrée des sculptures — beta.119
Contrat du 17 septembre 2026, branche `codex/sculpture-center-beta119`.
Viser le carré central de 8 × 8 pixels de la face supérieure ou inférieure
du bloc place la sculpture au centre. Les limites de cette zone sont incluses.
Autour, le bord horizontal le plus proche reste choisi ; une pose latérale
continue à s'appuyer contre le bloc support. L'orientation suit le regard.
L'aide du Clay Workshop explique les deux possibilités en français et anglais.
Le centrage utilise l'emprise réelle des voxels après rotation, en ignorant les
marges transparentes. Tous les sommets restent sur la grille de 1/16 de bloc.
Une dimension impaire ne peut pas être parfaitement symétrique dans un bloc de
16 pixels sans décaler ses voxels : elle prend donc le centrage entier le plus
proche, avec un pixel de différence entre les deux marges. Aucune position à
un demi-voxel n'est introduite.
## Compatibilité
La pose réutilise `anchor=center`, déjà présent depuis beta.113. Aucun nouvel
état, identifiant, composant ou format de sauvegarde. Les sculptures existantes
gardent leur ancrage ; casser et reposer choisit l'emplacement visé. Le rendu,
les couleurs, les chapeaux et les collisions restent inchangés. Aucun parcours
de monde existant, aucune régénération. Client et serveur doivent utiliser
ensemble la nouvelle version pour le choix de pose.
## Vérifications et livraison
Le parcours natif `Statuary106ClientChecks`, avec `Sculpture113ClientChecks`,
passe en **54 s** sur Minecraft 26.3/macOS :
- Vrais clics de pose centrée dans quatre orientations, sur client et serveur,
puis pose contre les quatre bords sans modifier les couleurs du modèle.
- Limites incluses et points immédiatement de part et d'autre de la zone,
faces supérieure/inférieure et positions positives/négatives ; faces
latérales toujours calées contre le support.
- 5 120 combinaisons de largeur/profondeur, orientation et ancrage : géométrie
effectivement rendue sur la grille exacte, emprise sans dépassement,
centrage pair/impair et marges transparentes.
- Sauvegarde/reconnexion des sculptures centrées et aux bords, sans fichier
source ; rotations/miroirs, anciens états, fabrication et hotbar vérifiés.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryStatuary106ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Marqueurs `SCULPTURE119_PASS`, `STATUARY113_PASS` et
`SCULPTURE113_GEOMETRY_PASS` dans `build/sculpture119-client.log`.
Captures conservées dans `build/sculpture119-evidence/`, vue centrée relue.
Monde plat jetable de graine 106 ; aucun monde personnel ouvert. Pas de
validation Windows ni de test depuis deux ordinateurs.
Le GameTest dédié reste exclu conformément au refus antérieur de son EULA ;
le parcours natif utilise le serveur intégré.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 24 s**, 125 tâches. Les sources JAR correspondent aux sources
du dépôt ; seuls `SculptureAnchor.class` et le texte d'aide FR/EN diffèrent
parmi les classes et ressources de production de beta.118. Les deux packs
contiennent le même JAR, sans monde ni fixture de test.
- Sanctuary-beta.119.mrpack : 10216447 octets, SHA-256
`ce29702eaaac7301c77fb6af63a76c6bc1c0c704313ce1b8243c95b5fe59d893`.
- Sanctuary-Test-beta.119.mrpack : 10235369 octets, SHA-256
`a1a2845f9678b1144d7d9eab4867970cc1776fe0ad5d51722c8110b7c1d4c682`.
- JAR Sanctuary : SHA-256
`d353bd89b16c53ee1ee48836fa2ff4b311249b280992300c28bf03048d805bff`.
Reçu local : `build/sculpture119-artifact.json`.
## Publication et installation
La [release beta.119](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.119)
est publiée depuis `3fd64e1f2a77ea2584b087d6339cf605d8ee0e9b`. Le tag exact et les
artefacts sont immuables ; leurs téléchargements publics sont vérifiés.
Le canal packwiz avance à `5e823af7807f524f6394acad402fe62328c7e4ab`.
Deux synchronisations isolées puis deux dans **Sanctuary Beta** réussissent.
Un seul JAR Sanctuary beta.119 est actif ; le second passage est identique.
Les **923 fichiers personnels et réglages suivis** restent inchangés, sans
ouvrir de monde personnel. Copie préalable dans
`sanctuary-backups/before-beta.119/` de l'instance existante. Reçus locaux :
`build/sculpture119-isolated.json` et `build/sculpture119-prism.json`.
+102
View File
@@ -0,0 +1,102 @@
# beta.116 — Sculptures à partir des textures de blocs
Ticket sur `codex/sculpture-materials-beta116`, comprenant aussi le correctif
Fourneau beta.115 dans la livraison commune.
Le Clay Workshop accepte les objets-blocs comme matière. Le client prélève une
palette bornée dans la texture du bloc issue du pack actif, avec sa teinte, puis
le modèle conserve sa géométrie et transpose ses valeurs claires/sombres dans
cette palette. L'aperçu et le résultat utilisent le même calcul. Un bloc est
consommé par sculpture ; les neuf cases de hotbar restent les seules accessibles.
## Contrat des données et du réseau
Les sculptures existantes conservent exactement leurs voxels sauvegardés :
schéma 1 inchangé, identifiants `sanctuary:*` stables. Les nouvelles sculptures
stockent elles aussi leurs couleurs finales dans ce format. Aucun chargement
ne recolore les objets ou constructions existants. Orientation et ancrage
beta.113 inchangés, sans migration ni modification d'un monde personnel.
La sélection du menu ajoute l'identité de la matière et une palette de 256
couleurs opaques au maximum. Ce sont des données d'apparence fournies par le
client, comme le modèle déjà importé ; elles n'octroient ni objets ni propriétés
de bloc. Le serveur vérifie le menu, son jeton, l'accès à l'atelier, les limites
et l'objet effectivement présent. Il applique lui-même la palette et facture
chaque résultat. Un changement de matière invalide immédiatement l'ancien
résultat jusqu'à réception de la sélection correspondante. Les deux côtés
doivent utiliser beta.116. Aucun nouveau format de sauvegarde.
## Vérifications natives
`Sculpture116ClientChecks` passe en 1 min 7 s, sur un nouveau monde plat de
Minecraft 26.3, graine 116, puis la régression complète de l'atelier :
- Les 1 207 objets-blocs enregistrés ont une palette opaque, non vide et bornée.
- Fabrication payée avec pierre, planches de chêne, or, laine rouge, verre,
feuilles de chêne, argile et ardoise ; aperçu identique au résultat serveur.
- Conservation des tons clairs/sombres du modèle et de ses coordonnées, sans
convertir les 16 argiles colorées en une simple couleur unie.
- Une matière différente efface aussitôt l'ancien résultat ; une sélection
périmée ou un jeton incorrect ne fabrique rien et ne consomme aucun objet.
- Les conteneurs contenant des objets sont refusés ; ils peuvent servir de
matière une fois vidés. Les objets qui ne sont pas des blocs sont refusés.
- Bornes et opacité des palettes, véritable rechargement des ressources,
neuf cases de hotbar, stock plein, consommation exacte et restitution.
- Poses selon les quatre regards, accroche au bord, grille de voxels,
casse/repose, sauvegarde et reconnexion après suppression du fichier GLB.
- Interface FR/EN aux échelles 2/3, génération de plan au Métabli inchangée.
Marqueurs `SCULPTURE116_PALETTES`, `SCULPTURE116_MATERIALS_PASS`,
`SCULPTURE116_PASS` et régressions 106/111/112/113 dans
`build/sculpture116-client.log`. Captures relues dans
`build/sculpture116-evidence/`. Un libellé est raccourci en « Bloc » pour éviter
le contact avec « Sculpture » dans le cadre compact.
La palette vient de la texture représentative du modèle de bloc du pack actif,
avec la teinte locale ; une texture animée utilise sa première image. Les blocs
sans texture lisible utilisent leur couleur de carte. Il s'agit d'un transfert
de couleurs sur les voxels opaques, sans transparence, émission ou fonction
spéciale du bloc d'origine. Les sculptures existantes gardent leurs couleurs.
Essais natifs macOS avec serveur intégré ; pas de client Windows ni de test
LAN à plusieurs joueurs. Le serveur dédié de GameTest reste exclu selon le
refus antérieur de son EULA. Aucun monde personnel ouvert.
La régression native du Fourneau passe également dans beta.116, en 42 s :
`build/sculpture116-furnace.log`, captures FR/EN dans
`build/sculpture116-furnace-evidence/`. Les 27 cases, le glisser-déposer, les
combustibles et les états de cuisson restent conformes au ticket beta.115.
## Construction et archives
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussit
en 2 min 23 s : 125 tâches, dont 105 exécutées. Sources Java concordantes avec
les JAR sources, versions alignées et intégrité des deux MRpack vérifiées.
Le JAR conserve à l'identique le correctif Fourneau beta.115 ; seuls les
classes de matière de sculpture et libellés FR/EN changent dans la production.
Les classes de test et modèles GLB de test sont absents des archives.
- `Sanctuary-beta.116.mrpack` : 10189831 octets, SHA-256
`7df04a6e2a57e76a55ca57bd7520b05cbb573392690b401b868837498807d252`.
- `Sanctuary-Test-beta.116.mrpack` : 10208754 octets, SHA-256
`f4c9293e20384b05366d092fc7ee1abea275940a02373ee4036f73f0caa43747`.
- JAR Sanctuary :
`76a9205783c8b18506c32c9eef6c481d95fd3ba0746a2bdd558a194534a51a32`.
Reçu local : `build/sculpture116-artifact.json`.
## Publication et instance
La [release beta.116](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.116)
est publiée avec le JAR, les deux MRpack et l'amorçage Prism. Le tag immuable
désigne `e3ca9fcd6383f7646e4fea7e5098e7097ebb30aa` ; téléchargements publics
et empreintes vérifiés. Le canal packwiz avance au commit
`c741870160f8a21f0a9793f20f0e624ebdbacdb6`.
Deux synchronisations isolées, puis deux dans l'unique instance **Sanctuary
Beta**, réussissent. La seconde passe laisse les fichiers gérés inchangés,
avec un seul JAR Sanctuary beta.116. Minecraft 26.3, Loader 0.19.5 et Fabric
API 0.160.5+26.3 conservés. Les 923 fichiers personnels et réglages suivis
restent identiques ; aucun monde personnel n'a été ouvert. Sauvegarde des
fichiers remplacés dans `sanctuary-backups/before-beta.116/` de cette instance.
Reçus : `build/sculpture116-isolated.json`, `build/sculpture116-prism.json`.
+108
View File
@@ -0,0 +1,108 @@
# SCULPT-11 — Placement, éclats et modèles découverts — beta.125
Contrat du 17 septembre 2026, branche `codex/sculpture-placement-beta125`.
Le point visé choisit neuf positions horizontales (centre, quatre bords et quatre
coins) et trois hauteurs (bas, milieu et haut). Sur un support, la sculpture
repose au bas de son bloc ; sous un plafond, elle touche le haut ; sur une face
latérale, elle suit la hauteur visée et reste contre le support. Les sculptures
restent debout et s'orientent selon le regard horizontal du joueur.
La bande centrale occupe les huit pixels médians, limites incluses. Toute pose
reste sur la grille 1/16 : une dimension impaire utilise le centre entier le
plus proche, jamais un demi-voxel. Rendu, boîte unique de sélection et collision
partagent les mêmes offsets. La lumière conserve les règles de beta.122.
## Compatibilité additive des états existants
Les cinq anciennes valeurs `anchor` gardent exactement leurs noms. Quatre
valeurs de coin sont ajoutées. La nouvelle propriété `vertical_anchor` accepte
`bottom`, `center`, `top` et `original`, valeur par défaut réservée à la
compatibilité. La lecture d'un ancien bloc sans cette propriété conserve
l'ancienne hauteur, même si le modèle a des marges transparentes en bas.
Le bloc possède 144 états : 108 placements nouveaux et 36 états de compatibilité.
Le schéma 1 des sculptures, leurs données de voxels et tous leurs identifiants
restent inchangés. Aucun monde n'est parcouru ou réécrit, aucun chunk régénéré.
Les nouveaux ancrages nécessitent beta.125 ; le retour à une version antérieure
ne garantit pas leur position. Ce contrat autorise l'ajout compatible des états,
pas une migration destructive des sauvegardes personnelles.
## Particules
Les coups et la casse émettent des éclats de la couleur des surfaces voxelisées
réellement affichées, avec leur orientation et leur ancrage. Un coup vise la
surface réelle la plus proche du point sélectionné, même devant un trou visuel.
La casse échantillonne au plus 64 faces ; aucun calcul de texture n'est refait.
Les éclats utilisent une taille de voxel, la gravité et la lumière natives.
Une petite mémoire par monde (128 entrées de 64 faces, validité 40 ticks) conserve les
surfaces si la suppression du bloc précède l'événement de casse. Les autres
blocs gardent leurs particules habituelles.
## Clay Workshop
L'onglet Animaux utilise exactement les découvertes serveur du catalogue de
statues (rencontre, victoire ou mort face à l'espèce). Le menu transmet cette
liste à chaque ouverture, sans dépendre d'une visite préalable au Métabli.
Le modèle natif et sa texture sont capturés localement, voxelisés en miniature,
puis recolorés par la matière choisie. Le résultat reste fabriqué et payé côté
serveur. Les sélections d'espèces non découvertes sont refusées. L'onglet Imports
conserve les fichiers GLB. Aucun nouveau format de sculpture n'est introduit.
Libellés FR et EN.
## Vérifications
Le parcours natif `Sculpture125ClientChecks` passe en **1 min 2 s**, client
Minecraft 26.3 sur macOS et serveur intégré jetable (graines 125 et 122).
- 54 clics réels sur les six faces : centres, bords, coins et hauteurs.
- 432 contextes de pose, coordonnées positives/négatives, quatre orientations,
rotations et miroirs ; 144 états valides.
- 20 anciens états sans `vertical_anchor` conservent leur hauteur et marges.
- Couleur exacte des éclats au point frappé, surfaces réellement occupées,
limite de 64 fragments, événement après suppression et particules normales
d'un bloc de pierre témoin.
- Atelier : découvertes par rencontre, victoire et mort, transmission native
du menu, refus serveur d'une espèce inconnue, trois modèles natifs (vache,
mouton, cochon), paiement d'un bloc en survie et import GLB conservé.
- Sauvegarde et reconnexion avec les nouveaux coins et hauteurs.
- 576 formes comparées aux limites du maillage affiché, boîte unique partagée,
cache réutilisé et 12 arêtes ; 9 216 empreintes orientées sur grille entière.
- 75 sculptures superposées : ciel à 15, lumière de bloc à 13 après traversée,
pièce noire à 0. Pose dans le joueur refusée, même devant un trou visuel.
Marqueurs dans `build/sculpture125-client.log`. Captures de plafond, murs et
atelier relues dans `build/sculpture125-evidence/`. Aucun essai Windows,
client distant ou shader tiers ; trois espèces vérifiées visuellement, sans
prétendre avoir inspecté chaque espèce. Aucun benchmark FPS global.
Le GameTest dédié demeure exclu conformément au refus antérieur de son EULA.
Les mondes de test sont jetables ; aucun monde personnel n'est ouvert.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 16 s**, 126 tâches (110 exécutées, 16 à jour). Les sources
des JAR correspondent exactement au dépôt. La comparaison avec beta.124
limite les différences aux classes de placement, particules et atelier prévues,
aux nouveaux libellés FR/EN, au mixin client et à la source blanche de particules.
Les packs normal/Test partagent le même JAR, sans monde ni fixture ; le template
reproduit les ressources du mod et du pack intégré.
- Sanctuary-beta.125.mrpack : 10286360 octets, SHA-256 `9277e59c640c40392ab3750b402bb840020884878f6ece6978e6c4653e18655e`.
- Sanctuary-Test-beta.125.mrpack : 10305282 octets, SHA-256 `9e3dbfa14b5382ba4eb62a78fa7d2161758c2f0e1fdc50fbd5ed776fd4ce32c5`.
- JAR Sanctuary : SHA-256 `b38b75b900dd8cbe015318c739d5547fd7eac52f4337fa517e98f3f6f0ce3b46`.
Reçu local : `build/sculpture125-artifact.json`. Les deux packs et le template
sont copiés et vérifiés dans le dossier habituel `sanctuary-beta/build/`.
## Publication et installation
La [release beta.125](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.125)
est publiée depuis `4ec5b0d028a23a9f753770988ffba61015e2e49a`.
Tag et artefacts immuables, téléchargements publics vérifiés. Canal packwiz :
`47eb833911a96eef0b13805dafe65b2ab7b95c87`.
Deux synchronisations isolées puis deux dans l'instance **Sanctuary Beta**
réussissent. Un seul JAR Sanctuary beta.125 est actif, conforme au hash vérifié ;
le second passage ne change rien. Les **923 fichiers personnels et réglages
suivis** restent inchangés, sans ouverture de monde personnel. Copie préalable
sous `sanctuary-backups/before-beta.125/`. Reçus :
`build/sculpture125-isolated.json` et `build/sculpture125-prism.json`.
+108
View File
@@ -0,0 +1,108 @@
# SCULPT-09 — Forme physique et lumière — beta.122
Contrat du 17 septembre 2026, branche `codex/sculpture-shape-light-beta122`.
Le créateur demande des bounding boxes adaptées aux sculptures et la suppression
des ombres cubiques visibles lorsqu'on en pose plusieurs côte à côte.
La sélection, le contact avec les entités et les collisions suivent les voxels
occupés de chaque sculpture, y compris les creux. Le rendu et la forme physique
partagent leur placement entier sur la grille 1/16, après orientation et ancrage.
Le centre, les quatre bords et les dimensions impaires gardent leur alignement.
La pose vérifie aussi les voxels portés avant que lentité de bloc existe :
elle refuse une intersection avec le joueur et autorise les espaces libres.
La forme est construite directement sur une grille native 16³ et mise en cache
par entité de bloc, modèle et état ; aucun calcul complet à chaque interrogation.
Les sculptures transmettent la lumière et ne sont plus utilisées comme cubes
pleins par l'occlusion ambiante. Leurs faces restent éclairées par le monde,
sans émission de lumière et sans rendu à luminosité maximale. Cette règle est
commune aux sculptures : l'éclairage natif stocké par bloc ne permet pas une
ombre distincte pour chaque petit voxel. L'atelier d'argile reste inchangé.
Aucun identifiant, blockstate, format d'item ou schéma sauvegardé ne change.
Les formes sont recalculées à partir des voxels existants ; aucune migration,
aucun parcours de monde ni régénération de chunk. Les données inconnues gardent
leur conservation opaque et une petite base sélectionnable pour récupérer l'item.
Le travail de documentation déjà présent dans l'autre branche reste intact.
## Vérifications et livraison
Le parcours `Sculpture122ClientChecks` passe en **37 s** sur Minecraft 26.3,
client macOS et serveur intégré, dans un monde plat jetable de graine 122 :
- Pose par la commande native d'utilisation ; sélection du pilier et visée
à travers le trou d'une arche jusqu'au bloc derrière, captures relues.
- Requêtes natives de collision côté serveur et client : voxels occupés solides,
espace vide libre, aucune profondeur artificielle d'un bloc entier.
- Pose refusée dans le joueur, sans consommer l'objet ; petite sculpture acceptée
dans la partie libre du même bloc, sans intersection avec le joueur.
- **80 cas** confrontent le volume et les faces de collision au maillage réellement
émis : arche creuse, marges vides, cube de 4 096 voxels, voxel unique, quatre
orientations et cinq ancrages. Chaque interrogation répétée réutilise la forme.
- Régression de **5 120 placements** du rendu existant : dimensions paires/impaires,
orientations et ancrages, plus marqueurs de direction et modèles avec marges.
- Changement d'orientation/ancrage puis changement des voxels sur la même entité :
cache recalculé et forme client synchronisée.
- **75 sculptures en trois couches** : skylight natif conservé à 15 partout.
Un toit de pierre témoin produit toujours une ombre. La lumière d'un bloc
traverse une sculpture avec l'atténuation de distance native (13 à deux blocs).
- Le rendu reçoit la lumière réelle du monde : 15 au ciel, **0 dans une pièce
fermée et obscure**. Aucun rendu artificiellement lumineux.
- Sauvegarde/reconnexion : modèle, collisions et lumière conservés sur les
deux côtés, sans fichier 3D source.
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuarySculpture122ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Marqueurs `SCULPTURE122_PASS`, `SCULPTURE122_GEOMETRY_PASS`,
`SCULPTURE122_PLACEMENT_PASS`, `SCULPTURE122_LIGHT_PASS` et
`SCULPTURE113_GEOMETRY_PASS` dans `build/sculpture122-client.log` ; captures
conservées dans `build/sculpture122-evidence/`. Le test prépare explicitement
son sol à Y=0 : le preset plat nu commence à Y=-1.
Aucun monde personnel ouvert ; pas d'essai Windows ni depuis deux ordinateurs,
ni de garantie sur les ombres ajoutées par des shaders tiers.
Le GameTest serveur dédié reste exclu conformément au refus antérieur de son EULA.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 13 s**, 126 tâches. Les sources JAR correspondent aux sources
Java du dépôt. Par rapport à beta.121, les différences de production se limitent
aux classes des sculptures et à la nouvelle géométrie partagée (14 entrées,
y compris le déplacement du sélecteur synthétique d'orientation). Toutes les
ressources client, données serveur et configurations de mixins sont identiques.
Les packs normal/Test contiennent le même JAR, sans sauvegarde ni fixture.
Le template beta.122 contient les mêmes ressources que beta.121, octet pour octet.
Reçu local : `build/sculpture122-artifact.json`.
- `Sanctuary-beta.122.mrpack` : 10267459 octets, SHA-256
`b6e24d65797eb7f16670d2f3a591b5f2476820608f72241ecd37fb78a486008e`.
- `Sanctuary-Test-beta.122.mrpack` : 10286380 octets, SHA-256
`90487ee3ad4298fccb8c24e8781af4cbf043d88dc0379fba5c21d99733dac92d`.
JAR Sanctuary : SHA-256
`ff8ebf89f39a64809fae6912253386793e9b5e66ec0adb9fa7521729893d406e`.
## Publication et installation
La [release beta.122](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.122)
est publiée depuis `edc7fc3dfb117cde61be42c1d79b03af11f5dec6`. Tag et artefacts immuables,
téléchargements publics vérifiés. Canal packwiz :
`3d340bea0093b709c6018624795a1b3ca557b72d`.
Deux synchronisations isolées puis deux dans **Sanctuary Beta** réussissent.
Un seul JAR Sanctuary beta.122 est actif ; le second passage est identique.
Les **923 fichiers personnels et réglages suivis** restent inchangés.
Aucun monde personnel ouvert. Copie préalable dans
`sanctuary-backups/before-beta.122/` de l'instance existante ; reçus
`build/sculpture122-isolated.json` et `build/sculpture122-prism.json`.
Le ticket a été réalisé dans le worktree `sanctuary-sculpture-beta122` afin de
préserver les changements de `docs/vision.md` et `docs/villageois-illageois.md`
déjà présents sur la branche de documentation du checkout principal.
- [Pack normal](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.122/Sanctuary-beta.122.mrpack).
- [Pack de test](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.122/Sanctuary-Test-beta.122.mrpack).
- [Template personnel](https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.122/Sanctuary-Template-beta.122.zip).
+110
View File
@@ -0,0 +1,110 @@
# beta.117 — Grain des textures et sculptures en chapeau
Ticket sur `codex/sculpture-texture-grain-beta117`, Minecraft 26.3.
En beta.116, une couleur du modèle source était associée à une seule nuance
de matière. Un modèle uni restait donc uni malgré les pixels différents de la
texture. La sélection utilise maintenant les textures des faces du modèle de
bloc, avec leurs propres teintes du pack actif. Un échantillonnage de pixels
répartit leurs couleurs exactes dans les voxels, sans couleur interpolée.
## Coût et comportement
Au maximum 32 matériaux de faces et 16 × 16 échantillons par matériau sont lus,
puis ramenés à la palette existante de 256 entrées. Les répétitions conservent
la fréquence des nuances. Les pixels transparents sont écartés ; les textures
animées utilisent la première image. Les blocs sans texture lisible gardent
le repli antérieur sur la texture représentative, puis la couleur de carte.
La sélection d'une nuance utilise un mélange entier déterministe des coordonnées
de chaque voxel. Un modèle uni utilise toute la palette ; un modèle ombré
utilise des plages de nuances qui suivent ses zones claires et sombres.
Ce grain est un transfert de palette, pas une projection UV conservant les
motifs ou les veinures du bloc. Les voxels restent opaques.
Le calcul utilise Java standard et les modèles/textures déjà chargés par
Minecraft, sans bibliothèque supplémentaire. Aucun calcul de matière dans
le rendu par image. Le client ne rééchantillonne qu'au changement de matière
ou de ressources ; une rotation réutilise la palette. Le serveur conserve
le modèle recoloré pour les fabrications suivantes avec la même sélection.
## Chapeaux et données
Le système de blocs portés retirait `BLOCK_ENTITY_DATA` des objets pour isoler
les inventaires des coffres et fourneaux. Sur une sculpture, ce composant est
la géométrie elle-même : le slot contenait encore un objet, devenu invisible.
Les sculptures conservent désormais ce composant à l'équipement et au retrait.
Si une ancienne sculpture équipée a perdu ce composant, mais que sa session
de chapeau possède encore le modèle, il est restauré depuis cette donnée
serveur. La restauration ne fabrique aucune géométrie manquante. Les objets
déjà retirés et dépourvus de toute copie du modèle ne sont pas reconstructibles
par ce correctif. Les règles de contenu des coffres restent inchangées.
Identifiants, schéma 1 des sculptures, structure des accessoires et paquet
de sélection inchangés. Les couleurs déjà sauvegardées restent intactes.
Les deux côtés utilisent beta.117 pour le même calcul de prévisualisation et
de fabrication. Aucun monde personnel ouvert ni migration de sauvegarde.
## Vérifications
Le scénario client natif complet passe en 2 min 1 s sur macOS avec serveur
intégré, monde plat jetable de graine 116. Il reprend le scénario beta.116
avec un GLB entièrement uni, plus les régressions de l'atelier 106/111/112/113 :
- 1 207 objets-blocs échantillonnés, huit fabrications payées avec aperçu
identique au résultat serveur, consommation exacte d'un bloc.
- Répartition 25 % / 75 % de deux couleurs de texture sur un modèle uni,
aucune couleur inventée, conservation des zones claires et sombres.
- Couleurs réellement présentes dans les textures natives des faces, avec
plusieurs matériaux d'une bûche ; grain présent sur pierre, bois et minerai.
- Motif indépendant de l'ordre des voxels, stable et sauvegardé ; rechargement
des ressources, palette bornée, inventaire plein et sélections périmées.
- Vrais clics des slots hotbar/chapeau, conservation exacte des composants
et du nom personnalisé, icône et modèle porté visibles, retrait/rééquipement.
- Restauration d'un objet privé de sa géométrie depuis une ancienne session
équipée, puis sauvegarde et reconnexion du client avec le chapeau intact.
- Pose, bord visé, orientation, casse/repose, reconnexion sans fichier source,
menus FR/EN et génération du plan du Métabli inchangés.
Mesure indicative après échauffement, modèle maximal de 4 096 voxels,
101 applications sur le Mac de développement : médiane **0,283 ms**, p95
**0,971 ms**. Ce n'est pas une garantie de temps sur d'autres machines ; le
calcul n'est exécuté ni chaque image ni à chaque objet fabriqué identique.
Marqueurs `SCULPTURE117_GRAIN_PASS`, `SCULPTURE117_HAT_PASS`,
`SCULPTURE117_HAT_RECONNECT_PASS`, `SCULPTURE116_PASS` dans
`build/sculpture117-final-client.log`. Captures relues dans
`build/sculpture117-evidence/`. Pas d'essai Windows ou LAN. Le GameTest dédié
reste exclu selon le refus antérieur de son EULA.
`check build assemblePack assembleTestPack -x :sanctuary:runGameTest` réussit
en **3 min 7 s**, 125 tâches dont 105 exécutées. JAR sources concordants,
versions, contenu et intégrité des deux archives vérifiés. La comparaison
avec beta.116 limite les changements de production au calcul des matières,
à son cache dans le menu et au traitement des sculptures en chapeau.
Les modèles de test et classes de GameTest sont absents de la livraison.
- `Sanctuary-beta.117.mrpack` : 10191137 octets, SHA-256
`adbe5a40bbd050ebc84ff8aca61a7a3643dcf25ec8f2ac59b91561e48275cbbb`.
- `Sanctuary-Test-beta.117.mrpack` : 10210059 octets, SHA-256
`0dacb12b30bde66c647871101a4f4c6b0b58e7ceb29f7743398f8a569b958a6e`.
- JAR Sanctuary :
`1ce63f97f17c6098f3c86c6753f9b912bce39d88e05ba240423c38bdc97307ee`.
Reçu : `build/sculpture117-artifact.json`.
## Publication et instance
La [release beta.117](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.117)
est publiée : JAR, MRpack normal/Test et amorçage Prism, téléchargements publics
et empreintes vérifiés. Le tag immuable désigne
`0f1efdec830342e25d3316b356330ad937d0d942`. Le canal packwiz avance au commit
`a5b75a70f86e42afb8e06ba4daa9880d61c6373e`.
Deux synchronisations isolées puis deux dans l'unique instance **Sanctuary
Beta** réussissent, la seconde passe laissant les fichiers gérés identiques.
Un seul JAR Sanctuary beta.117 est actif. Les 923 fichiers personnels et
réglages suivis sont inchangés ; aucun monde personnel n'a été ouvert.
Copie préalable des fichiers remplacés dans `sanctuary-backups/before-beta.117/`.
Reçus : `build/sculpture117-isolated.json`, `build/sculpture117-prism.json`.
+94
View File
@@ -0,0 +1,94 @@
# SNOW-109 — Fonte saisonnière
Branche `codex/seasonal-snow-melt-beta109`, base beta.108, Minecraft 26.3.
État : livraison locale vérifiée. Demande : ajouter la fonte saisonnière.
## Comportement livré
Neige déposée par la météo Sanctuary : retrait progressif d'une couche de haut
en bas, bloc plein puis sept couches, jusqu'au sol. Deux blocs maximum pour
l'accumulation restent la valeur par défaut confirmée. La fonte est active
avec la météo Real Time, suspendue en hiver et sous un profil neige/averses de
neige, même pendant ses pauses. Les biomes naturellement froids conservent
leur neige. Printemps : une chance sur deux par sondage météo natif ; été :
chaque sondage ; automne : une chance sur quatre. Aucun rattrapage hors ligne,
ni chargement forcé de chunks ; seuls les sommets exposés des chunks simulés.
À 20 ticks/s et `randomTickSpeed = 3`, une couche fond en moyenne en 3,4 minutes en été,
6,8 au printemps et 13,7 en automne. Pas d'eau ni de butin lors de la fonte.
Une règle serveur `sanctuary:seasonal_snow_melt`, active par défaut, permet
d'arrêter la fonte sans désactiver la neige.
## Contrat de données et migration, avant implémentation
Ajout d'une attache Fabric persistante par chunk,
`sanctuary:natural_snow_v1`, sans modifier les formats existants. Elle mémorise
les positions des nouveaux dépôts avec le nombre de couches antérieures et
le nombre attendu après dépôt (0 à 8). Les blocs restent les blocs Minecraft
`minecraft:snow` et `minecraft:snow_block` ; pas de nouvel identifiant de bloc.
L'absence de données signifie aucun dépôt suivi. Aucune recherche rétrospective,
conversion ou réécriture de terrain au chargement : la neige d'avant beta.109
est conservée car son origine n'est pas connue. Les sauvegardes personnelles
restent fermées pendant le développement. Graine de test : 109.
Seules les couches ajoutées par les précipitations depuis beta.109 fondent.
La neige construite, la neige générée et les couches antérieures à un dépôt
sont préservées. Une modification extérieure du bloc (casse, placement,
piston, commande) retire son suivi : le remplacement ne doit jamais hériter
d'une autorisation de fonte. Une incohérence de suivi est oubliée sans fonte.
Les informations suivent le cycle natif de sauvegarde/déchargement du chunk,
sans fichier global ni lecture disque par colonne. Le retrait du mod laisse
des blocs de neige natifs ; aucun effacement n'est lancé par migration.
## Vérifications ciblées
Le client natif lance les contrôles d'accumulation beta.108 (deux mondes neufs),
puis un monde neuf de graine 109 pour la fonte et le recharge après fermeture.
Les quatre saisons utilisent une horloge de test déterministe, sans commande
supplémentaire dans le mod livré. Les sondages appellent le véritable
`ServerLevel.tickPrecipitation`, sans accélération ajoutée au jeu distribué.
Cas vérifiés : bloc plein vers sept couches, fonte de haut en bas jusqu'au sol,
neige construite et couches anciennes, dépôt météo sur une construction,
casse/repose et ajout manuel de couches, toit et capuchon de neige manuel,
activation/désactivation par gamerule, les quatre saisons, profils neige et
pauses d'averses, biome froid et mode Vanilla, sauvegarde native des deux blocs
suivis et de la gamerule, puis fonte après rechargement.
Le choix du sommet utilise la heightmap native mise à jour immédiatement,
sans dépendre d'une propagation de lumière encore en attente après la fonte.
Le suivi est invalidé après toute modification effective de bloc ; chaque
nouveau dépôt ou retrait météo enregistre ensuite uniquement ses couches.
Les instantanés de suivi sont immuables pour la sauvegarde asynchrone des chunks.
## Livraison — 17 septembre 2026
- `./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest` :
réussi, 125 tâches, 2 min 20 s.
- `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryMelt109ClientTests=true -PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true` :
réussi, 54 s ; marqueurs `SNOW108_NATIVE_PASS` et `MELT109_NATIVE_PASS`.
- Java 25. Le GameTest sur serveur dédié reste exclu conformément au refus
antérieur de son EULA ; les essais natifs utilisent le serveur intégré.
- Archives ZIP, métadonnées, sources embarquées, mixins et traductions vérifiés
contre l'archive immuable beta.108. Deux classes existantes modifiées, trois
nouvelles classes plus la classe synthétique du switch de saison. Aucun
test inclus dans le JAR. Assets identiques, sauf deux nouveaux libellés FR/EN.
[Pack normal](../build/Sanctuary-beta.109.mrpack) ·
[Pack Test](../build/Sanctuary-Test-beta.109.mrpack).
| Artefact | SHA-256 |
| --- | --- |
| Normal | `4f80292b97398e993d05e831682c879d2e6b40e7ab8cb385a15142b68c2d3ba4` |
| Test | `c0c7363ec3a2a8c568b77692b65dd8a4138c247bc928adecd5626f83bb5097bb` |
| JAR Sanctuary | `0b53f5c2d9b50890067c42a1c71b84bf70f0c6af90c876020955bbe426ff6ffa` |
Reçu : `build/melt109-artifact.json`. Journaux : `build/melt109-native.log`,
`build/melt109-check-build.log`. Manifeste : `build/melt109-source-manifest.json`.
Assemblage isolé sur beta.108, avec accumulation et œufs beta.107 ; Statuaire
beta.106 reste livré séparément. Sources intégrées au répertoire principal en
préservant ses autres travaux et ses compteurs beta.106 ; le worktree de
livraison utilise beta.109 dans les deux compteurs et le manifeste packwiz.
Aucun tag, publication du canal, déploiement, installation Prism ou monde
personnel modifié. Aucun essai Windows. La fonte n'est pas appliquée
rétrospectivement à la neige ancienne dont l'origine est inconnue.
+88
View File
@@ -0,0 +1,88 @@
# SHADER-127 — intégration des ombres portées pixélisées
Demande du 17 septembre 2026 : livrer le shader dans **beta.127**.
Branche `codex/shader-beta127`, socle publié beta.126, Minecraft 26.3 / Java 25.
La préparation locale [des ombres pixélisées](pixel-shadows-source122.md) est
intégrée sans écraser les changements non publiés du dossier d'origine.
Les gemmes, dernières textures de rubis/saphir, l'argile spéciale et les
commandes de découverte de beta.126 sont conservées.
## Utilisation
**Options → Shaders → Sanctuary · Vanilla Light → Ombres portées pixélisées**.
L'option est désactivée par défaut ; son activation reste un choix du joueur.
Finesse : 8/16/32 pixels par bloc ; portée : 16/32/64 blocs. Défauts : 16 et 32.
Les paramètres FR/EN s'appliquent immédiatement et persistent dans
`config/sanctuary-shaders.json`. La mise à jour préserve les réglages personnels.
Le rendu est natif au mod : aucun pack Iris, téléchargement supplémentaire ou
nouvelle dépendance de rendu.
## Périmètre
Ombres solaires des formes d'occultation des blocs chargés, incluant dalles,
escaliers et obstacles hors écran. Carte de profondeur GPU, grille ancrée dans
le monde, atténuation selon soleil, pluie et brume. L'effet s'arrête la nuit,
dans les dimensions sans soleil, dans les fluides ou avec un moteur externe.
Le HUD et la main ne passent pas dans cet effet. La lumière de gameplay,
les règles serveur, les sauvegardes et la génération ne sont pas modifiées.
La préparation limite le cache à 96 Mio et sa construction à quatre sections
par image dans un budget souple de 3 ms. L'intégration supprime seulement une
invalidation de bord exécutée deux fois à l'identique dans le cache de terrain.
Les formes non occultantes, feuillages ajourés, eau/verre et entités animées ne
projettent pas de nouvelles silhouettes. Les transparences déjà composées
peuvent recevoir l'assombrissement du terrain situé derrière elles. Pas
d'ombres de torches/lune ni de mesure de FPS revendiquée.
## Vérifications et livraison
Client natif Minecraft 26.3 / Java 25 sur macOS, monde neuf plat, graine 122 :
`PixelShadows122ClientChecks` réussit sur la beta.127 en **1 min 26 s**.
Le nom de cette fixture historique est conservé pour suivre la même scène.
- Activation : 920 échantillons de sol assombris, 63 412 inchangés, aucun éclairci.
- Pilier hors écran : 42 048 échantillons restent ombrés ; le retrait du pilier
restitue la lumière sur les 42 048 et conserve les 23 616 déjà éclairés.
La repose rétablit la même ombre sans désactiver le cache.
- Trois finesses et trois portées, redimensionnement GPU, désactivation/libération,
arrêt nocturne, reprise diurne et rechargement des ressources vérifiés.
- Préférences persistantes et bornées ; captures FR/EN inspectées, sans texte
tronqué. La scène pilier/dalle/escalier est également inspectée visuellement.
Logs : `build/shader127-client.log`. Captures :
`mods/sanctuary/build/run/clientGameTest/screenshots/`.
Le serveur GameTest dédié reste exclu conformément au refus antérieur de son
EULA. Aucun monde personnel n'est ouvert. Aucun essai Windows/Vulkan ou FPS
n'est revendiqué ; la validation graphique est celle du client natif local.
Build `./gradlew check build assemblePack assembleTestPack
-x :sanctuary:runGameTest` réussi en **2 min 25 s**, 126 tâches. Les sources
Java dans les archives correspondent aux sources du ticket. La comparaison
avec le JAR beta.126 ne trouve que **21 entrées de production modifiées**,
toutes liées au shader, à son initialisation, ses mixins et ses libellés.
Les règles de jeu, données, textures de gemmes, sculptures et découvertes
sont identiques. Normal et Test contiennent le même JAR ; le template exporte
exactement les ressources du mod. Aucune fixture de test ni monde embarqué.
| Artefact | SHA-256 |
| --- | --- |
| `Sanctuary-beta.127.mrpack` | `23fa6ca0c5d1f1033e13e5370d669491b398d5a99e13f8bd1e983f998a24a20a` |
| `Sanctuary-Test-beta.127.mrpack` | `f185f3a743ba23cd6c024d1c1e46587706bf4f3edb5e14d7e5dee522a1ebf2c2` |
| `sanctuary-beta.127.jar` | `3ef3fab67f4f703864a1acc9ae2395c636d206f3128d3399140eaf045a46d5f3` |
## Publication et synchronisation
[Release beta.127](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.127)
publiée depuis `00be1eb0d0bfe042442d90255385033a7765092f` ; artefacts immuables retéléchargés
et vérifiés. Canal packwiz : `7fd24a43e01ee497a23311e3c78e1dd3dddd877a`.
Deux synchronisations isolées puis deux dans l'instance existante
**Sanctuary Beta** ont réussi. Les **923 fichiers personnels** suivis,
y compris les préférences de shaders, sont conservés. Aucun monde personnel
ouvert ; copie préalable dans `sanctuary-backups/before-beta.127/`.
Les packs normal/Test et le template sont aussi copiés et vérifiés dans
`sanctuary-beta/build/`. Reçus locaux : `build/shader127-artifact.json`,
`build/shader127-isolated.json`, `build/shader127-prism.json` et journal de
publication `build/shader127-publication.log`.
+106
View File
@@ -0,0 +1,106 @@
# SHADER-128 — stabilité, lune et feuillage
Demandes du 17 septembre 2026 : réduire le jitter des bords et à midi, conserver
des ombres de blocs nettes et un feuillage nuancé, ajouter une ombre lunaire
fine et une transmission
irrégulière du feuillage selon son épaisseur. Branche `codex/moon-foliage-beta128`,
socle publié beta.127, Minecraft 26.3 / Java 25.
## Résultat
Les faces de voxels reçoivent l'ombre sur une grille fixe ; leur plan est
stabilisé au 1/16 de bloc et les faces inclinées conservent leur normale. La
carte de profondeur utilise un ancrage par 16 blocs avec alignement de ses
texels. **Les ombres des blocs restent nettes** : le créateur a écarté leur
adoucissement après l'essai visuel. Le filtrage est réservé au feuillage.
Le soleil continue de se déplacer : ce mouvement naturel peut toujours faire
avancer une ombre d'une case. L'objectif est de supprimer les oscillations
liées à la caméra, pas de figer le temps.
Entre une élévation solaire de 0,92 et le zénith, l'intensité diminue doucement
jusqu'à 25 % de sa valeur habituelle : alpha maximal 0,095 au lieu de 0,38.
La lune réutilise la même carte et son angle natif ; alpha maximal 0,10 selon
sa phase, nul à la nouvelle lune. Horizon, pluie, portée et brume atténuent
les deux lumières. Pas de seconde passe de carte lunaire simultanée.
Les blocs du tag vanilla `leaves` projettent une couverture probabiliste fixe
sur une grille de quart de bloc. Les faces internes restent présentes : plus
le rayon traverse de couches, moins il a de chances de passer. Il s'agit d'une
approximation statistique de l'épaisseur, pas d'un comptage des feuilles ni
d'une lecture des trous de leur texture. Quatre échantillons bilinéaires sur
un quart de bloc mélangent cette couverture
en nuances, évaluées sur la grille pixélisée. Un masque R8 distingue feuilles
et blocs dans la même passe de profondeur, pour garder les silhouettes opaques
nettes. Les comparaisons suivent le plan récepteur pour éviter l'auto-ombrage
sur les surfaces obliques. Le motif ne dépend ni du temps ni de la caméra et
ne demande aucune lecture GPU côté CPU en production.
Les budgets du cache restent 96 Mio, quatre sections et 3 ms souples par image.
Le feuillage ajoute des faces ; son filtrage utilise seize comparaisons de
profondeur et, selon le cas, autant de lectures du masque. Les ombres opaques
pleines utilisent le chemin court. Le masque prend 4 Mio à la définition
par défaut, 16 Mio au maximum ; aucune promesse de FPS n'est faite.
Réglages existants et libellés FR/EN conservés/actualisés. Les ombres restent
optionnelles et désactivées par défaut. Règles, éclairage de gameplay, mondes
et génération inchangés. Les limitations de beta.127 concernant les entités,
fluides, verre et autres formes non occultantes subsistent.
## Vérifications
`PixelShadows122ClientChecks`, fixture historique étendue, réussit en **1 min
44 s** dans un monde neuf plat, graine 122, client natif macOS/OpenGL.
- Soleil : 920 échantillons de sol ombrés et 63 412 inchangés ; retrait/repose
d'un pilier hors écran restitue puis rétablit son ombre.
- Lune : ombre localisée mesurée ; arrêt des passes à la nouvelle lune.
- Midi : ombre atténuée et **zéro échantillon de transition adoucie sur 65 664**
dans la scène de contrôle du contour opaque.
- Caméra : petits déplacements autour de l'ancien ancrage entier et du nouvel
ancrage par 16 blocs, retour au point initial, petites rotations en vue
oblique, instants avant/après midi et passage de 5999 à 6001 ticks.
Comparaisons d'images avec tolérance de trois niveaux par canal et moins
de 1 % d'échantillons changés pour ces petits mouvements.
- Vue oblique : 19 637 échantillons ombrés, 46 027 inchangés sur le sol blanc.
- Feuillage : assombrissement moyen mesuré d'environ **18,6 %** pour une couche,
**31,7 %** pour quatre, contre **36,8 %** sous une couverture solide.
Motif fixe dans le temps ; modification des couches invalide le cache actif.
- Trois finesses/trois portées, désactivation/libération GPU, préférences
persistantes, rechargement des ressources, textes FR/EN et captures inspectés.
Commande native : `./gradlew :sanctuary:runClientGameTest
-PsanctuaryClientTests=true -PsanctuaryPixelShadows122ClientTests=true
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true` sous Java 25.
Logs : `build/shader128-client.log` ; captures sous
`mods/sanctuary/build/run/clientGameTest/screenshots/`.
`./gradlew check build assemblePack assembleTestPack
-x :sanctuary:runGameTest` réussit en **2 min 24 s**, 126 tâches.
Les sources archivées correspondent au ticket. **13 entrées de production**
diffèrent de beta.127, limitées aux classes du shader, GLSL et libellés FR/EN.
Gemmes, sculptures, découvertes, données et règles de jeu restent identiques.
Normal et Test embarquent le même JAR ; le template correspond exactement aux
ressources exportables. Aucun monde ni fixture de test embarqué.
Le serveur GameTest dédié reste exclu conformément au refus antérieur de son
EULA. Aucun monde personnel utilisé. Aucun essai Windows/Vulkan revendiqué.
## Artefacts vérifiés
| Artefact | SHA-256 |
| --- | --- |
| `Sanctuary-beta.128.mrpack` | `84125b18366afde52c8cba4bc7007257b1c3d8b79d413338abe64d0e0ae8feaf` |
| `Sanctuary-Test-beta.128.mrpack` | `6bfb10d8d63875bfb84e813d4f0a9faf5db30902cc0400deda0993c08b86e597` |
| `sanctuary-beta.128.jar` | `c54cbae7efaa7059c8fd4d28801087983379958fe34eedff51682d106d649c6a` |
## Publication et synchronisation
[Release beta.128](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.128)
publiée depuis `a4e96c0d99c976231d7ca92b1db6bdb6aa7083c6` ; les artefacts immuables ont été
retéléchargés et vérifiés. Canal packwiz : `eba01726ee132a6e548d129fa7ee04f24c880917`.
Deux synchronisations isolées puis deux dans l'instance existante
**Sanctuary Beta** ont réussi. Les **923 fichiers personnels** suivis,
y compris les réglages de shaders, sont conservés. Aucun monde personnel
ouvert ; copie préalable dans `sanctuary-backups/before-beta.128/`.
Packs normal/Test et template copiés et vérifiés dans `sanctuary-beta/build/`.
Reçus locaux : `build/shader128-artifact.json`, `build/shader128-isolated.json`,
`build/shader128-prism.json` ; journal : `build/shader128-publication.log`.
+119
View File
@@ -0,0 +1,119 @@
# SHADER-129 — arêtes connectées et portées étendues
Demandes du 17 septembre 2026 : highlight optionnel, puis raccordement CTM de
tous les blocs coplanaires, portée indépendante 16256 blocs, ombres à 128/256,
suppression de l'atténuation au zénith et du réalignement cyclique des ombres.
Branche `codex/edge-highlights-beta129`, socle beta.128, Minecraft 26.3 / Java 25.
## Résultat
Dans **Options → Shaders → Sanctuary · Vanilla Light**, les reflets sur les
arêtes sont désactivés par défaut. L'intensité va de 0 à 100 ; la valeur 30
éclaircit au maximum de 12 %. Leur portée se règle indépendamment des ombres :
**16, 32, 64, 128 ou 256 blocs**. Les anciens réglages restent conservés.
Le highlight raccorde les surfaces plates, y compris entre matériaux différents,
sans dessiner les jonctions intérieures. Il suit les contours visibles du relief,
y compris les dalles et escaliers. Il multiplie la couleur existante pour garder
les pixels des textures et composer avec les ombres. Ce CTM géométrique utilise
la profondeur déjà produite par Minecraft : aucune liste de blocs autorisés,
aucun pack CTM à fournir, aucune exploration CPU du volume de 256 blocs.
Une cassure/repose modifie le contour dès que le terrain natif est réaffiché.
Le trait proche suit la grille de 1/16 de bloc. À distance, la couverture devient
partielle pour limiter le scintillement des traits plus petits qu'un pixel.
La portée choisie s'efface progressivement dans son dernier quart et respecte
la brume ainsi que la distance de rendu. Une passe plein écran, quatre sondes
de profondeur et un tampon uniforme de 176 octets ; aucun retour GPU vers CPU
en production. L'arrêt de l'option ou une intensité nulle libèrent ce tampon.
Ce n'est pas un remplacement des textures par des variantes CTM. Le calcul
concerne les faces visibles alignées sur la grille : les faces hors écran,
les surfaces transparentes absentes de la profondeur et les géométries
arbitrairement inclinées ne sont pas reconstruites. À très grande distance,
les détails plus petits qu'un pixel peuvent rester imperceptibles. Aucun
chargement de chunk forcé, aucune promesse de FPS.
Les ombres proposent les cinq mêmes portées. La carte reste plafonnée à
4096 × 4096 : les grandes distances réduisent sa précision spatiale. Le cache
garde ses limites de 96 Mio, quatre sections et 3 ms souples de construction
par image ; la réconciliation des chunks est limitée aux ticks et changements
de caméra/terrain plutôt qu'à toutes les images.
L'intensité solaire reste pleine au zénith. Les contours opaques restent nets,
le filtrage du feuillage et les ombres légères de la lune sont conservés.
Le réalignement de la grille lumineuse a lieu au changement d'ancrage de la
caméra, avec transfert de phase par texels entiers. La rotation du soleil ne
réarrondit plus la projection de l'origine mondiale à chaque image, source
de sauts périodiques amplifiés aux grandes coordonnées. Le soleil continue
d'avancer ; une ombre pixélisée peut naturellement changer de case. Cette
correction ne modifie pas l'horloge serveur ni sa cadence native.
Textes FR/EN. Aucun changement de règles, sauvegardes, génération, gemmes,
sculptures ou découvertes.
## Vérifications et livraison
Le client natif réussit en **2 min 41 s**, dans un monde neuf plat, graine 122,
sur macOS / Apple M1 / OpenGL :
- CTM : 596 échantillons éclaircis sur le contour et 65 068 conservés ; les
20 centres et 20 jonctions coplanaires ciblés restent intacts, y compris
au changement de matériau. L'intensité 90 produit environ trois fois le gain.
- Ouverture d'un trou : 716 échantillons éclaircis ; la fermeture restitue
l'image connectée. Au-delà de 16 blocs, le réglage 16 supprime le contour ;
le réglage 64 le rétablit (254 échantillons éclaircis).
- Cinq portées CTM et cinq portées d'ombres, persistance/clamp, migration des
anciennes préférences, arrêt/libération, rechargement, caméra et vue oblique
avec ombres. Captures françaises/anglaises inspectées ; suppression ensuite
d'un préfixe redondant dans le libellé de portée.
- Soleil, lune, nouvelle lune, ombres opaques nettes à midi et transmission
du feuillage restent vérifiés. Casters hors écran et retrait/repose actifs.
- 2 000 petits pas solaires aux coordonnées ±100 000 vérifient l'absence de
saut de translation de la carte ; changement d'ancrage par texels entiers.
La séquence du vrai service realtime suit 294 images : angle avancé de
0,000694 radian, aucun rebond dans les 65 664 échantillons de sol suivis.
Sur cette courte séquence, aucune case opaque n'a changé ; cela ne constitue
pas une mesure de mouvement visible sur une journée entière.
La fixture initiale capturait parfois le terrain avant la fin de sa construction
native : elle attend désormais la réception de toute la plateforme et la fin
compilée des sections. Aucun changement de gameplay pour contourner ce problème.
Commande : `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryPixelShadows122ClientTests=true -PsanctuaryClientNoVsync=true
-PsanctuaryQuickTests=true`. Log `build/shader129-client.log`, captures sous
`mods/sanctuary/build/run/clientGameTest/screenshots/`.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 17 s**, 126 tâches. Une dernière passe dassemblage intègre
la simplification du libellé de portée (2 min 18 s). Les archives sont vérifiées :
**17 entrées de production** diffèrent de beta.128, limitées au shader et à ses
interfaces. Même JAR dans normal/Test, sources archivées conformes, ressources
du template exactes, assets des gemmes inchangés. Aucun monde ni test embarqué.
Le serveur GameTest dédié
reste exclu conformément au refus antérieur de son EULA. Aucun monde personnel
utilisé pour les essais, aucun résultat Windows/Vulkan revendiqué.
Archives vérifiées dans `build/` et recopiées dans le dossier de livraison
habituel `sanctuary-beta/build/` :
- Normal : 10 353 946 octets, SHA-256
`2c7735194faab8a699004e69ad543ce6e8fabdebe297b759bffd31fea2dcc2e8`.
- Test : 10 372 872 octets, SHA-256
`cca572ee313d1d7e66ed745bb48bac62490998760d9b7bbfc7a1f6d60c430dce`.
- JAR Sanctuary :
`ca3e2ff4e0717a3a54c1d57478d43aade39d001b71c4eec745d76f010f7def54`.
[Release beta.129](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.129)
publiée depuis `35103a7ea8635dc4ed26293f00e86d99aaacfca8`. Canal packwiz
`2eaa0130a4cd475c598beefdab40f48fc8681ab7`. Deux synchronisations isolées puis deux synchronisations
dans l'instance **Sanctuary Beta** ont réussi. Les **923 fichiers personnels**
suivis, dont les réglages de shader, sont inchangés. Aucun monde personnel ouvert.
Sauvegarde préalable des fichiers gérés : `sanctuary-backups/before-beta.129/`.
Le JAR installé a le hash vérifié ci-dessus. Reçus locaux :
`build/shader129-artifact.json`, `build/shader129-isolated.json` et
`build/shader129-prism.json`. Le checkout initial avec ses modifications en
cours a été préservé ; seule la copie des archives versionnées rejoint son
répertoire `build/`.
+131
View File
@@ -0,0 +1,131 @@
# SHADER-130 — bloom et précision commune
Demandes du 17 septembre 2026 : bloom réglable du soleil et des sources
lumineuses ; inclusions émissives du fer, cuivre, redstone, lapis, diamant,
émeraude, rubis, saphir, quartz et or ; réglage commun « Précision » pour
les ombres et le highlight. Branche `codex/bloom-beta130`, socle beta.129,
Minecraft 26.3 / Java 25.
## Résultat
Dans **Options → Shaders → Sanctuary · Vanilla Light**, le bloom possède
un interrupteur, une intensité et une diffusion réglables de 0 à 100.
Les minerais ont leur propre interrupteur et intensité. Le bloom reste
optionnel, désactivé initialement, avec une intensité préparée à 35, une
diffusion à 50 et une émission des minerais à 50. Une intensité globale
nulle arrête les passes et libère les ressources de cet effet.
Les nouveaux réglages par défaut sont **Pixel Shadows activé**, distance
des ombres **128 blocs**, highlight **32 blocs** et **Précision 16 pixels
par bloc**. La précision unique propose 8, 16 et 32 et contrôle simultanément
ombres et arêtes. La clé JSON historique `shadowPixels` est conservée :
les préférences déjà personnalisées ne sont pas écrasées.
Les vingt textures de minerais sont analysées depuis les ressources actives.
La palette de pierre, de deepslate ou de netherrack est comparée aux pixels
colorés des inclusions, avec un traitement du quartz et de l'or du Nether.
Les reflets clairs accolés aux inclusions sont conservés. Le masque est
calculé une fois par texture et conservé en cache jusqu'au rechargement des
ressources. Une texture optionnelle `<nom>_e.png` peut préciser ce masque
pour une texture candidate ; sa luminance maximale multipliée par l'alpha
remplace la détection automatique. Les couleurs affichées viennent toujours
de l'atlas Minecraft actif, y compris son animation.
Les sources sont les faces visibles des modèles de blocs lumineux, la lave,
le soleil et la lune. Les lampes éteintes ne produisent pas de halo. Le
niveau lumineux natif pondère les sources ordinaires ; l'émission des minerais
est purement graphique. La profondeur du terrain élimine les inclusions
cachées et masque le soleil derrière les constructions. Le cœur émissif
conserve ses pixels nets, tandis qu'un halo séparé est diffusé à résolution
réduite puis composé sur l'image.
Aucun niveau de lumière serveur, spawn, règle de jeu, format de sauvegarde,
identifiant ou paramètre de génération ne change. Aucun monde personnel
n'est ouvert pour les essais.
## Coût et limites
La géométrie suit uniquement les sections natives visibles et déjà chargées.
Leur palette permet d'écarter rapidement les sections sans source ; le cache
invalide les sections touchées lors des modifications. Construction répartie
sur les images, au plus quatre sections démarrées et un budget souple de
3 ms, cache GPU plafonné à 32 Mio et 16 384 faces par section. Une section
qui dépasse les limites est omise. Aucun chargement de chunk forcé.
Le masque GPU est plafonné à 256 textures, chacune échantillonnée au plus en
64 × 64 ; les textures natives 16 × 16 conservent leurs texels. Les masques
animés utilisent leur première image, tandis que la couleur reste animée.
La carte d'émission est à la résolution de l'écran ; la diffusion séparable
utilise deux cibles flottantes à 1/8 de largeur et de hauteur, sans retour
GPU vers CPU en production. Les allocations sont libérées à l'arrêt, au
rechargement et à la déconnexion, et recréées au changement de taille.
Cette première version ne reconstruit pas les sources hors écran, les
particules, les entités lumineuses ni les modèles dessinés exclusivement par
un renderer de block entity. Les packs très différents peuvent demander un
masque explicite. Les silhouettes des liquides sont approximées puis
masquées par la profondeur native. Aucune promesse de FPS ni validation
Windows/Vulkan ; les essais graphiques portent sur macOS / Apple M1 / OpenGL.
## Vérifications
Le test client ciblé réussit en **1 min 29 s**, dans un nouveau monde plat,
graine 122. Il analyse les vingt textures, refuse les pixels gris de leur
roche, mesure le gain nocturne et les variations réelles d'intensité/diffusion.
Couvrir les minerais de pierre supprime toute source émissive. Retirer les
blocs rétablit l'émission ; le rechargement des ressources fait de même.
Torche, glowstone, lampe alimentée, lave et soleil sont vérifiés, ainsi que
l'arrêt de la lampe et l'occultation du soleil par de la pierre. Les valeurs
par défaut et la conservation d'anciens choix personnalisés passent.
Log ciblé : `build/shader130-client-bloom.log` ; masques inspectables dans
`mods/sanctuary/build/run/clientGameTest/bloom130-ore-masks.png` et son CSV.
La suite shader complète réussit en **3 min 16 s** : casters hors écran,
retrait/repose, trois précisions, cinq portées, lune, zénith, feuillage,
realtime, caméra et rechargement restent vérifiés. Les arêtes CTM restent
raccordées entre matériaux ; 1 295 échantillons du contour sont éclaircis
à précision 8, 596 à 16 et 120 à 32. Les captures françaises/anglaises et
le rendu des minerais/du soleil sont inspectés.
Commandes natives : `./gradlew :sanctuary:runClientGameTest
-PsanctuaryClientTests=true -PsanctuaryPixelShadows122ClientTests=true
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true`. Le test ciblé utilise
`-PsanctuaryBloom130ClientTests=true` à la place de la propriété PixelShadows.
Log complet : `build/shader130-client-full.log` ; captures sous
`mods/sanctuary/build/run/clientGameTest/screenshots/`.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 24 s**, 126 tâches. Le serveur GameTest dédié reste exclu
conformément au refus antérieur de son EULA. La comparaison au binaire beta.129
trouve **24 entrées de production** modifiées, toutes limitées au shader et à
ses interfaces. Gameplay et textures des gemmes inchangés ; aucun test,
monde ou modèle GLB embarqué. Les sources archivées correspondent aux sources
Java, les packs normal/Test embarquent le même JAR et le template contient
exactement les ressources prévues.
Archives vérifiées dans `build/` et recopiées dans le dossier habituel
`sanctuary-beta/build/` :
- `Sanctuary-beta.130.mrpack` : 10386021 octets, SHA-256
`7a3fcd4e496fa136eb3e0896fa7b856ae91771123186fa8df13c8fb1e0cf3e9a`.
- `Sanctuary-Test-beta.130.mrpack` : 10404944 octets, SHA-256
`8de094fcbc58a300cc24d64c8d1b7931fdb8db354c75defa6bf2a2aa4a123a23`.
JAR : `1ac4d1b1339361fb665f03ca3bd359163db5037ffd90e684c5a461759f6076e7`.
[Release beta.130](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.130)
publiée depuis `534dfec4f88169a200702b50d1ba87d85c107bee`. Canal packwiz
`68e06353bf880af04c1c72d4e3a159f11f94b619`. Les téléchargements publics sont vérifiés par SHA-256.
Deux synchronisations isolées, puis deux dans la même instance **Sanctuary
Beta**, réussissent. Un seul JAR Sanctuary beta.130 est actif. Les
**923 fichiers personnels suivis** conservent leurs hashes, dont les mondes,
packs et préférences de shaders. Sauvegarde préalable dans
`sanctuary-backups/before-beta.130/` de l'instance. Aucun monde personnel ouvert.
Reçus locaux ignorés : `build/shader130-artifact.json`,
`build/shader130-isolated.json`, `build/shader130-prism.json` et
`build/shader130-publication.log`. Le checkout original conserve ses
modifications préexistantes ; seuls les trois artefacts versionnés vérifiés
sont recopiés dans son dossier `build/`.
+91
View File
@@ -0,0 +1,91 @@
# SHADER-131 — émissifs indépendants et réglages initiaux
Demande : activer par défaut bloom, minerais émissifs et highlight ; garder
les émissifs avec halo coupé ou intensité du bloom à zéro, sans bouton ajouté ;
ajouter 64 et 128 pixels/bloc en options. Précision initiale 16, distances
highlight 32 et ombres 128 conservées. Préférences personnalisées préservées.
Branche `codex/emissive-beta131`, socle beta.130, Minecraft 26.3 / Java 25.
Le futur effet demandé est une légère teinte diffusée depuis les blocs
voisins, pas des reflets reconnaissables. Étude seulement pour ce ticket ;
aucun SSR ou éclairage indirect expérimental activé.
## Comportement et validation
Le curseur à zéro et l'interrupteur Bloom coupent uniquement le halo.
Le réglage existant des minerais contrôle leurs inclusions nettes séparément.
Sans halo, les cibles de diffusion GPU sont libérées ; l'émission garde
seulement les ressources nécessaires. Tout désactiver libère l'ensemble.
La grille commune propose 8, 16, 32, 64 et 128, sans augmenter le plafond
4096 de la carte d'ombres. Libellés FR/EN et essais clients natifs sur les
inclusions, l'absence de halo, les transitions et les nouvelles précisions.
Aucun changement de lumière serveur, de génération ou de sauvegardes.
Le cœur émissif et le halo utilisent maintenant deux chemins indépendants.
Les textures et leur analyse restent celles de beta.130. Avec le halo coupé,
la carte d'émission est effacée avant les faces, le cœur net est composé,
et les passes de ciel, réduction, diffusion et application du halo sont
omises. Le retour au bloom recrée ses cibles. Aucun bouton ajouté, aides
FR/EN adaptées et choix explicitement désactivés toujours conservés.
## Vérifications
Suite client native réussie en **3 min 46 s**, monde plat neuf de graine 122,
macOS / Apple M1 / OpenGL. Cinq précisions sauvegardées et chargées, bornes
et seuils de normalisation, carte d'ombres plafonnée et arêtes CTM rendues
à 64/128. Le gain mesuré des traits diminue de 0,02778 à précision 32 à
0,02094 à 64, puis 0,01013 à 128 dans la même scène.
Les inclusions restent nettes sans halo : le rendu Bloom OFF correspond
au rendu intensité zéro. Aucun gain mesuré hors du masque source, ressources
de diffusion absentes ; couper aussi les émissifs libère l'ensemble et
restitue l'image initiale. Réactiver le bloom restitue son image précédente.
Captures OFF/zéro inspectées. Valeurs initiales ON vérifiées ; un ancien
choix explicitement OFF reste OFF. Les essais beta.130 (vingt masques,
occultation, sources, rechargement), lune, feuillage et realtime passent.
Le premier essai rencontrait une assertion historique attendant le highlight
OFF lorsqu'une clé était absente. Elle attend désormais la nouvelle valeur
ON ; les cas de préférences explicitement désactivées restent testés.
Commande : `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryPixelShadows122ClientTests=true -PsanctuaryClientNoVsync=true
-PsanctuaryQuickTests=true`. Log : `build/shader131-client-full.log` ; captures
sous `mods/sanctuary/build/run/clientGameTest/screenshots/`.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 30 s**, 126 tâches. Les archives normal/Test, leurs sources
et le template sont vérifiés. Six entrées de production changent : moteur
Bloom, préférences, interface et libellés. Gameplay, shaders GLSL et textures
restent identiques à beta.130. Aucun résultat Windows/Vulkan
revendiqué ; le serveur GameTest dédié reste exclu conformément au refus
antérieur de son EULA.
## Piste suivante — diffusion des couleurs
Choix confirmé : légère teinte des surfaces voisines. Une estimation SSGI
utilise la couleur et la profondeur visibles pour des rebonds diffus ; voir
la [documentation primaire Unity](https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@17.0/manual/Override-Screen-Space-GI.html).
Proposition à expérimenter : faible intensité, courte portée autour des
surfaces, calcul réduit, rejet par profondeur pour ne pas teinter au travers
des murs. Vérifier les bords de l'écran, les blocs hors champ, la stabilité
en mouvement et les textures avant de fixer une qualité. Cette piste n'est
pas implémentée dans beta.131.
## Livraison
- `Sanctuary-beta.131.mrpack` : 10386312 octets ; SHA-256 `e02067e424bf4f54512d5cfb1b5cde0fe232aa6bdadc0d38981cd15817a6387a`.
- `Sanctuary-Test-beta.131.mrpack` : 10405238 octets ; SHA-256 `298387cce5a5b7cdc09b3a9d24859b674a736b25abcbafa7995b813757641265`.
JAR : `87210da23f7781efccdbdbf5d4e2d3c1ff1857a7f326027b93d6a301c7dfdb0d`.
Archives vérifiées recopiées dans `sanctuary-beta/build/`. [Release beta.131](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.131)
publiée depuis `078d3e6833daa7de7f6c6d0e1a6c17d5dbefe075`. Canal packwiz
`efb18c274d95d988a9566b8c52751469f002cdda`. Téléchargements publics vérifiés par hash.
Deux synchronisations isolées, puis deux dans la même instance **Sanctuary Beta**
réussissent. Un seul JAR Sanctuary beta.131 ; les **923 fichiers personnels
suivis** conservent leurs hashes, dont les préférences de shaders et les mondes.
Sauvegarde préalable `sanctuary-backups/before-beta.131/` ; aucun monde personnel
ouvert. Reçus ignorés : `build/shader131-artifact.json`,
`build/shader131-isolated.json`, `build/shader131-prism.json` et
`build/shader131-publication.log`. Le checkout original conserve ses changements.
+106
View File
@@ -0,0 +1,106 @@
# SHADER-132 — diffusion locale SSGI expérimentale
Demande : légère teinte diffusée des surfaces voisines, sans reflets miroir
ni shader d'eau. Branche `codex/ssgi-beta132`, socle beta.131, Minecraft 26.3 /
Java 25. Aucun changement de génération, sauvegarde ou lumière serveur.
## Résultat
**Options → Shaders → SSGI · couleurs diffusées** active un rebond diffus
local. L'effet expérimental est initialement OFF, avec une intensité préparée
à **35 %** ; le curseur propose 0100. À zéro ou OFF, ses cibles et uniformes
GPU sont libérés. Les autres effets et leurs préférences sont conservés.
La couleur d'une surface visible peut teinter les surfaces proches qui lui
font face. Le calcul porte à **2,5 blocs** du récepteur et s'estompe entre
24 et 32 blocs de la caméra. Il utilise une copie de la couleur native après
les ombres, avec la profondeur et des normales reconstruites. Le premier
obstacle arrête chaque rayon, même si son épaisseur empêche de retenir une
intersection. Les plans coplanaires ne s'éclairent pas eux-mêmes.
Douze directions hémisphériques fixes, au maximum dix étapes par rayon,
sont évaluées à demi-résolution en largeur et hauteur. La reconstruction
plein écran est guidée par la profondeur pour conserver les silhouettes et
les détails des textures. Le cœur des émissifs, le highlight et le bloom
sont composés ensuite : pas de halo réinjecté dans le rebond ni de boucle
de rétroaction d'une image sur l'autre. Aucune lecture GPU vers CPU ni
recherche de chunks en production. Pas de bruit temporel ou d'historique.
Deux cibles, RGBA8 plein écran et RGBA16 flottant à demi-résolution, soit
environ six octets par pixel de l'écran, plus 176 octets d'uniformes par
segment du tampon natif. Redimensionnement, arrêt, déconnexion et
rechargement libèrent/recréent les ressources possédées. Ce budget n'est
pas une garantie de FPS ; le SSGI coûte davantage qu'un simple réglage de
colorimétrie.
## Limites de cette version
L'estimation utilise seulement la couleur et la profondeur visibles. Les
blocs hors champ ou cachés n'apportent pas leur couleur. Le résultat peut
changer lorsqu'ils entrent ou sortent de l'image ; une atténuation près
des bords limite la coupure. Les surfaces transparentes absentes de la
profondeur ne sont pas reconstruites. Petits objets et intersections plus
minces que l'échantillonnage peuvent manquer. Il s'agit d'une approximation
diffuse locale, pas d'une simulation complète d'éclairage global ni de
reflets spéculaires. Aucune modification de l'eau et aucune source hors
champ déduite ou générée.
## Vérifications
Test ciblé natif réussi en **1 min** sur macOS / Apple M1 / OpenGL, nouveau
monde plat de graine 122. À intensité 90, les échantillons du sol blanc
montrent un gain rouge cumulé de 8 968 contre 20 bleu devant le mur rouge,
puis 9 168 bleu contre 23 rouge devant le mur bleu. Le sol seul est inchangé.
OFF/zéro restituent l'image de base et libèrent les cibles ; intensité 20
réduit le gain. Changer la couleur du mur complètement occulté laisse
l'image inchangée. Rechargement, caméra fixe, mouvement infinitésimal et
retour à la caméra d'origine passent, sans accumulation de couleur.
Deux ajustements de fixture ont précédé ce résultat : inclure dans les
mesures le blanc légèrement bleuté par l'éclairage natif, et formater les
petits angles de `/tp` en décimal car la commande refuse la notation
scientifique. Aucun comportement du jeu modifié pour ces corrections.
Log ciblé : `build/shader132-client-ssgi.log`. La suite complète réussit en
**4 min 18 s** et vérifie aussi une fenêtre 961 × 541, le retour à sa taille
initiale, le SSGI avec ombres/highlight/bloom/émissifs actifs, ainsi que
l'arrêt global du shader. Les captures françaises et anglaises passent.
Les contrôles précédents des cinq précisions, ombres, lune, feuillage, CTM,
bloom et émissifs restent réussis. Log : `build/shader132-client-full.log`.
Commandes : `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryPixelShadows122ClientTests=true -PsanctuaryClientNoVsync=true
-PsanctuaryQuickTests=true`. Pour le test ciblé, remplacer la propriété
PixelShadows par `-PsanctuarySsgi132ClientTests=true`.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 25 s**, 126 tâches. Les packs normal/Test contiennent le
même JAR ; sources archivées et template de ressources correspondent aux
sources. Comparaison avec beta.131 : **11 entrées de production** modifiées,
limitées au SSGI, à ses options et à ses points d'appel. Gameplay et textures
des gemmes inchangés, aucun monde ni test embarqué. Aucun résultat
Windows/Vulkan revendiqué.
Le serveur GameTest dédié reste exclu conformément au refus antérieur de
son EULA. Les captures panoramiques et les milieux de brume sous l'eau/lave
ou neige poudreuse suspendent cette passe, comme les autres effets de
profondeur Sanctuary.
## Livraison
- `Sanctuary-beta.132.mrpack` : 10394026 octets, SHA-256 `a7c0823e00f36925919645e32e7792242ec1d01015b41bee5b4f6285b9fc533d`.
- `Sanctuary-Test-beta.132.mrpack` : 10412949 octets, SHA-256 `9bc30a7d6d5834f9323f15f0c39d3f49d200e1a97d739266ab373c9e1ba4a8fd`.
JAR : `83eb2d091a7acd85eaa8b3b6a00a40ea483f9eeb2a30c033bdf68b4d717c5142`.
Archives vérifiées recopiées dans `sanctuary-beta/build/`. [Release beta.132](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.132)
publiée depuis `7e21781a9a08c669c7d6b65653bd9d408887689c`. Canal packwiz
`9edaaedc0205c525ecce9de66b5ca7827c56c28f` ; téléchargements publics vérifiés par SHA-256.
Deux synchronisations isolées, puis deux dans la même instance **Sanctuary Beta**,
réussissent. Un seul JAR beta.132 actif ; les **923 fichiers personnels suivis**,
dont sauvegardes et préférences de shaders, gardent leurs hashes. Sauvegarde
préalable `sanctuary-backups/before-beta.132/` ; aucun monde personnel ouvert.
Le checkout original conserve ses changements préexistants.
Reçus locaux ignorés : `build/shader132-artifact.json`,
`build/shader132-isolated.json`, `build/shader132-prism.json`,
`build/shader132-publication.log`.
+106
View File
@@ -0,0 +1,106 @@
# SHADER-133 — SSGI visible au réglage courant
Demande : le rebond diffus de beta.132 est trop discret pour être distingué.
Branche `codex/ssgi-strength-beta133`, socle beta.132, Minecraft 26.3 / Java 25.
## Changement
La collecte conserve douze directions, dix étapes, une demi-résolution et
un rayon de 2,5 blocs. L'atténuation spatiale devient linéaire plutôt que
quadratique. Le mélange est reconstruit en lumière approximativement linéaire,
puis réencodé une seule fois. Un gain artistique plus fort rend la couleur
lisible et une courbe progressive évite de couper brutalement les canaux
à blanc. Les surfaces sans rebond restent intactes. La force demeure réglable
de 0 à 100, avec le même réglage initial de 35 ; aucune préférence enregistrée
n'est écrasée. SSGI reste optionnel, initialement désactivé.
Aucun rayon, cible GPU ou texture de matériau supplémentaire. La composition
ajoute une exponentielle et une racine carrée par canal ; le coût exact en FPS
reste à mesurer sur la machine du joueur. Les normales de géométrie orientent
déjà le rebond. Pas de PBR ni de normales procédurales de textures ajoutés.
## Piste matériaux
Pour une étape distincte, des normales de faible amplitude calculées au
chargement des textures, mises en cache, et une rugosité par famille de matériaux
permettraient d'étudier du relief et des reflets orientés. Une simple conversion
luminosité → hauteur ne connaît pas le relief réel : un motif peint peut devenir
une bosse artificielle. Commencer sur pierre, briques et bois avec une amplitude
réglable serait préférable à une génération aveugle pour tous les blocs.
La passe actuelle ne possède ni atlas de normales, ni identifiants de matériaux,
ni albédo non éclairé ; des images seules ne suffiraient pas à les exploiter.
## Limites conservées
Approximation diffuse à partir de la couleur déjà éclairée, pas un transport
physique complet. Seules les surfaces visibles contribuent, avec variations
possibles aux entrées/sorties d'écran. Premier obstacle bloquant, pas d'historique
ni de bruit temporel ; aucune modification d'eau, monde ou lumière serveur.
## Vérifications
Suite client native complète réussie en **4 min 29 s**, sur macOS / Apple M1 /
OpenGL, dans un monde de test plat (graine 122). Les comparaisons ON/OFF à 35 %
mesurent, sur les pixels neutres du sol :
| Mur | Pixels avec gain ≥ 8/255 | Pixels avec gain ≥ 16/255 | Gain cumulé du canal dominant |
| --- | ---: | ---: | ---: |
| Rouge | 16 487 | 7 311 | 305 221 |
| Bleu | 14 954 | 7 328 | 309 991 |
À 90 %, les gains dominants atteignent 654 683 et 655 867, contre 8 968 et
9 168 au même réglage dans la fixture beta.132. Ce rapport concerne uniquement
cette scène et ces pixels, pas une promesse de gain uniforme dans tous les mondes.
Les captures confirment une bande colorée au pied du mur. Un premier réglage
intermédiaire a été rejeté car aucun pixel du sol ne dépassait 8/255 à 35 % ;
un second a passé les contrôles ciblés, puis la force a encore été augmentée
après examen visuel. Les valeurs finales sont celles de la suite complète.
Le test impose maintenant plus de 5 000 pixels à 8/255 et plus de 500 à 16/255
au réglage 35, pour les deux couleurs. Intensité, OFF/zéro, absence de rebond
coplanaire, occultation d'un mur changeant de couleur, caméra fixe, déplacement
infinitésimal, retour de caméra, redimensionnement et rechargement passent.
Ombres, lune, feuillage, CTM, cinq précisions, bloom, émissifs indépendants et
interfaces FR/EN restent validés, y compris avec le SSGI actif.
Commande : `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryPixelShadows122ClientTests=true -PsanctuaryClientNoVsync=true
-PsanctuaryQuickTests=true`. Log : `build/shader133-client-full.log`.
Le nom de la propriété ciblée `sanctuarySsgi132ClientTests` est conservé.
Comparateur local autonome : `build/SSGI-beta.133-comparaison.html`, captures
natives OFF/35/90 des murs rouge/bleu, sans retouche. Pas de validation
Windows/Vulkan ni de mesure de coût FPS revendiquée.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 21 s**, 126 tâches. Le serveur GameTest dédié reste exclu
conformément au refus EULA antérieur. Log : `build/shader133-build.log`.
Les archives normal/Test contiennent le même JAR ; sources archivées et template
de ressources correspondent aux sources. Comparaison avec beta.132 : **5 entrées
de production** changées (classe du compositeur, deux shaders, libellés FR/EN).
Gameplay, textures, sauvegardes et dépendances inchangés.
## Artefacts
- `Sanctuary-beta.133.mrpack` : 10394282 octets, SHA-256 `0c90a070da7f969706abeeec1bdfb0830bb52244c20fccbca4fd876f3fbe0564`.
- `Sanctuary-Test-beta.133.mrpack` : 10413204 octets, SHA-256 `e01f0355bf2cce18156fe94a069e142bedc498624ba0b6e2729ae0f23ea73e80`.
JAR : `a01cae4a98606007b533ca09ec9f072f19a1db2e9b8de466f4ad075d5c1fc185`.
## Livraison
[Release beta.133](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.133)
publiée depuis `216d3f75b576bd2ed531653012f9cc6c4801d87a`. Canal packwiz
`9ceb5a5353c9d1b8bb7834a20e818fd65096ff98` ; téléchargements publics vérifiés par SHA-256.
Deux synchronisations isolées puis deux synchronisations de la même instance
**Sanctuary Beta** réussissent. Un seul JAR beta.133 actif ; les **923 fichiers
personnels suivis**, dont sauvegardes et préférences, gardent leurs hashes.
Sauvegarde préalable `sanctuary-backups/before-beta.133/`, aucun monde personnel
ouvert. Le checkout original conserve ses changements préexistants.
Les archives normal/Test/template et le comparateur natif sont également dans
`sanctuary-beta/build/`. Reçus locaux ignorés : `build/shader133-artifact.json`,
`build/shader133-isolated.json`, `build/shader133-prism.json` et
`build/shader133-publication.log`.
+109
View File
@@ -0,0 +1,109 @@
# SHADER-134 — PBR procédural optionnel et herbe SSGI
Demande : ajouter en option des normales calculées à partir des textures actives,
avec rugosité des matériaux et reflets orientés. Retour : le SSGI renforcé
éclaire artificiellement l'intérieur de l'herbe ; vérifier et corriger ce cas.
Branche `codex/pbr-beta134`, socle beta.133, Minecraft 26.3 / Java 25.
## Contrat
PBR initialement OFF, intensité 50 réglable 0100. Cartes de normales à partir
des différences de luminance, amplitude limitée ; rugosité/métallicité par
famille de blocs, repli rugueux pour les types inconnus. Analyse des ressources
actives conservée en cache jusqu'à désactivation ou rechargement ; pas de fichiers
écrits dans le pack personnel, pas de GPU readback en production.
Portée 32 blocs, sections visibles construites progressivement. Budget de maillage
24 Mio, atlas de 4 096 matériaux en 16 × 16 avec bordures (1 280 × 1 280 RGBA8,
6,25 Mio), copie RGBA8 de l'image courante et uniformes. Les textures de plus haute
résolution sont échantillonnées à 16 × 16 ; première image des textures animées.
La couleur et l'animation restent celles de l'atlas natif. Pas de parallax ni
de géométrie ajoutée aux blocs ; les motifs clairs peuvent donner un faux relief.
La passe utilise une réponse spéculaire GGX (normales, rugosité, métallicité,
Fresnel) et module l'éclairage diffus déjà rendu. Elle ne remplace pas tout le
pipeline Minecraft par un moteur PBR physique. Soleil/lune, exposition au ciel et
carte d'ombres active limitent les reflets ; pas de reflets miroir, d'environnement
SSR, ni de direction locale déduite pour chaque torche. Aucun rendu PBR d'eau,
d'entités, d'items ou de modèles spéciaux hors maillage de terrain.
## SSGI
Les normales des faces presque axiales sont stabilisées sur leur axe. Deux passes
spatiales filtrent la lumière indirecte à demi-résolution, avec rejet des voisins
hors du plan du récepteur et interpolation de l'échantillonnage. Les textures de
l'image restent nettes. Un tampon RGBA16F supplémentaire à demi-résolution porte
le budget des cibles SSGI à environ 8 octets par pixel plein écran (contre 6).
Pas d'historique temporel ni de rémanence ajoutés.
Un parcours de 12 blocs a reproduit des bandes sur un mur et un éclaircissement
artificiel d'herbe à 35 et 100. Le filtrage seul ne suffisait pas : la collecte
réinjectait aussi trop fortement la lumière ambiante neutre. Elle conserve
maintenant la composante chromatique de la source, en soustrayant son canal
linéaire minimum. L'éclairage ambiant neutre reste celui de Minecraft. Ce réglage
vise le transfert de couleur voulu, pas une simulation physique complète du
rebond blanc. Les sources hors champ/cachées restent absentes du SSGI ; le résultat
peut encore varier lors d'un déplacement important. PBR et SSGI restent indépendants.
## Vérification
Test PBR ciblé réussi en 1 min 13 s : relief éclairé/ombré, intensités 20/50/100,
soleil matin/soir, cache stable, préférences, OFF/zéro, mouvement infinitésimal,
redimensionnement, rechargement et combinaison des effets. Le premier parcours
SSGI est conservé comme reproduction ; résultats finaux ci-dessous.
Le parcours corrigé a réussi en **2 min 47 s** avec 13 positions réparties sur
12 blocs, à 35 et 100, chaque fois comparées à OFF. Un mob immobile, des brins
d'herbe et un mur figurent dans la scène. Retour au point initial sans rémanence.
Sur les captures de ce parcours, le maximum du gain vert moyen mesuré dans
l'herbe passe sous 9,73 niveaux à 35 et 24,51 à 100. Le test impose ensuite
respectivement des limites de 12 et 30 à chaque position. L'essai reproduisant
le défaut atteignait notamment 23,68 et 49,20 à l'extrémité droite.
Ces mesures décrivent cette scène, pas une garantie d'absence d'artefacts
dans tous les mondes ni sur toutes les cartes graphiques.
La suite client complète réussit en **7 min** sur macOS / Apple M1 / OpenGL.
Elle inclut le parcours latéral et ses seuils de gain, les deux couleurs de rebond,
le PBR, les ombres, le feuillage, les cinq précisions, le CTM, les émissifs, le
bloom, les préférences et les écrans FR/EN. Log : `build/shader134-client-full.log`.
Le contrôle PBR final réussit en **1 min 19 s** : placement/retrait d'un toit,
invalidations de lumière/maillage et rendu combiné avec les ombres actives. Les
reflets utilisent maintenant la grille des ombres pour leur test de visibilité. Aucun résultat Windows/Vulkan ni
mesure de FPS revendiqués.
## Construction et artefacts
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 22 s**, 126 tâches. Le serveur GameTest dédié reste exclu
conformément au refus EULA antérieur. Log : `build/shader134-build.log`.
Packs normal/Test : même JAR Sanctuary. Sources archivées et template identiques
aux sources. Comparaison à beta.133 : **23 entrées de production** changées,
limitées au rendu, à ses options et points d'appel. Gameplay et gemmes inchangés.
- `Sanctuary-beta.134.mrpack` : 10421971 octets, SHA-256 `d5bc79acb1d56e7dcf83c976156fdb2fcde80c98e443bde8a6ab312d56887b7f`.
- `Sanctuary-Test-beta.134.mrpack` : 10440898 octets, SHA-256 `04308ebb9adaf76b30a3cbf4fa32ab897e76842803fc8c8411cfa32952d1bdd5`.
JAR : `a6e69622a5e6629f70dd19b7494ad3b00916bc02169b73635f0e2d563929b7fa`.
Comparateur local : `build/Shader-beta.134-comparaison.html`. Il contient les
captures natives PBR OFF/50/100 et le parcours SSGI de 12 blocs OFF/35/100.
Le parcours est une succession de positions enregistrées, pas une mesure des FPS.
## Livraison
[Release beta.134](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.134)
publiée depuis `fc4a0cb68ed2d89163c8e74773976df5bab4f3f1`. Canal packwiz
`35ec0f6e145002f6367944df5b75e2703958eaef` ; téléchargements publics vérifiés par SHA-256.
Deux synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussissent. Un seul JAR beta.134 actif ; les **923 fichiers personnels suivis**,
dont sauvegardes et préférences, gardent leurs hashes. Copie préalable dans
`sanctuary-backups/before-beta.134/`, aucun monde personnel ouvert.
Packs normal/Test/template et comparateur natif vérifiés également dans
`sanctuary-beta/build/`. Le checkout original garde ses changements préexistants.
Reçus locaux ignorés : `build/shader134-artifact.json`, `build/shader134-isolated.json`,
`build/shader134-prism.json`, `build/shader134-publication.log`.
+116
View File
@@ -0,0 +1,116 @@
# SHADER-135 — SSGI en contre-plongée et près des surfaces
Demande : supprimer les déchirures horizontales sous une surface, notamment
près de la lave, et atténuer proprement le rebond quand la caméra s'approche
d'une source ou d'un mur. Branche `codex/shader-closeup-beta135`, socle beta.134.
Minecraft 26.3 / Java 25 ; aucune modification de monde ou de gameplay.
## Diagnostic et correction
Le calcul des normales comparait l'aire du pixel en unités du monde à un seuil
fixe. À courte distance ou à haute résolution, cette aire devient naturellement
très petite : le rejet pouvait couper une surface continue. Les deux directions
sont maintenant normalisées avant leur produit vectoriel. Les texels de bord
sont bornés et les voisins sans profondeur ne créent plus de fausse surface.
La composition utilise le centre exact du texel de profondeur. Le rebond
s'atténue entre 0,4 et 0,06 bloc de distance au **plan** receveur, et lorsque la
vue devient presque tangente. Cette distance évite une découpe circulaire sur
un mur plat. L'image native reste nette ; aucune texture du décor n'est floutée.
Les sondes sortant du volume de projection sont rejetées. Leur contribution
s'atténue près du plan de caméra et de la limite d'épaisseur d'un impact, au lieu
d'une contribution pleine jusqu'à cette limite. Trois ressources GLSL modifiées ;
aucune passe, cible GPU, lecture CPU, histoire temporelle ou option ajoutée.
Les 12 rayons × 10 pas et les deux passes de filtrage spatial restent inchangés.
## Réglages initiaux
Demande ajoutée pendant la livraison : **bloom 20 %**, **PBR ON** et **SSGI ON**.
Les intensités PBR 50 et SSGI 35 restent inchangées. Les champs absents du fichier
de préférences prennent ces nouvelles valeurs ; les choix explicites du joueur
restent conservés. Aides françaises et anglaises mises à jour. Vérification
native supplémentaire des préférences vierges, partielles et personnalisées.
## Reproduction native
Deux scènes isolées : stone au-dessus de la lave, puis coin à 0,5 bloc d'une
paroi rouge. Caméra en contre-plongée, sept distances au plafond de 2 à 0,04 bloc,
comparaisons OFF/35/100 avant/après. Dans la première scène, à 0,1 bloc et
intensité 100, le saut maximal de gain rouge moyen entre lignes de pixels neutres
passe de **14,88 à 0,052** niveaux sur 255. Dans le coin, à 0,4 bloc et intensité
35, le rebond auparavant rejeté revient (gain moyen de **6,01** niveaux), puis
s'atténue à l'approche du contact. Ces chiffres concernent ces scènes uniquement.
Les deux essais ciblés corrigés réussissent en 1 min 18 s et 1 min 17 s sur
Apple M1 / OpenGL. Images avant/après conservées dans `build/closeup-*` ;
comparateur autonome `build/Shader-beta.135-comparaison.html`.
## Régression et livraison
Les contrôles natifs de la suite générale réussissent jusqu'au parcours SSGI :
ombres, lune, feuillage, temps réel, CTM, émissifs/bloom, couleurs de rebond,
occlusion, réglages, rechargement et déplacement latéral de 12 blocs à 35/100.
Log : `build/shader135-client-main.log`. La suite n'est pas présentée comme
entièrement réussie : elle s'est arrêtée sur une attente incorrecte du nouveau
test, qui demandait du rebond alors que sa source était sortie du champ.
Le scénario corrigé distingue la haute résolution avec source visible de la
vue très relevée sans source visible. Le bassin possède un fond pour isoler la
lave des essais suivants ; les particules du scénario précédent sont effacées
avant la comparaison PBR statique. Une première tentative avait aussi rencontré
le refus natif de remettre l'horloge à sa valeur actuelle ; la préparation de
l'heure est désormais répétable. Ces changements concernent uniquement les tests.
Le contrôle final ciblé **réussit en 2 min 52 s** : les deux scènes, 35/100,
sept distances, 1280 × 720 avec source visible, source hors champ, mouvement
minuscule, rendu combiné, puis contrôles PBR complets (cache, intensités,
matériaux, soleil, toit, OFF/zéro, redimensionnement et rechargement).
Log : `build/shader135-client-final.log` ; marqueurs `SSGI135_CLOSEUP_PASS` et
`PBR134_PASS`. Les seuils de proximité et PBR sont conservés.
Le contrôle supplémentaire des nouveaux défauts et du PBR **réussit en
1 min 16 s** : préférences vierges, champs absents, valeurs personnelles conservées,
puis rendu PBR et combinaison des effets. Log : `build/shader135-defaults-client.log`.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 18 s**, 126 tâches. Le serveur GameTest dédié demeure exclu
conformément au refus EULA antérieur. Les classes des scénarios clients compilent
aussi après leur isolation explicite des effets activés par défaut.
Log : `build/shader135-build.log` ; compilation : `build/shader135-test-compile.log`.
## Archives vérifiées
Comparaison à beta.134 : **6 entrées de production** modifiées, limitées aux
trois ressources SSGI, aux valeurs initiales et aux aides FR/EN. Gameplay et
textures des gemmes inchangés. Packs normal/Test : JAR Sanctuary identique ;
archives de sources et template conformes aux sources. Reçu local ignoré :
`build/shader135-artifact.json`.
## Limites
Le SSGI utilise seulement les surfaces visibles : les sources hors champ restent
absentes et un grand changement de vue peut modifier le rebond. L'atténuation
proche est volontaire ; ce n'est pas une simulation volumétrique. Le brouillard
natif de submersion continue de suspendre le SSGI, comme en beta.134. Aucun
résultat Windows/Vulkan ni mesure de FPS revendiqués.
- `Sanctuary-beta.135.mrpack` : 10422391 octets ; SHA-256 `36ac278f9f5ecd2cefd69da16ea7d153ff44c5fc8e6bf0b3a3d6b71f5d767af6`.
- `Sanctuary-Test-beta.135.mrpack` : 10441314 octets ; SHA-256 `e096374f7ea0856b20392e5d277e94f6c3d411723d7ffc10ceccdd9f0bf5c4d4`.
JAR : `a68ccd04a92a962c46a76b26a80cb44a4faf7a13a562094dde51010ade594c10`.
## Livraison
[Release beta.135](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.135)
publiée depuis `7fada570efb5ed579e6e4d7bc2b87079c7131b31`. Canal packwiz
`5b0df577fcd036937c25be3a1f4580f9db3103a1` ; téléchargements publics vérifiés par SHA-256.
Deux synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussissent. Un seul JAR beta.135 actif ; les **923 fichiers personnels suivis**,
dont sauvegardes et préférences, gardent leurs hashes. Copie préalable dans
`sanctuary-backups/before-beta.135/`, aucun monde personnel ouvert.
Packs normal/Test/template et comparateur natif également vérifiés dans
`sanctuary-beta/build/`. Le checkout original garde ses changements préexistants.
Reçus locaux ignorés : `build/shader135-artifact.json`, `build/shader135-isolated.json`,
`build/shader135-prism.json`, `build/shader135-publication.log`.
+85
View File
@@ -0,0 +1,85 @@
# SHADER-136 — Lens flare rectangulaire doux
Demande : ajouter un lens flare avec des rectangles dégradés, exclusivement
pour le soleil et la lune. Socle beta.135, branche `codex/lens-flare-beta136`.
Minecraft 26.3 / Java 25. Aucun changement de gameplay ou de monde.
## Contrat
Effet activé initialement à **30 %**, intensité réglable 0100, indépendant du halo de bloom.
Rectangles translucides aux bords doux, suivant la position de l'astre à l'écran.
La visibilité provient de l'image émissive céleste native, avant les blocs :
les murs masquent l'effet, les sources de terrain ne le déclenchent pas.
L'astre sortant du champ doit s'atténuer sans sauter sur le bord opposé.
Pas d'historique, ni lecture GPU vers le CPU, ni texture générée sur disque.
## Rendu et budget
Trois rectangles à dégradé doux par astre : un halo horizontal près de sa
position et deux reflets plus petits le long de l'axe passant par le centre de
l'écran. Teinte solaire chaude, lunaire légèrement bleue. Intégration de la
lumière réellement dessinée par le ciel natif ; phases de lune conservées.
Atténuation aux bords de l'écran et à l'horizon, sans projection derrière la caméra.
Le masque céleste est mesuré avant l'ajout des émissifs de terrain. Réduction
vers une texture 2 × 1 RGBA16F (512 échantillons au maximum au total), puis une
passe de composition avec deux lectures de cette texture et des dégradés analytiques.
La cible d'émission plein écran existante est réutilisée. Quand seul le flare
fonctionne, aucun maillage d'émissif de terrain ni tampon de flou n'est construit.
OFF et zéro libèrent la cible du flare ; les autres effets gardent leur autonomie.
## Vérification
Le scénario client natif réussit en **1 min 52 s** sur macOS / Apple M1 / OpenGL.
Soleil OFF/30/80, lune et nouvelle lune, mur occultant, source hors champ,
glowstone exclue, image statique, redimensionnement et rechargement des ressources.
Le flare reste actif sans bloom ; OFF/zéro libèrent ses ressources. Préférences
vierges, partielles, personnalisées, bornage et libellés FR/EN vérifiés.
Les contrôles existants du bloom et des minerais émissifs passent également.
Log : `build/shader136-client-final.log`, marqueurs `EMISSIVE131_PASS` et
`LENS_FLARE136_PASS`. Les captures natives restent dans le dossier de tests ; comparatif autonome
`build/Shader-beta.136-comparaison.html` (soleil OFF/30/80 et lune OFF/30).
Une première tentative s'est arrêtée sur l'attente d'un angle de caméra :
Minecraft normalise 180° en 180°. Le scénario utilise maintenant un angle
canonique ; ce changement concerne uniquement le test.
## Limites
Effet optique en espace écran : il s'atténue quand l'astre quitte le champ et
à l'horizon. Le masque natif du ciel contrôle l'occultation ; la lune reste
volontairement beaucoup plus discrète. Le brouillard de submersion suspend
l'effet comme le bloom existant. Aucun essai Windows/Vulkan ni mesure de FPS
revendiqués.
## Construction et archives
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 29 s**, 126 tâches. Le serveur GameTest dédié reste exclu
conformément au refus EULA antérieur. Log : `build/shader136-build.log`.
Comparaison à beta.135 : **9 entrées de production** modifiées, uniquement
le rendu, ses préférences et ses libellés. Gameplay et textures des gemmes
strictement conservés. JAR normal/Test identique, sources et template vérifiés.
Reçu local : `build/shader136-artifact.json`.
- `Sanctuary-beta.136.mrpack` : 10424821 octets ; SHA-256 `808006bf2b0cb3fe63d3e16ae3a0003d27ad0b7e793a3a05f25b5d73ae88bc8d`.
- `Sanctuary-Test-beta.136.mrpack` : 10443744 octets ; SHA-256 `70f593ad16d1f4fd4305b276ce2727a63f87bcb84df45e55840c1427a314a1eb`.
JAR : `086afede22903f8988889f6085631451f65d6d55c2e4c81f249d2234698e68e5`.
## Livraison
[Release beta.136](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.136)
publiée depuis `71296a9cfb0f6b1a6e6f0c48145f3cc432c8afd0`. Canal packwiz
`dd5b545a7cfbb957f2c70e9dc17034b44caef98f` ; téléchargements publics vérifiés par SHA-256.
Deux synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussissent. Un seul JAR beta.136 actif ; les **923 fichiers personnels suivis**,
dont sauvegardes et préférences, gardent leurs hashes. Copie préalable dans
`sanctuary-backups/before-beta.136/`, aucun monde personnel ouvert.
Packs normal/Test/template et comparatif natif également vérifiés dans
`sanctuary-beta/build/`. Le checkout original garde ses changements préexistants.
Reçus locaux ignorés : `build/shader136-artifact.json`, `build/shader136-isolated.json`,
`build/shader136-prism.json`, `build/shader136-publication.log`.
+96
View File
@@ -0,0 +1,96 @@
# SHADER-137 — Rayons solaires volumétriques
Demande validée : faisceaux légers découpés par les blocs, carte d'ombres partagée,
feuillage perméable, rendu natif préservé, option et intensité indépendantes du bloom.
Socle beta.136, branche `codex/sunshafts-beta137`, Minecraft 26.3 / Java 25.
Aucun changement de monde ni de gameplay.
## Contrat
Soleil uniquement ; activé initialement à 35 %, intensité 0100.
Intégration de 16 segments par pixel à un quart de chaque dimension.
Reconstruction guidée par la profondeur, sans historique ni bruit animé.
Réutilisation du masque de feuillage déjà stable dans les ombres.
La carte solaire peut fonctionner sans afficher les ombres sur les surfaces.
Portée bornée à 64 blocs et à la moitié de la portée des ombres.
Atténuation aux limites de la carte, à l'horizon et avec la météo.
## Rendu et coût borné
Deux passes : intégration dans une cible RGBA16F de largeur et hauteur divisées
par quatre, puis reconstruction guidée par la profondeur. Seize segments
quadratiques privilégient les premiers mètres ; quatre lectures fixes de la
carte d'ombres par segment adoucissent seulement la lumière dans l'air.
La dernière portion du rayon rétrécit continûment à l'approche d'une surface.
La lumière utilise une teinte solaire chaude mélangée au brouillard natif.
La carte d'ombres et ses maillages sont partagés, y compris les trous de
transmission déterministes des feuilles. Aucune copie d'image plein écran,
aucune duplication du terrain, aucune lecture GPU côté CPU ni accumulation
entre images dans le rendu de production. OFF/zéro libèrent le volume ; la
carte d'ombres reste seulement si les ombres de surface sont activées.
Le soleil sous l'horizon et la submersion suspendent les rayons.
## Vérifications
Scénario natif réussi en **1 min 41 s** sur macOS / Apple M1 / OpenGL : pièce
entièrement fermée, toit ajouré OFF/35/100, feuilles puis ciel ouvert, déplacement
de quatre blocs et retour, caméra proche d'un mur à 0,5 puis 0,125 bloc,
soleil hors champ, nuit, OFF/zéro, carte d'ombres partagée, effet combiné,
redimensionnement à 961 × 541 et rechargement des ressources. Préférences
vierges/partielles/personnelles, bornage et libellés FR/EN également vérifiés.
Log : `build/shader137-client-final.log`, marqueur `SUNSHAFT137_PASS`.
Comparatif autonome : `build/Shader-beta.137-comparaison.html`.
La première tentative s'est arrêtée sur une comparaison de gain brut entre
feuillage et ciel ouvert. La composition dispose de moins de marge sur un mur
déjà clair : le test compare maintenant la contribution normalisée sur les mêmes
surfaces, et les feuilles du scénario sont persistantes. Aucun seuil du rendu
n'a été assoupli pour faire passer ce contrôle.
Les contrôles natifs existants du bloom, des vingt textures de minerais émissifs
et du lens flare réussissent également en **1 min 32 s**, avec leurs seuils
inchangés. Log : `build/shader137-regression.log`, marqueurs `EMISSIVE131_PASS`
et `LENS_FLARE136_PASS`. Les autres effets sont explicitement isolés dans les
scénarios qui nécessitent une image témoin sans rayons.
## Limites
Le volume utilise les formes présentes dans la carte d'ombres existante :
il n'ajoute pas de projection d'ombre des entités ou des nuages. Le feuillage
reste une approximation par transmission déterministe. Portée maximale de
64 blocs, atténuée à son extrémité. Le faible nombre de segments et la résolution
réduite peuvent lisser les ouvertures très fines. Aucun résultat Windows/Vulkan
ni mesure de FPS revendiqués.
## Construction et archives
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 27 s**, 126 tâches. Le serveur GameTest dédié reste exclu
conformément au refus EULA antérieur. Log : `build/shader137-build.log`.
Comparaison à beta.136 : **11 entrées de production** modifiées, uniquement
le rendu, ses préférences et ses libellés. Gameplay et textures des gemmes
strictement conservés. JAR normal/Test identique, sources et template vérifiés.
Reçu local : `build/shader137-artifact.json`.
- `Sanctuary-beta.137.mrpack` : 10431723 octets ; SHA-256 `6684d1dbe48cd3031b373a03d4380519fdbf5d841e1c7cb5e290dec63b5ba9f6`.
- `Sanctuary-Test-beta.137.mrpack` : 10450650 octets ; SHA-256 `32b0cee60152b6a5c8f31b248391c79a5fdf47b649de74902b066457ad4785ef`.
JAR : `f1fbc106b4b048753f9a669af37e9c12f92168af486d4072f514e86920c81faa`.
## Livraison
[Release beta.137](https://git.botsu.net/koka/sanctuary-beta/releases/tag/beta.137)
publiée depuis `2d7072b8a8febac53354e9d0063246ac1e843e37`. Canal packwiz
`68cb39a5edbf5d34def02f670e2488ee852605b8` ; téléchargements publics vérifiés par SHA-256.
Deux synchronisations isolées puis deux dans la même instance **Sanctuary Beta**
réussissent. Un seul JAR beta.137 actif ; les **923 fichiers personnels suivis**,
dont sauvegardes et préférences, gardent leurs hashes. Copie préalable dans
`sanctuary-backups/before-beta.137/`, aucun monde personnel ouvert.
Packs normal/Test/template et comparatif natif également vérifiés dans
`sanctuary-beta/build/`. Le checkout original garde ses changements préexistants.
Reçus locaux ignorés : `build/shader137-artifact.json`, `build/shader137-isolated.json`,
`build/shader137-prism.json`, `build/shader137-publication.log`.
+86
View File
@@ -0,0 +1,86 @@
# SHADER-138 — Épaisseur des rayons et météo
Demande : épaissir les sunshafts avec la météo, surtout le brouillard.
Socle beta.137, branche `codex/sunshaft-weather-beta138`, Minecraft 26.3 / Java 25.
Aucune modification des règles météo, des sauvegardes ou du gameplay.
## Contrat
Densité et diffusion liées au brouillard environnemental réellement rendu,
indépendamment de la limite de distance de rendu. Pluie/neige natives :
renforcement plus modéré ; orage : réduction supplémentaire du soleil.
Transitions continues, mêmes deux passes et seize segments. Le réglage
manuel conserve sa valeur, aucune nouvelle option.
## Rendu
Le brouillard utilise `FogData.environmentalEnd`, séparé de la distance de
rendu native. Sa contribution croît en douceur entre 192 et 80 blocs de
visibilité. La densité passe de ×1 à ×3,5 pour le brouillard seul ; la diffusion
angulaire s'élargit et la lumière lointaine s'éteint plus vite. Les coefficients
ne dépendent d'aucun bruit animé ni historique d'image.
Pluie et neige utilisent le niveau natif de précipitation : densité jusqu'à
×1,8, diffusion plus légère. La lumière disponible tombe progressivement à
25 % sous une pluie maximale et à 8,75 % sous un orage maximal. La carte solaire
reste disponible pour le volume même lorsque Minecraft cache entièrement
son disque solaire ; les ombres sur les surfaces conservent leur comportement.
Le brouillard et la météo continuent leurs transitions natives.
Même cible au quart de chaque dimension, deux passes, seize segments et
quatre lectures de la carte par segment. L'empreinte de l'ombre ne change pas :
la météo ne crée pas d'ouverture artificielle à travers un mur.
## Vérification
Scénario client natif réussi en **3 min 29 s**, macOS / Apple M1 / OpenGL.
Les contrôles des volumes beta.137 passent à nouveau : ouvertures, feuilles,
pièce fermée, mouvement/retour, proximité, soleil hors champ, intensité,
OFF/zéro/nuit, redimensionnement, rechargement, préférences et libellés FR/EN.
La suite utilise ensuite les vraies commandes serveur de météo : clair,
`weather fog`, pluie, orage et retour au clair, dans le même décor avec le
curseur maintenu à 35. Transition progressive du brouillard, rechargement
sous brouillard, absence d'éclairage d'une pièce fermée et restitution de
l'image claire initiale vérifiés. La contribution normalisée du volume dans
cette scène passe d'environ 0,0034 au clair à 0,0236 sous brouillard ; ce n'est
pas un multiplicateur universel de luminosité. L'orage reste sous la pluie.
Log : `build/shader138-client-final.log`, marqueurs `SUNSHAFT137_PASS` et
`SUNSHAFT138_WEATHER_PASS`. Comparatif natif autonome :
`build/Shader-beta.138-comparaison.html`.
## Diagnostic de la pluie
La première exécution native a validé le brouillard, puis s'est arrêtée en
attendant des rayons sous une pluie maximale. Minecraft 26.3 fournit alors
`rainBrightness = 1 - rainLevel`, soit zéro : beta.137 ne construisait plus la
carte solaire. Le volume reçoit désormais son atténuation météo propre et
conserve la carte nécessaire, sans réactiver les ombres de surface sous la
pluie maximale. Log de diagnostic : `build/shader138-client-first.log`.
## Limites
Coefficients artistiques bornés, sans simulation physique de gouttes ni de
nuages. Le brouillard environnemental est distinct de la simple distance
d'affichage ; la pluie et la neige partagent le niveau natif de précipitation.
Les limites des volumes beta.137 restent applicables : 64 blocs maximum,
formes de la carte d'ombres et feuillage approximé. Pas de mesure de FPS ni
de validation Windows/Vulkan revendiquée.
## Construction et archives
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit en **2 min 20 s**, 126 tâches. Le serveur GameTest dédié reste exclu
conformément au refus EULA antérieur. Log : `build/shader138-build.log`.
Comparaison à beta.137 : **6 entrées de production** modifiées, uniquement
le rendu et les aides FR/EN. Gameplay et textures des gemmes strictement
conservés. JAR normal/Test identique, sources et template vérifiés.
Reçu local : `build/shader138-artifact.json`.
- `Sanctuary-beta.138.mrpack` : 10432860 octets ; SHA-256 `67093d3a53e3d90c31e8fb940d709ccf41ad730595e358346fa27ad744b44460`.
- `Sanctuary-Test-beta.138.mrpack` : 10451787 octets ; SHA-256 `1ff39158b47f44a831b6506c8c2636441b2bff02644d20b1698330097e5ff059`.
JAR : `44b6dd14f0e962fcb6f1efd61e0e7bb2c8dbb033cef81598582ec16c46a46518`.
+5
View File
@@ -102,3 +102,8 @@ client natif : témoin `SHADER040_CLIENT_PASS` dans
`build/operator040-client-final.log`. Captures dans
`build/operator040-evidence/final/`, reçu dans `build/operator040-artifact.json`.
Les contrôles ne revendiquent pas un essai avec Iris ou un autre moteur externe.
Les ombres portées pixélisées sont livrées dans [beta.127](shader-beta127.md),
intégrées sur la beta.126. Leur préparation locale portait un numéro beta.122
non publié ; la release beta.122 existante n'est pas remplacée.
+115
View File
@@ -0,0 +1,115 @@
# SNOW-108 — Accumulation de neige en volume
Branche `codex/snow-accumulation-beta108`. Base livrée beta.107, Minecraft 26.3.
État : livraison locale vérifiée. Statuaire beta.106 reste une livraison séparée.
## Contrat avant modification
Demande : la neige doit saccumuler et occuper réellement des blocs.
Les précipitations déposent une couche à la fois ; la huitième devient un bloc
natif de neige solide. Le dépôt suivant commence au-dessus. Même cadence de
précipitation que Minecraft, uniquement dans les chunks simulés pendant une
chute de neige, y compris les averses Sanctuary et les biomes froids vanilla
lorsque les règles Sanctuary sont actives.
Valeur confirmée par le créateur : deux blocs de hauteur totale par défaut,
réglables côté serveur.
Le plafond compte la colonne contiguë de neige déjà présente (couches et blocs),
jusquau premier support dune autre matière. Zéro désactive laccumulation,
moins un permet de continuer jusqu’à la limite de hauteur du monde.
La lumière, les supports, la place libre et les biomes acceptables restent
contrôlés par Minecraft. Ni plantes, ni équipements, ni eau, ni constructions
ne sont remplacés. La croissance pousse les entités vers le haut comme le dépôt
natif, avec la nouvelle collision. Les chaudrons gardent leur fonctionnement.
## Données et compatibilité
Uniquement des blocs natifs `minecraft:snow` et `minecraft:snow_block` : collision,
minage, butin et sauvegarde natifs. Pas de bloc, BlockEntity ou format propriétaire.
La nouvelle gamerule `sanctuary:snow_accumulation_height` utilise la sauvegarde
native des règles, sans réécriture des règles préexistantes. Elle sajoute avec
sa valeur par défaut quand absente. Aucune sauvegarde personnelle ouverte, aucun
balayage de chunks, aucune expansion ni conversion de terrain au chargement.
Seuls les dépôts futurs pendant le jeu, autorisés par la demande, changent.
Les blocs de neige pleins suivent le comportement Minecraft : ils ne fondent pas
comme les fines couches éclairées. Cette livraison najoute pas une fonte
saisonnière qui pourrait effacer des constructions en neige.
La valeur native `minecraft:max_snow_accumulation_height = 0` reste un arrêt
prioritaire. Dans un monde Sanctuary, toute valeur native positive autorise le
dépôt volumétrique, dont le plafond est la nouvelle règle en blocs. Hors Sanctuary,
le fonctionnement et la limite vanilla sont conservés.
## Utilisation
- Valeur par défaut : `/gamerule sanctuary:snow_accumulation_height 2`.
- Quatre blocs : `/gamerule sanctuary:snow_accumulation_height 4`.
- Arrêt des nouveaux dépôts : valeur `0`.
- Sans plafond particulier, sauf celui du monde : valeur `-1`.
- Valeurs admises : de `-1` à `128`, positives exprimées en blocs complets.
Réduire le plafond ne supprime pas la neige déjà présente. La limite native
`minecraft:max_snow_accumulation_height` nest pas réécrite automatiquement.
Les noms et descriptions de la nouvelle règle sont traduits en FR/EN dans
linterface native de création du monde.
## Essais natifs
Nouveaux mondes plats de développement, graine `108`, un avec Sanctuary et
un sans. Le test appelle le véritable `ServerLevel.tickPrecipitation` :
- Sept couches successives, huitième dépôt en `snow_block`, collision pleine.
- Un cochon debout sur la neige monte avec le nouveau volume.
- Empilement sur le bloc formé ; arrêt à deux blocs ; commande à quatre blocs,
puis mode sans plafond et six blocs atteints.
- Arrêt à zéro sur la règle Sanctuary et priorité du zéro sur la règle native.
- Dépôt pendant les averses, aucun dépôt pendant leurs pauses ni sous pluie tiède.
- Fleur et eau libre préservées, neige sur le toit et non dans la pièce ;
lumière propagée par un bloc lumineux empêchant le dépôt.
- Le chaudron continue de recevoir sa neige poudreuse native.
- Météo vanilla, biome froid et Sanctuary actif : accumulation volumétrique.
- Second monde sans Sanctuary : une couche native même après 40 tentatives.
La décision dactivation est mise en cache au démarrage du serveur, daprès le
choix Sanctuary fixé à la création. Aucun accès disque par colonne de pluie.
Le comptage de profondeur sarrête dès le plafond atteint ; le mode illimité
na pas besoin de compter. Pas de boucle ajoutée sur les chunks ou les joueurs.
Les tests ne changent aucune sauvegarde personnelle. Les dépôts sont déclenchés
explicitement pour valider leur résultat ; aucun facteur daccélération météo
nest ajouté au code livré.
## Livraison et vérifications — 17 septembre 2026
Validation dans le worktree `sanctuary-snow-beta108`, sur la base immuable
beta.107. Les œufs de beta.107 sont inclus ; les sources Statuaire beta.106
présentes dans le répertoire principal restent préservées, mais ne sont pas
incluses dans ces archives. Les compteurs de ce worktree sont synchronisés à
beta.108 ; ceux du répertoire principal restent attachés à son chantier beta.106.
- `./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest` :
réussi, 125 tâches, 3 min 34 s.
- `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuarySnow108ClientTests=true -PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true` :
réussi, 1 min 17 s, marqueur `SNOW108_NATIVE_PASS`.
- Java 25 ; GameTest dédié exclu conformément au refus antérieur d'accepter son
EULA. Les essais ci-dessus utilisent le serveur intégré dans deux mondes neufs.
- Intégrité ZIP, versions Minecraft/mod, JAR embarqués, sources, mixins et libellés
vérifiés. Par rapport au JAR beta.107 : seulement `WeatherService.class`
modifié et les deux classes d'accumulation ajoutées ; assets inchangés sauf
les deux nouveaux libellés de règle FR/EN. Aucun test embarqué dans le JAR livré.
Archives locales : [pack normal](../build/Sanctuary-beta.108.mrpack) et
[pack Test](../build/Sanctuary-Test-beta.108.mrpack).
| Artefact | SHA-256 |
| --- | --- |
| Normal | `18f2b0c6a12c3618a9b70e22999b89697a41034e86bc1aa33f0c9d19caadd0c2` |
| Test | `66f9395cd47b031ca52162081c397da7a5ab7fdfa3e236dec5110dbcf95306bc` |
| JAR Sanctuary | `dc2b026cd0b6475e512283f72225593666fd60a3a265b8e91bf6bdae9f875bb4` |
Reçu : `build/snow108-artifact.json`. Journaux : `build/snow108-native.log`,
`build/snow108-check-build.log`. Manifeste : `build/snow108-source-manifest.json`.
Aucun tag, publication, canal packwiz, installation Prism ou monde personnel
modifié. Pas d'essai Windows ; pas de fonte saisonnière des blocs pleins.
+107
View File
@@ -0,0 +1,107 @@
# EGGS-107 — Naissances en œufs et récupération des générateurs
Branche `codex/eggs-beta107`. Travail isolé du chantier Statuaire beta.106.
Base vérifiée : sources de la livraison beta.105. État : livré localement, vérifié ; aucun déploiement ni publication.
## Contrat
Dans les mondes où Sanctuary est actif, une reproduction réussie remet un
œuf natif de l'espèce au sol au lieu d'ajouter directement le nouveau mob.
L'enfant est calculé par Minecraft : croisements, variantes, propriétaire et
caractéristiques héritées sont conservés. Les délais, nourriture, statistiques
et progrès restent ceux de la reproduction native. L'œuf d'un animal qui a un
stade bébé fait naître un bébé, y compris avec un distributeur.
Grenouille : œuf de têtard, pour conserver son cycle naturel. Tortue et sniffer :
œuf d'apparition de bébé à la place de la ponte. Allay : duplication contre
améthyste et musique, avec le délai natif conservé. Villageois : nourriture et
lit libre restent requis ; le lit réservé est libéré tant que l'œuf est stocké.
Un générateur classique réellement cassé par un joueur en survie, avec un outil
adapté sans Toucher de soie, remet un seul œuf correspondant à son prochain mob
configuré. Fortune ne multiplie pas ce résultat. Ni explosion, ni annulation de
casse, ni mode créatif ne produisent cet œuf. Les générateurs d'épreuves ne sont
pas transformés en source d'œufs par cette règle.
Les identifiants natifs des items restent inchangés. Les données de naissance
utilisent les composants d'item natifs ENTITY_DATA et CUSTOM_DATA ; aucune
migration de sauvegarde, régénération ou ouverture de monde personnel.
Les naissances et pontes déjà présentes restent en place. Aucune modification
hors des mondes Sanctuary ; un œuf déjà obtenu garde ses données de naissance.
Un catalogue distinct des 88 espèces sépare les voies livrées des propositions
à valider. Les méthodes spéciales restantes ne sont pas annoncées comme livrées.
## Catalogue
[Les 88 espèces et leurs voies](spawn-eggs-catalogue-beta107.md) : 28 par
reproduction ou duplication, 7 par les générateurs classiques vanilla et
53 propositions. Réponse du créateur : **catalogue à valider dabord**.
Aucune des 53 propositions nest implémentée dans ce ticket.
## Vérifications natives
Nouveau monde de test plat, graine `107`, Minecraft 26.3 / Fabric 0.160.5+26.3,
Java 25, macOS. Le test utilise le vrai client et son serveur intégré :
- Naissance native de 22 espèces via `Animal.spawnChildFromBreeding` : un seul
œuf, aucun enfant vivant ajouté, âge de bébé stocké, délai des deux parents.
- Cheval × âne → mule ; moutons rouge × bleu → bébé violet, à la pose et au clic
sur un adulte ; loup apprivoisé → bébé encore lié au même propriétaire.
- Sérialisation/relecture de litem avec le codec natif ; position, UUID et
réservations de cerveau absents ; éclosion en survie consomme un œuf.
- Vrai comportement de distributeur : bébé et couleur héritée.
- Grenouille sans seconde ponte, tortue sans état de ponte, renifleur sans œuf
bloc supplémentaire ; allay avec délai conservé ; villageois avec résultat
vide pour que lappelant rende le lit réservé, bébé à l’éclosion.
- Existence native des 88 œufs ; destruction réelle dun générateur par le
contrôleur joueur avec pioche normale/Fortune/Toucher de soie, main vide,
créatif et règle de drops de blocs désactivée.
- Deuxième monde neuf, Sanctuary désactivé à la création : bébé de vache vivant,
aucun œuf et générateurs sans nouveau butin.
Les appels natifs de naissance sont testés directement ; il ne sagit pas dun
élevage de chaque espèce laissé tourner pendant plusieurs minutes. Les tests
neffectuent pas de parcours complet de raid, donjon ou guérison : ces voies
spéciales sont des propositions. Aucun monde personnel modifié.
## Binaire et distribution
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit : **125 tâches, 3 min 44 s**. Le serveur GameTest dédié reste exclu,
lacceptation de son EULA n’étant pas autorisée. Les tests natifs ci-dessus
utilisent le serveur intégré ; dernier passage **29 s**, marqueur
`EGGS107_NATIVE_PASS`, après les derniers changements de code.
Commande des essais :
```sh
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
-PsanctuaryEggs107ClientTests=true -PsanctuaryClientNoVsync=true \
-PsanctuaryQuickTests=true
```
Lassemblage et les essais se font dans le worktree voisin
`sanctuary-eggs-beta107`, branche `codex/eggs-beta107`, sur les sources vérifiées
de beta.105. Les changements propres aux œufs sont aussi intégrés au répertoire
principal sans réécrire le code ni les compteurs en cours du chantier beta.106.
**Ces archives ne contiennent pas le Statuaire beta.106 en cours de validation.**
Les compteurs du worktree et du pack livré sont tous `beta.107`.
Comparaison binaire avec beta.105 : neuf classes ajoutées, aucune ancienne classe
modifiée. Les seules ressources graphiques/données différentes sont les deux
fichiers de langue FR/EN, avec deux nouveaux libellés ; le pack de textures,
les recettes et la génération restent byte pour byte identiques. Les mixins
ajoutés figurent dans le manifeste. Sources/JAR, ZIP, versions, dépendances,
88 lignes uniques du catalogue et empreintes sont vérifiés.
- [Pack normal](../build/Sanctuary-beta.107.mrpack) — SHA-256
`1b92c5abcc07be9c36d507d2ffdaf6d420a541c6624f105f8643594a02884600`.
- [Pack de test](../build/Sanctuary-Test-beta.107.mrpack) — SHA-256
`db9e32591cb263667b397fdb78738fbe45f58689b5574f2cb483f076635e7eef`.
Logs et reçus ignorés : `build/eggs107-check-build.log`,
`build/eggs107-native.log`, `build/eggs107-artifact.json`,
`build/eggs107-source-manifest.json`. Les fichiers sources des tests sont inclus
dans le dépôt ; aucune classe de test nest embarquée dans le mod livré.
Aucun test Windows, installation Prism, publication du canal, commit ou tag.
+155
View File
@@ -0,0 +1,155 @@
# Acquisition des 88 œufs — catalogue à valider
Demande du créateur : **valider les voies spéciales avant de les implémenter**.
Ce catalogue utilise les 88 identifiants de `CompanionType`, pour Minecraft 26.3.
Les œufs natifs servent aussi aux familiers. Aucun nouvel œuf propriétaire.
**28 espèces** ont une voie par reproduction/duplication dans EGGS-107,
**7** par les générateurs classiques des structures vanilla,
et **53** attendent une voie spéciale.
Les structures doivent être présentes et accessibles dans la partie : cette
livraison najoute aucun donjon, ne régénère aucun chunk et ne garantit pas ces
structures dans un monde plat. Un générateur classique configuré autrement
remet aussi l’œuf de son type, sil existe ; cela ne crée pas une voie naturelle
pour toutes les espèces. Les générateurs d’épreuves ont une proposition distincte.
## Voies intégrées à EGGS-107
Une reproduction donne **un œuf**, jamais simultanément un bébé. Les règles
natives daccouplement, dapprivoisement, de nourriture et de délai restent
applicables. Les poissons crus ne remplacent pas un seau quand le jeu exige un
poisson vivant. Les œufs de bébé restent bébés après stockage ; le temps de
croissance commence à l’éclosion.
| Espèce (identifiant natif) | Obtention |
| --- | --- |
| `cat` | Deux chats apprivoisés, morue ou saumon crus. |
| `chicken` | Deux poules, graines. |
| `cow` | Deux vaches, blé. |
| `donkey` | Deux ânes apprivoisés, carottes ou pommes dorées. |
| `fox` | Deux renards, baies sucrées ou lumineuses ; confiance héritée. |
| `horse` | Deux chevaux apprivoisés, carottes ou pommes dorées ; caractéristiques héritées. |
| `llama` | Deux lamas apprivoisés, bottes de paille ; force et variante héritées. |
| `mule` | Croisement cheval × âne. La mule reste stérile. |
| `pig` | Deux cochons, carotte, pomme de terre ou betterave. |
| `rabbit` | Deux lapins, carotte, carotte dorée ou pissenlit. |
| `sheep` | Deux moutons, blé ; mélange de couleurs natif. |
| `tadpole` | Deux grenouilles, boules de slime ; œuf de têtard à la place de la ponte aquatique. |
| `armadillo` | Deux tatous, yeux daraignée. |
| `bee` | Deux abeilles, fleurs. |
| `camel` | Deux dromadaires, cactus. |
| `goat` | Deux chèvres, blé. |
| `ocelot` | Deux ocelots, morue ou saumon crus. |
| `panda` | Deux pandas, bambou et environnement de reproduction natif ; gènes hérités. |
| `strider` | Deux arpenteurs, champignons biscornus. |
| `turtle` | Deux tortues, herbes aquatiques ; œuf de bébé à la place de la ponte. |
| `villager` | Reproduction native des villageois : nourriture suffisante et lit libre accessible. L’œuf donne un bébé. |
| `wolf` | Deux loups apprivoisés, nourriture native ; propriétaire hérité. |
| `allay` | Duplication native : allay dansant avec un jukebox, éclat daméthyste. Délai de 5 minutes conservé. |
| `axolotl` | Deux axolotls, poissons tropicaux en seau. |
| `hoglin` | Deux hoglins, champignons carmin. |
| `mooshroom` | Deux champimeuhs, blé. |
| `nautilus` | Deux nautiles apprivoisés, nourriture acceptée par la reproduction native. |
| `sniffer` | Deux renifleurs, graines de plante torche ; œuf dapparition à la place de l’œuf bloc. |
Pour les suivants : casser le générateur avec un outil adapté, sans Toucher de
soie. Un œuf par générateur ; Fortune ne multiplie pas le résultat. Les outils
avec Toucher de soie ne donnent pas d’œuf ; cette livraison ne leur ajoute pas
non plus une récupération du bloc générateur.
| Espèce (identifiant natif) | Source vanilla si présente |
| --- | --- |
| `skeleton` | Générateur de donjon. |
| `spider` | Générateur de donjon. |
| `zombie` | Générateur de donjon. |
| `cave_spider` | Générateur de mine abandonnée. |
| `blaze` | Générateur de forteresse du Nether. |
| `magma_cube` | Générateur de salle au trésor de bastion. |
| `silverfish` | Générateur de la salle du portail du stronghold. |
## Propositions — pas encore implémentées
Les pourcentages ci-dessous sont des valeurs de départ à valider. Les captures
**convertissent le mob en œuf** et ne laissent pas son double dans le monde.
Pour les butins et récompenses, un mob né dun œuf ne pourra pas produire son
propre œuf par cette voie. Les récompenses uniques devront avoir un suivi serveur
persistant : contrat de migration à définir lors du prochain ticket. Ces règles
ne sont pas encore ajoutées au jeu.
| Espèce | Type de voie | Proposition concrète |
| --- | --- | --- |
| `bat` | Interaction | Capturer une chauve-souris endormie avec un sac et une boule de slime. Le mob devient un œuf ; sac rendu. |
| `cod` | Capture | Morue en seau + œuf de poule : convertir le poisson en œuf dapparition ; seau vide rendu. |
| `frog` | Interaction | Élever un têtard jusqu’à la métamorphose, puis donner une boule de slime : un œuf de grenouille, une seule fois par grenouille élevée. |
| `salmon` | Capture | Saumon en seau + œuf de poule ; seau vide rendu. |
| `slime` | Butin conditionnel | Tuer un petit slime au corps à corps : 5 % de chance, uniquement sur la génération issue dun slime naturel. |
| `squid` | Capture | Interagir avec un poulpe sous leau avec un sac et une morue : le convertir en œuf ; sac rendu. |
| `tropical_fish` | Capture | Poisson tropical en seau + œuf de poule ; conserver exactement ses couleurs et son motif. |
| `copper_golem` | Construction | Construire un golem de cuivre puis lui faire terminer 16 tris réels : un œuf, une seule fois par golem construit. |
| `dolphin` | Exploration | Nourrir un dauphin et atteindre le trésor quil indique : un œuf à la découverte, une fois par trésor et joueur. |
| `drowned` | Butin conditionnel | Noyé naturel tué sous leau par un joueur : 5 %. |
| `glow_squid` | Capture | Même capture que le poulpe, dans une caverne immergée ; conversion du mob en œuf lumineux. |
| `husk` | Butin conditionnel | Zombie momifié naturel tué dans le désert en plein jour : 5 %. |
| `parrot` | Interaction | Apprivoiser un perroquet puis lui offrir des graines pendant sa danse au jukebox : un œuf, une seule fois par perroquet sauvage apprivoisé. |
| `pufferfish` | Capture | Poisson-globe en seau + œuf de poule ; seau vide rendu. |
| `polar_bear` | Interaction | Donner du saumon à deux adultes sur neige : reproduction Sanctuary spécifique donnant un œuf de bébé, délai de 5 minutes. |
| `snow_golem` | Construction | Monter le golem de neige natif puis lemballer avec une citrouille sculptée : conversion du golem en œuf. |
| `bogged` | Épreuve | Après une vague terminée, toucher son générateur d’épreuves avec un œuf de poule : un œuf de bogged, une fois par joueur et recharge native. |
| `parched` | Butin conditionnel | Parched naturel vaincu dans le désert avec un bouclier après avoir bloqué sa flèche : 5 %. |
| `breeze` | Épreuve | Même extraction après victoire sur les vagues de Breeze ; coût dun œuf de poule, recharge native du générateur d’épreuves. |
| `camel_husk` | Rencontre | Désarçonner les cavaliers hostiles puis apprivoiser la monture avec sa nourriture native : un œuf, une seule fois pour cette monture sauvage. |
| `creeper` | Butin conditionnel | Creeper naturel tué par un squelette, comme pour les disques : 10 %. |
| `endermite` | Interaction | Toucher une endermite apparue dune perle avec un fruit de chorus : conversion en œuf avant sa disparition. |
| `guardian` | Butin conditionnel | Gardien naturel vaincu à proximité dun monument : 5 %. |
| `phantom` | Butin conditionnel | Phantom naturel vaincu dans les airs avec une arme de mêlée : 10 %. |
| `piglin` | Troc | Ajouter l’œuf au troc contre un lingot dor : 2 %, poids exact à équilibrer. |
| `pillager` | Butin conditionnel | Pillard capitaine naturel vaincu par un joueur : 10 %. |
| `sulfur_cube` | Capture | Cube de soufre en seau + œuf de poule : convertir le contenu du seau en œuf, avec taille et contenu conservés. |
| `trader_llama` | Commerce | Offre rare du marchand ambulant : œuf de lama de marchand contre émeraudes et botte de paille. Les lamas ordinaires restent obtenus par reproduction. |
| `wandering_trader` | Commerce | Terminer toutes les offres dun marchand : une offre finale d’œuf contre 32 émeraudes. Une fois par marchand naturel. |
| `zombie_horse` | Rencontre | Libérer puis apprivoiser un cheval-zombie sauvage avec la nourriture native : un œuf, une seule fois par monture. |
| `zombie_villager` | Guérison | Guérir un villageois zombie naturel : un œuf de villageois zombie remis au soigneur ; un seul par individu, sans boucle de réinfection. |
| `zombified_piglin` | Butin conditionnel | Piglin zombifié naturel vaincu au Nether par un joueur : 5 %. |
| `stray` | Butin conditionnel | Vagabond naturel vaincu pendant une chute de neige : 10 %. |
| `vindicator` | Butin conditionnel | Vindicator vaincu dans un manoir ou un raid : 5 %. |
| `zoglin` | Transformation | Amener un hoglin dans lOverworld et le voir devenir zoglin : première interaction avec un champignon carmin remet un œuf, une seule fois. |
| `creaking` | Exploration | Neutraliser un grinceur lié puis casser son cœur actif sans Toucher de soie : un œuf. Le cœur ne donne pas simultanément sa version récupérable. |
| `elder_guardian` | Boss | Vaincre un grand gardien du monument : un œuf garanti, uniquement pour les gardiens générés avec le monument. |
| `enderman` | Butin conditionnel | Enderman naturel vaincu dans lEnd par un joueur : 5 %. |
| `evoker` | Butin conditionnel | Évocateur vaincu dans un manoir ou un raid : 10 %. |
| `ghast` | Défi | Tuer un ghast naturel en lui renvoyant sa propre boule de feu : 25 %. |
| `happy_ghast` | Élevage | Réhydrater un ghast desséché puis élever le ghastling : premier nourrissage adulte avec une boule de neige remet un œuf de ghastling, une fois par ghast élevé. |
| `iron_golem` | Construction | Construire un golem de fer puis lui offrir un coquelicot et un lingot : conversion volontaire du golem en œuf. |
| `piglin_brute` | Exploration | Piglin barbare du bastion vaincu par un joueur : 10 %. |
| `ravager` | Raid | Dernier ravageur vaincu dans un raid remporté : un œuf au vainqueur, une récompense par raid. |
| `shulker` | Exploration | Shulker dune cité de lEnd vaincu par un joueur : 10 % ; les copies par projectiles ne déclenchent pas cette voie. |
| `skeleton_horse` | Événement | Survivre au piège de cavaliers squelettes puis monter un cheval libéré : un œuf, une récompense par piège. |
| `vex` | Défi | Tuer un vex invoqué après avoir vaincu l’évocateur qui la invoqué : 10 %, une récompense maximum par évocateur. |
| `witch` | Butin conditionnel | Sorcière naturelle vaincue pendant quelle boit une potion : 10 %. |
| `wither_skeleton` | Butin conditionnel | Wither squelette naturel vaincu dans une forteresse : 5 %, indépendant du crâne. |
| `zombie_nautilus` | Rencontre | Libérer un nautile-zombie de son cavalier puis lapprivoiser : un œuf, une seule fois par monture sauvage. |
| `ender_dragon` | Boss | Vaincre le dragon invoqué par le cycle natif de lEnd : un œuf au participant désigné ; jamais pour un dragon apparu avec un œuf. |
| `warden` | Défi | Vaincre un Warden sorti dun hurleur naturel : un œuf garanti pour ce combat ; aucun œuf sur un Warden issu d’œuf. |
| `wither` | Boss | Vaincre un Wither invoqué par sable des âmes et crânes : un œuf garanti ; aucun œuf sur un Wither issu d’œuf. |
## Points à décider ensemble
- Le principe de conversion avec un sac / un seau pour les espèces capturables.
- La place des défis et du butin rare, et leurs chances exactes.
- Les récompenses de boss garanties, avec exclusion des boss issus d’œuf.
- Les offres du marchand et le troc restent de simples échanges natifs ; aucun
système d’économie, de banque ou de marché nest introduit ici.
Cas à ne pas confondre : nourrir ne veut pas toujours dire reproduire.
Le ghast heureux, le dromadaire momifié et le cheval-zombie refusent le mode
amoureux natif ; le nautile-zombie na pas de descendance native. Le lama de
marchand suit la reproduction du lama et ne garantit pas un nouvel œuf de
`trader_llama`. Le cube de soufre nemprunte pas la reproduction d`Animal`.
Les œufs pondus naturellement par une poule et leur lancer natif restent inchangés :
cest laccouplement nourri par le joueur qui produit le nouvel œuf garanti.
Sources de vérification : catalogue `CompanionType`, classes et données du JAR
Minecraft **26.3** installé (méthodes de reproduction, composants ditems et
aliments natifs), tests intégrés EGGS-107. Le catalogue ne prétend pas quun
comportement proposé est déjà une règle vanilla.
+172
View File
@@ -0,0 +1,172 @@
# STAT-01 — Atelier dargile et modèles 3D — beta.106
Contrat du 17 septembre 2026, branche `codex/statuary-import-beta106`.
Livraison locale vérifiée, cycle natif et archives normale/Test validés.
Aucune publication ni installation personnelle.
## Parcours retenu avec le créateur
Un seul dossier utilisateur : `schematics/sanctuary/`. La lecture historique
au premier niveau de `schematics/` reste possible, sans déplacement de fichiers.
Les boutons des deux ateliers ouvrent exactement le même dossier.
- **Métabli → Bibliothèque** : schémas `.litematic`, `.schem`, `.nbt` et `.schematic`
historiques, avec leurs règles dimport existantes.
- **Métabli → Statues → Mes modèles 3D** : modèles GLB, hauteur 496 blocs et
palette. La conversion produit un plan et rejoint les commandes K, matériaux,
export et règles de placement créatif/survie existants. Les statues des
créatures découvertes gardent leur accès habituel.
- **Atelier dargile** (`sanctuary:clay_workshop`) : choix du GLB et aperçu à
proportions conservées, limité à 16 × 16 × 16 voxels dans un seul bloc.
Un emplacement reçoit largile, lautre fournit la statue. **Un bloc dargile
est consommé pour chaque statue récupérée**, y compris en créatif.
Les blocs dargile normale conservent les couleurs du modèle ; les seize
argiles Sanctuary imposent leur couleur unie. Ni boule dargile ni terre
cuite nest acceptée. Fermer latelier restitue largile non consommée.
Recette de latelier : un bloc dargile au centre supérieur, trois dalles de
pierre lisse au milieu, trois planches en bas. Le bloc utilise les textures
actives de planches, argile et pierre lisse. Le résultat, **Statuaire**
(`sanctuary:statuary`), est un objet transportable et posable. Sa miniature se
voit dans linventaire et le monde. Il nouvre pas un éditeur lorsquon le pose.
Le fichier se choisit dans la liste ou par dépôt sur l’écran de latelier.
« Actualiser » relit le dossier. La rotation proposée à latelier dargile
est un quart de tour. Il ny a pas d’éditeur de sommets ou danimations.
## Identité des modèles et sauvegardes — contrat préalable
Les identifiants des anciens blocs, formats et générations restent inchangés.
Les nouveaux blocs napparaissent que par fabrication ou placement volontaire.
Aucun monde personnel nest ouvert et aucun chunk existant nest régénéré.
Chaque GLB reçoit un identifiant `sanctuary:model/<SHA-256 du fichier source>`.
Renommer ou déplacer un fichier ne change pas cet identifiant. Réexporter avec
un contenu binaire différent produit un nouvel identifiant. Les différentes
argiles et rotations du même modèle conservent lidentité de la source.
Il sagit dune identité de modèle dans les données, et non dun nouvel
identifiant de bloc enregistré pour chaque import. Elle ne donne aucun droit
serveur et ne désigne ni une URL ni un chemin à ouvrir.
Le statuaire a une BlockEntity dédiée avec un champ `sculpture`, schéma **1** :
nom, identifiant du modèle, dimensions et couples position/couleur ARGB des
voxels. La position est bornée à 16³, la couleur opaque, les doublons refusés.
Lobjet transporte ces données dans son composant natif de bloc ; pose, butin,
repose et sauvegarde utilisent le cycle Minecraft. Le bloc réplique les données
aux clients qui chargent son chunk. Aucun joueur na besoin du fichier source
pour voir une statue déjà fabriquée. Un schéma inconnu ou invalide chargé dans
un bloc est préservé sans être interprété ni édité.
Latelier utilise un menu natif temporaire, sans stock caché persistant.
Le serveur vérifie le menu actif, son jeton, la proximité, le bloc, les droits
et le veto dutilisation Fabric. La sélection envoie seulement des voxels bornés
(un paquet atomique de moins de 32 Kio), jamais un chemin ou un fichier exécutable.
La teinte vient du véritable objet dargile côté serveur et chaque retrait du
résultat consomme une unité. La fermeture ou la destruction de latelier annule
le droit de produire ; le travail local tardif ne change pas un autre menu.
## Contrat dimport et limites
GLB **2.0 autonome**, scène par défaut (ou première scène), triangles indexés
ou non, transformations hiérarchiques matrice ou TRS, matériaux de couleur
et textures PNG/JPEG intégrées, UV avec répétition/clamp/miroir. Le matériau
opaque ou à découpe alpha est voxelisé en surface. Le calcul seffectue sur
un fil de travail ; les faces visibles du résultat sont mises en cache pour
le rendu. Lextension de matériau non éclairé peut être lue pour sa couleur.
Limites explicites : fichier 8 Mio, JSON 1 Mio, hiérarchie de 64 niveaux,
16 384 triangles, 4 194 304 pixels décodés et autant de pixels de matériaux.
Les plans gardent les plafonds historiques de cellules et de volume.
Les grands scans demandent donc souvent une simplification préalable.
Squelettes et morphing doivent être figés avant export. Les animations ne sont
pas jouées (la pose statique des nœuds est utilisée). Couleurs de sommets,
accessors sparse, primitives non triangulaires, transparence mélangée,
compressions et extensions de textures non gérées sont refusés explicitement.
Les couleurs de sommets doivent être converties en texture. Aucun téléchargement
ni référence externe du GLB nest résolu. OBJ, FBX, STL, VOX et glTF multifichier
ne font pas partie de ce premier import. Un GLB sans surface visible est refusé.
Une miniature représente au maximum 4096 voxels de 1/16 de bloc, centrés en X/Z,
posés au sol. Les petits détails peuvent disparaître. Sa collision est le cube
contenant la sculpture ; les voxels ne sont pas des blocs exploitables ou des
inventaires. Les argiles utilisent la palette de couleur publiée du mod, avec
éclairage du rendu, sans texture de matière distincte sur chaque voxel.
Aucune dépendance tierce supplémentaire : Minecraft **26.3**, Fabric et Java 25
restent ceux du dépôt. Lecture suivant la [spécification Khronos glTF 2.0](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html).
## Vérifications
`Statuary106ClientChecks` passe sur un client natif Minecraft 26.3 avec serveur
intégré, dans un nouveau monde plat jetable, graine 106. Il vérifie :
- Lecture dun GLB texturé avec transformation de scène, conservation des
proportions et des couleurs ; refus des fichiers hors limites, références
externes, offsets invalides et hiérarchies cycliques.
- Import indépendant de [BoxTextured de Khronos](https://github.com/KhronosGroup/glTF-Sample-Assets/tree/main/Models/BoxTextured),
triangles indexés et texture embarquée. Le fichier nest pas distribué avec le mod.
- Dossier partagé avec filtres distincts, rotation, identité du modèle et
recoloration par les seize argiles.
- Fabrication native en survie : absence de résultat sans argile, coût dune
unité, restitution du reliquat à la fermeture et production par Maj-clic.
- Pose par clic natif dans la portée Sanctuary du joueur, butin complet,
repose, rendu dans le monde, dans linventaire et dans laperçu.
- Même source convertie au Métabli en plan de 32 blocs de hauteur, sans
modifier une miniature existante ; annulation dun import à la fermeture.
- Sauvegarde, suppression du GLB, réouverture du monde : modèle transmis au
nouveau client et sculptures colorées conservées dans linventaire.
- Captures FR/EN relues dans `build/statuary106-evidence/`.
Commande de reproduction :
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryStatuary106ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Le contrôle de régression `Plans072ClientChecks` passe également sur la copie
livrée en **47 s** : **88 modèles natifs, aucun refus**, textures UV, palette
active, statues de 32 blocs, rotations, matériaux, export gzip, aperçu, confirmation
et annulation en créatif, constructions, refus dusurpation et pose payée en
survie. Commande identique avec `-PsanctuaryPlans072ClientTests=true` à la place
de `-PsanctuaryStatuary106ClientTests=true`. Journal :
`build/statuary106-plans-regression.log`.
Les premiers échecs ont permis de corriger le champ natif `recipes` du critère
de découverte de recette. Les attentes du test ont ensuite été ajustées pour
attendre la confirmation serveur des clics et respecter la portée de pose du
nouveau joueur. Aucun contournement de ces règles nest ajouté au mod.
## Livraison locale
La copie `build/release-beta106` part de la livraison beta.105 et ajoute les
30 fichiers de production concernés par ce ticket. Les sources beta.107 des
œufs, arrivées en parallèle dans le dossier partagé, restent conservées dans
leur propre livraison. `build/statuary106-source-manifest.json` décrit la copie.
La commande suivante a réussi sur cette copie en **5 min**, **132 tâches** :
```sh
./gradlew check build assemblePack assembleTestPack :sanctuary:runClientGameTest \
-x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryStatuary106ClientTests=true \
-PsanctuaryClientNoVsync=true -PsanctuaryQuickTests=true
```
Le GameTest dédié reste exclu conformément au refus antérieur daccepter son
EULA. Le serveur intégré a vérifié les écritures, le coût, le butin, la sauvegarde
et la transmission au client. Les essais ont tourné sur macOS ; une connexion
depuis deux ordinateurs et les autres pilotes graphiques nont pas été testés.
Les sources JAR correspondent exactement aux sources Java de la copie isolée.
Les deux archives contiennent le même JAR Sanctuary, avec métadonnées beta.106
et Minecraft 26.3. Aucune classe de test ni modèle GLB de test nest distribué.
Rapport et empreintes : `build/statuary106-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.106.mrpack), 10 144 169 octets.
SHA-256 : `b8b76ba914c8ceaed1b1d25f0817bd4cdeb7a4bd5ad43222c6970162811ff901`.
- [Pack de test](../build/Sanctuary-Test-beta.106.mrpack), 10 163 092 octets.
SHA-256 : `e55d5871f1e31d3ed46de32d748eba51be2029c60462cf0155be90b8dd40118b`.
Aucun tag publié, canal packwiz avancé ou déploiement dans Prism.
+192
View File
@@ -0,0 +1,192 @@
# PLAN-01 — statues et plans légers — beta.072
Branche `codex/statues-plans-beta072`. Ticket ouvert le 15 septembre 2026.
**Implémenté, essais natifs réussis et archives locales beta.072 vérifiées.**
## Demande et choix retenu
Extraire les modèles et textures réellement utilisés par Minecraft pour créer
des statues en blocs, avec une palette de matériaux choisie par couleur.
Le créateur demande un outil Sanctuary léger qui couvre l'essentiel des plans
partagés en ligne. Il a retenu une implémentation native compatible avec les
fichiers Litematica, sans embarquer Litematica ou MaLiLib.
Parcours : modèle → hauteur et palette → plan → aperçu positionnable et
orientable → placement créatif, ou construction manuelle guidée en survie.
Les plans importés partagent ce dernier parcours. Une bibliothèque locale,
l'export `.litematic`, les couches et le décompte des blocs complètent l'outil.
Le lien de recherche Minecraft Schematics livré en beta.072 est retiré en
[beta.075](plans-library-beta075.md). La bibliothèque utilise les fichiers locaux.
## Utilisation
1. Appuyer sur **K** (raccourci modifiable dans les contrôles).
2. Dans **Statue**, choisir une espèce, ou le mob visé au moment d'ouvrir
l'écran. Régler la hauteur de 4 à 96 blocs et la palette : mélange, béton
ou laine. La géométrie et les textures viennent du rendu natif et des
ressources actives ; les pixels transparents ne deviennent pas des blocs.
3. Dans **Bibliothèque**, charger un fichier local ou le déposer sur l'écran.
Les dossiers `schematics/` et `schematics/sanctuary/` sont consultés.
**Ouvrir le dossier** permet dy déposer des plans ; **Actualiser** relit
les fichiers disponibles.
4. Dans **Construction**, ancrer le plan au point visé, régler ses coordonnées,
tourner de 90°, isoler une couche et consulter les blocs restants.
Les blocs corrects disparaissent de l'aperçu ; les conflits sont rouges.
5. En créatif, **Placer** puis confirmer dans le jeu. En survie, poser les
blocs normalement avec son inventaire ; le compteur suit l'avancement.
**Exporter** écrit un `.litematic` dans `schematics/sanctuary/`, sans écraser
les exports précédents.
L'aperçu est local et se ferme au changement de dimension ou à la déconnexion.
Exporter avant de quitter conserve le plan. Le serveur Sanctuary est requis
pour le collage créatif ; un aperçu seul ne donne aucun droit de placement.
## Compatibilité implémentée
- Minecraft **26.3-pre-2**, Java 25, versions Fabric du dépôt.
- `.litematic` versions 4 à 7 en lecture, version 6 en écriture ; Sponge
`.schem` v2/v3 en lecture ; structures vanilla `.nbt` en lecture. Fichiers
NBT compressés gzip. Les palettes classiques `Name`/`Properties` et les clés
natives 26.3 `id`/`properties` sont lues ; l'export Litematic conserve le
contrat classique, indépendant de la version Minecraft.
- Refus explicite des blocs ou propriétés inconnus, des formats non pris en
charge et des données d'une version Minecraft plus récente. Aucun remplacement
silencieux par de l'air ; aucune migration automatique d'anciens identifiants.
- Les anciennes `.schematic` à identifiants numériques nécessitent une
conversion externe. Ni archive de monde ni ZIP n'est un plan importable.
- Import des blocs uniquement : les inventaires, commandes, entités vivantes,
ticks différés et biomes d'un fichier tiers ne sont pas exécutés/importés.
## Contrat de monde et de sauvegarde
Les plans sont des fichiers clients indépendants ; aucun format de sauvegarde
Sanctuary ni aucune génération n'évolue. Aucun monde personnel n'est ouvert
par le développement. La conversion utilise un modèle de rendu, sans faire
apparaître ni supprimer un mob. Un aperçu ne modifie pas le monde.
Le collage créatif demande une action explicite en jeu. Le serveur vérifie le
mode réel, la taille, la portée, les chunks déjà chargés, la frontière du monde,
les permissions et l'absence de blocs occupés. Un opérateur en survie reste en
survie. Les blocs d'air du plan ne servent jamais à effacer le terrain.
En survie, les poses et la consommation passent par Minecraft normalement.
## Limites de cette livraison
- Les statues sont des enveloppes creuses. Les couleurs sont approchées par
celles des textures moyennes des matériaux ; la forme dépend de la hauteur
choisie. Les effets, étiquettes, laisses et couches d'objets/blocs ne font pas
partie de la capture. Les textures dynamiques absentes des ressources et les
UV d'atlas spéciaux demandent encore un adaptateur.
- L'aperçu utilise des faces colorées et les formes de sélection natives,
sans reproduire toutes les textures et l'éclairage d'un bloc posé. Il dessine
à 96 blocs du joueur et recalcule les blocs restants toutes les dix ticks.
Le traitement des fichiers et la conversion géométrique passent par un
unique fil de travail ; masquer le plan arrête son actualisation périodique.
- Plafonds : 256 blocs par axe, 32 768 blocs non vides, 2 097 152 cellules de
volume ; fichier compressé de 8 Mio et lecture NBT de 32 Mio au maximum.
La capture refuse plus de 16 384 faces et la conversion plus de 8 millions
d'échantillons. Un gros build communautaire peut dépasser ces limites.
- Collage à moins de 192 blocs, dans des chunks chargés. Pas d'effacement,
de remplacement du terrain occupé, de blocs administratifs ou sans objet
associé. Le serveur consulte les permissions et le veto Fabric d'utilisation
des blocs. La physique et les mises à jour des voisins reprennent ensuite.
- Les matériaux comptent des états de blocs. Portes, lits et dalles doubles
peuvent donc demander un nombre d'objets différent du nombre affiché.
- Aucun import d'inventaire, de NBT de bloc ou d'entité ; aucun miroir, collage
avec remplacement, remplissage automatique en survie ou catalogue web intégré.
- Aucun benchmark comparatif avec Litematica n'est revendiqué. La réduction
de périmètre et l'absence de dépendance supplémentaire sont vérifiables ;
elles ne constituent pas une mesure de gain de FPS.
## Sources de compatibilité
Vérifiées le 15 septembre 2026 :
- [Litematica](https://modrinth.com/mod/litematica/versions) publie des versions
26.2, sans release annoncée pour la cible exacte du dépôt.
- [Source 26.3](https://github.com/sakura-ryoko/litematica/tree/101ac3a23649f916cdcf05f30a5036f72706a096)
: cible 26.3-rc-1, rendu encore en chantier. Consultée pour le contrat du
format ; aucun JAR tiers supposé compatible n'est ajouté au pack.
- [Spécification Sponge v3](https://github.com/SpongePowered/Schematic-Specification/blob/master/versions/schematic-3.md).
- [Recherche Minecraft Schematics](https://www.minecraft-schematics.com/search/).
- [Litemapy](https://github.com/SmylerMC/litemapy), utilisé seulement pour écrire
des fixtures synthétiques indépendantes et relire l'export, hors distribution.
## Vérifications
Essais sur macOS, Java 25, Minecraft 26.3-pre-2 et Fabric API 0.160.0+26.3.
Tous les mondes utilisés sont des mondes de développement jetables.
- **Client natif réussi** : les 88 espèces à œuf d'apparition ont fourni leur
géométrie texturée. Un creeper a parcouru les vrais widgets de création,
l'aperçu, les quatre rotations, les matériaux, l'export, la confirmation et
le collage réseau. Le serveur et le client retrouvent les mêmes blocs.
Résultat : **10 × 32 × 15**, **1 542 blocs**, 22 entrées de palette avec l'air.
Seul ce modèle a fait l'objet du parcours complet de statue en jeu ; la
capture des 88 espèces ne vaut pas inspection visuelle de 88 statues.
- **Survie vérifiée** : un paquet de collage envoyé malgré le mode survie est
refusé ; l'interface ne propose pas le collage. Une pose au clic droit natif
consomme un objet et fait avancer le compteur. Interfaces FR/EN capturées ;
les 95 nouvelles clés de traduction sont présentes dans les deux langues.
- **Interopérabilité indépendante** : Litemapy 0.11.0b0 relit le fichier produit
en jeu et retrouve dimensions, états et total de 1 542 blocs. Ses trois
écrivains ont aussi produit les fixtures `.litematic`, Sponge et vanilla
du test serveur. La dépendance Python reste dans un environnement ignoré ;
seuls les petits exemples synthétiques en base64 sont versionnés.
- **Serveur et formats réussis** : les six GameTests du ticket et le test de
contrôle Fabric passent. Ils couvrent l'autorité créatif/survie, le refus
complet sur bloc occupé ou permission refusée, les blocs administratifs,
la portée, les régions négatives, les palettes traversant les mots de 64 bits,
les fichiers indépendants, les entrées invalides, la transparence, les UV et
les rotations.
- **Build et distribution réussis** : `check build assemblePack assembleTestPack`
termine en 3 min 8 s, 130 tâches. Les GameTests sont ciblés sur PLAN-01 dans
le harnais plat ; les contrôles Java/Python généraux restent exécutés. Ce
ciblage ne revendique pas une nouvelle validation de toute la génération.
Un premier lancement avait échoué au démarrage Java du test historique
`lostCityPlanner15Smoke` avec un message JavaFX ; le même test isolé puis
l'ensemble de la commande réussissent sans modification de ce code.
Commande du parcours client :
```sh
./gradlew :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryPlans072ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Commande de contrôle et d'assemblage finale :
```sh
./gradlew check build assemblePack assembleTestPack \
-PsanctuaryFocusedTests=plans072 -PsanctuaryAtlasOnly=true \
-PsanctuaryClientTests=true -PsanctuaryPlans072ClientTests=true \
-PsanctuaryQuickTests=true
```
Puis `packwiz modrinth export --output ../Sanctuary-beta.072.mrpack` dans
`build/packwiz/`, et l'équivalent `Sanctuary-Test-beta.072.mrpack` depuis
`build/packwiz-test/`.
Les captures et reçus locaux sont conservés dans
`build/statues-research/evidence/`, `client-tests.log` et `interoperability.json`
du même dossier de recherche. Ils ne sont pas ajoutés au pack.
## Archives locales
Le mod et les manifestes passent à **beta.072** ; les textures restent en
**beta.070**. Les 1 671 classes du JAR correspondent exactement aux classes
compilées, les 758 sources Java à l'archive des sources, et les 150 ressources
graphiques aux fichiers versionnés. Les deux MRpacks contiennent le même JAR
Sanctuary ; seul le profil Test ajoute le module de monde plat. Versions,
index packwiz, empreintes et intégrité ZIP sont vérifiés.
| Artefact | Octets | SHA-256 |
| --- | ---: | --- |
| [Pack normal](../build/Sanctuary-beta.072.mrpack) | 9 534 082 | `ccadfa614595f4409cb8eab9c795f112e65854c8e84864c8a8fb67dbc2de450e` |
| [Monde plat rapide](../build/Sanctuary-Test-beta.072.mrpack) | 9 553 013 | `cb1786ffbf0290fc2cc5437647423e96abee8bca7737537aecbb12de98aee811` |
| [Mod Sanctuary](../mods/sanctuary/build/libs/sanctuary-beta.072.jar) | 10 043 650 | `f324eba7046563e06671c27551497ad6254cac80a27b5adbf3887b20998f0325` |
Reçu : `build/statues-research/artifacts.json`. Les changements déjà présents
des beta.062 à beta.071 sont conservés. Aucun canal public, instance Prism ou
serveur personnel n'est synchronisé par cette préparation locale.
+60
View File
@@ -0,0 +1,60 @@
# beta.089 — Crash au contact du super piston
Branche : `codex/super-piston-collision-beta089`.
Signalement : crash beta.088 sous Minecraft 26.3-pre-2, `Ticking entity`,
pendant `LocalPlayer.moveTowardsClosestSpace``isSuffocating`.
## Cause et correction
Les propriétés de la tête et de la tige étaient copiées depuis le socle du
piston natif. Son prédicat de suffocation lit `PistonBaseBlock.EXTENDED`.
Cette propriété existe sur les socles, mais pas sur les pièces techniques :
la recherche d'un espace libre autour du joueur levait une exception lorsque
sa boîte de collision rencontrait `sanctuary:super_piston_head`.
La tige héritait du même défaut. Le prédicat de visibilité copié capture
aussi les propriétés du socle dorigine et relit ce même état : changer
uniquement la suffocation ne suffisait pas.
La tête et la tige utilisent des propriétés neuves, avec des prédicats
explicites de suffocation et doccultation désactivés. Elles conservent leurs collisions physiques de plaque et de tige,
leur résistance et leurs règles de mouvement. Les socles gardent le prédicat
natif, avec suffocation seulement lorsqu'ils sont rétractés.
Aucun changement d'identifiant, d'état de bloc, de schéma ou de sauvegarde.
Les pistons déjà assemblés restent compatibles : aucune reconstruction,
conversion ou suppression de blocs n'est nécessaire. Les textures et le
correctif de navigation du Fût beta.088 sont conservés.
## Validation ciblée
Le parcours client natif des super pistons est étendu pour contrôler tous
les états des deux socles, de la tête et de la tige, côté client et serveur :
suffocation, visibilité, support d'apparition et conduction redstone.
Le chemin natif `collidesWithSuffocatingBlock` est aussi exercé avec le joueur
sur les neuf cases de tête et les deux positions de tige de chaque variante,
dans chacune des six orientations.
Le défaut initial a été reproduit avec la même `IllegalArgumentException`
que dans le rapport : `build/piston089-before-client.log`. Le contrôle de
visibilité a ensuite révélé la capture des anciennes propriétés, corrigée
par les propriétés neuves décrites ci-dessus.
Le parcours complet passe en 1 min 25 s (`build/piston089-client.log`) :
864 états contrôlés côté client et serveur ; contact natif du joueur avec
les pièces ; deux variantes et six directions ; charge de 108 et refus de
109 blocs ; obstacles, inventaires, slime/miel, transport vertical d'une
entité, interruption, sérialisation, retour dans les chunks et démontage.
Les essais se déroulent dans un monde de développement neuf, graine 87.
`check build assemblePack assembleTestPack` réussit en 2 min 35 s
(124 tâches, 104 exécutées), avec `:sanctuary:runGameTest` explicitement exclu.
Journal : `build/piston089-check.log`. Le reçu `build/piston089-artifact.json`
vérifie les sources, le JAR, les archives et l'identité de tous les assets
avec beta.088. Les seules classes compilées modifiées sont `SuperPistons`
et ses classes internes (décalages de lignes de debug pour ces dernières).
Archives locales : `build/Sanctuary-beta.089.mrpack` et
`build/Sanctuary-Test-beta.089.mrpack`. Les archives beta.088 sont intactes.
Aucun déploiement sur Prism ou sur le canal publié, aucun serveur dédié
lancé, aucune EULA acceptée. Validation native sur macOS ; pas d'exécution
sur le poste Windows du signalement ni d'essai LAN à deux clients distincts.
+110
View File
@@ -0,0 +1,110 @@
# beta.087 — Super piston et super piston gluant
## Contrat de sauvegarde avant implémentation
Assemblage volontaire à la clé dorée d'un carré plein de neuf pistons
rétractés, identiques et orientés dans la même direction. Deux clics de
confirmation ; les six directions sont admises. Sans cette action, les
pistons restent indépendants. Aucun changement de la génération ni des
registres de Fourneau et de Fût.
Les neuf composants deviennent des blocs `sanctuary:super_piston` ou
`sanctuary:super_sticky_piston`, identifiés par leur orientation et leur
position dans le carré. Le composant central porte une BlockEntity dédiée,
schéma 1 : course engagée (0 à 3) et liste des déplacements natifs en cours.
Les états intermédiaires utilisent les moving pistons
natifs, avec leur état de bloc et progression sérialisés par Minecraft.
Les pièces de tête et de tige sont des blocs techniques sans objet récupérable.
Aucun inventaire ni copie de charge n'est conservé dans le contrôleur.
Un signal redstone sur un des neuf composants demande la sortie ; sa
coupure demande le retour. Trois pas animés d'un bloc. Chaque pas est planifié
entièrement avant mutation : obstacle intermédiaire, hauteur, frontière du
monde, charge et présence des chunks. Aucune charge de chunk forcée.
L'animation engagée finit avant d'entamer le pas suivant ou d'inverser.
Après rechargement, les animations natives finissent et le contrôleur reprend
à partir de l'état courant, sans rattrapage temporel ni restitution d'une
copie initiale. Les sauvegardes suivent l'atomicité native des chunks ; pas de
journal inter-chunks pour un crash brutal pendant une sauvegarde.
La charge commune conserve les règles natives d'indéplaçabilité et les
liaisons slime/miel. Une poussée bloquée suspend l'ensemble de la tête ;
une traction impossible laisse la charge en place et permet au gluant de
rentrer, comme un piston natif. Les coffres et autres inventaires indéplaçables restent en place. Les blocs
que les pistons natifs cassent, notamment les boîtes de Shulker, déposent
leur objet avec son contenu.
Le piston normal ne tire pas au retour. Les collisions et le déplacement des
entités utilisent les moving pistons natifs.
Maj-clic avec la clé dissocie une machine rétractée et désalimentée. Une
machine active demande de couper son alimentation et de la laisser rentrer.
Casser une pièce dissocie la structure : les bases restantes redeviennent
leurs pistons d'origine, les pièces techniques disparaissent sans butin ;
seuls les composants effectivement cassés déposent leur piston. Les charges
déjà déplacées restent à leur position actuelle, les animations de charge
engagées finissent normalement. Une moitié déchargée attend son chargement
pour valider ou nettoyer ses pièces ; aucun bloc étranger n'est écrasé.
## Valeurs et utilisation
Charge totale acceptée : **108 blocs distincts**, commune aux neuf cases,
liaisons slime/miel incluses. Ce n'est pas une limite de 12 par colonne.
Les neuf pistons doivent être du même type, orientés pareil, rétractés et
sans alimentation. La clé dorée montre d'abord le carré ; un deuxième clic
sous dix secondes confirme l'assemblage. Maj-clic sur un piston indépendant
permet de l'orienter vers la face cliquée. Un carré ambigu dans une surface
plus grande est refusé plutôt que de sélectionner des composants au hasard.
Un signal reçu par n'importe lequel des neuf composants fait avancer la tête
commune jusqu'à trois blocs. La coupure la fait rentrer ; seule la variante
gluante ramène la charge. Trois pas animés utilisent les collisions natives.
Une charge en chunk absent suspend aussi le retour gluant, sans charger le
chunk et sans l'abandonner comme si elle était un obstacle indéplaçable.
## Apparence
Les cinq PNG fournis sont conservés octet pour octet. Les faces 48 × 48 sont
réparties sur les neuf composants ; la bande de côté 48 × 16 fait le tour
du socle. **Les quatre pixels avant partent avec la tête** : le corps ouvert
ne conserve que douze pixels, avec la texture intérieure reculée et une
seule tige centrale qui comble l'intervalle. Les UV du côté sont découpés,
non étirés. Modèles, collisions et retour animé suivent cette géométrie dans
les six orientations, pour les deux variantes.
La synchronisation utilise les états et données des moving pistons natifs.
Le client initialise la BlockEntity des seuls paquets marqués par cette
machine avant leur chargement natif : un simple paquet d'état de bloc ne
crée pas la BlockEntity d'un moving piston.
## Vérifications
Parcours natif dans un monde plat neuf, graine 87, serveur intégré : douze
combinaisons direction/variante, assemblage réel à la clé, charge de 108,
refus à 109, obstacle au deuxième pas puis reprise, coffre immobile avec son
stock, boîte de Shulker cassée avec ses 17 diamants conservés, liaison slime
au-delà de la face, séparation slime/miel, retour gluant, transport vertical
d'une entité, coupure pendant l'animation, sérialisation des mouvements,
déchargement puis retour dans les chunks et démontage après casse.
Le test vérifie aussi la réception côté client des têtes en mouvement et du
retour final, les collisions de 12/4 pixels dans les six directions, le refus
hors hauteur et la suspension sur un chunk absent sans le charger.
Journal : `build/piston087-client.log` (succès, 1 min 20 s).
Captures inspectées : `build/piston087-screenshots/`, notamment
`0015_piston087-normal-face-open.png` et `0016_piston087-sticky-face-closed.png`.
Les essais à deux clients LAN distincts et avec un moteur de shaders tiers
restent à réaliser. Aucun serveur dédié démarré et aucune EULA acceptée.
`check build assemblePack assembleTestPack` a réussi en 2 min 29 s
(124 tâches, 104 exécutées), avec `:sanctuary:runGameTest` exclu pour respecter
le choix de tests client uniquement. Journal : `build/piston087-check.log`.
Le reçu `build/piston087-artifact.json` vérifie les 55 nouveaux assets, les
13 nouvelles classes, l'identité des cinq PNG, la conservation des assets
précédents, les sources embarquées et les archives. Les autres classes
existantes restent identiques, à l'exception du raccord dans `Multiblocks`.
Archives locales : `build/Sanctuary-beta.087.mrpack` et
`build/Sanctuary-Test-beta.087.mrpack`. Les archives beta.086 sont inchangées.
Aucun déploiement dans Prism ni sur le canal publié ; aucun monde personnel
modifié. Le pack de ressources intégré conserve sa version beta.070.
+102
View File
@@ -0,0 +1,102 @@
# beta.097 — crash de préparation des temples
Ticket local EXP-03, branche `codex/expedition-temple-crash-beta097`.
Rapport du 16 septembre 2026 à 13:12:19, Sanctuary beta.089, Minecraft
26.3-pre-2 / Windows. Graine du monde : `-4700804240597771092` ; graine
locale de Kai/Efe : `7023521385479800534`.
Le chargement s'arrête dans `ExpansionStructures23.ancientTemples002` : aucun
site accepté pour `minecraft:desert_pyramid` après 1 926 colonnes. La recherche
historique couvre seulement 72 % du rayon nominal de l'île. Le défaut existe
encore dans beta.096 sur Minecraft 26.3 finale.
## Contrat avant correction
Les identifiants, biomes, graines, centres des îles et journaux restent inchangés.
Le relief reste identique, sauf lassise locale explicitement autorisée pour un
temple de secours lorsquaucun sol naturel ne convient. Aucun monde personnel n'est ouvert/modifié,
aucun chunk joué n'est régénéré, aucune expansion n'est activée.
Conserver la recherche historique et son ordre exact en premier : les sites
admissibles déjà trouvés ne doivent pas changer. Étudier une recherche de
secours finie dans les autres chunks de l'île uniquement après l'échec de cette
recherche, avec les mêmes règles natives de biome, de pente, de fondation et
de protection. Après l’échec réel de cette recherche sur la graine du rapport, le créateur a
explicitement demandé de **forcer la présence du temple**. Un dernier recours
classe les sites intérieurs par pente et utilise les pièces vanilla, même si
le biome exact nest pas celui requis pour leur apparition spontanée. La
fondation naturelle est testée en premier ; sinon une assise locale est
préparée sous le bâtiment. Aucun temple manquant nest déclaré présent. Le budget de calcul
reste borné. Les cas auparavant réussis doivent conserver leurs coordonnées.
La vérification utilise exclusivement de nouveaux mondes de développement et
leur réouverture, avec le client et son serveur intégré. Aucun serveur dédié
ni nouvelle acceptation d'EULA.
La recherche naturelle élargie échoue également sur la graine du rapport
(440 candidats supplémentaires, 2 366 colonnes). Le dernier recours trouve une
pyramide au chunk `[-4, 43]`, sur sol naturel, sans assise ajoutée pour cette
reproduction. Le temple de jungle reste au chunk `[43, 2]`.
La recherche historique garde 32 768 colonnes au maximum, portée à 65 536 pour
la recherche élargie. Le dernier recours utilise un échantillonneur distinct
borné à 65 536 colonnes, classe les candidats intérieurs par pente, et examine
au plus 32 bâtiments complets. La variante au sol naturel est privilégiée ;
lassise, si nécessaire, garde les vérifications demprise, de hauteur et de
protection. Les contraintes naturelles exactes de biome/pente ne peuvent alors
plus annuler à elles seules lexistence du temple demandé.
## Contrat du complément NBT
Le champ entier optionnel `sanctuary_native.temple_foundation_min_y` accompagne
seulement les nouveaux starts exigeant une fondation. Son absence conserve le
comportement antérieur ; aucun champ nest ajouté aux starts ordinaires. La
fondation en grès ou pierre moussue est produite pendant la décoration native,
uniquement dans le chunk en cours, avant la construction vanilla des salles,
coffres et pièges. Elle ne sexécute jamais au chargement dun chunk déjà généré.
Le cache natif conserve ce complément via la sérialisation existante des starts.
Aucun journal ni chunk historique nest migré. Les protections spatiales restent
actives, et lassise est incluse dans la réservation du temple.
## Aperçu des plans (demande complémentaire)
Le créateur demande aussi didentifier les matériaux directement dans laperçu.
Les modèles et UV du pack actif remplacent les aplats ; états/orientations,
formes non cubiques et couleurs de biome sont conservés. Les conflits gardent
un contour rouge, les blocs déjà posés disparaissent de laperçu. Le nom du bloc
visé est affiché. Rendu seulement : aucun bloc nest posé par cet affichage.
## Vérifications beta.097
- Avant correction, reproduction sur 26.3 finale du même échec que beta.089 :
graine locale `7023521385479800534`, exactement 1 926 colonnes échantillonnées.
- `Temple097ClientChecks` : création réelle avec la graine du rapport, puis
réouverture du monde de développement et restauration du cache. Deux temples
natifs complets : pyramide **4 coffres et 9 TNT**, jungle **2 coffres et
2 distributeurs**. Starts NBT, pièges, blocs et localisation identiques après
reprise. Réussi en 3 min 30 s. Le premier essai corrigé avait déjà chargé le
monde, mais son pilote attendait au Hello World ; lautomatisation de cette
étape a ensuite été ajoutée au test.
- Régression du Métabli avec les nouveaux modèles : sélection, K, génération,
import/export, pose payée, rotation, masquage, interfaces FR/EN et huit
matériaux dont coffre, escalier, four et feuillage. Les contrôles de fondation
grès/pierre moussue vérifient aussi le complément NBT, la continuité des
écritures, leur découpage strict par chunk et labsence d’écriture sur un
ancien start non marqué. La fondation est vérifiée via un WorldGenLevel de
test ; la graine réelle nen a pas besoin.
- Captures inspectées dans `build/preview097-evidence/`. Les modèles ordinaires
sont translucides, les modèles spéciaux gardent leur rendu natif. La sélection
graphique est bornée aux 4 096 blocs les plus proches dans le champ de vision,
à moins de 96 blocs ; les matériaux/comptages concernent toujours le plan entier.
Les journaux sont `build/temple097-repro.log`, `build/temple097-fallback.log`,
`build/temple097-client.log`, `build/preview097-client.log` et
`build/beta097-check.log`. Le reçu `build/beta097-artifact.json` vérifie les
archives, les sources embarquées et la conservation des textures existantes.
Aucun essai Windows ni shader tiers nest revendiqué. Aucun monde personnel ni
instance Prism na été ouvert ou mis à jour ; le canal packwiz reste inchangé.
Validation finale : `./gradlew check build assemblePack assembleTestPack
-x :sanctuary:runGameTest` réussit en **2 min 13 s**, 124 tâches. La suite native
Métabli/aperçu/fondations réussit en **59 s**. Archives normal et Test beta.097
exportées et vérifiées ; les archives beta.096 restent inchangées.
+85
View File
@@ -0,0 +1,85 @@
# beta.093 — Recherche créative et infobulles des familiers
Branche `codex/async-tooltip-crash-beta093`, Minecraft 26.3.
## Diagnostic
Le rapport fourni concerne Windows, Sanctuary beta.089 et Minecraft 26.3-pre-2.
Pendant la saisie d'un `w`, la recherche créative attend son index asynchrone.
Cet index construit les infobulles sur un worker (`SessionSearchTrees`), puis
`CompanionTooltips` appelle `Font.getSplitter().splitLines`. La mesure d'un glyphe
non encore chargé peut déclencher une écriture de texture, en concurrence avec
une passe de rendu : `Close the existing render pass before performing additional
commands`. L'exception du worker remonte ensuite par la saisie de caractères.
La même mise en page était encore présente en beta.092 ; le correctif cible la
version actuelle 26.3 finale. Il ne nécessite aucun changement de pilote graphique.
## Correction
Les deux chemins de descriptions, catalogue actuel et pouvoirs historiques,
utilisent un même point de mise en page. Sur le fil client, il conserve la largeur
adaptée à la fenêtre et le découpage habituel. Sur un worker, il renvoie des
composants textuels complets avec leur couleur, sans accéder à la police ni à la
fenêtre. La recherche garde les noms et descriptions ; aucune ligne n'est cachée
pour contourner le problème. Aucun travail graphique n'est renvoyé au fil client
avec attente, ce qui éviterait mal le crash et risquerait de bloquer l'indexation.
Aucune modification de sauvegarde, génération, règles de jeu, images ou registres.
Aucun déploiement dans une instance personnelle et aucun monde existant ouvert.
## Vérifications
Le parcours `Tooltip093ClientChecks` utilise un monde plat de développement neuf,
graine 42, et une sonde uniquement dans les GameTests. Cette sonde interdit tout
accès de mesure à la police depuis un worker, même lorsque ses glyphes sont déjà
en cache ; elle n'est pas embarquée dans le mod distribué.
Avant le correctif, le test échoue dans `CompanionTooltips` avec
`TOOLTIP093_OFF_THREAD_FONT`, ce qui reproduit l'accès interdit identifié dans le
rapport sans dépendre d'une course aléatoire du pilote. Journal :
`build/tooltip093-before-client.log`.
Après correction, le même parcours passe en **1 min 13 s** sur le client natif
Minecraft 26.3/macOS :
- 88 œufs, français/anglais, descriptions cryptiques/détaillées : construction
sur worker sans aucune mesure de police.
- Comparaison du texte indexé avec le texte affiché : contenu complet conservé,
malgré les retours à la ligne réservés à l'affichage.
- `SessionSearchTrees.updateCreativeTooltips`, recherche native et reconstruction
de l'index après changement de langue.
- Rechargement effectif des ressources, puis saisie native de `w` et `olf` dans
la recherche créative. Capture anglaise inspectée : le champ contient `wolf`
et affiche l'œuf de loup et son armure. Captures conservées dans
`build/tooltip093-evidence/`.
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryTooltip093ClientTests=true \
-PsanctuaryQuickTests=true -PsanctuaryClientNoVsync=true
```
Journal : `build/tooltip093-client.log`, marqueur `TOOLTIP093_PASS`.
## Livraison vérifiée
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
passe en **2 min 36 s**, 124 tâches (`build/tooltip093-check.log`).
Les exports, JAR et sources correspondent. Seule la classe de production
`CompanionTooltips` diffère de beta.092 ; aucune sonde GameTest n'est distribuée.
Images, données, JEI et anciennes archives restent identiques.
Reçu local : `build/tooltip093-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.093.mrpack), SHA-256
`35a1582c044955579a7120997864ff2080e276e81180ab9982397241ff4c3a1d`.
- [Pack Test](../build/Sanctuary-Test-beta.093.mrpack), SHA-256
`48c9abe733c2993a752413a34852223d35ad33e99d4f7e1d4f284969824dc275`.
## Limites
Le rapport initial est Windows/pre-2 ; les essais du correctif sont macOS/26.3
finale, avec serveur intégré de développement. L'accès fautif est reproduit
avec une sonde déterministe, sans revendiquer la reproduction exacte de la
course du pilote AMD. Serveur dédié exclu et aucune EULA acceptée. Les archives
locales ne mettent pas à jour une installation personnelle ni le canal packwiz.

Some files were not shown because too many files have changed in this diff Show More