Compare commits

..
Author SHA1 Message Date
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
koka e13f3cc1b8 Record Sanctuary sources through beta.060 and Git validation
Build Sanctuary / build (push) Canceled after 0s
2026-09-15 09:29:11 +02:00
koka 1490fb2a80 Record verified alpha.30.7 release, atlas and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 20:35:09 +02:00
koka 9a65e96061 Keep full title margins in installation atlas exports
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 20:30:26 +02:00
koka d5cd895403 Finish alpha.30.7 with natural island treasures, direct rails and dry ruins
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 20:29:32 +02:00
koka 0b7e0c6717 Record alpha.30.6 publication and verified Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 19:07:46 +02:00
koka fbd870a4e3 Add underground village, branched rails and upper terrain for alpha.30.6
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 19:04:57 +02:00
koka 16e480bfd0 Record alpha.30.5 publication, scientific atlas and Prism verification
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 17:02:52 +02:00
koka 7f81bf35a0 Restore native plateaus and archive terrain comparisons for alpha.30.5
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 16:58:14 +02:00
koka e400f1e2c1 Record verified alpha30.4 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 15:58:33 +02:00
koka 2dc70fe905 Refine high plateaus and extend Sanctuary build height for alpha30.4
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 15:56:31 +02:00
koka a49dfa5337 docs: record alpha30.3 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 13:34:14 +02:00
koka 076c9a6c16 feat: balance native plateaus and 3D mountains for alpha30.3
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 13:31:08 +02:00
koka 2a5b4cb51b docs: record alpha30.2 publication and preserved Prism instance
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 12:39:18 +02:00
koka c5381b939a feat(worldgen): irregular ledges and detached-rock filtering in alpha30.2
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 12:37:01 +02:00
koka a20d84811f docs: record verified alpha30.1 publication and Prism sync
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 11:48:38 +02:00
koka cccb89150e fix(worldgen): restore curved rivers and global relief in alpha30.1
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 11:47:00 +02:00
koka 071a8c062d Record verified alpha.30 publication and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 10:38:52 +02:00
koka bf327b75d4 Deliver alpha.30 plateaus, open river banks and underground routes
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 10:36:55 +02:00
koka 8c90c61c53 Checkpoint alpha29 terrain ledges, transit and native mineshaft corrections 2026-09-12 09:44:30 +02:00
koka 9f82577927 docs: record verified alpha28 publication and Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 01:38:21 +02:00
koka 79d3185cba feat(worldgen): add volumetric caves and nearby aerial sites for alpha28
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 01:36:05 +02:00
koka ad234a808f docs: record verified alpha27 publication and Prism update
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 00:37:49 +02:00
koka 392ade0b7e Release alpha27 from alpha24 terrain with cave swamps and restored vanilla ships
Build Sanctuary / build (push) Canceled after 0s
2026-09-12 00:36:17 +02:00
koka e7d1f298b9 docs: record verified alpha.24 release and Prism synchronization
Build Sanctuary / build (push) Canceled after 0s
2026-09-11 18:33:26 +02:00
koka 27d7cba93f feat(worldgen): add persistent aerial Sanctuary sites for alpha.24
Build Sanctuary / build (push) Canceled after 0s
2026-09-11 18:29:38 +02:00
koka fbefb2e6d6 feat: natural Sanctuary secrets and guaranteed expansions for alpha23.1 2026-09-11 15:41:07 +02:00
koka e654d565f6 feat: add native Blocodex and material census for alpha23 2026-09-10 19:28:18 +02:00
1598 changed files with 114408 additions and 7371 deletions
+3
View File
@@ -15,3 +15,6 @@ screenshots/
.env
.env.*
!.env.example
__pycache__/
/archives/web/snapshots/
/ressources-pack/*.zip
+1 -1
View File
@@ -12,7 +12,7 @@ La vision est dans `docs/vision.md` ; elle décrit aussi des fonctionnalités fu
- Garder les identifiants `sanctuary:*` stables et documenter toute évolution de la génération avec graine et version.
- Ajouter les libellés FR/EN des nouvelles interfaces. Vérifier les dépendances pour la version Minecraft exacte ; aucune compatibilité supposée à partir du nom d'un mod.
- Lancer `./gradlew check build` pour livrer du code, et `./gradlew assemblePack` si la distribution change. Ajouter seulement les tests utiles au comportement touché.
- Pour chaque nouvelle livraison du mod, incrémenter `mod_version` et `pack_version` dans `gradle.properties`, synchroniser `packwiz/pack.toml` et documenter le changement. Une simple modification documentaire n'incrémente pas les binaires.
- Pour chaque nouvelle livraison du mod, incrémenter le compteur `beta.xxx` (départ `beta.001`) dans `mod_version` et `pack_version` de `gradle.properties`, synchroniser `packwiz/pack.toml` et documenter le changement. Le tag reprend cette version exacte, sans préfixe `v` ; voir `docs/versioning.md`. Une simple modification documentaire n'incrémente pas les binaires.
- Le pack Beta suit un canal packwiz stable et une seule instance Prism. Pour une mise à jour demandée, suivre `docs/packwiz.md` : publier un artefact vérifié et immuable, avancer le canal, puis synchroniser l'instance existante en conservant ses sauvegardes et réglages.
- Ne pas versionner de secrets, mondes, JAR générés ou dépendances téléchargées. Le wrapper Gradle fait exception.
- Ne pas déployer dans une installation de jeu ou un serveur personnel sans demande correspondante. Les serveurs de test restent dans les dossiers de développement ignorés.
+841
View File
@@ -1,5 +1,846 @@
# Changelog
## 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 l’espè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 l’armure native des mobs et
les gestes Maj + clic droit pour équiper ou récupérer, clic droit pour utiliser.
- Réutilise les sessions natives des blocs portés : stockage public, cuisson,
transformations, sons, état visible et source redstone mobile.
- Conserve l’IA, suit les parties animées des modèles et prend en compte les
bébés, la lumière dynamique et les familiers.
- Sauvegarde les objets équipés, restitue les contenus ordinaires au retrait
ou à la mort et conserve les contenus Shulker dans leur exemplaire.
- Vérifie en client natif les gestes, lampes, menus, sauvegarde/rechargement,
mort, four, distributeur, TNT et modèles ; build et archives locales validés.
- [Contrat et vérifications](docs/mob-head-blocks-beta060.md).
## beta.059 — bannières et cartes au trésor
- Enregistre les bannières par clic droit, avec nom et couleur ; importe aussi
les bannières et points d'intérêt d'une carte Minecraft remplie, dans les deux mains.
- Révèle un trésor après utilisation de sa carte ; inspecte le plan existant
en mode opérateur sans transmettre ses positions aux joueurs non autorisés.
- Adapte les trois tables aériennes au format natif 26.3 (`modifier` / `type`),
afin que les quantités déjà déclarées soient effectivement appliquées.
- Ajoute les cartes des îlots miniers aux tables de butin aériennes existantes,
sans remplir les coffres déjà ouverts ou déplacer les trésors.
- Affiche les sprites de carte vanilla, les noms et les infobulles ; conserve
les plafonds, le brouillard personnel et l'affichage simplifié de beta.058.
- Vérifie les interactions natives, le butin réel, le filtrage opérateur,
la persistance et les deux archives locales ; aucun déploiement personnel.
- [Contrat et vérifications](docs/atlas-markers-beta059.md).
## beta.058 — altitude de la carte
- Ajoute les boutons ↑ / ↓ et les plafonds 0, 140, 280, 420, 560 et 640,
sans déplacer le cadrage ni changer le zoom.
- Enregistre les coupes par habitant avec le brouillard d'exploration existant,
conserve les anciennes données de surface et borne les lectures aux chunks chargés.
- Isole les paquets et les textures de chaque couche ; conserve la grille et
le rendu Demeure mis en cache, désormais désactivés par défaut.
- Retire le cadre et les zones assombries de la carte ; conserve la place du nord.
- [Contrat et vérifications](docs/atlas-altitude-beta058.md).
## beta.057 — météo quotidienne et nouvelles ambiances
- Ajoute les modes météo Real Time et Vanilla, indépendants du mode solaire,
avec commandes opérateur et consultation publique.
- Conserve un profil quotidien lié au fuseau du monde : beau temps, ciel gris,
brouillard, averses alternées, pluie continue ou orage continu.
- Synchronise le gris et le brouillard dans les couches d'environnement natives ;
conserve les précipitations, transitions et effets météo Minecraft.
- Enregistre le profil quotidien avant application ; les reconnexions et
rechargements ne relancent pas le tirage. Proportions configurables.
- Prévoit la Weather TNT dans un prochain ticket.
- [Contrat et vérifications](docs/daily-weather-beta057.md).
## beta.056 — étoiles dispersées et saturation
- Répartit les étoiles principales et bonus sur toute la sphère céleste,
sans amas imposé autour de chaque accomplissement.
- Conserve les identités et les liaisons ; les constellations existantes
suivent une nouvelle disposition, stable lors des ajouts et des reconnexions.
- Fixe la saturation par défaut de Vanilla Light à 142 %, avec conservation
des valeurs déjà enregistrées et aide française/anglaise actualisée.
- [Contrat et vérifications](docs/sky-spacing-beta056.md).
## beta.055 — Force et portage de joueurs
- Réduit le poids ressenti des joueurs d'une pile selon le niveau de Force du
porteur : charge divisée par deux avec Force I, par trois avec Force II.
- Recalcule la pénalité lors des changements et à l'expiration de l'effet ;
conserve le cumul avec Vitesse, le poids des adultes et l'exemption des bébés.
- Vérifie les montures natives, la pile, les effets du passager, le démontage
et la synchronisation de la vitesse avec le client.
- [Contrat et vérifications](docs/strength-carry-beta055.md).
## beta.054 — duels, mises et niveaux des familiers
- Ajoute les profils de combat des 88 familiers, leur santé individuelle,
le K.-O., les ordres compacts sur H et les techniques sur G.
- Permet un duel accepté entre deux joueurs, avec mise facultative d'une pile
chacun, double validation, résultat au K.-O. ou à l'abandon et bilan du combat.
- Conserve les mises dans un journal avec reçus natifs : gains différés si
l'inventaire est plein, restitution après interruption, composants conservés.
- Isole les attaques du duel, exclut les apprentissages et invalide les
projectiles après sa fin. Préserve les blessures et recharges réelles.
- Ajoute le stockage et le retrait exacts d'XP dans l'individu, sans plafond
de niveau : +2,5 % de vie maximale et +1,25 % de dégâts par niveau, rareté
croissante. Interdit les transferts pendant une invitation ou un combat.
- Préserve l'XP par journal et reçu natif, avec migration additive des anciens
individus ; une charge différente ne soigne pas le familier.
- Tests natifs du combat et des transactions FR/EN ; la validation et
la finition de certaines variantes restent à poursuivre.
- [Contrat, migration et vérifications](docs/familiar-combat-beta054.md).
## beta.053 — brume progressive, saturation et accueil
- Fait progresser la brume de Vanilla Light dès le point de vue, en conservant les brumes spéciales et les captures panoramiques techniques natives.
- Ajoute un curseur de saturation de 0 à 200 % dans Options → Shaders, avec application immédiate, préférence locale et libellés FR/EN.
- Aligne à gauche les trois choix de familier de Hello World avec les autres champs.
- Build, parcours client natif FR/EN et archives vérifiés ; aucun changement de sauvegarde ou de génération.
- [Contrat et vérifications](docs/progressive-fog-beta053.md).
## beta.052 — nom du familier de départ
- Ajoute un champ de nom facultatif sous les œufs de Hello World, avec
disposition compacte pour les petites fenêtres et libellés FR/EN.
- Enregistre le nom avec le choix côté serveur et l'applique à l'œuf natif,
au compagnon et à la fiche habitant ; conserve les renommages ultérieurs.
- Migre le registre des offres vers le schéma 2 avec sauvegarde du fichier
original, sans modifier les anciens choix ni remettre de familiers.
- [Contrat, migration et vérifications](docs/starter-name-beta052.md).
## beta.051 — visée du distributeur porté
- Oriente les treize munitions projetées selon le regard du porteur au moment
du lancement, en conservant les paramètres de tir natifs.
- Place l'origine du tir sur la tête réelle et attribue le projectile au
porteur pour éviter un impact immédiat contre lui lors d'un tir vers le bas.
- Préserve les distributeurs posés, les droppers et les objets non projectiles.
- [Contrat et vérifications](docs/head-dispenser-beta051.md).
## beta.050 — bateaux compacts et redstone portée
- Ajoute les formats 1 × 2 et 2 × 1 dans les onze bois : quatre passagers,
places principales d'abord, recettes correspondantes et collection Bateaux.
- Corrige les clics sur les cases des bibliothèques sculptées et étagères,
y compris l'insertion de livres enchantés avec leurs enchantements intacts.
- Affiche le contenu des étagères et le livre du pupitre ; ouvre celui-ci
à main vide et vérifie les échanges de fleurs des pots via le curseur.
- Affiche les deux moitiés de tous les lits, y compris celui de paille, et
désactive entièrement le sommeil dans les lits portés.
- Pose boutons et leviers sur la couronne, dégagés de la couche du skin.
- Alimente les circuits réels proches avec torche de redstone, levier ou
bouton portés. Le signal suit la tête et disparaît avec la source.
- Conserve les anciens identifiants, sauvegardes et données de génération.
- [Contrat et vérifications](docs/head-blocks-beta050.md).
## beta.049 — bateaux rectangulaires et blocs portés
- Ajoute 44 variantes 3 × 1, 1 × 3, 2 × 3 et 3 × 2 avec recettes natives
de même bois, modèles par tuiles et plans dans la collection Bateaux.
- Double les places par module, principales avant secondaires ; conserve
les moteurs, commandes collectives et l'équilibre
des anciens carrés ; les nouvelles collisions suivent le rectangle tourné.
- Corrige l'exclusion sonore du joueur qui actionne une trappe portée.
- Synchronise les aliments visibles et les événements de rendu, avec modèles
natifs pour les coffres, Shulkers, cloches, feux de camp et bateaux portés.
- Oriente les façades et les têtes vers l'avant du personnage.
- Ajoute dix ticks de signal au bloc porté après un coup ; les pistons
s'étendent localement sans déplacer le terrain.
- Aucun changement de format de sauvegarde ni de génération.
## beta.048
- Ajoute les bateaux 2 × 2 et 3 × 3 dans les onze bois natifs, fabriqués avec
quatre ou neuf bateaux identiques ; recettes dans Bateaux et radeaux.
- Partage les commandes entre les joueurs directement assis ; les personnes
portées alourdissent leur bateau. Maj + clic droit permet les piles sur les pilotes.
- Différencie poule, chauve-souris, perroquet, abeille, Blaze, Allay et Breeze ; un clic
sur le bateau embarque un animal porté, y compris les chauves-souris.
- Préserve le vol du bateau simple à une poule, double séparément le Happy Ghast.
- Isole les collisions par pile : raccrochage des petites piles si libre, chute
du porteur touché avec son groupe à partir de quatre personnes.
- Construit les modèles par tuiles de fond natives, avec rebords extérieurs
uniquement et deux rames, sans étirer les textures.
- [Contrat et vérifications](docs/poultry-aeronautics-beta048.md).
## beta.047
- Affiche le nom, l'origine historique, la date et les constellations de l'étoile
observée à la longue-vue, avec libellés FR/EN et pagination à la molette.
- Réserve le clic droit à l'observation ; Maj + clic droit retire le dernier
trait, sans toucher aux souvenirs ni aux règles de paiement.
- Met en cache les positions et les appartenances ; consultation serveur seule,
sans migration des journaux ou modification de génération.
- Affiche le texte des boutons actifs en jaune vif au survol.
- [Contrat et vérifications](docs/spyglass-stars-beta047.md).
## beta.046
- Affiche les dix icônes d’aptitudes fournies, identiques dans le mod et le resource pack.
- Donne deux places aux nouvelles factions pour dix niveaux : fondateur et invité.
- Ajoute les constellations dessinées à la souris, longue-vue en main ; trois
niveaux par liaison, couleur stable de l’étoile mère, annulation sans remboursement.
- Permet de voler en bateau avec une poule : Espace monte, relâcher descend.
- Ajoute l’aptitude Zoom : C maintenu et molette, de 5° à Quake Pro.
- Applique le nom et l’icône Sanctuary à la fenêtre et aux métadonnées de l’application.
- [Factions et migration](docs/faction-two-slots-beta046.md) ·
[Ciel, bateau, zoom et application](docs/sky-flight-zoom-beta046.md).
## beta.045
- Affiche la version de Sanctuary en haut à gauche du menu principal.
- Remplace Realms par Friends / Amis en bouton normal sous Multiplayer.
- Retire les icônes compactes Friends, Language et Accessibility ; remonte
Options et Quit pour conserver un espacement régulier.
- Conserve le parcours natif de la liste d’amis et les restrictions du compte.
- [Contrat et vérifications](docs/title-menu-beta045.md).
## beta.044
- Icône officielle finale, bleu en haut, identique dans le mod et l'instance.
- Commandes LAN : /sanctuary intro ne bloque plus les sous-commandes serveur ;
/sanctuary time vanilla passe depuis le chat. Contrôles opérateur conservés.
- Audit positif des 88 œufs et catalogue FR/EN actualisé.
- Slime : bloc réel sous le joueur, physique native, expiration après 100 ticks.
- Explosions et projectiles natifs : Creeper, Blaze, Ghast, Wither, Dragon,
Breeze, Shulker, Lama et Golem de neige ; crocs réels et onde sonique murale.
- Poison/Wither/Faiblesse/Lenteur natifs sur les coups et flèches concernés.
- Golem de cuivre : destination visible reconnue ; Vex : minage indépendant
de Building ; secours du Piglin zombifié sans or en l'absence de cible.
- Contrat et limites : docs/spawn-eggs-audit-beta044.md.
## beta.043
- Adapte les blocs portés aux interactions et menus natifs ; stockage public,
traitements, retrait sans perte, exceptions Shulker et EnderChest.
- Conserve les traitements et délais natifs dans une sauvegarde additive.
- Intègre l’icône officielle finale au mod, au MRpack et au modèle Prism.
- Build et 41 tests serveur réussis ; parcours graphique supplémentaire non validé.
- [Contrat et limites](docs/functional-head-blocks-beta043.md).
## beta.042
- Place le bassin des joueurs portés sur la tête du porteur, au lieu d'y placer
leurs pieds ; adapte les piles et contrôles de plafond aux nouvelles positions.
- Prend en compte l'échelle de chaque joueur et l'accroupissement du porteur ;
conserve une pose assise pour le passager qui maintient Maj.
- Vérifie l'activation tardive des commandes pour l'hôte d'un LAN via l'interface
native, l'exécution réelle d'une commande d'XP et sa révocation. Le signalement
de commandes inutilisables n'est pas reproduit ; le diagnostic reste ouvert.
- [Contrat et vérifications](docs/lan-carry-beta042.md).
## beta.041
- Exempte les bébés mobs du ralentissement de portage, y compris les familiers
affichés en bébé ; un adulte miniature conserve son poids.
- Recalcule le poids après croissance et dans les piles de joueurs, sans
changer les autres modificateurs de vitesse ou les données sauvegardées.
- [Contrat et vérifications](docs/carry-babies-beta041.md).
## beta.040
- Corrige le crash du Hello World lors d'une connexion multijoueur à froid : les
cases de familiers utilisent leurs textures natives avant l'initialisation
des composants d'items.
- Masque les icônes vides de l’armure du HUD ; conserve les pleines et les demies.
- Lie les inspections et contrôles opérateur à Allow Commands en partie intégrée,
avec masquage et révocation côté serveur ; conserve les droits op sur serveur dédié.
- Présente personnage et familier sur la fiche Habitant, avec un cadrage adapté
à la largeur et le nom personnalisé du compagnon.
- Remplace les étoiles natives par la mémoire partagée des arrivées,
advancements, prestiges et premières factions de deux habitants ; conserve
leurs étoiles après dissolution et refuse les doublons d'un même duo.
- Ajoute une rotation stellaire de sept jours réels et un maillage conservé entre
les images. Contrat additif : `docs/operator-inhabitant-stars-beta040.md`.
- Conserve la passe native des étoiles pour préparer les moteurs de shaders et
ajoute Vanilla Light, un traitement de couleurs léger désactivable dans les
options. Iris pour 26.3-pre-2 reste indisponible et n'est pas embarqué.
- Conserve les catalogues de recettes supérieurs à 64 Ko en fragments NBT,
avec lecture des anciennes chaînes : `docs/recipe-storage-beta040.md`.
## beta.039 — Hello World, connaissance alimentaire et inventaires de mort
- Ajoute trois cases de familiers sous les couleurs du Hello World, avec descriptions au survol et choix enregistrés avant affichage : trois communs, avec 10 % de chance d’un peu commun. Reprise après coupure, choix définitif et remise unique de l’œuf équipé.
- Ajoute Connaissance alimentaire à quatre niveaux : dégustation requise sinon pour révéler nutrition et saturation ; mémoire serveur conservée à la mort et au prestige.
- Place l’épuisement sous les sprites natifs de la barre de faim.
- Ajoute le mode de capture panoramique : six faces à 90°, profondeur native float32 et PNG, masque de brume reconstitué et métadonnées ; corrige la sélection du buffer OpenGL entre lectures de profondeur et de couleur.
- Nomme les nouvelles têtes avec le pseudo et le numéro de mort ; conserve le profil dans leur rendu cosmétique.
- Mémorise la disposition au décès et ouvre les nouveaux inventaires de mort à gauche de l’inventaire actuel, avec retrait uniquement, en conservant le rendu normal de l’inventaire actuel et toutes les textures existantes. Les anciennes têtes gardent leur lecture historique.
- Build, 68 tests serveur et parcours client natif réussis ; 173 textures conservées.
- [Contrats de données et validation](docs/food-panorama-beta039.md) · [Disposition des tombes](docs/grave-inventory-beta039.md) · [Hello World](docs/hello-starter-beta039.md).
## beta.038 — informations alimentaires, têtes-tombes et factions
- Intègre les indications d’AppleSkin à la faim évolutive : icônes de nourriture et de saturation en infobulle, surplus non absorbé grisé, saturation, épuisement et aperçu de la nourriture tenue, avec données serveur privées.
- Ajoute quatre préférences locales dans Options et un guide de remplacement des textures, sans modifier la respiration vanilla.
- Réunit le butin de mort dans la tête du défunt : inventaire étendu, équipement, accessoires et objets manipulés ; pillage libre, récupération sur deux pages et tête transportable.
- Conserve la règle d’XP, `keepInventory` et la malédiction de disparition ; cherche un sol proche sûr et protège la tête lâchée de la lave, des dégâts, du vide et du despawn.
- Grise toutes les cases de tombe, refuse les dépôts et conserve sur la tête le nom, la date, la cause native et les coordonnées originales du décès.
- Autorise la fondation sans prestige pour 10 niveaux : une seule place, détenue par le fondateur, puis des places financées par les charges de prestige. Reprise des anciennes factions et débit d’XP récupérable sans double paiement.
- Build, 55 tests serveur, 14 784 comparaisons alimentaires et parcours client natif réussis ; deux MRpacks locaux vérifiés.
- [Contrat de sauvegarde et validation](docs/graves-food-beta038.md).
## beta.037 — temps réel et suivi commun
- Pilote le ciel depuis l’heure réelle : fuseau automatique en solo, fuseau/référence configurables sur serveur, saisons et heure d’été sans géolocalisation.
- Garde les ticks de simulation normaux, empêche le saut de nuit et les apparitions naturelles de phantoms liées à l’insomnie en temps réel.
- Ajoute les commandes de consultation, retour vanilla, réactivation et rechargement ; conserve la vitesse native dans les sauvegardes pour le retour sans mod.
- Centralise instantanés, notifications, expiration et épingles des objectifs ; les advancements utilisent ce moteur, prêt pour les futures quêtes.
- Corrige le rendu sans F3, qui pouvait sortir avant l’affichage des notifications.
- Build, 29 tests serveur et deux parcours client natifs réussis ; 7 765 assertions solaires/suivi et deux MRpacks vérifiés.
- [Contrat de migration, réglages et validation](docs/realtime-beta037.md).
## beta.036 — notifications, objectifs épinglés et recettes consultables
- Place les notifications en haut à droite par défaut ; ajoute neuf positions et l’évitement des colonnes F3, toasts, boss et hotbar.
- Fait expirer les progrès automatiques, notamment A Balanced Diet ; nettoie le fil temporaire à la mort et au respawn.
- Un clic sur un advancement visible épingle son suivi, un autre le retire ; trois choix maximum, conservés par compte et monde/serveur, retirés à la réussite.
- Fait planer avec un animal volant porté, efface la chute accumulée pendant le plané et réduit la visibilité native des joueurs allongés au sol.
- Rend recherchables dans JEI les sorties des recettes connues, sans ajouter de possession ni révéler toutes les matières premières.
- Garde quêtes et temps réel pour leurs prochains tickets.
- Build, 36 tests serveur et deux parcours client natifs réussis ; deux MRpacks vérifiés et anciennes livraisons conservées.
- [Contrat, compatibilité et validation](docs/corrections-beta036.md).
## beta.035 — collections et recettes Minecraft
- Intègre les 2 042 recettes classées dans les 67 collections documentées, avec les 126 advancements et leurs amorces de découverte.
- Enseigne les familles complètes sans demander leurs ingrédients ; conserve le catalogue à 4 niveaux et la fabrication manuelle libre.
- Préserve les collections bois/alchimie, leurs accès historiques et les connaissances des habitants sans modifier le schéma de sauvegarde.
- Indexe les déclencheurs au chargement ; enseigne les recettes d’une collection une seule fois par carnet et révision de données.
- Affiche les collections connues en FR/EN et annonce leurs déblocages dans le fil de découvertes. Garde l’ouverture du catalogue en haut de sa page.
- Relie chaque fiche documentaire à son JSON serveur ; ajoute le contrôle de concordance du catalogue au build.
- Build, 28 tests serveur (dont les 126 advancements), parcours client natif et deux MRpacks vérifiés ; collections conservées après prestige, mort et redémarrage.
- [Contrat, reprise et validation](docs/collections-beta035.md).
## beta.034 — découvertes et lisibilité de l’inventaire
- Ajoute un fil de premières découvertes en style F3, sans ouvrir le débogage : blocs vus ou possédés, objets et recettes apprises.
- Borne la file, regroupe les recettes, efface les messages et affiche les barres natives de collections ; ne rejoue pas les anciennes acquisitions.
- Options locales persistantes pour le fil, les barres, la durée et le suivi des deux advancements visibles avancés le plus récemment.
- Inclut les objets au sol visibles à huit blocs, sans voir à travers les murs ni simuler de possession.
- Retire Factions et History du menu pause ; accès conservés par Progression → Prestige.
- Restaure la hotbar personnelle en 182×22, cases espacées de 20 pixels et objets de 18×18, avec des zones de clic cohérentes.
- Build, 22 tests serveur, parcours client natif et exports normal/test rapide vérifiés.
- [Contrat et validation](docs/notifications-beta034.md).
## beta.033 — navigation directe et test rapide
- Ajoute Discovery, Progression, World, Inhabitant, Factions et History dans le menu pause ; retire les boutons de signalement, commentaires et amis.
- Libère les en-têtes des pages, ouvre World sur la carte et renomme l’accès au cycle en Prestige.
- Discovery démarre sur Owned ; Catalogue à quatre niveaux révèle All Blocks parmi les découvertes réelles. Le serveur filtre aussi les entrées transmises.
- Retire les outils opérateur de Discovery, masque la configuration JEI et simplifie les libellés favoris/historique FR/EN.
- Corrige la hauteur de la flamme du gâteau porté.
- Ajoute un module facultatif Sanctuary Test : nouveau preset plat, admission réelle et cinématique automatiquement passée. Pack normal sans ce module.
- Build, 34 tests serveur, parcours client natifs et deux MRpacks vérifiés ; History final testé en jeu.
- [Menus et droits](docs/menus-discovery-beta033.md) · [profil de test](docs/test-rapide-beta033.md).
## beta.032 — refonte des pouvoirs des 88 familiers
- Chiffre et implémente les 88 passifs/actifs, recharges réduites et descriptions FR/EN.
- Ajoute les zones partagées, brumes poussées par le vent, interpositions et déplacements consentis avec Maj.
- Conserve les doses natives des potions, les vrais outils, graines, munitions et stocks ; hotbar protégée lors du rangement.
- Budgets persistants par bénéficiaire : soin, air, garde et enveloppe de déplacement ; contrôle dur limité et résistant aux répétitions.
- Aperçus de visée avec coûts/refus pour les joueurs ayant étudié les familiers et les opérateurs ; G agit une fois par pression.
- Migration additive documentée, anciens achats, noms, tailles et configurations personnalisées conservés ; client et serveur beta.032 requis ensemble.
- Build, 85 tests serveur, parcours client natif et export local vérifiés. Équilibrage en partie, rangs et Anomaly restent à poursuivre.
- [Catalogue des valeurs](docs/spawn-eggs-v2-catalogue-beta032.md) et [contrat de livraison](docs/spawn-eggs-v2-beta032.md).
## beta.031 — apparition galactique
- Cinématique de 29,5 s entre validation de la fiche et admission : UUID serveur
en 32 glyphes SGA successifs, profondeur, rémanences, spirale vers le centre et flash blanc sur le spawn.
- Première arrivée gardée en configuration jusqu'à la fin ; reprise après une
interruption, sans répéter l'introduction des habitants déjà arrivés.
- Échap pour passer, `/sanctuary intro` pour revoir, libellés FR/EN ; mixage
Ambiance et nettoyage des sons. Aucun changement de sauvegarde ou de terrain.
- Vérifications et export : [INTRO-01](docs/introduction-beta031.md).
## beta.030 — éclairage dynamique
- Mains principale/secondaire, cosmétiques de tête, autres joueurs et objets jetés éclairent le décor.
- Intensités natives des blocs et états allumés/éteints, dont les bougies sur gâteau ; lumière du ciel préservée.
- Une source par cellule de 4 blocs pour les objets jetés, sans multiplication par quantité.
- Instantanés de rendu, index spatial, sources proches plafonnées et sections mises à jour par budget.
- Réglages client et raccourci configurable FR/EN ; aucun bloc artificiel ni changement de sauvegarde.
- Build, 21 tests serveur, parcours client natif et MRpack local vérifiés.
- [Contrat et vérifications](docs/dynamic-lights-beta030.md).
## beta.029 — cri et recul des familiers
- Ajoute le cri natif de l’espèce, la voix bébé et les variantes terrestres/aquatiques.
- Ajoute un recul physique de 0,4 et une courte pause des déplacements autonomes.
- Conserve le délai entre réactions, les collisions, le suivi, l’invulnérabilité et les protections du portage.
- Build, 38 tests serveur et MRpack local vérifiés ; écoute et essai visuel à confirmer.
- [Contrat et vérifications](docs/familiar-hit-feedback-beta029.md).
## beta.028 — plongeon jusqu’à collision
- Retire la fin automatique du plongeon après 30 ticks.
- Termine la posture sur le sol, un mur, un plafond ou l’entrée dans un fluide.
- Ignore les nouvelles demandes de posture pendant le plongeon, côté client et serveur.
- Conserve une impulsion par saut, les dégâts de chute et les interruptions de sécurité.
- Build, 32 tests serveur et MRpack local vérifiés ; essai visuel à confirmer.
- [Contrat et vérifications](docs/dive-until-collision-beta028.md).
## beta.027 — piles de joueurs
- Permet de monter sur un joueur déjà porté et de déplacer une pile sur un nouveau porteur.
- Compte tous les passagers au-dessus pour le ralentissement : facteur 0,75 par passager, plancher 0,25.
- Refuse les coups entre tous les membres, les cycles et les plafonds trop bas pour le groupe.
- Dépose du groupe supérieur et nettoyage des liens à la mort ou au déchargement.
- Build, 27 tests serveur et MRpack local vérifiés ; essai visuel en attente.
- [Contrat et vérifications](docs/player-stacks-beta027.md).
## beta.026 — cache d’affichage Demeure
- Remplace les rectangles par bloc et par image par une couche de texture alignée sur le terrain.
- Repeint seulement les empreintes ou pixels connus modifiés ; réutilise les lots réseau identiques.
- Préserve les contours, couleurs, pixels inconnus et transparence du vide ; retire les empreintes absentes du lot suivant.
- Reprojection lors du changement de fenêtre, nettoyage des données à la révocation et libération de la texture à la fermeture.
- Demeure activé par défaut ; règles serveur, génération et sauvegardes inchangées.
- Build et 9 tests serveur réussis ; test graphique compilé, exécution bloquée par la session Mac verrouillée.
- [Diagnostic et vérifications](docs/demeure-map-performance-beta026.md).
## beta.025 — barres d’XP des compétences
- Remplace les jauges ASCII et la colonne Max/prix par les sprites de la barre d’expérience native.
- Prix du prochain palier centré, nombre vert et contour noir ; remplissage initial visible et barre complète au plafond.
- Largeur adaptée au GUI, icônes et boutons conservés, explications au survol FR/EN.
- Prix, remboursements opérateur et six rangées d’inventaire inchangés.
- 24 tests serveur, parcours client FR/EN et export MRpack local vérifiés.
- [Contrat et vérifications](docs/skill-xp-bars-beta025.md).
## beta.024 — JEI, carnet et collections de recettes
- Port source MIT de JEI 26.2 vers Minecraft 26.3-pre-2 ; fork et dépendances embarqués avec leurs notices.
- Catalogue à 4 niveaux, découvertes conservées avant achat, filtrage personnel des objets et recettes.
- Récompenses natives d’advancements et collections du bois/de l’alchimie configurables par datapack.
- Fabrication manuelle libre ; plans consultables avant la découverte de leur poste de travail.
- Vue opérateur explicite, révocation des droits et retrait des recettes cachées jusque dans les favoris.
- Transfert JEI depuis les six rangées débloquées ; cases de récupération exclues.
- Carnet indépendant conservé au prestige, à la mort et au redémarrage, FR/EN.
- Conserve le retrait du bouton Cosmetic et l’optimisation du terrain, vérifiée bit à bit.
- 123 tests serveur et parcours client natif réussis ; export MRpack local vérifié.
- [Contrat et limites](docs/recipes-jei-beta024.md).
## beta.023 — interactions sur la case cosmétique
- Intègre le correctif de chargement beta.022, sans modifier les valeurs du terrain.
- Retrait du grand bouton Cosmetic ; clic droit sur la case avec l’objet au curseur, clic gauche et Maj-clic conservés.
- Bougie/gâteau/statue manipulables depuis l’inventaire ; coûts et restitution au curseur contrôlés côté serveur.
- Infobulles FR/EN pour les huit cases d’équipement, vides ou occupées.
- Panneaux écrits par autrui, motifs de bannières, lits/portes complets, minecarts et blocs enveloppant la tête.
- TNT amorcée par les dégâts, mèche native et explosion réelle qui continue après retrait du cosmétique.
- [Contrat, stockage et vérifications](docs/head-cosmetics-beta021.md).
- 117 tests serveur, parcours client et 588 288 comparaisons de densité réussis ; MRpack local vérifié.
## beta.022 — création de monde plus rapide
- Évite les bruits dont l’influence est exactement nulle et les calculs du champ
de base au-dessus de son extinction certaine, sans retirer les corps flottants.
- Même génération, mêmes identifiants et formats de sauvegarde. Comparaisons
bit à bit et mesures décrites dans [STARTUP-01](docs/initial-loading.md).
- Correctif local sur `codex/initial-loading`, non publié et non installé dans Prism.
## beta.020 — 2026-09-13, familiers singuliers et interactions
- Portage natif par Maj + clic droit : animaux sur la tête, joueur sur joueur, ralentissement du porteur et protection mutuelle contre les coups.
- Dépose avec la main vide, synchronisation du porteur, fin du portage à la déconnexion/mort/dimension et sauvegarde indépendante des animaux.
- Gestes de portage séparés du raccourci double-Maj pour s’asseoir.
- Familiers bébés lorsque possible, caresses avec cœurs seulement, coup visuel sans dégâts, nom conservé dans l’œuf via enclume/étiquette.
- Taille aléatoire enregistrée dans chaque œuf au premier équipement, de ×0,12 à ×6 ; tailles extrêmes rares, données conservées aux transferts et sauvegardes, rendu et noms adaptés.
- Cinq couleurs de rareté et noms cryptiques du passif/actif ; Étude des familiers à quatre niveaux pour révéler les détails dans les infobulles FR/EN.
- Réglages et carnet déplacés dans Habitant, aides alliées acceptées par défaut, choix historiques conservés ; utilisation du pouvoir par G configurable.
- Plongeon gratuit après un saut en sprint, avec la touche S’allonger, une impulsion par saut et rendu horizontal immédiat.
- Détections derrière les parois et téléportations à travers les murs vers un emplacement libre, dans leur portée.
- Freinage de chute : distance accumulée remise à zéro pendant le ralentissement, dégâts natifs pour une nouvelle chute non protégée.
- Contrôles purs, 104 tests serveur, parcours clavier/souris et rendu des 88 modèles à trois tailles vérifiés ; export beta.020 local immuable, PNG et beta.019 conservés.
## beta.019 — 2026-09-13, pouvoirs et locomotion des familiers
- 88 passifs et 88 actifs avec cinq raretés, Lien actif à quatre niveaux et touche G configurable.
- État indépendant persistant, recharge commune, récupération des bénéficiaires, consentement révocable et panneau FR/EN.
- Dégâts plafonnés, ressources réelles, échanges natifs, cycles de production attribués et actions interrompues au changement de lien.
- Vol orbital du Dragon, vol des Withers/Ghasts, nage, déplacements terrestres et sauts adaptés ; invincibilité et absence de collision d’entités conservées.
- Éclairage des modèles à la position réelle du familier ; animations natives pilotées sans IA hostile.
- Fondu de proximité des familiers volants entre 0,6 et 3,5 blocs, corps et yeux compris ; monstres du monde inchangés.
- Rangs I–III, Anomaly et obtention des œufs reportés ; équilibrage à poursuivre.
- Contrôles purs, 91 tests serveur, parcours client et export local vérifiés. [Détails](docs/companion-powers-beta019.md).
## beta.018 — 2026-09-13, équipement cosmétique et familiers
- Trois cases d’équipement personnel, icônes 16 × 16 du créateur dans le mod et le resource pack.
- Titre Inventaire sans suffixe de rangées ; Maj-clic pour équiper/retirer œufs et capes.
- Ordre visuel des emplacements : cosmétique, cape, œuf, main secondaire ; cosmétique équipé manuellement.
- Maj + clic gauche maintenus transfèrent successivement les cases parcourues, y compris lors d’un mouvement rapide, selon les règles du conteneur.
- Tab change la rangée de hotbar en jeu comme dans l’inventaire ; Maj inverse le sens. Touche configurable, cases et colonne sélectionnée conservées.
- Minage et construction groupés verrouillés au premier clic : tourner la caméra ne change plus la sélection, ne réinitialise plus la charge et n’interrompt plus les poses.
- Taille et orientation des poses figées pendant le maintien ; nouveau groupe après relâchement. Portée, droits, outils et matériaux toujours contrôlés côté serveur.
- Familier temporaire avec navigation, promenade, retour sûr, invincibilité et absence de collisions d’entités.
- Caresse par clic droit du propriétaire : particules de son œuf et cœurs, sans pouvoirs passifs/actifs.
- Cape Zéro de test avec rendu et physique de cape natifs ; visuel provisoire attribué dans les notices.
- Tout objet/bloc accepté sur la tête à titre cosmétique ; états de blocs et piston réagissant aux dégâts en rendu uniquement.
- Stockage joueur additif `sanctuary:accessories` schéma 1, contrat de migration documenté ; mort native, conservation au prestige.
- S’allonger gratuit avec W, retiré des aptitudes achetables ; Se reposer reste achetable et utilise la pose de sommeil des lits.
- Preuves d’achat historiques de S’allonger conservées ; récupération vie/faim et temps inchangés.
- Client et serveur beta.018 ensemble ; nouveau contrat réseau pour les cases d’équipement.
- `check build assemblePack`, contrôles purs, 67 tests serveur et parcours client natif validés ; MRpack local vérifié, exports antérieurs inchangés.
## beta.017 — 2026-09-13, aptitudes de mouvement et retrait du livre natif
- Aptitudes Nage, S’allonger et Se reposer : 4 niveaux chacune, prix configurables.
- Nage rapide verrouillée avant achat ; déplacement lent et remontée conservés.
- W bascule la posture basse, Maj + W le repos ; touche configurable, V laissé libre.
- Repos immobile : un demi-cœur toutes les 10 secondes pour une demi-barre de faim ;
mouvement et dégâts interrompent la séance, sans changer l’heure.
- Progression 8 → 9 et configuration 4 → 5 selon le [contrat](docs/swimming-recipebook-beta017.md) ;
achats antérieurs conservés et nouvelles aptitudes persistantes après prestige.
- Bouton, panneau, fantômes et invitation à consulter le livre de recettes natif retirés ;
fabrication, recettes serveur, statistiques et advancements conservés.
- Prix du prochain rang à côté de chaque jauge de compétence, à la place du ratio ;
`Max.` lorsque le dernier rang est atteint.
- Son vanilla de ramassage d'XP pour chaque récompense des Premiers pas, une seule
fois par étape ; le défaut W tient compte de la disposition AZERTY/QWERTY.
- JEI lié aux advancements reste à intégrer. XP du tutoriel et textures beta.016 incluses.
- `check build assemblePack`, 62 tests serveur puis 15 tests finaux ciblés et parcours
client natif validés ; MRpack beta.017 local vérifié, exports antérieurs inchangés.
## beta.016 — 2026-09-13, XP des premiers pas
- Cinq actions du tutoriel natif donnent chacune 8 points d’XP par défaut :
déplacement/vue, arbre, première bûche minée, inventaire et planches fabriquées.
- Récompenses personnelles uniques, message FR/EN et montant configurable
dans `config/sanctuary/tutorial.json` ; créatif et spectateur exclus.
- Attachement `sanctuary:tutorial` conservé avec les XP dans les données joueur,
après la mort et le New Game+. Les anciens habitants peuvent réaliser les
gestes une fois ; aucun paiement des statistiques historiques.
- [Contrat de migration additive](docs/tutorial-xp-beta016.md) et capacité
réseau beta.016 commune au client et au serveur. Icônes beta.015 conservées.
- 57 tests serveur, contrôles purs et parcours client natif validés ; MRpack local vérifié.
## beta.015 — 2026-09-13, nouvelles textures de progression
- Remplacement des six icônes de compétences par les nouveaux PNG 9 × 9 du
créateur, sans retouche ni changement des chemins utilisés par le Blocodex.
- Copies identiques préparées dans les sources du resource pack Sanctuary.
Correspondances `food → hunger` et `breath → breathing` documentées dans
[le ticket](docs/progression-textures-beta015.md).
- Build, six tests serveur de progression et export local validés. Bytecode
identique à beta.014 ; sprites du HUD de respiration et de faim vanilla conservés.
## beta.014 — 2026-09-13, rangement, hotbar mobile et noms de faction
- Aptitude Rangement dans le Blocodex, 4 niveaux par défaut et prix
configurable.
- Clic molette configurable : piles regroupées et stockage débloqué trié ; la
hotbar ne participe que lorsqu'elle est visée. Les composants d'objets restent
distincts, les cases de récupération et le conteneur ouvert sont préservés.
- Tri validé et appliqué côté serveur, sans objets fournis par le client.
- Tab/Maj+Tab et la molette déplacent le cadre de la hotbar parmi les rangées,
en gardant chaque objet dans sa case visible. Le tri exclut la rangée active
sauf si elle est visée. La sélection est sauvegardée avec les objets ; revenir
à une rangée après New Game+ conserve les autres objets en récupération.
- Nom de faction en préfixe du pseudo, coloré, avec prestige romain conservé :
fiche Habitant, noms affichés, chat et liste Tab. Mise à jour après adhésion,
départ ou dissolution, y compris quand la fiche est déjà ouverte.
- Descriptions FR/EN des aptitudes sans rappel individuel de leur conservation
après New Game+ ; la règle générale reste dans le bilan du cycle.
- Progression 7 → 8 et configuration 3 → 4 selon le
[contrat préalable](docs/inventory-sorting-beta014.md) ; nouvelle capacité
réseau de rangement, mise à jour du client et du serveur ensemble.
- `check build assemblePack`, 56 tests natifs serveur et parcours client FR/EN
validés. Export local beta.014 vérifié ; les MRpacks beta.003–013 sont inchangés.
## beta.013 — 2026-09-13, Progression, prestige et repères visuels
- Icône, nom, jauge ASCII, valeur/plafond et boutons réunis sur une ligne par
compétence, avec colonnes adaptées au GUI et noms défilants si nécessaire.
- Courbe par défaut 1, 2, 4, 8, 16, 32, 48 niveaux. Configuration au schéma 3 :
reprise de l'ancienne courbe par défaut, conservation des prix personnalisés.
Les anciens achats gardent leur montant de remboursement exact.
- La page Factions explique les charges gagnées au New Game+ et le recrutement
sans prestige ; un bouton mène au bilan des six compétences dans Cycle.
- Prestige en chiffres romains après le nom sur la fiche Habitant, sans renommer
l'identité. Les 45 cases de récupération restent grisées après un passage 6 → 1,
y compris les cases vides des rangées supplémentaires et les vues de coffre.
- La carte actualise les relevés sans effacer son image à chaque flux réseau ;
les déplacements réutilisent les zones reçues, dans un cache temporaire borné.
- Sprite de locator natif sur la carte ; couleurs d'habitants attribuées aux
waypoints côté serveur. Les marqueurs se superposent à la barre d’XP,
dont le fond et le remplissage restent visibles. Les règles de visibilité restent natives.
- Molette selon la zone survolée : case de hotbar, rangée d’inventaire ou
échanges de villageois ; rotations confirmées par le serveur.
- `check build assemblePack`, 50 tests natifs serveur et parcours graphique
FR/EN validés. MRpack local vérifié, avec ses ressources et versions internes.
- [Contrat et vérifications](docs/progression-inline-beta013.md).
## beta.012 — 2026-09-13, Inventaire et contrôles de progression
- Fond des coffres, machines et zones de clic alignés avec les cases à chaque GUI.
- Stockage dans l'ordre naturel ; barre rapide en bas et rotation Tab / Maj+Tab,
configurable, validée par le serveur et limitée aux rangées débloquées.
- Maj-clic fusionne les piles de toutes les rangées avant d'occuper une case vide.
Les rangées supplémentaires suivent les règles natives de chaque machine ;
un coffre plein ne provoque plus de déplacement interne au joueur.
- Six jauges de compétence avec valeur/plafond, + selon l'XP disponible et −
opérateur avec remboursement du coût réellement payé pour le rang retiré.
- Progression au schéma 7 : audit des retraits et révision monotone, reprise des
schémas précédents, objets conservés en récupération après réduction de capacité.
Contrat préalable : `docs/inventory-flow-beta012.md`.
- Nouvelle capacité réseau ; client et serveur beta.012 doivent être associés.
`check build assemblePack` et 49 tests natifs passent ; parcours graphique
vérifié avec coffres remplis, touches Tab/E et remboursement opérateur.
MRpack local et reçus de vérification consignés dans le ticket.
## beta.011 — 2026-09-13, Factions et New Game+
- Bilan des six compétences et confirmation du New Game+ dans le Blocodex.
- Un prestige par cycle terminé ; charges personnelles et prix de fondation /
agrandissement configurables, enregistrés une seule fois côté serveur.
- Factions persistantes, invitations de sept jours, capacité, responsable et
membres, transmission, exclusion, départ et dissolution sans remboursement.
- Migration additive des achats vers le schéma 6 ; aptitudes, objets et données
communautaires conservés, six rangs remis à zéro, XP configurable.
- Journal atomique commun aux cycles et aux dépenses de faction, historique
daté, archivage des achats et reprise du passage après interruption.
- Interfaces natives FR/EN défilantes ; aucun claim ni droit opérateur accordé.
Voir [contrat et vérifications](docs/cycle-factions-beta011.md).
## beta.010 — Inventaire extensible
- Compétence Inventaire : cinq achats, de neuf à 54 cases, barre rapide incluse.
- Migration progression 4 → 5 avec rang Inventaire nul et historique préservé.
- Conservation des anciennes cases remplies en retrait uniquement ; les 18
nouvelles cases sont enregistrées avec le joueur et suivent `keepInventory`.
- Portage des six fonds personnels et des fonds de conteneurs 26.2, adaptation
aux menus natifs, défilement des rangées sur les petits écrans et accès à
l'inventaire personnel depuis le catalogue créatif.
- Collecte, déplacements rapides, glisser-déposer et livre de recettes suivent
les capacités serveur. Les indices des machines et de l'équipement restent
inchangés. Voir `docs/inventory-beta010.md` pour les preuves et limites.
## beta.009 — 2026-09-13, Construction et vein building
- Construction devient une compétence achetable : sept rangs, surfaces de
3×3 à 15×15, coûts identiques aux autres compétences et rangs conservés à la mort.
- Aperçu vert, R + clic droit maintenus, R + molette pour le diamètre. La touche
configurable est partagée avec Minage ; une surface reste figée pendant le geste.
- Placement Minecraft côté serveur, stock réellement consommé, surfaces orientées,
dalles et escaliers natifs, refus de collision/protection et interruptions.
Les contenants de support ne sont pas ouverts. Les objets à pose multiple
(portes, lits, plantes doubles), échafaudages et nénuphars restent en pose individuelle.
- Migration stricte de progression vers le schéma 4 avec `building: 0`, sans
modifier les achats existants. [Contrat et vérifications](docs/building-beta009.md).
## beta.008 — 2026-09-13, Minage et vein mining
- Compétence Minage achetable, sept rangs et vitesse native de 100 à 200 %.
Plafonds de veine : 1 / 4 / 8 / 16 / 32 / 64 / 128 / 256 blocs.
- R configurable pour l'aperçu, R + clic gauche maintenus pour miner,
R + molette pour limiter la sélection. Contour des blocs et compteur en jeu.
- Durée calculée sur le serveur, interruption et protections par bloc,
destruction native pour outils, loot, XP, faim, enchantements et statistiques.
Un seul effet sonore de casse par groupe ; la rupture d'outil arrête le reste.
- Progression schéma 3 : ajout de Minage à zéro lors de la lecture des anciens
profils, achats et dates conservés, rangs persistants après mort et reprise.
Configuration existante conservée. Voir `docs/mining-beta008.md`.
## beta.007 — 2026-09-13, carte immersive
- Carte plein écran sous les commandes, carré central clair et abords sombres.
Le vide observé et les zones inconnues sont transparents ; leurs états restent
distincts dans les relevés personnels existants.
- Boutons natifs superposés, coordonnées et zoom en bas à gauche. Grille,
empreintes Demeure et marqueur du joueur suivent le terrain sur tout l'écran.
- Glisser-déplacer et molette dans les marges ; priorité des boutons, y compris
désactivés. Zoom minimal adapté à la taille du GUI. Libellés FR/EN du zoom.
- Aucun changement de protocole, de format de sauvegarde ou de génération.
Voir `docs/atlas-immersive-beta007.md` pour la validation et l'artefact.
## beta.006 — 2026-09-13, livraison locale d’essai
- Corrige le bouton gauche (SDL / API Minecraft 26.3), les glissements successifs,
le relâchement hors carte et la navigation pendant les rafraîchissements.
- Brouillard cartographique circulaire, bordure tramée et fond parchemin ;
seuls les pixels observés sont transmis. Les anciens chunks restent connus.
- Grille de chunks et surcouche Demeure activables ; survol des zones connues
avec état, influence principale et couleur de l’habitant.
- Premier port autonome de Demeure : activité, placements réussis, destruction,
récoltes, sommeil, mort et présence du vivant. Jours UTC réels, budgets
persistants et décroissance sans résurrection des anciens scores.
- Données Demeure séparées ; Atlas schéma 1 lu puis sauvegardé en schéma 2.
Pas d’import historique, de modification du terrain, de claim ou de protection.
Voir `docs/demeure-beta006.md` et `mods/demeure/PROVENANCE.md`.
## beta.005 — 2026-09-13, livraison locale d’essai
- Carte native de surface dans Blocodex → Monde : glisser, zoomer, recentrer,
orientation et couleur du joueur. Aucun code ou asset Xaero repris.
- Aptitude Grande carte, coût serveur configurable (4 niveaux par défaut) ;
exploration personnelle enregistrée avant l’achat et conservée après la mort.
- Inspection opérateur explicite des chunks chargés, séparée des découvertes
de l’habitant. Pas de génération déclenchée par la consultation.
- Noms de couleurs FR/EN associés aux teintes, à la place du SGA ; boutons
Minecraft au texte coloré, sans changer les couleurs déjà attribuées.
- Retrait des boutons S’asseoir des aptitudes et de la fiche ; geste inné conservé.
- Lecture des progressions/configurations schéma 1, ajout de l’aptitude au
schéma 2 et fichiers de relevés séparés. Contrat : `docs/atlas-beta005.md`.
## beta.004 — 2026-09-13, livraison locale d'essai
- Cadre Blocodex natif : titre et onglets Discovery, Progression, Story,
Inhabitant en haut ; Done / Terminé centré dans le pied de page.
- Contenu adapté à la taille du GUI, cadre partagé avec le catalogue de
découvertes, biographie et histoire défilantes avec texte complet.
- Six icônes 9×9 fournies par le créateur, conservées sans transformation
et affichées à gauche de chaque compétence.
- Rétablit le seuil vanilla de sprint : plus de 6 points de faim. Le premier
rang de Faim permet de dépasser ce seuil après avoir mangé. Contrôle côté
serveur, arrêt à 6 points, exceptions créative et montures conservées.
- Compatible avec les profils beta.003, sans migration des sauvegardes ni
changement de terrain. Voir `docs/blocodex-beta004.md`.
## beta.003 — 2026-09-13, livraison locale d'essai
- HELLO_WORLD avant le spawn : skin, pseudo, bio, palette RGB déterministe
extensible et accueil `helloworld {pseudo}` unique.
- Blocodex commun depuis B et Échap : fiche, progression, histoire, blocs.
- Compétences à gauche (six entrées, dont Minage, Construction et Inventaire
réservées au prochain ticket), aptitudes en liste défilante à droite.
- Couleurs dans des boutons Minecraft classiques : glyphes SGA teintés,
hexadécimal standard dans l'infobulle.
- Départ 3/3/3, capacités achetables avec les niveaux et conservées à la mort.
- Première aptitude Noms : familles de 26.2, configuration serveur par type
de mob et rechargement opérateur, priorité aux étiquettes des joueurs.
- Position assise disponible dès le début, sans XP ; sièges non sauvegardés.
- 70 % des points d'XP disponibles laissés en orbes à la mort, configurable ;
respect de `keepInventory`.
- Données additives ; adoption explicite des anciens mondes, aucun changement
du terrain ou des expansions. Notes : `docs/progression-beta003-release.md`.
## beta.002 — 2026-09-12, préparation locale
- Nord boréal/Peaks, avec les trois biomes de glace de l’ancien profil glacial
ajoutés à la palette boréale de cette révision.
- Bassin ouest en `warm_ocean` pour la décoration native de corail.
- Réserve une pyramide du désert au sud et un temple de la jungle à l’est,
avec des emplacements déterministes variables et des pièces vanilla.
- Isole cette génération dans les nouveaux mondes de révision 2 ; les mondes
beta.001 et alpha ne sont ni convertis ni régénérés.
- Version du mod et du pack `beta.002`, MRpack `Sanctuary-beta.002.mrpack`.
Vérifications : `docs/expeditions-beta002.md`.
## beta.001 — 2026-09-12, préparation locale
- Adopte `beta.xxx`, à partir de `001`, pour le mod, le pack et les
futurs tags ; une livraison consomme un numéro, y compris pour un correctif.
- Vérifie le format et l’alignement mod/pack lors du contrôle packwiz.
- Clôt le chantier worldgen sur le socle alpha.30.7 à la demande du créateur ;
ouvre le chantier des anciennes expéditions avant la progression en jeu.
- Les nouveaux mondes ouvrent quatre îles de 512 blocs : nord glacial/Peaks,
est tropical/Volcan, sud aride/Canyon et ouest humide/Océan, avec noms FR/EN.
- Cherche la première position admissible sur chaque axe, sans l’écart et le
décalage aléatoire alpha ; conserve les emprises écrites et les bateaux.
- Enregistre les cinq régions dans une transaction initiale, journal bêta
distinct, sans migration automatique des anciennes sauvegardes.
- Le relief initial et les codecs alpha restent conservés. Aucune publication
ni synchronisation Prism effectuée pour cette préparation.
Voir [les expéditions et leurs vérifications](docs/expeditions-beta001.md) et
[la convention de versionnement](docs/versioning.md).
## 0.1.0-alpha.30.4
- Plateaux bas conservés, abords des massifs élargis et hauts reliefs en 3D ; aucun seuil de découpe latérale, microbruit ou gradin ajouté.
- Replats supérieurs proches de Y360, végétation et recherche supplémentaire de rivières courbes en altitude.
- Monde initial constructible sur 640 blocs (Y0..639), nuages inchangés et terrain toujours sous Y360.
- Conservation des secrets, traversée, navires et îlots ; aucun ajout de l’arène du destin.
- Nouveau monde de test nécessaire ; aucun monde personnel modifié.
## 0.1.0-alpha.30.3
- Retire les microcorniches de la 30.2, jugées trop bruitées en jeu.
- Répartit de grandes zones de plateaux naturels et de montagnes déformées en 3D,
avec une échelle relative commune à Petit, Moyen et Grand.
- Étend les hauts reliefs vers Y360 sans changer la hauteur du monde ; conserve
les profondeurs, l’arrivée, les cours d’eau courbes et les infrastructures.
- Conserve un filtrage des fragments rocheux détachés jusque dans les sommets.
- Adapte la recherche aérienne aux plateaux disponibles : rejet grossier des
emprises trop creuses, contrôle de hauteur précoce et recherche autour de l’île.
- Corrige le veto de biome qui empêchait un sanctuaire minéral pourtant admis
de se poser dans les marais souterrains.
- Nouveau monde nécessaire pour tester le nouveau terrain ; aucun monde régénéré.
## 0.1.0-alpha.30.2
- Corniches locales dont la phase et l’espacement suivent un bruit 3D, sur le relief global conservé.
- Filtrage borné des petits composants rocheux détachés dans la zone retouchée, indépendant des frontières de chunks.
- Rivières courbes, tunnels, sanctuaire minéral et lieux aériens conservés ; nouveau monde pour l’essai.
- Minecraft 26.3-pre-2 et les dépendances restent inchangés. Voir `docs/testing-alpha30.2.md` pour les validations effectivement réalisées.
## 0.1.0-alpha.30.1 — 2026-09-12
Retrait des rivières sur grille de la 30 ; brèches de cascade sur les anciennes
rivières courbes et leurs bassins. Retour du relief global de la 28, sauf une
bande étroite de plateaux naturels pour les accès aux traversées.
Voir [le correctif](docs/generation-alpha30.1.md). Nouveau monde nécessaire.
## 0.1.0-alpha.30 — 2026-09-12
Trois zones de déformation 3D, plateaux naturels entre les massifs, grande rivière
à niveaux locaux et brèches de berge de cinq blocs maximum laissant couler l’eau.
Recherche des traversées mieux répartie, sanctuaire minéral avec seconde recherche
sur les flancs, mines vanilla mieux admises. Les navires conservent leur modèle
et leur placement proche du rivage. Nouveau monde de test nécessaire.
Voir [la génération](docs/generation-alpha30.md) et [les essais](docs/testing-alpha30.md).
## 0.1.0-alpha.29 — 2026-09-12
Petites corniches variables sur le relief 3D de la28 ; correction des traversées
et de l’admission des mines natives. Voir [le périmètre](docs/generation-alpha29.md)
et [les essais](docs/testing-alpha29.md). Nouveau monde de test nécessaire.
## 0.1.0-alpha.28 — 2026-09-12
Spéléologie par bruits natifs, déformations volumiques 3D et failles obliques bornées ;
bateaux rapprochés et îlots au-dessus de Sanctuary. Marais réduits. Mines,
huttes et donjons vanilla adaptés aux souterrains ; filons natifs selon la
profondeur dans la roche, dans l’île et les expansions. Nouveau monde de test.
Voir [génération](docs/generation-alpha28.md) et [validation](docs/testing-alpha28.md).
## 0.1.0-alpha.27 — 2026-09-12
Retour à la base alpha.24 après rejet visuel de l’alpha.25. Le relief et les
souterrains de la 24 sont conservés ; la montgolfière est retirée. Première
passe limitée aux marais souterrains et à des épaves vanilla redressées
et restaurées pour les navires marchands. Les nouvelles
montagnes, cavités et garanties océaniques propres à la 25 ne sont pas reprises.
Alpha.26 sautée ; essai sur nouveau monde, sans migration. Voir le
[contrat alpha.27](docs/generation-alpha27.md) et les [vérifications](docs/testing-alpha27.md).
## 0.1.0-alpha.20 — 2026-09-10
- Passe architecturale sur les six bâtiments urbains, les quatorze anciennes
+5
View File
@@ -27,6 +27,11 @@ Les nombres, ressources et interfaces encore incertains peuvent rester des hypot
Les commandes exactes de développement vivent dans le [README](README.md), afin de ne pas maintenir deux listes divergentes.
Les livraisons du mod et du pack partagent le compteur `beta.xxx`,
à partir de `beta.001`. Incrémenter les deux propriétés et le manifeste
packwiz ensemble ; le tag reprend cette version exacte, sans `v`. Une modification
documentaire seule ne consomme pas de numéro. Voir [Versionnement](docs/versioning.md).
## Vérifier la génération du monde
Utiliser une sauvegarde de développement dédiée et conserver la seed des observations. Les vérifications pertinentes comprennent le spawn, les limites de l'île, le vide, les jointures de chunks, le comportement de l'eau, le redémarrage et l'arrivée de plusieurs joueurs.
+1128 -23
View File
File diff suppressed because it is too large Load Diff
+88
View File
@@ -4,6 +4,18 @@ Le code Sanctuary est distribué sous GPL-3.0-or-later, comme la version 26.2 do
la génération est reprise. Voir `LICENSE` et `docs/migration-26.2.md` pour la
provenance détaillée et le périmètre du portage.
Le minage groupé beta.008 reprend les paliers, la sélection par faces et le
contour de sélection de Sanctuary 26.2 (GPL-3.0-or-later, même dépôt historique
en lecture seule). Le service de progression, le contrôle des gestes et le
calcul de durée sont adaptés à la bêta et aux API Minecraft 26.3-pre-2.
Voir `docs/mining-beta008.md` ; aucun mod externe de minage n'est embarqué.
Construction beta.009 adapte le plan orienté `SanctuaryBuildPlane` et les
principes de sélection/session de `gameplay/building` dans le même Sanctuary
26.2, GPL-3.0-or-later. Les contextes de placement, permissions, gestes et
migrations sont adaptés à la bêta et testés sur Minecraft 26.3-pre-2.
Voir `docs/building-beta009.md`.
Minecraft appartient à Mojang Studios / Microsoft. Sanctuary est un projet
communautaire indépendant. Le dépôt ne redistribue pas le jeu.
@@ -21,6 +33,16 @@ Fabric Loader : Apache-2.0. Fabric API : Apache-2.0. Fabric Loom et le wrapper
Gradle : Apache-2.0. Ces projets conservent leurs auteurs, notices et licences.
Les dépendances sont résolues depuis leurs distributions officielles.
Les six icônes de compétences dans
`assets/sanctuary/textures/gui/progression/` ont été fournies par le créateur
le 13 septembre 2026. Depuis beta.015, elles utilisent ses nouveaux fichiers
`progression_heart.png`, `progression_food.png`, `progression_mining.png`,
`progression_building.png`, `progression_breath.png` et `progression_inventory.png`.
Les PNG 9×9 sont conservés octet pour octet, y compris leur transparence.
Les noms de ressources restent stables : `food` correspond à `hunger`,
`breath` à `breathing`, et le préfixe `progression_` est retiré.
Les mêmes PNG sont préparés dans `ressources-pack/sanctuary/` pour le resource pack.
Le fichier préexistant `ressources-pack/helloworld/assets/minecraft_title.png`
est conservé comme source graphique fournie par le propriétaire du dépôt.
Il n'est pas encore installé dans le pack généré. Sa provenance et son adaptation
@@ -29,3 +51,69 @@ Il n'est pas encore installé dans le pack généré. Sa provenance et son adapt
Les resource packs, shaders et mods communautaires envisagés dans la vision
ne sont pas inclus automatiquement. Chaque ajout aura une version, une source,
un hash et les crédits de sa distribution.
Demeure est embarqué comme mod autonome, sous GPL-3.0-or-later. Son modèle
provient des sources de KOKA99CAB dans `Structures/demeure`, référencées par
l’inventaire 26.2, et a été adapté à Minecraft 26.3-pre-2. Voir
`mods/demeure/PROVENANCE.md` pour les empreintes et les différences du port.
Le JAR Demeure contient sa licence et ce document de provenance.
## Inventaire beta.010
Les interfaces, algorithmes de transfert et PNG d'inventaire proviennent de
`../26.2/sanctuary`, projet Sanctuary de Koka sous GPL-3.0-or-later. Le portage
conserve les six variantes personnelles, la barre rapide et sa sélection,
les panneaux des conteneurs natifs et leurs fonds supérieurs. Les PNG sont
copiés sans retouche dans le namespace `sanctuary` ; le serveur 26.2 et ses
sauvegardes ne sont pas modifiés. Cape, œuf de compagnon et moteur Aircraft
ne font pas partie de ce lot.
## Équipement beta.018
Les repères de cases vides `egg.png`, `cape.png` et `cosmetics.png` (16 × 16)
proviennent des fichiers fournis par le créateur le 13 septembre 2026 dans
`../textures/`. Ils sont conservés octet pour octet dans le mod et le resource pack.
Cape Zéro utilise temporairement le visuel **Vanilla Cape** de Mojang/Microsoft,
téléchargé depuis le serveur officiel de textures Minecraft :
https://textures.minecraft.net/texture/f9a76537647989f9a0b6d001e320dac591c359e9e61a31f4ce11c88f207f0ad4
SHA-256 : `f9a76537647989f9a0b6d001e320dac591c359e9e61a31f4ce11c88f207f0ad4`.
Présentation originale : https://www.minecraft.net/en-us/article/introducing-vanilla-cape
L’icône d’objet correspondante provient de `../26.2/sanctuary`
(`textures/item/cape/vanilla_cape.png`). Ces images sont un placeholder de test,
restent la propriété de leurs auteurs et ne sont pas placées sous la licence
du code Sanctuary. Il ne s’agit pas d’une cape officielle accordée au compte.
Les familiers utilisent les modèles et textures résolus par Minecraft installé ;
aucune copie des textures de mobs ni aucun ancien pouvoir n’est embarqué.
## JEI beta.024
Just Enough Items, mezz, MIT : fork source de la branche 26.2, commit
`aae2dfcfb82e6b5bce787ba72bb2eda7339b274f`, adapté à Minecraft 26.3-pre-2.
Le JAR contient la licence d’origine et [la provenance du portage](mods/jei/PROVENANCE.md).
Les patches et la reconstruction sont fournis ; les téléchargements restent ignorés.
Baked Substring Index 0.1.0 (MIT, James Mitchell) et Suffix Tree 1.1.0
(Apache-2.0, Alessandro Bahgat Shehata) sont inclus avec leurs licences.
## Références solaires beta.037
Les villes de référence et leurs coordonnées publiques proviennent de `zone.tab`
et les alias de `backward`, dans IANA tzdata **2026d** (domaine public).
Archive : https://data.iana.org/time-zones/releases/tzdata2026d.tar.gz
SHA-256 : `0cb2aa8e333c3dc049badc42a0c61f21987b8cd44e107fa900bad764aacc7767`.
Licence : https://data.iana.org/time-zones/tzdb/LICENSE
Le script `scripts/compile_solar_references.py` produit les 549 références/alias
embarqués. Le jeu ne télécharge ni ces données ni une position utilisateur.
Les équations saisonnières approximatives suivent la fiche publique NOAA :
https://gml.noaa.gov/grad/solcalc/solareqns.PDF
## Informations alimentaires beta.038 — AppleSkin
L’asset `assets/sanctuary/textures/gui/food_details.png` est une copie intacte
de `resources/assets/appleskin/textures/icons.png` par squeek502 et contributeurs,
[AppleSkin, branche 26.2-fabric](https://github.com/squeek502/AppleSkin/tree/62513191f6a3497447595c2215d466ad1d2bdb92),
commit `62513191f6a3497447595c2215d466ad1d2bdb92`, sous Unlicense.
Le comportement des contours et leurs coordonnées d’atlas suivent cette source ;
l’intégration, la synchronisation et le calcul de capacité sont propres à Sanctuary.
Texte de licence : [Unlicense amont](https://github.com/squeek502/AppleSkin/blob/62513191f6a3497447595c2215d466ad1d2bdb92/LICENSE).
+50
View File
@@ -0,0 +1,50 @@
# Archives pour le site Sanctuary
Ce dossier conserve les références réutilisables pour le site et le Galactium.
Il est indépendant de `build` : nettoyer les builds ne supprime pas les
collections placées ici. Aucun contenu n'est publié automatiquement.
- [Maquette Blocodex autonome](blocodex-navigation-v1/index.html) : ouvrir
ce fichier dans un navigateur, même hors ligne. Copier son dossier suffit.
- [Source de la maquette](blocodex-navigation-v1/fragment.html) et
[guide de réutilisation](blocodex-navigation-v1/README.md).
- [ZIP léger de la maquette](snapshots/Sanctuary-Blocodex-2026-09-13-v1.zip)
(10 188 octets), avec HTML autonome et source éditable.
- [Collection du 13 septembre 2026](snapshots/2026-09-13-web-v1/index.html) :
catalogue des images, PDF, documents, atlas et maquette.
- [Archive ZIP complète](snapshots/Sanctuary-Web-Archive-2026-09-13-v1.zip).
- [Inventaire et empreintes](catalog-2026-09-13-web-v1.json).
Collection initiale : **782 fichiers**, ZIP de **196 242 020 octets**.
Copie vérifiée par SHA-256, intégrité ZIP et empreintes de chaque membre
contrôlées ; les trois manifestes originaux des atlas passent également.
Reçu : [receipt-2026-09-13-web-v1.json](receipt-2026-09-13-web-v1.json).
Les collections volumineuses et ZIP sont conservés localement dans
`snapshots/`, ignoré par Git. Les sources de la maquette, les notices, le
script et le catalogue peuvent être versionnés. Une copie locale durable
ne remplace pas une sauvegarde sur un autre support.
Le fonds alpha réunit les images et PDF retrouvés dans les sorties du dépôt
jusqu'à alpha.30.7 et les trois atlas complets alpha.30.5, 30.6 et 30.7.
Leur provenance distingue artefacts livrés, essais intermédiaires et documents
de conception. Une image de recherche n'est pas une preuve de fonctionnalité
livrée. Les sources originales restent intactes et les doublons conservent
leurs chemins pour ne pas perdre leur contexte.
La collection inclut aussi les captures beta.003/004, les six icônes de
compétences et la maquette validée du Blocodex, dans des catégories séparées.
Les documents sont une photographie au jour de l'archivage ; les archives
atlas originales conservent en plus leur documentation historique exacte.
Une version de collection est immuable : le script refuse de l'écraser.
Pour une nouvelle collecte, choisir un autre identifiant :
```sh
python3 scripts/archive_web_assets.py --id AAAA-MM-JJ-web-v2
```
Le catalogue JSON contient les chemins relatifs, sources, catégories, versions
déduites des noms, tailles et SHA-256, pour une future ingestion par le site.
La présence d'un fichier dans l'archive ne change pas sa licence : conserver
les notices et les crédits, notamment pour les contenus issus de Minecraft.
@@ -0,0 +1,30 @@
# Blocodex — référence interactive v1
Conception et navigation approuvées par le créateur le 13 septembre 2026,
après beta.004. La maquette contient des données fictives.
Ouvrir `index.html` dans un navigateur. Elle fonctionne sans Codex, sans
serveur, sans compte, sans connexion et sans dépendance téléchargée.
Les interactions sont en mémoire : recharger revient à l'état initial.
Le délai de 24 heures est illustré, pas appliqué à un véritable habitant.
La vue opérateur est une simulation d'interface, pas une permission réelle.
`fragment.html` conserve exactement la source affichée dans la conversation.
`index.html` l'encapsule dans une page française autonome, avec ses styles
et son JavaScript. Le sélecteur de variante Tweak est facultatif et reste
inactif hors Codex ; aucune fonction de la navigation n'en dépend.
Pour le site, copier le dossier ou intégrer le fragment dans un composant
isolé. Conserver l'identifiant racine unique et exécuter le script après le
montage ; prévoir une instance par page. Les données et actions réelles
seront raccordées ultérieurement aux services Sanctuary.
L'export standard Visualize a été produit avant l'encapsulation hors ligne.
L'archive réutilisable garde uniquement la maquette et son code, sans le
runtime d'aperçu, ses bibliothèques CDN ou un appel aux API de l'application.
Origine : discussion Sanctuary / Blocodex du 13 septembre 2026.
La mise en page a été créée pour ce projet ; aucun sprite Minecraft ou police
propriétaire n'est embarqué dans cette maquette. Les polices sont système.
Le cadrage est conservé dans `references/docs/blocodex-navigation.md` au sein
de la collection complète. Le code du jeu reste en beta.004 à cet archivage.
@@ -0,0 +1,124 @@
<div id="sanctuary-navigation" aria-label="Proposition de navigation du Blocodex">
<style>
#sanctuary-navigation {font:14px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;color:#ededed;color-scheme:dark;}
#sanctuary-navigation * {box-sizing:border-box;}
#sanctuary-navigation .mc-window {background:#232820;border:2px solid #121411;}
#sanctuary-navigation .mc-head {padding:14px 12px 10px;background:#20261e;border-bottom:2px solid #747b6e;}
#sanctuary-navigation .mc-title {text-align:center;font-size:20px;text-shadow:2px 2px #111;margin-bottom:12px;}
#sanctuary-navigation .mc-nav {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;}
#sanctuary-navigation button {font:inherit;color:#f2f2f2;cursor:pointer;background:#626262;border:2px solid #121212;box-shadow:inset 2px 2px #9b9b9b,inset -2px -2px #373737;border-radius:0;padding:7px 9px;min-width:0;text-shadow:1px 1px #242424;}
#sanctuary-navigation button:hover {background:#787878;}
#sanctuary-navigation button[aria-pressed="true"] {background:#32382f;box-shadow:inset 1px 1px #192015;color:#b7d7a4;}
#sanctuary-navigation button:disabled {background:#343434;box-shadow:none;color:#aaa;cursor:default;}
#sanctuary-navigation .mc-preview {display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:10px 12px;background:#171b16;color:#c6cdc1;font-size:12px;}
#sanctuary-navigation select {font:inherit;background:#30362b;color:#fff;border:1px solid #92998c;border-radius:0;padding:5px;max-width:100%;}
#sanctuary-navigation .mc-local {display:flex;gap:5px;flex-wrap:wrap;padding:10px 12px 0;}
#sanctuary-navigation .mc-local button {padding:4px 9px;}
#sanctuary-navigation .mc-main {padding:18px 16px;min-height:300px;}
#sanctuary-navigation .mc-two {display:grid;grid-template-columns:1fr 1fr;gap:20px;}
#sanctuary-navigation .mc-heading {font-size:16px;margin:0 0 10px;color:#b7d7a4;font-weight:400;}
#sanctuary-navigation .mc-caption {color:#c2c8be;font-size:12px;margin:5px 0 12px;}
#sanctuary-navigation .mc-name {font-size:21px;color:#87c7f0;}
#sanctuary-navigation .mc-list {display:grid;gap:6px;margin-bottom:12px;}
#sanctuary-navigation .mc-row {display:flex;justify-content:space-between;align-items:center;gap:14px;padding:8px 0;border-bottom:1px solid #444b3e;}
#sanctuary-navigation .mc-row span:last-child {text-align:right;color:#c4cec1;font-size:12px;}
#sanctuary-navigation .mc-choice {display:block;margin:0 0 14px;}
#sanctuary-navigation .mc-choice select {display:block;width:100%;margin-top:5px;}
#sanctuary-navigation .mc-main p {margin:0 0 12px;}
#sanctuary-navigation .mc-link {width:100%;text-align:left;}
#sanctuary-navigation .mc-op {color:#f1cd82;border-bottom:1px solid #9c8150;padding:0 0 12px;margin-bottom:14px;}
#sanctuary-navigation .mc-footer {padding:14px;text-align:center;border-top:2px solid #747b6e;background:#20261e;}
#sanctuary-navigation .mc-footer button {width:min(240px,100%);}
#sanctuary-navigation .mc-detail {padding:12px;background:#181d16;border-left:2px solid #8aa579;}
#sanctuary-navigation .mc-lock {display:grid;gap:8px;max-width:360px;margin:25px auto;text-align:center;}
#sanctuary-navigation .mc-badge {color:#e2ce88;}
#sanctuary-navigation .mc-status {color:#b7d7a4;font-size:12px;}
@media(max-width:500px) {
#sanctuary-navigation .mc-nav {grid-template-columns:repeat(2,minmax(0,1fr));}
#sanctuary-navigation .mc-two {grid-template-columns:1fr;gap:16px;}
#sanctuary-navigation .mc-main {padding:14px 12px;min-height:280px;}
#sanctuary-navigation .mc-row {gap:8px;}
}
@media(pointer:coarse) {#sanctuary-navigation button {min-height:44px;}}
</style>
<div class="mc-window">
<div class="mc-preview">
<span>Maquette · données fictives</span>
<label>Vue d’essai <select data-role aria-label="Profil simulé"><option value="player">Joueur</option><option value="operator">Opérateur</option></select></label>
</div>
<div class="mc-head">
<div class="mc-title">Blocodex</div>
<nav class="mc-nav" aria-label="Rubriques du Blocodex">
<button type="button" data-tab="discovery" aria-pressed="false">Découvertes</button>
<button type="button" data-tab="progress" aria-pressed="false">Progression</button>
<button type="button" data-tab="world" aria-pressed="false">Monde</button>
<button type="button" data-tab="inhabitant" aria-pressed="true">Habitant</button>
</nav>
</div>
<nav class="mc-local" aria-label="Sous-rubriques"></nav>
<div class="mc-main" aria-live="polite"></div>
<div class="mc-footer"><button type="button" data-done>Terminé</button></div>
</div>
<script>
(() => {
const root=document.getElementById('sanctuary-navigation');
const content=root.querySelector('.mc-main');
const local=root.querySelector('.mc-local');
const nav=root.querySelector('.mc-nav');
const state={tab:'inhabitant',page:'',role:'player',favorite:'Loup',changed:false,trophy:'Des diamants !',constellation:'La Traversée',detail:'',worldLabel:'Monde'};
const pages={discovery:['Blocs','Objets','Créatures','Recettes'],progress:['Capacités','Exploits','Statistiques'],world:['Atlas','Constructions','Histoire'],inhabitant:[]};
const knowledge={Blocs:[['Pierre','Roche minée et déjà possédée.',true],['Bûche de chêne','Bois observé et récolté.',true],['Terre','Bloc observé et déjà possédé.',true],['Débris antiques','Aucune découverte personnelle.',false]],Objets:[['Pomme','Objet ramassé. Sa fiche décrit ses usages connus.',true],['Pioche en pierre','Outil fabriqué et déjà possédé.',true],['Élytre','Aucune découverte personnelle.',false]],Créatures:[['Loup','Créature observée. Peut être choisie comme favorite.',true],['Chat','Créature observée. Peut être choisie comme favorite.',true],['Renard','Aucune découverte personnelle.',false]]};
const esc=value=>String(value).replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));
const row=(a,b)=>`<div class="mc-row"><span>${esc(a)}</span><span>${esc(b)}</span></div>`;
const button=(label,action)=>`<button type="button" data-action="${action}">${label}</button>`;
function go(tab,page=''){state.tab=tab;state.page=page||pages[tab][0]||'';state.detail='';render();}
function render(){
root.querySelector('[data-tab="world"]').textContent=state.worldLabel;
nav.querySelectorAll('button').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.tab===state.tab)));
local.innerHTML=pages[state.tab].map(p=>`<button type="button" data-page="${p}" aria-pressed="${p===state.page}">${p}</button>`).join('');
local.hidden=!pages[state.tab].length;
const op=state.role==='operator'?'<div class="mc-op">Vue opérateur · inspection sans découverte automatique</div>':'';
let body='';
if(state.tab==='inhabitant'){
body=`<div class="mc-two"><section><div class="mc-name">poupoutain</div><p class="mc-caption">Habitant de Sanctuary</p><p>Je construis des passages entre les îles.</p><div class="mc-heading">À l’honneur</div><div class="mc-detail"><span class="mc-badge">★ ${esc(state.trophy)}</span><div class="mc-caption">Exploit Minecraft accompli</div>${button('Choisir un exploit','achievements')}</div></section><section><label class="mc-choice">Constellation favorite<select data-constellation><option${state.constellation==='La Traversée'?' selected':''}>La Traversée</option><option${state.constellation==='Le Refuge'?' selected':''}>Le Refuge</option></select></label><label class="mc-choice">Créature favorite<select data-favorite ${state.changed?'disabled':''}><option${state.favorite==='Loup'?' selected':''}>Loup</option><option${state.favorite==='Chat'?' selected':''}>Chat</option></select></label><div class="mc-caption">Choix parmi les créatures découvertes.</div><p class="mc-status">${state.changed?'Favori modifié · prochain changement dans 24 h':'Changement disponible'}</p>${button('Ouvrir le bestiaire','creatures')}</section></div>`;
} else if(state.tab==='discovery'){
if(state.page==='Recettes') body=`<div class="mc-heading">Recettes révélées</div>${row('Pioche en pierre','Consultable')}${row('Planches de chêne','Consultable')}<p class="mc-caption">La fabrication manuelle reste libre.</p>`;
else {
const entries=knowledge[state.page];
const visible=entries.filter(e=>e[2]||state.role==='operator');
body=`${op}<div class="mc-heading">${state.page} · ${visible.length} ${state.role==='operator'?'entrées':'découvertes'}</div><div class="mc-two"><div class="mc-list">${visible.map(e=>`<button type="button" class="mc-link" data-entry="${esc(e[0])}">${esc(e[0])}${e[2]?'':' · Non découvert'}</button>`).join('')}</div><div class="mc-detail">${state.detail?esc(state.detail):'Sélectionner une découverte'}</div></div>`;
}
} else if(state.tab==='progress'){
if(state.page==='Capacités') body=`<div class="mc-two"><section><div class="mc-heading">Compétences</div>${row('Vie','3')}${row('Faim','3')}${row('Minage','À venir')}${row('Construction','À venir')}${row('Souffle','3')}${row('Inventaire','À venir')}</section><section><div class="mc-heading">Aptitudes</div>${row('Noms des mobs','Acquis')}${row('Minimap','À acquérir')}${row('Grande carte','À acquérir')}${row('Marqueurs','À acquérir')}</section></div>`;
if(state.page==='Exploits') body=`<div class="mc-heading">Minecraft</div><div class="mc-list"><button type="button" class="mc-link" data-trophy="Des diamants !">★ Des diamants ! · Épingler au passeport</button><button type="button" class="mc-link" data-trophy="L’âge de pierre">★ L’âge de pierre · Épingler au passeport</button></div><div class="mc-heading">Sanctuary · accomplissements du serveur</div><div class="mc-caption">Objectifs collectifs et ouvertures d’expansions.</div>`;
if(state.page==='Statistiques') body=`<div class="mc-heading">Mes statistiques Minecraft</div>${row('Blocs minés','248')}${row('Distance parcourue','3,2 km')}${row('Temps de jeu','2 h 14 min')}<div class="mc-caption">Accès aux compteurs vanilla depuis la progression.</div>`;
} else if(state.tab==='world'){
if(state.page==='Atlas') body=`<div class="mc-lock"><div class="mc-heading">Grande carte</div><p>Aptitude à acquérir</p>${button('Voir dans Progression','abilities')}<div class="mc-caption">Minimap, grande carte et marqueurs se débloquent séparément.</div></div>`;
if(state.page==='Constructions') body=`<div class="mc-heading">Mes plans</div><div class="mc-detail"><p>Passerelle en bois</p>${row('Planches de chêne','64')}${row('Barrières de chêne','24')}<div class="mc-caption">Plan d’exemple · matériaux déjà connus</div><button type="button" disabled>Projection Litematica · intégration à venir</button></div>`;
if(state.page==='Histoire') body=`<div class="mc-heading">Histoire du monde</div>${row('Chronique','Événements et découvertes')}${row('Gazette','Nouvelles et courrier')}${row('Archives','Documents révélés du Galactium')}<div class="mc-caption">Seules les histoires révélées apparaissent.</div>`;
}
content.innerHTML=body;
}
root.addEventListener('click',event=>{
const b=event.target.closest('button');if(!b||b.disabled)return;
if(b.dataset.tab){go(b.dataset.tab);return;}
if(b.dataset.page){go(state.tab,b.dataset.page);return;}
if(b.dataset.trophy){state.trophy=b.dataset.trophy;go('inhabitant');return;}
if(b.dataset.entry){const e=knowledge[state.page].find(e=>e[0]===b.dataset.entry);state.detail=e[0]+' — '+e[1];render();return;}
if(b.dataset.action==='achievements')go('progress','Exploits');
if(b.dataset.action==='creatures')go('discovery','Créatures');
if(b.dataset.action==='abilities')go('progress','Capacités');
if(b.hasAttribute('data-done')){content.innerHTML='<div class="mc-lock">Retour au jeu</div>';local.hidden=true;b.textContent='Rouvrir le Blocodex';b.removeAttribute('data-done');b.setAttribute('data-reopen','');}
else if(b.hasAttribute('data-reopen')){b.textContent='Terminé';b.removeAttribute('data-reopen');b.setAttribute('data-done','');render();}
});
root.addEventListener('change',event=>{
const e=event.target;
if(e.hasAttribute('data-role')){state.role=e.value;state.detail='';render();}
if(e.hasAttribute('data-favorite')&&!state.changed){state.favorite=e.value;state.changed=true;render();}
if(e.hasAttribute('data-constellation')){state.constellation=e.value;render();}
});
render();
if(globalThis.Tweak){const tweak=new Tweak({container:root,onChange:render});tweak.addSelect(state,'worldLabel',{label:'Nom de la troisième rubrique',options:['Monde','Histoire']});}
})();
</script>
</div>
@@ -0,0 +1,138 @@
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="referrer" content="no-referrer">
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; img-src data:; connect-src 'none'; base-uri 'none'; form-action 'none'">
<title>Sanctuary — Blocodex, référence interactive</title>
<style>html{background:#171b16;color-scheme:dark}body{margin:0;padding:16px;max-width:1024px;margin-inline:auto}button,select{font-family:inherit}</style>
</head>
<body>
<div id="sanctuary-navigation" aria-label="Proposition de navigation du Blocodex">
<style>
#sanctuary-navigation {font:14px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace;color:#ededed;color-scheme:dark;}
#sanctuary-navigation * {box-sizing:border-box;}
#sanctuary-navigation .mc-window {background:#232820;border:2px solid #121411;}
#sanctuary-navigation .mc-head {padding:14px 12px 10px;background:#20261e;border-bottom:2px solid #747b6e;}
#sanctuary-navigation .mc-title {text-align:center;font-size:20px;text-shadow:2px 2px #111;margin-bottom:12px;}
#sanctuary-navigation .mc-nav {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;}
#sanctuary-navigation button {font:inherit;color:#f2f2f2;cursor:pointer;background:#626262;border:2px solid #121212;box-shadow:inset 2px 2px #9b9b9b,inset -2px -2px #373737;border-radius:0;padding:7px 9px;min-width:0;text-shadow:1px 1px #242424;}
#sanctuary-navigation button:hover {background:#787878;}
#sanctuary-navigation button[aria-pressed="true"] {background:#32382f;box-shadow:inset 1px 1px #192015;color:#b7d7a4;}
#sanctuary-navigation button:disabled {background:#343434;box-shadow:none;color:#aaa;cursor:default;}
#sanctuary-navigation .mc-preview {display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:10px 12px;background:#171b16;color:#c6cdc1;font-size:12px;}
#sanctuary-navigation select {font:inherit;background:#30362b;color:#fff;border:1px solid #92998c;border-radius:0;padding:5px;max-width:100%;}
#sanctuary-navigation .mc-local {display:flex;gap:5px;flex-wrap:wrap;padding:10px 12px 0;}
#sanctuary-navigation .mc-local button {padding:4px 9px;}
#sanctuary-navigation .mc-main {padding:18px 16px;min-height:300px;}
#sanctuary-navigation .mc-two {display:grid;grid-template-columns:1fr 1fr;gap:20px;}
#sanctuary-navigation .mc-heading {font-size:16px;margin:0 0 10px;color:#b7d7a4;font-weight:400;}
#sanctuary-navigation .mc-caption {color:#c2c8be;font-size:12px;margin:5px 0 12px;}
#sanctuary-navigation .mc-name {font-size:21px;color:#87c7f0;}
#sanctuary-navigation .mc-list {display:grid;gap:6px;margin-bottom:12px;}
#sanctuary-navigation .mc-row {display:flex;justify-content:space-between;align-items:center;gap:14px;padding:8px 0;border-bottom:1px solid #444b3e;}
#sanctuary-navigation .mc-row span:last-child {text-align:right;color:#c4cec1;font-size:12px;}
#sanctuary-navigation .mc-choice {display:block;margin:0 0 14px;}
#sanctuary-navigation .mc-choice select {display:block;width:100%;margin-top:5px;}
#sanctuary-navigation .mc-main p {margin:0 0 12px;}
#sanctuary-navigation .mc-link {width:100%;text-align:left;}
#sanctuary-navigation .mc-op {color:#f1cd82;border-bottom:1px solid #9c8150;padding:0 0 12px;margin-bottom:14px;}
#sanctuary-navigation .mc-footer {padding:14px;text-align:center;border-top:2px solid #747b6e;background:#20261e;}
#sanctuary-navigation .mc-footer button {width:min(240px,100%);}
#sanctuary-navigation .mc-detail {padding:12px;background:#181d16;border-left:2px solid #8aa579;}
#sanctuary-navigation .mc-lock {display:grid;gap:8px;max-width:360px;margin:25px auto;text-align:center;}
#sanctuary-navigation .mc-badge {color:#e2ce88;}
#sanctuary-navigation .mc-status {color:#b7d7a4;font-size:12px;}
@media(max-width:500px) {
#sanctuary-navigation .mc-nav {grid-template-columns:repeat(2,minmax(0,1fr));}
#sanctuary-navigation .mc-two {grid-template-columns:1fr;gap:16px;}
#sanctuary-navigation .mc-main {padding:14px 12px;min-height:280px;}
#sanctuary-navigation .mc-row {gap:8px;}
}
@media(pointer:coarse) {#sanctuary-navigation button {min-height:44px;}}
</style>
<div class="mc-window">
<div class="mc-preview">
<span>Maquette · données fictives</span>
<label>Vue d’essai <select data-role aria-label="Profil simulé"><option value="player">Joueur</option><option value="operator">Opérateur</option></select></label>
</div>
<div class="mc-head">
<div class="mc-title">Blocodex</div>
<nav class="mc-nav" aria-label="Rubriques du Blocodex">
<button type="button" data-tab="discovery" aria-pressed="false">Découvertes</button>
<button type="button" data-tab="progress" aria-pressed="false">Progression</button>
<button type="button" data-tab="world" aria-pressed="false">Monde</button>
<button type="button" data-tab="inhabitant" aria-pressed="true">Habitant</button>
</nav>
</div>
<nav class="mc-local" aria-label="Sous-rubriques"></nav>
<div class="mc-main" aria-live="polite"></div>
<div class="mc-footer"><button type="button" data-done>Terminé</button></div>
</div>
<script>
(() => {
const root=document.getElementById('sanctuary-navigation');
const content=root.querySelector('.mc-main');
const local=root.querySelector('.mc-local');
const nav=root.querySelector('.mc-nav');
const state={tab:'inhabitant',page:'',role:'player',favorite:'Loup',changed:false,trophy:'Des diamants !',constellation:'La Traversée',detail:'',worldLabel:'Monde'};
const pages={discovery:['Blocs','Objets','Créatures','Recettes'],progress:['Capacités','Exploits','Statistiques'],world:['Atlas','Constructions','Histoire'],inhabitant:[]};
const knowledge={Blocs:[['Pierre','Roche minée et déjà possédée.',true],['Bûche de chêne','Bois observé et récolté.',true],['Terre','Bloc observé et déjà possédé.',true],['Débris antiques','Aucune découverte personnelle.',false]],Objets:[['Pomme','Objet ramassé. Sa fiche décrit ses usages connus.',true],['Pioche en pierre','Outil fabriqué et déjà possédé.',true],['Élytre','Aucune découverte personnelle.',false]],Créatures:[['Loup','Créature observée. Peut être choisie comme favorite.',true],['Chat','Créature observée. Peut être choisie comme favorite.',true],['Renard','Aucune découverte personnelle.',false]]};
const esc=value=>String(value).replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));
const row=(a,b)=>`<div class="mc-row"><span>${esc(a)}</span><span>${esc(b)}</span></div>`;
const button=(label,action)=>`<button type="button" data-action="${action}">${label}</button>`;
function go(tab,page=''){state.tab=tab;state.page=page||pages[tab][0]||'';state.detail='';render();}
function render(){
root.querySelector('[data-tab="world"]').textContent=state.worldLabel;
nav.querySelectorAll('button').forEach(b=>b.setAttribute('aria-pressed',String(b.dataset.tab===state.tab)));
local.innerHTML=pages[state.tab].map(p=>`<button type="button" data-page="${p}" aria-pressed="${p===state.page}">${p}</button>`).join('');
local.hidden=!pages[state.tab].length;
const op=state.role==='operator'?'<div class="mc-op">Vue opérateur · inspection sans découverte automatique</div>':'';
let body='';
if(state.tab==='inhabitant'){
body=`<div class="mc-two"><section><div class="mc-name">poupoutain</div><p class="mc-caption">Habitant de Sanctuary</p><p>Je construis des passages entre les îles.</p><div class="mc-heading">À l’honneur</div><div class="mc-detail"><span class="mc-badge">★ ${esc(state.trophy)}</span><div class="mc-caption">Exploit Minecraft accompli</div>${button('Choisir un exploit','achievements')}</div></section><section><label class="mc-choice">Constellation favorite<select data-constellation><option${state.constellation==='La Traversée'?' selected':''}>La Traversée</option><option${state.constellation==='Le Refuge'?' selected':''}>Le Refuge</option></select></label><label class="mc-choice">Créature favorite<select data-favorite ${state.changed?'disabled':''}><option${state.favorite==='Loup'?' selected':''}>Loup</option><option${state.favorite==='Chat'?' selected':''}>Chat</option></select></label><div class="mc-caption">Choix parmi les créatures découvertes.</div><p class="mc-status">${state.changed?'Favori modifié · prochain changement dans 24 h':'Changement disponible'}</p>${button('Ouvrir le bestiaire','creatures')}</section></div>`;
} else if(state.tab==='discovery'){
if(state.page==='Recettes') body=`<div class="mc-heading">Recettes révélées</div>${row('Pioche en pierre','Consultable')}${row('Planches de chêne','Consultable')}<p class="mc-caption">La fabrication manuelle reste libre.</p>`;
else {
const entries=knowledge[state.page];
const visible=entries.filter(e=>e[2]||state.role==='operator');
body=`${op}<div class="mc-heading">${state.page} · ${visible.length} ${state.role==='operator'?'entrées':'découvertes'}</div><div class="mc-two"><div class="mc-list">${visible.map(e=>`<button type="button" class="mc-link" data-entry="${esc(e[0])}">${esc(e[0])}${e[2]?'':' · Non découvert'}</button>`).join('')}</div><div class="mc-detail">${state.detail?esc(state.detail):'Sélectionner une découverte'}</div></div>`;
}
} else if(state.tab==='progress'){
if(state.page==='Capacités') body=`<div class="mc-two"><section><div class="mc-heading">Compétences</div>${row('Vie','3')}${row('Faim','3')}${row('Minage','À venir')}${row('Construction','À venir')}${row('Souffle','3')}${row('Inventaire','À venir')}</section><section><div class="mc-heading">Aptitudes</div>${row('Noms des mobs','Acquis')}${row('Minimap','À acquérir')}${row('Grande carte','À acquérir')}${row('Marqueurs','À acquérir')}</section></div>`;
if(state.page==='Exploits') body=`<div class="mc-heading">Minecraft</div><div class="mc-list"><button type="button" class="mc-link" data-trophy="Des diamants !">★ Des diamants ! · Épingler au passeport</button><button type="button" class="mc-link" data-trophy="L’âge de pierre">★ L’âge de pierre · Épingler au passeport</button></div><div class="mc-heading">Sanctuary · accomplissements du serveur</div><div class="mc-caption">Objectifs collectifs et ouvertures d’expansions.</div>`;
if(state.page==='Statistiques') body=`<div class="mc-heading">Mes statistiques Minecraft</div>${row('Blocs minés','248')}${row('Distance parcourue','3,2 km')}${row('Temps de jeu','2 h 14 min')}<div class="mc-caption">Accès aux compteurs vanilla depuis la progression.</div>`;
} else if(state.tab==='world'){
if(state.page==='Atlas') body=`<div class="mc-lock"><div class="mc-heading">Grande carte</div><p>Aptitude à acquérir</p>${button('Voir dans Progression','abilities')}<div class="mc-caption">Minimap, grande carte et marqueurs se débloquent séparément.</div></div>`;
if(state.page==='Constructions') body=`<div class="mc-heading">Mes plans</div><div class="mc-detail"><p>Passerelle en bois</p>${row('Planches de chêne','64')}${row('Barrières de chêne','24')}<div class="mc-caption">Plan d’exemple · matériaux déjà connus</div><button type="button" disabled>Projection Litematica · intégration à venir</button></div>`;
if(state.page==='Histoire') body=`<div class="mc-heading">Histoire du monde</div>${row('Chronique','Événements et découvertes')}${row('Gazette','Nouvelles et courrier')}${row('Archives','Documents révélés du Galactium')}<div class="mc-caption">Seules les histoires révélées apparaissent.</div>`;
}
content.innerHTML=body;
}
root.addEventListener('click',event=>{
const b=event.target.closest('button');if(!b||b.disabled)return;
if(b.dataset.tab){go(b.dataset.tab);return;}
if(b.dataset.page){go(state.tab,b.dataset.page);return;}
if(b.dataset.trophy){state.trophy=b.dataset.trophy;go('inhabitant');return;}
if(b.dataset.entry){const e=knowledge[state.page].find(e=>e[0]===b.dataset.entry);state.detail=e[0]+' — '+e[1];render();return;}
if(b.dataset.action==='achievements')go('progress','Exploits');
if(b.dataset.action==='creatures')go('discovery','Créatures');
if(b.dataset.action==='abilities')go('progress','Capacités');
if(b.hasAttribute('data-done')){content.innerHTML='<div class="mc-lock">Retour au jeu</div>';local.hidden=true;b.textContent='Rouvrir le Blocodex';b.removeAttribute('data-done');b.setAttribute('data-reopen','');}
else if(b.hasAttribute('data-reopen')){b.textContent='Terminé';b.removeAttribute('data-reopen');b.setAttribute('data-done','');render();}
});
root.addEventListener('change',event=>{
const e=event.target;
if(e.hasAttribute('data-role')){state.role=e.value;state.detail='';render();}
if(e.hasAttribute('data-favorite')&&!state.changed){state.favorite=e.value;state.changed=true;render();}
if(e.hasAttribute('data-constellation')){state.constellation=e.value;render();}
});
render();
if(globalThis.Tweak){const tweak=new Tweak({container:root,onChange:render});tweak.addSelect(state,'worldLabel',{label:'Nom de la troisième rubrique',options:['Monde','Histoire']});}
})();
</script>
</div>
</body>
</html>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,28 @@
{
"id": "2026-09-13-web-v1",
"zip": "snapshots/Sanctuary-Web-Archive-2026-09-13-v1.zip",
"zip_bytes": 196242020,
"zip_sha256": "5e6277942e791a928b70c2b11490d5367f6b10a4b6d3b196c9cef703b1e431d5",
"manifest_sha256": "735e08a304a398fdb3d95c73c9c8f95c87027ae9d0459f708cfac044dd837622",
"file_count": 782,
"counts": {
"alpha-figures": 13,
"alpha-research": 406,
"alpha-atlas": 248,
"beta-previews": 17,
"creator-icons": 6,
"title-reference": 1,
"alpha-release-atlas": 3,
"blocodex-concept": 3,
"documentation": 74,
"integration-intake": 2,
"reproduction-script": 6,
"archive-index": 2
},
"checks": [
"copies_sha256",
"three_original_atlas_manifests",
"zip_crc",
"zip_members_sha256"
]
}
@@ -0,0 +1,584 @@
{
"checked_at": "2026-09-13",
"target": "26.3-pre-2",
"projects": [
{
"slug": "simple-atlas",
"title": "Simple Atlas",
"license": {
"id": "MIT",
"name": "MIT License",
"url": null
},
"source_url": "https://github.com/RubberToe-06/simple_atlas",
"description": "A no-nonsense Vanilla+ Atlas for all your mapping needs! Heavily inspired by Map Atlases by Pepperoni-Jabroni",
"fabric_latest": [
{
"id": "6Hy4rXil",
"version_number": "1.2.0",
"date_published": "2026-06-18T20:58:16.322322Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric",
"quilt"
],
"dependencies": [
{
"version_id": "Nv3xnWXd",
"project_id": "9s6osm5g",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_26_2": [
{
"id": "6Hy4rXil",
"version_number": "1.2.0",
"date_published": "2026-06-18T20:58:16.322322Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric",
"quilt"
],
"dependencies": [
{
"version_id": "Nv3xnWXd",
"project_id": "9s6osm5g",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_target": []
},
{
"slug": "improved-maps",
"title": "Improved Maps",
"license": {
"id": "MIT",
"name": "MIT License",
"url": null
},
"source_url": "https://github.com/craftycorvid/ImprovedMaps",
"description": "Server-side mod (with optional client-side features) implementing Atlases and other map features",
"fabric_latest": [
{
"id": "kS9puVhR",
"version_number": "1.0",
"date_published": "2026-08-21T22:56:45.560111Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric"
],
"dependencies": [
{
"version_id": null,
"project_id": "mOgUt4GM",
"file_name": null,
"dependency_type": "optional"
},
{
"version_id": null,
"project_id": "xGdtZczs",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": null,
"project_id": "1eAoo2KR",
"file_name": null,
"dependency_type": "optional"
},
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_26_2": [
{
"id": "kS9puVhR",
"version_number": "1.0",
"date_published": "2026-08-21T22:56:45.560111Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric"
],
"dependencies": [
{
"version_id": null,
"project_id": "mOgUt4GM",
"file_name": null,
"dependency_type": "optional"
},
{
"version_id": null,
"project_id": "xGdtZczs",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": null,
"project_id": "1eAoo2KR",
"file_name": null,
"dependency_type": "optional"
},
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_target": []
},
{
"slug": "ultimate_map_atlases",
"title": "Ultimate Map Atlases",
"license": {
"id": "GPL-3.0-only",
"name": "GNU General Public License v3.0 only",
"url": null
},
"source_url": "https://github.com/nanakytim/Ultimate_Map_Atlases",
"description": "Atlases can be crafted and store Maps, making exploration easier and more fun! Works in tandem with a Compass.",
"fabric_latest": [
{
"id": "bgd39YOI",
"version_number": "26.2",
"date_published": "2026-06-17T13:27:13.516403Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric"
],
"dependencies": []
}
],
"fabric_26_2": [
{
"id": "bgd39YOI",
"version_number": "26.2",
"date_published": "2026-06-17T13:27:13.516403Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric"
],
"dependencies": []
}
],
"fabric_target": []
},
{
"slug": "bluemap",
"title": "BlueMap",
"license": {
"id": "MIT",
"name": "MIT License",
"url": "https://github.com/BlueMap-Minecraft/BlueMap/blob/master/LICENSE"
},
"source_url": "https://github.com/BlueMap-Minecraft/BlueMap",
"description": "A Minecraft mapping tool that creates 3D models of your Minecraft worlds and displays them in a web viewer.",
"fabric_latest": [
{
"id": "xvccCRD9",
"version_number": "5.24-fabric",
"date_published": "2026-09-10T15:38:16.522019Z",
"game_versions": [
"26.1",
"26.1.1",
"26.1.2",
"26.2"
],
"loaders": [
"fabric"
],
"dependencies": [
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_26_2": [
{
"id": "xvccCRD9",
"version_number": "5.24-fabric",
"date_published": "2026-09-10T15:38:16.522019Z",
"game_versions": [
"26.1",
"26.1.1",
"26.1.2",
"26.2"
],
"loaders": [
"fabric"
],
"dependencies": [
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_target": []
},
{
"slug": "map-atlases-forge",
"title": "Map Atlases [Forge]",
"license": {
"id": "GPL-3.0-only",
"name": "GNU General Public License v3.0 only",
"url": null
},
"source_url": "https://github.com/MehVahdJukaar/mapatlases-neoforge",
"description": "A world map/mini map mod based on vanilla Maps!",
"fabric_latest": [],
"fabric_26_2": [],
"fabric_target": []
},
{
"slug": "antique-atlas",
"title": "Antique Atlas",
"license": {
"id": "GPL-3.0-only",
"name": "GNU General Public License v3.0 only",
"url": null
},
"source_url": "https://github.com/AntiqueAtlasTeam/AntiqueAtlas",
"description": "Antique Atlas is a craftable item that enables a special map screen.",
"fabric_latest": [
{
"id": "BTztSCC6",
"version_number": "7.1.1-fabric-mc1.18.2",
"date_published": "2023-03-30T19:15:50.719038Z",
"game_versions": [
"1.18.2"
],
"loaders": [
"fabric"
],
"dependencies": [
{
"version_id": "j5zDzQqi",
"project_id": "lhGA9TYQ",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": "BLMp2TRt",
"project_id": "9s6osm5g",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": "95QMsRyb",
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_26_2": [],
"fabric_target": []
},
{
"slug": "antique-atlas-4",
"title": "Antique Atlas 4",
"license": {
"id": "LGPL-3.0-or-later",
"name": "GNU Lesser General Public License v3.0 or later",
"url": null
},
"source_url": "https://github.com/sisby-folk/antique-atlas",
"description": "A hand-drawn clientside world map, with map sharing, structure discovery, and less!\nA map frontend for Surveyor based on hunternif's Antique Atlas.",
"fabric_latest": [
{
"id": "2sDsTAId",
"version_number": "3.1.2+1.21",
"date_published": "2026-01-05T08:52:18.929507Z",
"game_versions": [
"1.21.1"
],
"loaders": [
"fabric",
"neoforge",
"quilt"
],
"dependencies": [
{
"version_id": null,
"project_id": "tNmWwdI2",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": "4AkOEqGy",
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": "iLOZqG06",
"project_id": "4KjqhPc9",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_26_2": [],
"fabric_target": []
},
{
"slug": "surveyor",
"title": "Surveyor Map Framework",
"license": {
"id": "LGPL-3.0-or-later",
"name": "GNU Lesser General Public License v3.0 or later",
"url": null
},
"source_url": "https://github.com/sisby-folk/surveyor",
"description": "Maps with friends! A world map backend with multiplayer sharing, automatic structure/POI marking, and unified mod compatibility.",
"fabric_latest": [
{
"id": "V7SEIRs6",
"version_number": "1.2.4+26.1",
"date_published": "2026-05-10T08:39:52.185927Z",
"game_versions": [
"26.1.2"
],
"loaders": [
"fabric"
],
"dependencies": [
{
"version_id": null,
"project_id": "tNmWwdI2",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": "mmmOfXE7",
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_26_2": [],
"fabric_target": []
},
{
"slug": "voxelmap-updated",
"title": "VoxelMap-Updated",
"license": {
"id": "LicenseRef-All-Rights-Reserved",
"name": "",
"url": null
},
"source_url": "https://github.com/fantahund/VoxelMap",
"description": "Minimap and Worldmap. Have an overview of your surroundings, or view the entire world. Create waypoints.",
"fabric_latest": [
{
"id": "BjsGekii",
"version_number": "26.2-1.16.10",
"date_published": "2026-08-30T03:23:58.999214Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric"
],
"dependencies": [
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_26_2": [
{
"id": "BjsGekii",
"version_number": "26.2-1.16.10",
"date_published": "2026-08-30T03:23:58.999214Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric"
],
"dependencies": [
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_target": []
},
{
"slug": "xaeroplus",
"title": "XaeroPlus",
"license": {
"id": "MIT",
"name": "MIT License",
"url": null
},
"source_url": "https://github.com/rfresh2/XaeroPlus/",
"description": "Xaero WorldMap / Minimap Extra Features",
"fabric_latest": [
{
"id": "kbQweqjZ",
"version_number": "2.36.1+fabric-1.21.11",
"date_published": "2026-09-10T21:10:52.358083Z",
"game_versions": [
"1.21.11"
],
"loaders": [
"fabric",
"quilt"
],
"dependencies": [
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": null,
"project_id": "FlFKBOIX",
"file_name": null,
"dependency_type": "optional"
},
{
"version_id": null,
"project_id": "1bokaNcj",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": null,
"project_id": "NcUtCpym",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_26_2": [
{
"id": "Ts3KSCxm",
"version_number": "2.36.1+fabric-26.2",
"date_published": "2026-09-10T21:07:47.448275Z",
"game_versions": [
"26.2"
],
"loaders": [
"fabric",
"quilt"
],
"dependencies": [
{
"version_id": null,
"project_id": "1bokaNcj",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": null,
"project_id": "NcUtCpym",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": null,
"project_id": "FlFKBOIX",
"file_name": null,
"dependency_type": "optional"
},
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
]
}
],
"fabric_target": []
}
],
"licenses_verified_in_source": [
{
"repository": "craftycorvid/ImprovedMaps",
"default_branch": "main",
"license_spdx": "MIT",
"license_url": "https://github.com/craftycorvid/ImprovedMaps/blob/main/LICENSE",
"license_git_sha": "e67ce634ddce2140ca1546d2e5beb1c04859f60f",
"license_sha256": "a566859281767627d275c468319d0713d86f317b6f798ba9bf48d6da07991b32",
"archived": false
},
{
"repository": "RubberToe-06/simple_atlas",
"default_branch": "master",
"license_spdx": "MIT",
"license_url": "https://github.com/RubberToe-06/simple_atlas/blob/master/LICENSE",
"license_git_sha": "705cd5167be9a1045008e89018f67e9e501b272f",
"license_sha256": "9766022d74839286286f97d9f3928033bd15445605bdaab4ff4806b434c08c67",
"archived": false
},
{
"repository": "nanakytim/Ultimate_Map_Atlases",
"default_branch": "main",
"license_spdx": "GPL-3.0",
"license_url": "https://github.com/nanakytim/Ultimate_Map_Atlases/blob/main/LICENSE",
"license_git_sha": "f288702d2fa16d3cdf0035b15a9fcbc552cd88e7",
"license_sha256": "3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986",
"archived": false
},
{
"repository": "BlueMap-Minecraft/BlueMap",
"default_branch": "master",
"license_spdx": "MIT",
"license_url": "https://github.com/BlueMap-Minecraft/BlueMap/blob/master/LICENSE",
"license_git_sha": "0a98021f607f47cc173f081a768e99e12bd2f6a3",
"license_sha256": "f1c190d4a1ff29606cbed7a0d97fc7b7117cc2e1169e19caa753198957dbbfd6",
"archived": false
}
]
}
@@ -0,0 +1,116 @@
{
"checked_at": "2026-09-13",
"target": "26.3-pre-2",
"projects": [
{
"project": "xaeros-minimap",
"license": {
"id": "LicenseRef-All-Rights-Reserved",
"name": "",
"url": null
},
"source_url": null,
"versions": {
"26.2": {
"count": 9,
"latest": [
{
"id": "tBIPWIKW",
"version_number": "fabric-26.2-26.5.0",
"date_published": "2026-09-10T11:44:27.035690Z",
"version_type": "release",
"dependencies": [
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
},
{
"version_id": null,
"project_id": "gF3BGWvG",
"file_name": null,
"dependency_type": "optional"
}
],
"files": [
{
"id": "MR2dtOXn",
"hashes": {
"sha1": "40282debf4cd8e91712ba26d90e78f2e3eb067e1",
"sha512": "b00df8bb410fae12b08788044f2f03cec34bfc4506da419d11d364e2f229b814dbb272d297fbe4b0cdfac18beeeed4dc8f1bdfc96fb113867857527e31965049"
},
"url": "https://cdn.modrinth.com/data/1bokaNcj/versions/tBIPWIKW/xaerominimap-fabric-26.2-26.5.0.jar",
"filename": "xaerominimap-fabric-26.2-26.5.0.jar",
"primary": true,
"size": 2221887,
"file_type": null
}
]
}
]
},
"26.3-pre-2": {
"count": 0,
"latest": []
}
},
"metadata_source": "https://api.modrinth.com/v2/project/xaeros-minimap"
},
{
"project": "xaeros-world-map",
"license": {
"id": "LicenseRef-All-Rights-Reserved",
"name": "",
"url": null
},
"source_url": null,
"versions": {
"26.2": {
"count": 10,
"latest": [
{
"id": "DxU1zijU",
"version_number": "fabric-26.2-1.46.0",
"date_published": "2026-09-10T11:32:01.420372Z",
"version_type": "release",
"dependencies": [
{
"version_id": null,
"project_id": "gF3BGWvG",
"file_name": null,
"dependency_type": "optional"
},
{
"version_id": null,
"project_id": "P7dR8mSH",
"file_name": null,
"dependency_type": "required"
}
],
"files": [
{
"id": "Acre79W6",
"hashes": {
"sha512": "37284868eed7bb105362ba1df3da38e860a0f889e50dcae43ddaf167c33817b8ece289770f89b138e327b145d15ae36a4df850202770236a4eefd7b413158438",
"sha1": "1056e2f81860045a8c1fb1d6823ca3f4c832dc60"
},
"url": "https://cdn.modrinth.com/data/NcUtCpym/versions/DxU1zijU/xaeroworldmap-fabric-26.2-1.46.0.jar",
"filename": "xaeroworldmap-fabric-26.2-1.46.0.jar",
"primary": true,
"size": 1477476,
"file_type": null
}
]
}
]
},
"26.3-pre-2": {
"count": 0,
"latest": []
}
},
"metadata_source": "https://api.modrinth.com/v2/project/xaeros-world-map"
}
]
}
+9 -2
View File
@@ -3,8 +3,8 @@ plugins {
id 'net.fabricmc.fabric-loom' version "${loom_version}" apply false
}
tasks.named('build') { dependsOn(':sanctuary:build') }
tasks.named('check') { dependsOn(':sanctuary:check', 'verifyPack') }
tasks.named('build') { dependsOn(':sanctuary:build', ':demeure:build', ':jei:build', ':sanctuary-test:build') }
tasks.named('check') { dependsOn(':sanctuary:check', ':demeure:check', ':jei:check', ':sanctuary-test:check', 'verifyPack') }
tasks.register('verifyPack', Exec) {
group = 'verification'
@@ -18,3 +18,10 @@ tasks.register('assemblePack', Exec) {
dependsOn(':sanctuary:build', 'verifyPack')
commandLine('python3', 'scripts/pack.py', 'assemble')
}
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')
}
-285
View File
@@ -1,285 +0,0 @@
# Sanctuary — fiche personnage, initialisation et amitiés
**Conception WG-26, sans interface ni système social implémenté.** Ce cahier
complète les [identités dans le lore](histoire-steve-galactium.md#identités-apparences-et-transformations)
et l’[entrée dans la mythologie](histoire-steve-galactium.md#entrer-dans-la-mythologie--accueil-avant-la-première-apparition).
## Direction demandée
- **La fiche personnage vient en premier.** Le texte de scénario proposé
précédemment est rejeté et retiré de l’accueil : il dévoilait trop le lore.
Aucun passage galactique ne précède la fiche.
- Le profil montre le **skin et le pseudo actuels**. Le joueur peut écrire une
courte bio sur sa pratique de Minecraft ou sur son personnage.
- **Une fois la fiche validée**, une petite cinématique figure l’initialisation
du personnage, avec une séquence de l’alphabet galactique et une recherche
d’emplacement sûr, comme un ordinateur qui démarre.
- L’apparition jouable suit cette initialisation, dans la nature de Sanctuary.
- **Première apparition sur le serveur : « helloworld {pseudo} ».** Les
connexions suivantes conservent le message habituel de connexion. Le critère
de première apparition suit l’UUID, tandis que le message montre le pseudo actuel.
- Un système d’**amitiés natif** permet de partager la bio publiquement ou avec
ses amis. Il doit laisser la possibilité de personnages discrets ou mystérieux.
- La présence, l’histoire et la progression sont **liées à l’UUID du compte**
dans le monde concerné. Pseudo, skin et bio peuvent évoluer.
- Chaque joueur choisit une **couleur personnelle dans la palette du serveur**,
**sur sa fiche de création de personnage**. La palette est configurée avant
l’arrivée du premier joueur. Une couleur prise devient
indisponible aux autres. L’appartenance à une faction précède le pseudo ;
le prestige le suit en **chiffres romains**.
L’ordre est demandé par l’auteur ; les plans, libellés, durées et commandes
précises restent proposés. L’archive qui semble se mettre à jour seule reste
une piste de fond du lore. L’accueil n’en donne pas d’explication et ne révèle
ni les anciens, ni leurs installations, ni la nature de Galactium.
## Fiche personnage
Le profil emploie le compte existant ; « créer son personnage » ne signifie
ni recréer une identité technique ni choisir une classe obligatoire.
La fiche présente le skin, le pseudo, le **choix de couleur parmi les teintes
disponibles** et un champ **« Votre bio » / « Your bio »**.
Suggestion d’invite : **« Qu’aimez-vous faire dans Minecraft ? » / « What do you
enjoy doing in Minecraft? »**. Le texte peut aussi être une courte présentation
fictionnelle du personnage. Exemple : « Je construis des ponts beaucoup trop
grands. Je cherche quelqu’un qui sait faire des ascenseurs. »
La bio peut rester vide. Sa longueur maximale, sa mise en forme et l’éventuelle
présentation de centres d’intérêt restent à choisir. Le texte ne fixe pas des
compétences, des récompenses, une faction ou des objectifs obligatoires. Les
points communs servent d’abord aux rencontres entre joueurs.
La présentation conserve les principes du lore : chaque personne peut définir
son personnage, sans déduction de genre depuis son skin et sans déclaration
de genre ou de transidentité requise. Une bio est un espace d’expression
volontaire, pas une demande de renseignements sur la vie réelle.
La bio peut être complétée plus tard ; valider une fiche avec une bio vide permet de
continuer. Les connexions suivantes ne forcent pas à la réécrire. Modifier son
profil conserve l’UUID, la progression et les actes associés au personnage.
## Couleur personnelle, faction et prestige
**Direction retenue :** composer le nom visible dans l’ordre
**faction → pseudo → prestige**. Exemple de présentation :
**« Les Égarés Poupoutin VI »**. Le pseudo porte la couleur personnelle ; le
préfixe identifie le groupe et permet aussi des associations de noms amusantes.
Le choix entre nom, symbole ou combinaison des deux pour la faction reste à
dessiner, ainsi que les séparateurs. Le prestige est placé à la suite du pseudo,
sur la même ligne, en chiffres romains : **IV pour 4, VI pour 6**. Cette direction
remplace l’idée de chiffres galactiques au-dessus du nom.
### Palette réservée par joueur
**Dernier choix de l’auteur : une palette préparée pour la population prévue.**
Un serveur prévu pour **20 joueurs dispose de 20 couleurs distinctes**, définies
avant toute arrivée. Le joueur choisit parmi les couleurs encore disponibles,
et sa couleur est retirée des choix des autres joueurs. Le libre choix de
n’importe quelle couleur par chaque joueur est remplacé par ce fonctionnement.
La palette peut contenir des teintes personnalisées ; elle n’est pas limitée
par conception aux couleurs nommées de Minecraft.
Le choix appartient au profil **UUID dans ce serveur**, indépendamment du
pseudo, du skin, du prestige ou de la faction. Une déconnexion ne libère pas
la couleur : la palette couvre les habitants, pas seulement les personnes
connectées simultanément. Changer de faction conserve donc sa couleur
personnelle ; l’emblème ou le préfixe commun indique l’appartenance au groupe.
**Emplacement retenu : le choix de couleur fait partie de la création du
personnage.** Seules les teintes disponibles sont proposées à la sélection.
**Détails de parcours proposés :** aperçu du pseudo dans la couleur choisie,
puis réservation confirmée par le serveur à la validation de la fiche. Si deux
personnes choisissent la même couleur en même temps, une seule l’obtient et
l’autre voit les choix actualisés ; ouvrir une fiche ne réserve pas à lui seul
une teinte indéfiniment. Un contour lisible autour du texte est proposé pour
conserver les teintes choisies sur des décors clairs ou sombres.
| Élément | Libellé proposé FR / EN |
| --- | --- |
| Choix | Couleur du joueur / Player color |
| État d’une teinte | Disponible / Available ; Déjà choisie / Taken |
| Concurrence au choix | Cette couleur vient d’être choisie. / This color was just taken. |
L’agrandissement d’une palette déjà utilisée, le changement volontaire de
couleur et le départ définitif d’un habitant restent à définir. Une palette
épuisée ne justifie pas d’attribuer deux fois une couleur ou de reprendre celle
d’un joueur absent. Le choix manuel ou la génération assistée de la palette
par l’administrateur reste ouvert ; aucune liste de 20 teintes n’est imposée ici.
### Factions et compteur de prestige
**Une faction dispose de trois places au départ.** Les prestiges donnent des
**charges personnelles liées à l’UUID**, que le joueur peut dépenser dans sa
faction pour y débloquer des places. Ces crédits d’agrandissement sont distincts
des charges collectives de Galactium. Ils ne transforment pas automatiquement
la somme des prestiges des membres en capacité de faction.
Quantité gagnée par prestige, coût d’une place, permanence des places après
le départ d’un membre et éventuel remboursement restent à spécifier dans la
[progression](progression-et-integrations.md#compétences-unlocks-galactique-et-prestige).
La taille de faction ne détermine pas le nombre de couleurs du serveur.
Le suffixe représente les prestiges effectivement accomplis, comptés côté
serveur et rattachés à l’UUID ; il ne s’agit pas d’un texte libre du profil.
Les charges dépensées ne réduisent pas ce compteur. Son affichage n’ajoute
aucun pouvoir à la récompense en crédits d’agrandissement.
**Propositions d’affichage :** aucun préfixe sans faction, aucun suffixe au
prestige zéro ; reprendre cette composition dans le nom au-dessus du joueur,
la liste des habitants et le chat, avec une lisibilité à vérifier dans chaque
vue. Longueur du préfixe et dessin des symboles restent à concevoir.
Le pseudo du compte demeure distinct du nom composé. La formule de première
apparition reste exactement **« helloworld {pseudo} »** ; cette présentation
sociale ne lui ajoute pas implicitement une faction ou un chiffre de prestige.
## Cinématique d’initialisation après la fiche
**Intention retenue :** faire sentir le démarrage d’une présence dans le monde
par une courte opération visible. La séquence galactique apparaît seulement
ici. Elle accompagne l’initialisation et la figuration d’une recherche de point
d’entrée, sans nouveau texte de scénario ni traduction donnant une révélation.
**Découpage proposé, à éprouver visuellement :**
| Moment | Image et mouvement proposés |
| --- | --- |
| Fiche validée | La fiche s’efface ; un fond sombre et un curseur ou repère discret prennent le relais. |
| Initialisation | Quelques lignes de glyphes galactiques s’inscrivent ou se stabilisent. Le personnage apparaît brièvement comme une silhouette ou un modèle en préparation. |
| Recherche d’emplacement | Une grille abstraite ou une petite coupe de terrain parcourt plusieurs positions. Des cases s’éteignent ; un emplacement se stabilise. |
| Point d’entrée prêt | Le repère s’immobilise. La transition conduit à la vue du joueur au point choisi sur l’île. |
La grille n’est pas une carte révélant l’île, les ruines ou les ressources.
Les formes, sons et glyphes suggèrent une opération ; le joueur en découvrira
la portée plus tard. Le contenu exact de la séquence galactique reste à définir
avec le [cahier du langage](langage-et-machines.md). Elle peut figurer des étapes
d’initialisation et de positionnement sans être un programme exécutable ni une
nouvelle déclaration de Galactium.
Quelques libellés fonctionnels sont possibles si la lecture des étapes le
demande ; ils restent proposés, et la scène peut surtout se lire par l’image :
| Étape | Proposition FR / EN |
| --- | --- |
| Préparation | Initialisation / Initializing |
| Recherche | Recherche d’un emplacement / Locating an entry point |
| Destination validée | Point d’entrée prêt / Entry point ready |
La recherche est **figurée par la cinématique** ; la sélection et la validation
de l’emplacement réel restent à la charge du serveur. L’animation ne vaut pas
preuve de sécurité : la fin vers l’apparition attend un point réellement prêt.
Elle n’affiche pas de coordonnées inventées ni de pourcentage présenté comme
une mesure réelle. Cette distinction reste interne à la conception, sans
explication technique à ajouter à l’écran du joueur.
Durée exacte et synchronisation restent à éprouver ; viser une petite séquence,
sans allonger artificiellement une entrée déjà prête. Une option pour passer
l’animation est proposée, en attendant tout de même la préparation réelle.
La première arrivée est le cas à concevoir d’abord ; répétition ou variante
abrégée aux connexions suivantes restent ouvertes. Une reprise ne réinitialise
pas la progression conservée sous l’UUID.
Le raccord à la connexion et au chargement sera défini dans le ticket d’interface.
L’arrivée naturelle reste le résultat ; cette scène n’ajoute pas de dimension
d’attente ni de déplacement vers une salle construite.
## Première apparition — helloworld
**Demandé par l’auteur :** pour la première apparition d’un personnage sur le
serveur, remplacer l’annonce de connexion habituelle par
**« helloworld {pseudo} »**, par exemple **« helloworld Poupoutin »**.
« Après » est compris ici comme les connexions suivantes : elles utilisent
l’annonce ordinaire de Minecraft, et non un second message ajouté immédiatement
au premier accueil.
Le message arrive **au moment de l’apparition effective**, après la cinématique
et la préparation du point d’entrée. Ouvrir ou valider la fiche, commencer
le chargement ou interrompre la connexion avant l’apparition ne suffit pas.
Le message visible de première entrée remplace l’annonce ordinaire pour cet
événement ; il ne faut pas annoncer une première fois le joueur avant le boot.
L’historique d’accueil du serveur conserve cette première apparition par **UUID**.
Une reconnexion, un redémarrage, une mort, un changement de dimension, de pseudo
ou de skin ne la recommence pas. Le pseudo actuel est substitué dans le message ;
un compte différent qui reprend un ancien pseudo garde son propre historique.
Cette règle ne crée ni progression globale entre serveurs ni remise à zéro du profil.
| Texte | Statut |
| --- | --- |
| **helloworld {pseudo}** | Formulation anglaise demandée. |
| **helloworld {pseudo}** | Même formule proposée en français, sans préposition ; conserver le clin d’œil « helloworld ». |
| Annonce des connexions suivantes | Réutiliser le message habituel de Minecraft et sa localisation. |
L’enregistrement de la première apparition et l’émission du message doivent
être raccordés au même événement serveur, avec une politique de reprise à
définir avant code. Les profils déjà présents à l’installation du futur système
nécessitent une règle explicite : l’absence du nouveau champ ne prouve pas
qu’un ancien joueur vient d’apparaître pour la première fois. Aucun historique
existant n’est migré ou réinitialisé par ce cahier.
## Amitiés et visibilité de la bio
**Fonctions demandées :** amis intégrés au jeu, bio publique ou réservée aux
amis. Proposition de périmètre : les habitants du même serveur, sans publication
sur un site ni annuaire global implicites.
| Réglage proposé | Qui peut consulter la bio ? |
| --- | --- |
| **Publique / Public** | Les joueurs du serveur. |
| **Amis / Friends** | Les amis dont la demande a été acceptée, et l’auteur du profil. |
| **Masquée / Hidden — option supplémentaire proposée** | L’auteur seulement ; une bio vide permet aussi de ne rien présenter. |
Le réglage est visible avant validation du profil. **Défaut proposé : Masquée**,
avec choix explicite pour partager. Ce défaut et cette troisième option ne sont
pas encore validés. La visibilité concerne la bio ; elle ne masque pas le pseudo
ou le skin visibles en jouant.
**Amitié réciproque proposée :** ouvrir une fiche d’habitant, envoyer une demande,
puis attendre son acceptation. Une demande en attente ne donne pas accès aux
bios d’amis. Chacun peut refuser ou retirer la relation. Elle est enregistrée
entre UUID, avec les noms actuels à l’écran, et ne dépend pas de la présence
simultanée des joueurs une fois établie.
| Action à localiser | Libellé proposé FR / EN |
| --- | --- |
| Demander une amitié | Ajouter en ami / Add friend |
| Répondre | Accepter / Accept ; Refuser / Decline |
| Terminer la relation | Retirer des amis / Remove friend |
| Changer sa présentation | Modifier le profil / Edit profile |
| Entrer en jeu | Entrer dans Sanctuary / Enter Sanctuary |
La consultation pourrait passer par une liste d’habitants et leurs fiches,
avec un accès physique à proximité à étudier. Touches et écrans restent à
dessiner avec l’inventaire personnalisé. Devenir ami ouvre l’accès prévu au
profil ; permissions sur les coffres, factions, partage de gains et coordonnées
conservent leurs règles propres.
La visibilité est vérifiée **côté serveur avant d’envoyer la bio**, dans toutes
ses vues. Retirer une amitié, restreindre la visibilité ou supprimer le texte
actualise les accès et les vues du jeu. Cette règle ne peut pas effacer ce
qu’une personne a déjà lu. Invitation, acceptation et changement de visibilité
restent des actes du joueur, pas des actions automatiques du récit.
## Personnalités à découvrir
Une fiche peut raconter des goûts, un projet ou presque rien. Le mystère peut
venir d’un personnage peu bavard, d’une bio énigmatique et des installations
qu’il laisse découvrir. Le jeu ne complète pas sa biographie à sa place et
ne publie pas ses informations privées dans l’accueil ou le lore.
Les joueurs peuvent ainsi devenir des auteurs reconnaissables dans l’histoire
de leur serveur. Cette direction ne donne aucun rôle particulier au créateur
du mod dans la fiction, ni ne transforme les anciens en comptes de joueurs.
Leur statut et leurs visites gardent le [cadrage du lore](histoire-steve-galactium.md#présences-de-passage).
Un futur essai devra vérifier l’ordre fiche → initialisation → apparition,
l’absence de texte narratif et de glyphes avant la fiche, l’attente d’un
emplacement validé par le serveur, une première entrée avec bio vide, une bio publique,
une demande d’ami en attente puis acceptée, un retrait et un changement de
pseudo/skin conservant le même profil. Pour l’accueil, vérifier un seul
« helloworld » à la première apparition effective, aucun en cas d’interruption
avant apparition, puis l’annonce ordinaire après reconnexion et redémarrage.
Vérifier également une palette de 20 teintes, deux choix simultanés de la même
couleur, sa conservation hors ligne et après changement de faction, un profil
sans faction ni prestige et le suffixe romain d’un prestige réel.
Aucun de ces parcours n’est livré ici.
+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é.
+96
View File
@@ -0,0 +1,96 @@
# beta.058 — altitude de la carte
Ticket `codex/atlas-altitude-beta058`.
## Contrat avant implémentation
Deux boutons ↑ / ↓ sous Recentrer et le zoom choisissent les plafonds
0, 140, 280, 420, 560 et 640. La carte ouvre à 640 (surface habituelle) ;
chaque plafond montre le premier bloc coloré situé à cette altitude ou plus
bas. C'est une coupe horizontale : une roche coupée reste visible, sans
chercher automatiquement une grotte. Le dernier pas fait 80 blocs.
La position et le zoom ne changent pas. Les extrémités désactivent leur bouton.
Chunks et Demeure sont désactivés par défaut, réactivables par leurs boutons.
Le cadre central et ses quatre panneaux assombris sont retirés. Le nord
conserve son emplacement.
Les relevés restent personnels et utilisent le même masque d'exploration
horizontal qu'auparavant. Les six plafonds sont relevés lors des nouvelles
visites, même avant l'achat de Grande carte. Aucun chunk distant n'est chargé
ou généré. La vue opérateur inspecte seulement les chunks chargés et n'inscrit
pas ses consultations dans les découvertes personnelles.
## Contrat de données additif
Le fichier existant `data/sanctuary-atlas/<UUID>.json` et son schéma 2 restent
la référence de la surface à 640. Aucune conversion ni réinterprétation des
anciens pixels. Les cinq autres plafonds utilisent le même format dans des
fichiers distincts `data/sanctuary-atlas/layers/<UUID>/<altitude>.json`.
Les anciens relevés de surface ne permettent pas d'inventer leurs couleurs
inférieures : ces dernières apparaissent lors des revisites. Un retour à
beta.057 ignore simplement les fichiers supplémentaires ; la surface reste
lisible. Aucun monde personnel n'est ouvert ou modifié pendant le travail.
Chaque plafond conserve la limite de 16 384 chunks. Le client ne garde que
la couche affichée ; le token réseau change avec l'altitude, empêchant les
anciens paquets de repeindre une autre couche. Le protocole `atlas_request`
ajoute un plafond validé : client et serveur doivent avoir la même version.
Le serveur relève un chunk à la fois et saute les sections entièrement vides.
Les sauvegardes périodiques des couches sont étalées dans le temps.
## Vérifications
Le parcours natif `Atlas058ClientChecks` réussit sur la version finale en **1 min 44 s**, avec un
vrai monde de développement Sanctuary de 640 blocs de haut :
- couleurs différentes aux six plafonds, coupe inclusive, verre transparent,
colonne vide, accord entre le relevé d'une couche et celui des six couches ;
- absence de chargement d'un chunk distant et masque d'exploration conservé ;
- clics réels sur les boutons, limites 0/640, changement rapide, rejet des
anciens paquets terrain et Demeure, cadrage/zoom stables après rafraîchissement ;
- relecture des six fichiers, absence de réécriture quand rien ne change,
achat de Grande carte après relevé, refus d'une requête opérateur non autorisée ;
- codec réseau, refus des altitudes invalides, libellés FR/EN, petite interface ;
- Chunks/Demeure désactivés à l'ouverture mais réactivables, absence du cadre
assombri et emplacement du nord conservé (captures inspectées).
Commande :
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryAtlas058ClientTests=true \
-PsanctuaryQuickTests=true
```
Journal : `build/atlas058-client.log`, marqueur `ATLAS058_PASS`.
Captures inspectées : `build/atlas058-evidence/`.
Le brouillard reste horizontal, comme dans les cartes existantes : ce lot
n'introduit pas de visibilité optique ni de journal de découverte par caverne.
Demeure reste une empreinte de chunk, sans séparation verticale des bâtiments.
Au plafond maximal, les pixels de surface restent compatibles ; les anciens
parcours ne sont pas reconstruits aux autres altitudes sans revisite.
La charge d'un serveur rempli pendant une saison n'a pas été mesurée. Le
plafond théorique est de 24 Mio de couleurs brutes par joueur pour six couches
pleines, hors index et sérialisation, contre 4 Mio pour la surface seule.
Chaque fichier reste borné à 12 Mio ; un fichier invalide est préservé et
suspend l'atlas du joueur concerné. Les sauvegardes tournent sur les six
couches toutes les 12 secondes, puis sont vidées à la déconnexion/fermeture.
Aucun serveur dédié démarré, aucune EULA acceptée.
## Livraison vérifiée
`check build assemblePack assembleTestPack`, avec compilation des tests client
et exclusion du serveur dédié `runGameTest`, réussit en **2 min 23 s**
(`build/atlas058-check.log`). 1 601 classes du JAR correspondent au build.
ZIP, versions, ressources, isolation du mod de test et JAR embarqués contrôlés.
JEI et le code Demeure sont inchangés. Les archives beta.057 restent intactes.
- Pack normal : `build/Sanctuary-beta.058.mrpack`, 5627223 octets ;
SHA-256 `bc9af60be020fd32f99a173638e9006cab128cf942df666e34e03824bac6f892`.
- Pack de test : `build/Sanctuary-Test-beta.058.mrpack`, 5646157 octets ;
SHA-256 `010eb08df83117669d2f13d3c2e8641c965fac3ddec11fbab419f01a9cb94942`.
- Reçu : `build/atlas058-artifact.json`.
Aucune publication de canal ni synchronisation d'instance personnelle.
+118
View File
@@ -0,0 +1,118 @@
# MAP-01 — carte Sanctuary native, beta.005
Ticket autorisé le 13 septembre 2026, branche `codex/native-map-beta005`.
Carte de dessus écrite dans Sanctuary, inspirée des interactions de Xaero
(glisser, zoomer, se recentrer). Aucun code, asset ou dépendance Xaero repris.
## Comportement livré
Le Blocodex ouvre une carte de surface de l'Overworld : nord en haut, terrain
coloré, position et orientation de l'habitant, déplacement, zoom, recentrage.
L'aptitude **Grande carte** coûte provisoirement 4 niveaux, configurables.
L'exploration commence avant cet achat, conformément au choix du créateur.
La mini-carte, les marqueurs et le partage volontaire entre habitants restent
des tickets distincts. Aucun partage automatique de découvertes.
La vue habitant affiche ses propres relevés. La vue opérateur est un choix
explicite contrôlé par le serveur (`COMMANDS_GAMEMASTER`, commandes autorisées
en solo). Elle peut inspecter les chunks déjà chargés, sans les inscrire dans
les découvertes personnelles et sans charger/générer de terrain supplémentaire.
La carte représente la surface supérieure, sans carte des grottes ni radar.
Les couleurs de création d'habitant affichent des noms FR/EN (Azur,
Pamplemousse, Sauge…) associés à leur teinte, en caractères Minecraft normaux.
Les boutons et leur texte coloré restent natifs ; l'attribution RGB ne change
pas. Les longs noms disposent du défilement et de l'infobulle vanilla.
La carte laisse le monde évoluer pendant sa consultation, y compris en solo.
## Contrat de sauvegarde et migration, écrit avant le code
Les identifiants, chunks, graines et contrats de génération sont inchangés.
Seuls les mondes dont la progression Sanctuary est déjà active participent.
L'attachement `sanctuary:progression` passe du schéma 1 au schéma 2 : ajout du
booléen `atlas`, initialement faux. Le lecteur valide les anciens champs et
l'historique puis les conserve ; un prochain achat écrit le schéma 2. Les rangs,
l'aptitude Noms, les coûts déjà payés et dates ne changent pas. Les morts et
reconnexions conservent l'achat de Grande carte. Aucun prestige introduit.
`progression.json` schéma 1 reste accepté sans réécriture : `atlasCost` vaut 4
par défaut. Les nouvelles configurations utilisent le schéma 2 et ce champ.
Pour régler le prix dans un ancien fichier, passer `schema` à 2 et ajouter
`"atlasCost": 4` (ou le prix voulu), en conservant les autres valeurs.
Des fichiers additifs `data/sanctuary-atlas/<UUID>.json` (schéma 1) conservent
les relevés de surface de l'Overworld, liés à l'UUID et à la graine. Une tuile
contient 16×16 couleurs de carte vanilla. Les relevés portent sur les chunks
chargés dans un rayon de deux chunks autour de l'habitant, progressivement.
Il s'agit d'une proximité cartographiée, pas d'une visibilité optique exacte.
Les revisites actualisent le terrain ; les zones lointaines restent le dernier
relevé. Les parcours antérieurs à beta.005 ne peuvent pas être reconstitués.
Écriture atomique périodique et à la déconnexion/fermeture ; les derniers relevés
peuvent être perdus lors d'un arrêt brutal. Une limite de 16 384 chunks par
habitant borne ce premier lot ; une carte pleine reste consultable et signale
qu'elle ne peut plus ajouter de zones. Un fichier invalide est conservé et
désactive la carte concernée, sans effacer les données ni bloquer les autres.
Avant une utilisation dans une sauvegarde personnelle, conserver une sauvegarde
complète. Un retour à beta.004 exige la copie antérieure à la migration : son
lecteur de progression ne connaît pas les achats `atlas`. Aucun monde personnel
n'est ouvert par ce ticket, les essais utilisent des mondes de développement.
## Vérification
- `./gradlew check build -PsanctuaryFocusedTests=progression,map` : contrats
de progression et de relevés, et **7/7 tests natifs serveur** réussis.
- `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryProgressionClientTests=true` : réussi, **1 min 46 s**. Vrai client,
création avant spawn, noms de couleurs FR, achat réel de Grande carte,
relevés antérieurs à l'achat, zoom/glisser/recentrer, GUI 320×240 et autres
tailles, commandes désactivées puis activées, inspection explicite,
révocation et effacement des tuiles opérateur, retour au menu pause,
mort et redémarrage du même monde de test.
- La maquette archivée et les packs beta.003/004 restent immuables.
- Captures : `build/beta005-preview/`. Logs : `build/beta005-client.log`,
`build/beta005-check-build.log`, `build/beta005-delivery.log`.
Les essais ne mesurent pas encore une charge de 30 joueurs ni la durée d'une
saison complète. La suite générale garde les deux assertions worldgen
historiques signalées en beta.004 (hauteur 384 attendue contre 640 et support
de sédiment seed 0) ; ce lot n'a pas modifié la génération.
## Tester
Installer le pack beta.005 côté client et la même version côté serveur.
Dans le Blocodex (**B** ou **Échap**), acheter **Grande carte** dans Progression,
puis ouvrir **Monde → Grande carte**. Glisser pour déplacer, molette ou boutons
pour zoomer, Recentrer ou Début pour revenir au joueur. Les flèches déplacent
la vue. Une zone noire n'est pas encore relevée ; le vide relevé est bleu sombre.
Le relevé complet des environs immédiats prend environ cinq secondes.
Avec les commandes autorisées en solo ou les droits opérateur, ouvrir la même
carte puis choisir **Vue opérateur**. Cet accès ne nécessite pas l'achat de
l'aptitude ; revenir à **Vue habitant** retrouve ses seuls relevés et l'exigence
de l'aptitude. L'inspection ne charge pas de terrain distant : une zone absente
peut simplement ne plus être chargée côté serveur.
Les relevés couvrent l'Overworld supérieur, par proximité de deux chunks, sans
reconstituer les parcours antérieurs à beta.005. Les marqueurs, mini-carte,
partages, grottes, statistiques/advancements dans le Blocodex, filtrage des blocs
inconnus et vitrines/favoris de l'habitant restent les prochains tickets.
## Livraison locale vérifiée
`./gradlew check build assemblePack -PsanctuaryFocusedTests=progression,map`
réussit en 4 min 09 s ; **7/7 tests natifs serveur**. Export packwiz puis
vérification du ZIP, JAR embarqué, versions internes, dépendance Fabric API,
index packwiz, libellés FR/EN, six icônes originales et absence du mod de test.
- MRpack : `build/Sanctuary-beta.005.mrpack`, 2 248 215 octets.
- SHA-256 : `4a71465349af334b5bdeed4b0cc42dbef55de94e6acb7f0ab798cda477e6dc0e`.
- Reçu : `build/atlas005-artifact.json`.
- JAR : `mods/sanctuary/build/libs/sanctuary-beta.005.jar`.
Les empreintes des MRpacks beta.003/004 et des deux ZIP d'archives Web v1 sont
inchangées. Aucune publication distante, synchronisation Prism ou installation
sur un serveur personnel n'a été effectuée.
+82
View File
@@ -0,0 +1,82 @@
# MAP-03 — Carte immersive — beta.007
Branche : `codex/atlas-immersive`. Cible : Minecraft **26.3-pre-2**, Fabric
Loader **0.19.5**, Fabric API **0.160.0+26.3**. Livraison locale d'essai.
## Résultat
**B → Monde → Grande carte** utilise toute la surface de l'écran. La carte
continue sous les onglets, les commandes et le pied de page. Le carré central
reste clair ; les abords sont assombris par des panneaux translucides. Le carré
ne limite ni le terrain ni les gestes de navigation.
Journal, recentrage et zoom sont superposés à gauche ; vue habitant/opérateur,
grille de chunks et empreintes Demeure à droite. Le titre et les onglets natifs
restent en haut, **Done / Terminé** en bas. Les coordonnées sous le pointeur,
le zoom et la vue active sont affichés en bas à gauche sur un fond contrasté.
Les autres écrans du Blocodex gardent leur cadre.
Le glisser-déplacer et la molette fonctionnent sur les zones sombres jusqu'aux
bords de l'écran. Les boutons gardent la priorité sur la carte, même lorsqu'ils
sont désactivés. Grille, empreintes et indicateur du joueur utilisent les mêmes
coordonnées que le terrain. Le zoom minimal s'adapte à la taille du GUI pour
préserver la couverture de la fenêtre cartographique de 1 024 × 1 024 blocs.
## Transparence et données
L'inconnu et le vide observé sont transparents dans la texture ; le fond natif
du jeu reste visible derrière. Leurs états restent distincts dans les relevés.
La grille peut traverser une zone transparente lorsqu'elle est activée ; les
empreintes ne peignent que les pixels de terrain effectivement connus.
Les relevés personnels, l'exploration avant l'achat de Grande carte et le
brouillard de beta.006 sont conservés. La vue opérateur reste une action
explicite vérifiée par le serveur. Un changement de vue ou une révocation
efface l'image précédente avant son prochain rendu.
Ce ticket modifie le rendu et les entrées client. Il ne change ni les formats
de sauvegarde, ni le protocole des relevés, ni le terrain ou les expansions.
Demeure garde son rôle d'empreinte, sans réservation ni protection. Mini-carte,
marqueurs et partage restent dans leurs tickets respectifs.
## Vérifications et artefact
- Client Minecraft natif :
`./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryProgressionClientTests=true`
réussi en **1 min 51 s**. Paquets réels, achat de Grande carte, texture alpha,
molette et gestes via `MouseHandler`, glissements successifs et dans les quatre
marges, priorité des boutons, recentrage, grille, empreintes, changement de
rôle, révocation, fermeture native et retour au Blocodex vérifiés.
- Captures inspectées à **640×480**, **1280×720** (GUI automatique),
**1920×1080** (échelles 1 et 3), ainsi qu'en français. Les boutons ne se
chevauchent pas. La vue opérateur montre le terrain continu derrière le
haut, le bas et les côtés. Captures conservées dans `build/beta007-preview/`.
- Un premier passage a détecté que `AbstractWidget.isMouseOver` ignore les
boutons désactivés : leur zone laissait passer la molette. Le calcul utilise
désormais les limites du bouton visible ; le parcours complet a été relancé
avec succès. Journaux `build/beta007-client.log` (diagnostic) et
`build/beta007-client-final.log` (validation).
- `./gradlew check build assemblePack -PsanctuaryFocusedTests=progression,map,demeure`
réussi en **4 min 4 s**, dont **8/8 tests natifs serveur**. Les contrôles de
contrats Atlas/Demeure et de progression passent également. La sélection
native est ciblée ; les deux assertions worldgen générales déjà connues en
beta.003/005 ne sont pas revendiquées corrigées. Journal :
`build/beta007-delivery.log`.
- MRpack exporté avec packwiz puis vérifié : CRC ZIP, contenu exact, identité
des JAR construits, versions internes, dépendance Fabric API, index packwiz,
notices et licence Demeure, 378 clés FR/EN alignées et six icônes originales.
Les exports beta.003, .004, .005 et .006 conservent leurs empreintes.
## Artefact d'essai
[Sanctuary-beta.007.mrpack](../build/Sanctuary-beta.007.mrpack), **2 299 820 octets**.
Demeure reste embarqué dans le JAR Sanctuary ; aucun ajout manuel nécessaire.
- SHA-256 MRpack : `bc082e9143e15aea8f231b1205ed5e27cd9bf7b4e6a81d4895f69ff2a11e660d`.
- SHA-256 Sanctuary : `7d14d6019176f0d413dfe27a2b0e9a8fe419ed88aad812d9c045dfb13f809752`.
- SHA-256 Demeure : `70108b80df46e4dbcf2540b7a260b1c247bb8ea28db684f49b15b407d8853e43`.
Reçu : `build/atlas007-artifact.json` ; vérificateur :
`build/verify-beta007-pack.py`. Export local uniquement. Aucun monde personnel,
canal de publication ou instance Prism n'a été modifié.
+85
View File
@@ -0,0 +1,85 @@
# beta.059 — bannières et cartes au trésor
Ticket `codex/atlas-markers-beta059`. Prolonge les altitudes et l'affichage
sans cadre de beta.058.
## Contrat avant implémentation
- Un clic droit sur une bannière, main vide ou avec une carte remplie, ajoute
son repère personnel à l'atlas. Le même geste le retire ; la couleur et le
nom renommé sont repris. Une carte native tenue continue aussi son propre
enregistrement vanilla. Aucun achat supplémentaire : l'observation peut
précéder l'aptitude Grande carte, qui reste nécessaire pour ouvrir l'atlas.
- Utiliser une carte au trésor remplie importe ses repères dans la World Map.
La carte physique reste disponible pour être partagée. Les cartes natives
d'exploration et leurs bannières sont prises en charge ; leur terrain n'est
pas copié dans le brouillard personnel.
- Les trésors des îlots miniers sont lus dans le plan aérien déjà chargé et
sauvegardé, sans nouvelle recherche ni génération. Les opérateurs les voient
automatiquement. Un client normal ne reçoit jamais les coordonnées des
trésors qu'il n'a pas importés depuis une carte.
- Les deux navires fournissent des cartes vers les premiers îlots miniers.
Les coffres miniers peuvent donner la carte de l'îlot suivant, notamment
le troisième des mondes Grand. Ce sont des cartes Minecraft remplies avec
le marqueur de trésor natif, sans nouvel objet ni texture.
- Les repères utilisent les sprites de carte Minecraft. Les bannières nommées
ont leur texte ; le survol donne le nom et les coordonnées. Un point dont
l'altitude est connue disparaît sous un plafond inférieur à ce point.
Les cartes natives sans altitude restent visibles sur tous les plafonds.
## Données et mondes existants
Fichier personnel additif `data/sanctuary-atlas/markers/<UUID>.json`, schéma 1,
lié à l'UUID et à la graine. Les journaux de terrain, couches, monde et plans
restent inchangés. Limite de 512 repères ; écritures atomiques et conservation
d'un fichier invalide. Reconnexion et prestige ne suppriment pas les repères.
Un retour à beta.058 ignore ce fichier sans conversion.
Les trois tables de butin aériennes conservent leurs objets et les quantités
qu'elles déclarent, et ajoutent une carte. Leurs anciens champs `functions`
/ `function`, ignorés dans cette version, sont adaptés en `modifier` / `type`
pour appliquer effectivement ces quantités et la création de la carte.
Seuls les coffres dont le butin n'a pas encore été généré utilisent ces tables ;
aucun coffre déjà ouvert n'est rempli, aucun contenu existant n'est réécrit.
Les coffres et positions sont ceux des plans d'origine, sans migration de
structures, de chunks ou de graine. Les tests ne touchent que des mondes de
laboratoire. Aucune publication ou installation personnelle implicite.
## Vérifications
- `atlas059Smoke` : persistance Unicode, isolation UUID/graine, limite de
512 repères, suppression, absence de réécriture sans changement, filtrage
du cadrage et de l'altitude, conservation des fichiers corrompus.
- Parcours client Minecraft 26.3-pre-2 sur un monde Sanctuary de laboratoire,
graine 42, taille moyenne, structures activées : clic droit réel sur une
bannière renommée, retrait et ajout, changement de nom, import depuis une
carte en main gauche, lecture des trois tables de butin natives, quantités
conservées, cartes dirigées vers les deux coffres du plan, utilisation
physique de la carte au trésor, conservation de l'objet et absence de doublon.
- Le client normal reçoit uniquement le trésor découvert. Le mode opérateur
montre les deux sans les enregistrer ; sa désactivation et un paquet tardif
ne rétablissent pas les coordonnées cachées. Suppression d'une bannière
chargée, relecture du journal, codec avec altitude inconnue et libellés FR/EN
vérifiés. Sprites natifs contrôlés et captures inspectées.
- `:sanctuary:atlas059Smoke :sanctuary:runClientGameTest` réussi en 2 min 57 s,
avec `-PsanctuaryClientTests=true -PsanctuaryAtlas059ClientTests=true
-PsanctuaryQuickTests=true`. Journal : `build/atlas059-client.log`, marqueur
`ATLAS059_PASS`.
- `./gradlew check build assemblePack assembleTestPack` réussi en 2 min 9 s,
122 tâches, avec les mêmes propriétés et `-x :sanctuary:runGameTest`.
Journal : `build/atlas059-check.log`. Aucun serveur dédié ni acceptation
d'EULA ; les tests natifs utilisent le serveur intégré de développement.
- Les deux exports packwiz sont vérifiés par `build/verify-atlas059.py` :
1 607 classes conformes au build, changements limités aux classes prévues,
ressources existantes préservées hors libellés et trois tables documentées,
JEI inchangé et archives beta.058 intactes.
Archives locales : [pack normal](../build/Sanctuary-beta.059.mrpack) et
[monde plat rapide](../build/Sanctuary-Test-beta.059.mrpack).
Reçu détaillé : `build/atlas059-artifact.json` ; captures dans
`build/atlas059-evidence/`.
Le parcours natif couvre les deux trésors du monde moyen. Le troisième îlot
du monde Grand suit le même plan et la même règle de carte suivante, mais n'a
pas fait l'objet d'un second monde de test. Aucun essai avec plusieurs clients
humains simultanés ni mesure de FPS n'est revendiqué ici.
-390
View File
@@ -1,390 +0,0 @@
# Redstone 26.3 et informatique Sanctuary
**Audit de conception du 11 septembre 2026 — WG-26.** Lecture du code Java
vanilla exact, des sources Sanctuary et des références historiques, recoupée
avec les publications Mojang. Aucun composant, langage, recette ou changement
de monde n’est livré par cet audit.
Suite de conception : le [dossier Redstone Language V0.1](redstone-language-extensions.md)
propose désormais les instructions, les fiches matérielles, les périphériques
et les composants de signal/transport manquants. Ses nouveaux blocs et valeurs
d’essai restent distincts des faits vanilla vérifiés dans cet audit.
## Ce que Sanctuary change vraiment
La redstone vanilla permet déjà logique, mémoire, calcul, automatismes et
ordinateurs construits avec des blocs. Le contrôleur Sanctuary **concentre ces
circuits dans une machine reprogrammable** ; le terminal et les disquettes
permettent d’écrire, d’étudier et de partager ses programmes. L’afficheur rend
leurs résultats lisibles dans le monde.
Les nouveaux pouvoirs viennent des **appareils et des informations auxquels le
programme accède** : émettre les particules d’un objet, lire précisément un
inventaire si une interface le permet, consulter le calendrier Sanctuary, ou
demander une expansion à une installation habilitée. Une instruction de calcul
n’accorde pas à elle seule ces pouvoirs. Mojang donne déjà les ordinateurs et
Minecraft exécuté dans Minecraft comme exemples de créations redstone ; il
serait donc inexact de présenter Sanctuary comme l’invention du calcul vanilla.
[Redstone Dust — Mojang](https://www.minecraft.net/de-de/article/redstone-dust).
## Version et portée des constats
Le projet cible **Minecraft Java 26.3-pre-2**, et non une édition Bedrock ni
une version finale supposée. Le JAR local indique `stable: false`, une compilation
du 4 septembre 2026, Java 25 et data pack 120. La pre-release 3, publiée le
8 septembre, est postérieure à cette cible ; son existence ne met pas le pack
à jour. La pre-2 corrige notamment la détection de fonte de neige/glace par les
capteurs sculk ; la pre-3 touche notamment les calculs de number providers.
[Pre-release 2](https://www.minecraft.net/en-us/article/minecraft-26-3-pre-release-2),
[pre-release 3](https://www.minecraft.net/en-us/article/minecraft-26-3-pre-release-3).
L’inventaire ci-dessous couvre les familles de composants, leurs mesures et
leurs effets utiles à la conception. Il ne prétend pas énumérer tous les circuits
que les joueurs peuvent composer, ni valider chaque montage en jeu. Les nombres
précis viennent des classes 26.3-pre-2 identifiées en fin de document. Les
publications d’anciennes versions servent de contexte ; leur comportement a été
recoupé avec cette cible lorsqu’il est détaillé ici.
## Le modèle vanilla : signal, temps et matière
Une liaison redstone ordinaire porte une intensité entière **de 0 à 15**. Elle
peut représenter un booléen, un niveau, ou une valeur codée par le constructeur.
Elle ne transporte pas spontanément un nom d’objet, un texte ou une identité
de joueur. Un montage peut transmettre davantage par plusieurs lignes ou par
une séquence dans le temps ; cela exige un encodage et un récepteur.
La poudre perd un niveau en propageant le signal d’une poudre à la suivante.
Le répéteur réémet une sortie à 15 lorsque son entrée est active, avec un délai
réglable de **2, 4, 6 ou 8 ticks de jeu**. Les blocs conducteurs, les directions
et les alimentations fortes/faibles font partie du circuit : deux blocs voisins
ne sont pas automatiquement deux appareils communicants.
La simulation vise **20 ticks de jeu par seconde** au réglage normal. Un délai
de circuit suit cette simulation, avec ses pauses et ralentissements. Le futur
calendrier réel de Sanctuary est une autre source de temps : un jour de vingt-
quatre heures ne doit pas rendre chaque répéteur soixante-douze fois plus lent.
Un chronomètre devra préciser s’il mesure du temps simulé ou du temps réel.
La redstone est une commande, sans réserve d’énergie consommée à chaque impulsion.
Un four consomme son combustible et le crafter ses ingrédients ; la puissance
du signal ne les fournit pas. Le contrôleur devra de même distinguer calcul,
commande et consommation matérielle.
## Les entrées et mesures disponibles
| Famille vanilla | Ce que le circuit reçoit | Ce qu’il faut préserver dans Sanctuary |
| --- | --- | --- |
| Levier, boutons | État maintenu ou impulsion déclenchée par interaction ; certains boutons réagissent aussi aux projectiles. | Une commande locale n’identifie pas automatiquement son auteur. |
| Plaques de pression ordinaires et pondérées | Présence ou niveau dépendant des entités selon le type de plaque. | Un compte d’entités n’est pas une liste de joueurs. |
| Fil de détente et crochets | Détection sur une ligne installée. | Le parcours et les attaches ont une utilité physique. |
| Coffre piégé | Signal lié au nombre d’utilisateurs qui l’ouvrent, dont les joueurs et les golems de cuivre ; son inventaire a aussi une mesure de comparateur. | État d’ouverture et contenu sont deux informations différentes ; ce signal ne prouve pas une présence humaine. |
| Cible | Intensité liée à la précision de l’impact. | Un score de tir peut commencer par une valeur analogique, sans attribution personnelle implicite. |
| Détecteur de lumière du jour, mode inversé | Valeur issue de l’éclairage du ciel et de l’angle solaire. | Ce n’est pas une horloge civile ni un capteur générique de toute lumière artificielle. |
| Paratonnerre | Impulsion lors d’un impact de foudre. | Pas un capteur continu de pluie. |
| Observateur | Impulsion lors d’une mise à jour détectée sur la face observée. | Il ne transmet ni le contenu complet du bloc ni une explication de son changement. |
| Capteur sculk | Vibration reçue, puissance liée à la distance ; comparateur pour la fréquence de l’événement pendant l’activité. | Portée, trajet, occlusion et états du capteur comptent ; les événements ne donnent pas une identité complète. |
| Capteur sculk calibré | Filtrage par fréquence avec une entrée de calibration à l’arrière ; plus grande portée. | Une entrée électrique peut paramétrer un capteur sans lui fournir un programme. |
| Rail détecteur | Présence d’un wagon et lecture analogique de certains wagons. | Le transport lui-même peut servir de support d’information. |
Le code donne une portée de **8 blocs** au capteur sculk ordinaire et **16** au
calibré. L’activité dure respectivement **30 et 10 ticks**, puis le refroidissement
dure **10 ticks**. Le calibré filtre la fréquence lorsque son entrée de
calibration est non nulle. Ces mesures ne remplacent pas un capteur Sanctuary
de statistiques ou d’advancements.
La réception d’une vibration attend aussi que les neuf chunks du carré 3×3
autour du capteur soient présents et autorisés à simuler les blocs. Le trajet
prend `floor(distance)` ticks. La laine peut occulter la vibration et certaines
actions accroupies sont ignorées. Ce dispositif n’est pas un journal exhaustif
des actions des joueurs.
### Le comparateur mérite un inventaire à lui seul
Le comparateur compare son entrée arrière aux entrées latérales, ou soustrait
la plus forte entrée latérale. En lecture de bloc, le sens dépend du bloc lu.
Il peut déjà relier des objets usuels à des serrures, jauges et machines.
[Présentation Mojang du comparateur](https://www.minecraft.net/nb-no/article/taking-inventory--redstone-comparator).
| Bloc ou objet lu | Information disponible |
| --- | --- |
| Coffres, coffres en cuivre, tonneaux, shulkers, hoppers, droppers, dispensers, fours et alambics | Remplissage de l’inventaire, pondéré par capacité d’empilement ; pas le nom ni la quantité exacte de chaque objet. |
| Pot décoré | Remplissage de son inventaire. |
| Crafter | Nombre d’emplacements occupés **ou désactivés**, de 0 à 9 ; ce n’est pas une mesure standard de stacks pleines. |
| Bibliothèque sculptée | Dernier emplacement manipulé, pas le texte des livres. |
| Étagère — shelf | Présence des trois cases encodée par les poids 1, 2 et 4, soit 0–7, lisible à l’arrière ; ni quantité ni identité. |
| Pupitre | Position de la page dans le livre, pas son texte ; tourner la page émet aussi une impulsion. |
| Cadre et cadre lumineux | Présence et rotation de l’objet. |
| Jukebox | Valeur définie par la chanson ; la lecture du disque produit aussi un signal d’activité. |
| Gâteau et gâteau avec bougie | État du gâteau, donc parts restantes. |
| Composteur | Niveau de compostage. |
| Chaudrons d’eau/neige poudreuse/lave | Niveau ou état de remplissage prévu par la variante. |
| Ruche et nid d’abeilles | Niveau de miel. |
| Ancre de réapparition | Charge disponible. |
| Cadre de portail de l’End | Présence d’un œil ; le bloc n’est pas une pièce fabriquable librement en survie. |
| Ampoule en cuivre | État allumé mémorisé, sortie 15 ou 0. |
| Statue de golem de cuivre | Pose debout = 1, assise = 2, course = 3, étoile = 4. |
| Cœur de Creaking | Distance à son Creaking associé : `15 − floor(clamp(distance, 0, 32) / 32 × 15)` ; 0 sans associé ou à l’état déraciné. |
| Capteur sculk, rail détecteur | Fréquence de vibration ou donnée du wagon pris en charge. |
| Bloc de commande | Nombre de succès de la commande ; relève des outils administrateur, pas d’un composant de progression en survie. |
Pour les inventaires ordinaires, la mesure est **0 si vide**, sinon
`floor(14 × remplissage moyen) + 1`. Le remplissage tient compte du nombre de
cases et de la capacité des stacks. Deux contenus différents peuvent donc donner
la même intensité. Une jauge Sanctuary branchée seulement sur un comparateur
doit présenter cette mesure, sans inventer un stock exact à partir de celle-ci.
Les étagères et statues, apparues avec The Copper Age, sont bien présentes dans
la cible 26.3. Une étagère alimentée permet, lors de l’interaction du joueur,
d’échanger plusieurs emplacements avec sa barre rapide ; jusqu’à trois étagères
connectées permettent l’échange de cette barre. La redstone seule n’effectue
pas le clic du joueur. Ces objets offrent déjà des interfaces diégétiques.
[The Copper Age — publication Java](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-21-9).
## Ce que la redstone permet de construire et d’actionner
| Famille | Capacité vanilla | Limite ou nuance utile |
| --- | --- | --- |
| Poudre, blocs conducteurs, bloc de redstone | Transport et source constante de signal. | Intensité et orientation ; pas un câble de données riches par défaut. |
| Torches, répéteurs et comparateurs | Inversion, seuil, soustraction, délai, isolation, verrouillage. | Leur composition permet portes logiques, additionneurs, compteurs et séquenceurs. |
| Boucles et mémoires construites | Horloges, impulsions, bascules, registres, stockage et machines de calcul. | Emprise, temps de propagation et mises à jour réelles. La liste des constructions possibles n’est pas fermée. |
| Ampoule en cuivre | Bascule d’état à chaque nouvelle alimentation, état conservé sans signal maintenu. | Source lumineuse et mémoire simple ; elle ne module pas sa luminosité selon 1–15 comme le débit du particuleur. |
| Pistons, pistons collants, slime et miel | Déplacer des blocs, ouvrir des portes, déplacer des entités et construire des machines mobiles. | Limite de poussée de 12 blocs ; blocs non déplaçables et réactions spécifiques. La cible Java refuse le déplacement des block entities. |
| Portes, trappes, portillons | Commander des passages, des accès et des montages utilisant l’eau. | Les variantes gardent leurs règles d’interaction ; pas de téléportation générique. |
| Rails ordinaires, propulseurs, détecteurs et activateurs | Aiguiller, déplacer/freiner, détecter ou agir sur les wagons adaptés. | Chaque type remplit un rôle ; les occupants et inventaires restent physiques. |
| Hopper et wagons à inventaire | Transporter, aspirer et distribuer des items ; verrouiller un hopper par redstone. | Faces, inventaires admissibles, temps de transfert et capacité réelle. |
| Dropper | Tenter de déplacer un item vers l’inventaire en face ; sans inventaire, le lâcher dans le monde. | Si l’inventaire trouvé refuse l’insertion, l’item reste dans le dropper. Ne reproduit pas toutes les actions d’un clic droit. |
| Dispenser | Exécuter une action définie pour l’objet : projectiles, seaux, poudre d’os, allumage, tonte, etc. | L’objet doit avoir un comportement prévu ; il ne sait pas utiliser arbitrairement tout nouveau bloc. |
| Crafter | Tenter une fabrication à chaque nouvelle impulsion, à partir des ingrédients de ses neuf cases. | Une recette valide est nécessaire. La grille peut être configurée ; l’ordinateur ne serait pas l’invention de l’auto-craft. |
| Fours, alambics, composteurs et fermes | Chaînes de transformation alimentées et surveillées ; récolte par combinaisons mécaniques. | Leurs recettes, combustibles, temps et mécanismes de croissance restent nécessaires. |
| Lampes, blocs musicaux, jukebox, cloche | Voyants, sons, musique, alarmes et animations construites. | Son, lumière et durée ont leurs propres règles. Un signal de bloc musical ne choisit pas sa note par une valeur arbitraire. |
| TNT et projectiles | Déclenchement d’explosions, propulsion, pièges et récoltes selon le montage. | Consommation, dégâts et règles de drops ; le calcul ne crée pas gratuitement la matière. |
| Eau, bulles, portails, perles de l’End | Transport et mécanismes indirects que des circuits peuvent déclencher ou organiser. | Pas d’opération vanilla ordinaire « générer un continent à ces coordonnées ». |
| Allays, villageois, golems de cuivre | Collecte, récolte ou tri matériel selon les comportements de ces entités. | Ce sont des acteurs du montage, pas des CPU adressables par un programme vanilla. |
Le crafter utilise déjà la chaîne **ingrédients → impulsion → résultat**, avec
des hoppers possibles en alimentation. Le contrôleur pourra gérer le moment
et la quantité de production ; il n’a pas besoin de remplacer ce bloc.
[Guide Mojang du crafter](https://www.minecraft.net/en-us/article/crafting-crafter).
Quelques cadences vérifiées : le dropper et le crafter programment leur action
quatre ticks après une nouvelle alimentation ; un signal maintenu ne suffit
pas à les faire répéter indéfiniment. Le hopper a un refroidissement de huit
ticks après un transfert réussi ; il peut pousser puis aspirer dans un même
cycle, et un ramassage au sol peut intégrer une pile. Il serait inexact de
résumer tous ces appareils à « un item par tick ».
Le golem de cuivre recherche ses coffres jusqu’à 32 blocs horizontalement et
huit verticalement, prend au plus 16 objets, et dépend d’un chemin praticable.
Il prélève dans les coffres en cuivre et dépose dans des coffres ordinaires ou
piégés vides ou contenant le même type. Ce tri est déjà une capacité vanilla ;
les futurs services payants des villageois de Sanctuary sont un autre chantier.
Le dispenser 26.3-pre-2 a des comportements explicites pour les projectiles,
les bateaux et wagons, les seaux, le briquet, la poudre d’os, la TNT, certaines
constructions d’entités, les shulkers, bouteilles, glowstone, cisailles, brosse,
rayons de miel et certaines potions. Les objets équipables ont également leurs
règles. Cette liste de comportements spécialisés explique pourquoi **accepter
un item par dropper** et **être activé par un dispenser** sont deux contrats.
### Les particularités Java à ne pas effacer
Les mises à jour de blocs et leur ordre font partie du fonctionnement des
circuits. La quasi-connectivité existe notamment pour pistons et
dispensers/droppers : l’alimentation peut être détectée au-dessus, avec des
conditions de mise à jour. Cela ne signifie pas que tous les nouveaux appareils
doivent l’adopter. Leurs faces, leur émission et leur réaction aux impulsions
devront être spécifiées et essayées avec des circuits vanilla.
Le code contient un évaluateur de poudre alternatif derrière
`FeatureFlags.REDSTONE_EXPERIMENTS`. Sa présence dans le JAR ne prouve pas que
tous les mondes l’activent. L’audit ne modifie aucune option expérimentale.
L’activité dépend également des chunks et des entités effectivement simulés ;
la présence d’un ordinateur ne donne pas automatiquement un chargement permanent.
### Commandes et data packs : une autre couche du vanilla
Les commandes, fonctions de data packs, scoreboards et entités d’affichage
permettent déjà du calcul, du texte dynamique, des particules et des effets
sur le monde. Il serait faux d’affirmer que Minecraft ne sait jamais faire ces
choses. Mais leur mise en place relève de l’auteur de carte ou de l’administration,
pas d’un ordinateur fabriqué puis programmé librement par un joueur en survie.
Dans la cible, `/particle` et `/compute` exigent la permission de game master ;
l’édition d’un bloc de commande vérifie aussi ce droit.
La différence Sanctuary est de rendre certaines possibilités **constructibles,
apprenables et reproductibles dans la partie**, à travers des appareils avec
leurs règles. Le Redstone Language n’est pas une console de commandes opérateur.
## Comparaison avec le socle Sanctuary
| Élément Sanctuary | Ce qu’il rend plus pratique | Ce qu’il ajoute réellement | Statut |
| --- | --- | --- | --- |
| Contrôleur | Logique, compteurs, conditions, séquences, mémoire et calcul en peu de blocs. | Programme modifiable, processeur et RAM intégrés, six faces d’E/S. | Direction retenue ; architecture et cadence à concevoir. |
| Terminal | Concevoir, examiner et corriger un montage logique. | Éditeur d’assembleur, assemblage, inspection de RAM/registres et chargement de programmes. | Retenu ; pas de bloc Assembleur séparé. |
| Disquette | Réutiliser et transmettre une solution. | Programme porté par un objet que l’on peut trouver, copier et échanger. | Retenu ; recettes, capacité et copie à définir. |
| Afficheur | Lire compteurs, jauges et états sans une grande matrice de lampes. | Texte dynamique programmable, écran rectangulaire connecté, huit lignes par bloc en hauteur. | Retenu ; connexion aux données et limites à concevoir. |
| Particuleur | Produire des effets décoratifs contrôlés dans une construction. | Objet-échantillon choisissant les particules ; signal réglant leur débit. | Direction précisée ci-dessous ; pas de portage livré. |
| Lecture précise d’inventaire | Comptage, tri et coordination de production. | Accès structuré aux types et quantités, au-delà du comparateur. | Interface à concevoir ; pas un effet automatique de la RAM. |
| Calendrier et progression | Tableaux, objectifs, événements et suivi. | Données serveur Sanctuary consultables par des programmes. | Sources et droits à concevoir ; un capteur physique ne les invente pas. |
| Installation Galactium | Orchestrer un projet collectif. | Demande d’expansion avec conditions matérielles, charge collective et résultat persistant. | Moteur d’expansion existant ; raccord jouable au programme absent. |
| Convoyeurs, stockage titane, Chunky | Logistique visible, stockage consultable et activité permanente choisie. | Appareils supplémentaires avec matériaux, portée et progression propres. | Vision future ; ne sont pas acquis par le seul achat du contrôleur. |
Le langage de calcul envisagé est un assembleur **8 bits**, avec RAM adressable.
Les valeurs internes 0–255 ne changent pas les faces électriques 0–15. Texte,
coordonnées et gros compteurs demandent une représentation ou un protocole
adapté. Un CPU 8 bits n’impose pas une RAM de 256 octets ; sa capacité reste à
choisir dans le [cahier informatique](langage-et-machines.md).
La sauvegarde proposée porte sur l’état complet : programme, position d’exécution,
registres, RAM et attentes. Les anciens ordinateurs locaux sauvegardaient une
partie de cet état, mais recréaient le CPU au début de chaque tick. Ils sont
des références à reprendre, pas une preuve que la nouvelle exécution continue
est déjà disponible. Voir la [lecture du Redstone Computer](redstone-computer-reference.md).
## Trois échanges à définir séparément
| Échange | Exemple | Contrat |
| --- | --- | --- |
| Signal redstone | Le contrôleur sort 7 vers le particuleur, ou une impulsion vers un dropper. | Faces, valeur 0–15, maintien/impulsion, cadence et mises à jour. |
| Objet physique | Un hopper/dropper apporte un échantillon au particuleur. | Inventaire source, place libre, faces d’insertion/extraction et transfert effectif. |
| Donnée ou commande de périphérique | Le contrôleur écrit du texte sur l’afficheur ou lit un inventaire exact. | Connexion identifiée, données accessibles, résultat et actions permises. Ce protocole reste à concevoir. |
Le minimum peut utiliser une connexion adjacente entre appareils compatibles,
sans imposer un nouveau bloc de bus. Une communication riche par poudre ou entre
contrôleurs distants demeure possible à concevoir, mais exige son propre protocole.
Un signal redstone ne transporte pas à lui seul un `ItemStack`.
Exemple : **coffre → comparateur → contrôleur → particuleur**. Le programme peut
utiliser l’intensité reçue pour régler le débit de fumée. Il connaît alors un
niveau de remplissage, pas « 128 lingots de fer ». Cette dernière information
demanderait une lecture explicite de l’inventaire, donc une capacité supplémentaire.
## Particuleur : contrat clair et montages
**Retenu : un objet inséré au clic droit choisit les particules. Plus le signal
est fort, plus l’appareil émet de particules.** Le contrat de travail utilise
0 pour arrêter, puis un débit croissant de 1 à 15. La courbe, la cadence maximale
et l’orientation de sortie restent à définir. Cette variation concerne le
nombre de particules dans le temps ; elle n’impose pas un changement de taille,
de vitesse ou de portée.
L’insertion par **dropper** est demandée. Le **hopper accolé** est le candidat
vanilla proposé pour l’alimentation continue. Le contrôleur peut régler le
débit par une face électrique ordinaire, commander le dropper, ou verrouiller
le hopper. Un éventuel transfert direct par le contrôleur demanderait une
fonction de manipulation d’inventaire ; il ne fait pas apparaître un objet.
**Proposition minimale : un emplacement d’échantillon.** Clic droit pour insérer
ou remplacer en rendant l’ancien objet, main vide pour retirer. Je recommande
de conserver l’échantillon pendant l’émission pour en faire un matériau de
réglage d’un appareil décoratif ; sa consommation n’est pas encore décidée.
Pour changer de particule automatiquement, prévoir une extraction puis une
insertion réelles. Le transfert ne doit pas détruire l’échantillon précédent.
Le code historique `26.2/redstoner` possède déjà une table de correspondances,
un slot, le remplacement manuel et l’insertion automatisée. Il **refuse
l’extraction automatisée** ; reprendre cette règle telle quelle bloquerait le
changement automatique d’échantillon. Il augmente aussi vitesse et fréquence,
et produit un nuage par défaut, même sans échantillon : ces détails historiques
ne sont pas validés pour le nouveau particuleur.
| Échantillon | Correspondance historique utilisable comme proposition |
| --- | --- |
| Charbon de bois | Fumée. |
| Bloc musical | Notes. |
| Perle de l’End | Particules de portail. |
| Mousse | Spores. |
La nouvelle table doit être explicite et extensible ; elle ne suppose pas que
chaque item possède une unique « particule naturelle ». **Proposition : vide =
aucune émission**, et règle explicite pour les objets non reconnus. Un comparateur
de présence pourrait être utile ; il resterait facultatif. Les effets sont
proposés comme visuels : une particule de flamme n’allumerait pas un incendie.
Les scènes possibles sont simples à composer :
- un atelier émet plus de fumée quand un stock ou une activité augmente ;
- une arrivée déclenche une courte émission par plaque de pression ;
- une installation montre attente, activité et fin par plusieurs émetteurs ;
- un programme séquence musique, lampes et particules pour un spectacle ;
- un réseau d’items change l’échantillon, tandis que le programme règle le débit.
Le particuleur doit rester utilisable avec un levier ou un comparateur seul.
Le contrôleur apporte les variations dans le temps et la coordination. Les
ruines peuvent montrer ces usages en fonctionnement, sans panneau explicatif.
## Où garder la puissance de construction
**Recommandation :** les programmes calculent et coordonnent ; les blocs et
installations conservent les opérations physiques. Le contrôleur choisit quand
fabriquer ; le crafter fabrique avec ses ingrédients. Le contrôleur compte les
impulsions ; le hopper déplace les objets. Le contrôleur choisit un débit ; le
particuleur émet. Une interface supplémentaire peut enrichir cette relation,
mais ses possibilités doivent être explicites.
Cela rend la programmation puissante sans faire disparaître les chemins,
coffres, rails, fermes et ateliers que les joueurs aiment construire. De petites
machines restent utiles sans ordinateur ; plusieurs contrôleurs peuvent former
une installation plus élaborée lorsque leurs connexions sont définies.
Pour Galactium, le programme pourra calculer et soumettre une demande ; le
serveur devra vérifier installation, charge collective, ressources et emprise.
Le moteur actuel possède réservation, préparation progressive et reprise ; il
ne fournit pas encore ce parcours de survie. Une instruction ne remplace pas
les étapes de progression et ne permet pas de réécrire librement les blocs ou
les sauvegardes. Voir le [raccord d’expansion](langage-et-machines.md#ce-que-le-moteur-fournit-déjà-et-ce-qui-manque).
## Points à éprouver avant livraison
Le premier essai jouable pourrait réunir un contrôleur, un terminal, une
disquette, un coffre avec comparateur, un afficheur et un particuleur. Il
vérifierait un programme lisible et copiable, une jauge honnête, un débit modulé
et la reprise de son état. Le particuleur doit aussi réussir son essai autonome.
Ce parcours est proposé ; il ne lance pas de nouvelle livraison.
Les règles à arrêter portent sur les transitions de signal, les connexions,
la cadence CPU, les transferts, la reprise et les états d’erreur. Calculer
beaucoup d’instructions et déplacer beaucoup d’objets sont deux coûts distincts.
Une émission décorative doit également rester supportable pour les clients :
limites par appareil et par zone, synchronisation et génération visuelle à définir.
Ni le programme ni le particuleur ne donnent un chargement de chunk permanent ;
ce dernier reste lié au chantier Chunky et clés.
## Traces de lecture et limites
La lecture du code actif utilise `sanctuary-beta`, branche `codex/blocodex-natif`,
commit **e654d56**. Le travail documentaire est isolé sur
`codex/conception-territoire`. Le code actif enregistre notamment monde,
expansions, Blocodex et recensements ; il n’enregistre pas le nouveau trio
informatique ni le particuleur. Aucune comparaison de performances ni simulation
de circuit n’a été exécutée pour cet audit.
Le JAR de sources généré localement par Loom est
`.gradle/loom-cache/minecraftMaven/net/minecraft/minecraft-merged-6974b2190e/26.3-pre-2/minecraft-merged-6974b2190e-26.3-pre-2-sources.jar`
dans le dépôt de code. Les classes ont été lues en mémoire, sans import de sources
vanilla dans Git. Le JAR déobfusqué de contrôle est
`~/.gradle/caches/fabric-loom/minecraftMaven/net/minecraft/minecraft-merged-deobf/26.3-pre-2/minecraft-merged-deobf-26.3-pre-2.jar`,
SHA-256 `980d5ffa0de0e2fe784a377858053d228dd56e0b0a59505a96a5b058cdac09ef`.
| Preuve locale, sous `net/minecraft/` dans les sources vanilla | Constats associés |
| --- | --- |
| `world/level/SignalGetter` ; sous `world/level/` : `block/RedstoneWireBlock`, `redstone/RedstoneWireEvaluator`, `block/RepeaterBlock`, `block/DiodeBlock` | Intensité, propagation, sens, délais et évaluateur expérimental. |
| `world/TickRateManager` | Cadence de simulation normale, réglable. |
| Sous `world/level/block/piston/` : `PistonBaseBlock`, `PistonStructureResolver` | Quasi-connectivité, limite de 12 et refus des block entities. |
| Sous `world/level/block/` : `ObserverBlock`, `RedstoneTorchBlock`, `DaylightDetectorBlock`, `CopperBulbBlock` | Détection, inversion, mesure solaire et bascule lumineuse. |
| `world/inventory/AbstractContainerMenu`, `world/level/block/ComparatorBlock` et méthodes `getAnalogOutputSignal` des blocs recensés | Calcul de remplissage et sources de comparateur. |
| Sous `world/level/block/` : `SculkSensorBlock`, `CalibratedSculkSensorBlock` ; sous `world/level/block/entity/` : `SculkSensorBlockEntity`, `CalibratedSculkSensorBlockEntity` ; `world/level/gameevent/vibrations/VibrationSystem` | Portées, filtrage, temps d’activité et conditions de réception. |
| `world/level/block/DropperBlock`, `world/level/block/DispenserBlock`, `world/level/block/entity/HopperBlockEntity`, `core/dispenser/DispenseItemBehavior` | Transferts, impulsions, faces et usages spécialisés d’objets. |
| `world/level/block/CrafterBlock`, `world/level/block/entity/CrafterBlockEntity`, `world/level/block/ShelfBlock`, `world/level/block/CopperGolemStatueBlock` | Fabrication, mesure des cases, étagères et sélecteur par pose. |
| `world/level/block/CreakingHeartBlock`, `world/level/block/entity/CreakingHeartBlockEntity`, `world/entity/animal/golem/CopperGolemAi`, `world/entity/ai/behavior/TransportItemsBetweenContainers` | Mesures et acteurs des montages. |
| `world/level/block/TrappedChestBlock`, `world/level/block/entity/ChestBlockEntity`, `world/entity/animal/golem/CopperGolemAi` | Signal d’ouverture par joueurs et golems. |
| `server/commands/ParticleCommand`, `server/commands/ComputeCommand`, `world/level/block/CommandBlock` | Différence entre fonctions administrateur et appareils accessibles en survie. |
Les preuves Sanctuary et historiques se trouvent dans
`mods/sanctuary/src/main/java/fr/koka/sanctuary/SanctuaryMod.java`,
`expansion/ExpansionRuntime.java`, le [cahier du langage](langage-et-machines.md)
et la [lecture de Redstone Computer](redstone-computer-reference.md).
L’ancien particuleur est dans le dépôt voisin `26.2/redstoner`, sous
`src/main/java/fr/koka99cab/sanctuary26/redstoner/` : `block/ParticuleurBlock.java`,
`block/entity/ParticuleurBlockEntity.java`, `particle/ParticuleurParticleTable.java`.
Ces références ne constituent pas un portage ni une validation en 26.3.
+692 -474
View File
File diff suppressed because it is too large Load Diff
+378
View File
@@ -0,0 +1,378 @@
# BR-01 — Explorer les Backrooms alimentées par le ballast
**Ticket local préparé le 15 septembre 2026. Statut : à implémenter après la
livraison et la validation du suivi du ballast.** Cette préparation est
documentaire ; elle n'active aucune dimension ni aucun transfert en jeu.
- Branche documentaire : `codex/backrooms-ticket`.
- Branche prévue pour l'implémentation : `codex/backrooms-generation`.
- Livraison `beta.xxx` : numéro à attribuer au moment de la livraison du code.
- Cible relevée dans `gradle.properties` : Minecraft **26.3-pre-2**, Java 25.
Vérifier les API et dépendances de la version effectivement ciblée au démarrage.
- Prérequis bloquant : **suivi du ballast livré**, avec contrat de données et
preuves de reprise. Référence du ticket amont à ajouter lorsqu'il sera créé ;
aucun ticket dédié à ce suivi n'est identifié dans le backlog à cette date.
## 1. Résultat attendu
Un joueur termine son sommeil dans son lit de l'Overworld et rejoint sa salle
personnelle, un Indoor de protection situé dans les Backrooms communes. Un
tableau cache une porte ouverte donnant sur le réseau. Le joueur explore des
couloirs, salles, bassins et infrastructures, peut rencontrer un autre joueur
ou découvrir sa salle, puis dort dans un lit trouvé sur place pour revenir à
son propre lit d'origine dans l'Overworld.
Les nouvelles régions portent l'empreinte du ballast réellement suivi dans
Sanctuary. Les régions déjà planifiées conservent leur génération ; les lieux
visités, les constructions et les cartes dessinées par les joueurs restent
utiles après changement de période, reconnexion et redémarrage.
## 2. Décisions du créateur à respecter
Ces règles proviennent de la discussion de conception et priment sur les
anciennes intentions d'accès encore ouvertes dans la vision et la cosmologie.
- Les Backrooms sont le dysfonctionnement d'Indoors interconnectés. Le ballast
du monde y est redirigé et alimente leur croissance procédurale.
- Steve a aménagé un refuge de protection associé au renoncement à poursuivre
ce chemin. Il a caché le passage avec **un tableau devant une porte ouverte**.
Ce geste simple ne fait pas de Steve l'ingénieur de toute l'infrastructure.
- Chaque joueur dispose d'une salle stable, liée à son identité et intégrée
physiquement à la génération des Backrooms. Le lit est son accès personnel.
- Un autre joueur peut découvrir cette salle à pied et y entrer. Son propre lit
ne lui permet pas de choisir la salle d'autrui comme destination.
- Le sommeil complet déclenche le passage ; il ne fait pas passer la nuit.
- Dans les Backrooms, **n'importe quel lit utilisable permet de revenir à son
propre lit d'origine dans l'Overworld**. Son propriétaire ou sa proximité
d'une salle personnelle ne change pas la destination.
- Les Backrooms ne présentent pas de coordonnées aux joueurs. Chacun construit
sa connaissance des trajets et sa cartographie.
- Couloirs et salles doivent former des lieux explorables avec des ambiances
dreamcore, poolrooms et des matériaux liés à l'activité des joueurs, dont
la cobblestone (« cobble »).
Les modalités des sections suivantes sont des **choix proposés pour réaliser
ce premier lot**. Elles ne sont pas des fonctionnalités déjà livrées.
## 3. Condition de démarrage : le ballast doit être exploitable
Le suivi amont doit fournir et documenter :
1. Les opérations qui produisent du ballast, leurs unités, matériaux, quantités,
dates/périodes et périmètres d'origine. Distinguer événement terminé, tentative
refusée et données absentes. Un zéro enregistré n'est pas une panne de collecte.
2. Une identité stable des événements ou lots et une reprise sans double compte.
Une relecture après arrêt ne produit pas un nouvel apport de matière.
3. Des instantanés immuables et versionnés, identifiables par période et révision,
dont la lecture ne modifie pas le registre économique. Leur archivage doit
permettre de comprendre l'origine d'un secteur après évolution du suivi.
4. La nature du ballast : matière comptable, empreinte d'une opération, ou les
deux. Fixer les règles de réservation, de consommation et de récupération
lorsque des blocs générés représentent une quantité économique extractible.
5. Le traitement des actions réalisées dans les Backrooms. Générer un bloc,
rejouer un événement ou recycler un matériau ne doit pas alimenter une boucle
de création non prévue par le contrat amont.
6. Les contrôles de sauvegarde, de restauration et de conservation des données,
ainsi qu'au moins un parcours réel allant d'une opération au lot enregistré.
Le socle [d'activité datée](blocodex.md#relevés-datés--portée-de-lalpha23)
observe déjà minage, pose, fabrication, ramassage et jet volontaire. Ces agrégats
ne prouvent ni consommation ni perte ; ils ne distinguent actuellement ni
joueur ni dimension. **Ils ne remplacent pas le prérequis ballast.**
BR-01 consomme l'interface du suivi livré. Il ne crée pas les producteurs
économiques futurs et ne reconstitue pas fictivement leurs transactions.
Les données synthétiques servent aux tests, sans devenir l'historique du serveur.
## 4. Sommeil, salle personnelle et retour
### Parcours nominal
| Situation | Comportement attendu |
| --- | --- |
| Sommeil complet dans le lit personnel validé de l'Overworld | Le serveur prépare la destination, mémorise le retour, puis transfère le joueur dans sa salle. |
| Premier voyage | Une seule salle est réservée pour l'identité du joueur ; son arrivée et ses raccords sont prêts avant le transfert. |
| Voyages suivants, y compris après déplacement du lit personnel | Le joueur retrouve la même salle. Le retour est ancré au lit d'origine de ce nouveau voyage. |
| Réveil volontaire avant la fin du sommeil | Aucun transfert, aucune nouvelle salle créée par le simple début de la pose. |
| Sommeil dans un lit des Backrooms | Retour au lit d'origine enregistré pour ce joueur ; aucune modification de l'ancrage vers le lit utilisé sur place. |
| Deux joueurs utilisent successivement le même lit des Backrooms | Chacun revient dans son Overworld à son propre point de retour. |
| Découverte de la salle d'autrui à pied | Entrée possible ; la salle conserve son identité et son lien au propriétaire. |
Proposition d'interaction : une durée de sommeil individuelle de **100 ticks**
(environ cinq secondes à 20 ticks/s), à éprouver en jeu. Elle ne dépend pas du
nombre de joueurs couchés. Permettre le parcours de jour comme de nuit dans les
mondes Sanctuary où la fonction est activée, sans saut d'heure ni de météo.
Les lits des Backrooms doivent fonctionner sans explosion.
Réutiliser la règle du lit personnel unique et vérifier son implémentation au
démarrage : un point de réapparition ne prouve pas à lui seul la propriété d'un
lit. Si cette association manque, la liaison minimale joueur/lit fait partie
du parcours BR-01 ; la politique de remplacement doit préserver les lits déjà
posés. Les lits portés comme accessoires décoratifs ne sont pas des accès.
### Conservation et incidents
- Le lien à la salle repose sur l'identité persistante, jamais sur le pseudo,
le nom d'un lit, un prestige ou les coordonnées du lit extérieur.
- Enregistrer le retour avant le départ. Un transfert a une identité et un état
persistants ; interruption, nouvelle requête ou reprise ne créent pas une
seconde salle et ne dupliquent pas l'inventaire.
- Si la destination n'est pas prête, maintenir le joueur en sécurité à la source
et permettre d'annuler. Ne pas transférer dans un chunk incomplet.
- Déconnexion avant transfert : annuler le sommeil. Déconnexion après transfert :
reprendre à la dernière position sûre sauvegardée dans les Backrooms, avec
le même retour. Un redémarrage n'impose pas un réveil dans l'Overworld.
- Lit d'origine détruit ou arrivée obstruée : proposer un retour à une position
sûre proche de l'ancrage, recherchée dans un rayon borné ; à défaut, utiliser
l'arrivée sûre de l'Overworld. Signaler ce secours en FR/EN. Ne pas recréer le
lit, modifier le terrain ni rediriger vers la salle d'un autre joueur.
- Mort : retour proposé dans l'Overworld selon cet ancrage et ce secours ;
conserver les règles Sanctuary existantes de mort, d'XP, d'inventaire et de
tombe. Une tombe éventuelle reste à son emplacement et ne révèle pas ses
coordonnées dans les interfaces joueur. Aucun système de restitution nouvelle
des objets perdus n'est ajouté par BR-01.
- Pour le premier lot, la protection de la salle signifie une arrivée sûre et
l'absence d'apparition naturelle de monstres à l'intérieur. Elle ne crée pas
implicitement de claim, de verrou de visite ou de règle d'invulnérabilité.
Les droits existants s'appliquent aux modifications ; les changements permis
aux joueurs persistent, y compris si le tableau ou la porte est retiré.
## 5. Monde partagé et génération progressive
### Hébergement proposé
Utiliser une dimension technique commune, avec l'identifiant proposé
`sanctuary:backrooms`, à vérifier libre avant enregistrement puis à conserver.
Les salles personnelles sont des emplacements dans ce monde partagé. Les trajets
du premier lot sont physiques, continus et stables ; le lit assure les transferts
vers et depuis l'Overworld.
Un **secteur** est un ensemble de salles et de circulations planifié comme une
unité. Son plan contient les emprises, niveaux, raccords aux secteurs voisins,
réservations de salles personnelles et données de génération.
### Ordre de génération
1. Réserver un secteur libre et ses raccords. Associer un instantané de ballast,
une graine dérivée, une version de générateur et une version de recettes.
2. Produire le réseau des pièces : couloirs, embranchements, boucles, impasses
lisibles, différences de hauteur et espaces que l'on aperçoit avant d'y accéder.
3. Attribuer fonctions et ambiances aux ensembles de pièces. Prévoir les
transitions et les emplacements stables des refuges personnels.
4. Construire sols, enveloppes, plafonds, supports, portes, escaliers et bassins.
Valider passage à hauteur de joueur, raccords et confinement de l'eau.
5. Appliquer les matériaux par rôle, puis le mobilier, les lumières et les repères.
6. Rendre les portions prêtes accessibles à mesure de l'exploration, en respectant
un budget borné de travail et de génération anticipée.
Les portes de liaison aux secteurs futurs sont prévues dès le plan initial.
Une nouvelle salle personnelle occupe une réservation libre ou un nouveau
secteur raccordé ; elle n'écrase pas une pièce ni une construction existante.
Le plan garantit un chemin vers le réseau commun et évite les poches isolées.
Les raccords partagés utilisent une convention déterministe conservée côté
serveur, indépendante de l'ordre de chargement des chunks. Deux joueurs qui
approchent par des côtés différents réutilisent la même réservation. Le ballast
ne doit jamais être relu en direct pour changer un raccord pendant sa construction.
La planification réserve une géométrie ; elle ne garde pas tout le monde chargé.
Bornes de secteur, anticipation, tâches par tick et file d'attente seront
configurables. Une file saturée ralentit la préparation et maintient les accès
non prêts fermés de manière sûre. Mesurer les coûts sur le serveur de test.
## 6. Architecture, ambiances et matière
Les plans varient leurs proportions et leurs connexions. Des éléments composés
à la main peuvent fournir portes, éclairages ou mobilier ; ils ne doivent pas
imposer une unique salle répétée à chaque tirage.
| Famille du premier lot | Formes et usages | Repères et transitions |
| --- | --- | --- |
| Habitation | Chambre, dortoir, salon, couloir étroit | Mobilier, changements de hauteur, ouvertures vers d'autres pièces. |
| Poolrooms | Bassins, arches, passerelles, vestiaires, douches | Rigoles et zones humides annoncent les bassins ; un chemin praticable permet de progresser. |
| Infrastructure minérale | Réserves, fondations, soutènements, galeries de maintenance | Cobble, pierre et réparations visibles derrière les enveloppes aménagées. |
| Traitement dreamcore transversal | Jardin enfermé, lumière évoquant le jour, fenêtre intérieure, volume disproportionné | Étrangeté obtenue d'abord par proportions, répétitions et vues ; aucun portail à rendu spécial requis. |
La relation au ballast agit sur les familles de volumes, les proportions de
matériaux et leurs rôles. Exemples de recettes proposées :
- Pierre/cobble : épaissir les fondations et favoriser les galeries techniques.
- Bois travaillé : favoriser cloisons, chambres, réserves et passerelles.
- Verre : favoriser serres, espaces d'observation et séparations transparentes.
- Cuivre : favoriser des équipements et architectures techniques ou hydrauliques.
Conserver des palettes par fonction : une poolroom garde son identité même si
le ballast minéral domine. Les pondérations plafonnées ou à croissance ralentie
évitent que les matériaux les plus abondants effacent toutes les autres familles.
Ces transformations de poids n'altèrent jamais les quantités du registre source.
La relation à l'action n'est utilisée que si le suivi la fournit explicitement :
du cuivre observé ne prouve pas à lui seul qu'une usine a été construite.
### Périodes et ressources
- Associer chaque secteur à une période/révision au moment de sa réservation et
conserver les données suffisantes pour reproduire ce plan. Le changement de
période influence uniquement de nouvelles réservations.
- Fournir une base architecturale ancienne pour un serveur au ballast enregistré
nul. L'identifier comme héritage fictionnel ; ne pas inventer d'activité passée.
- En cas d'indisponibilité du suivi, continuer à charger les secteurs connus et
les retours sûrs ; suspendre la réservation de nouveaux secteurs. Une panne
ne doit pas devenir silencieusement une période de ballast nul.
- Distinguer l'influence visuelle de la matière comptable récupérable. Avant de
rendre des blocs issus du ballast extractibles, appliquer le contrat amont de
débit/réservation et de reprise, sans double attribution entre secteurs.
La minabilité et les drops du décor doivent être fixés et testés avant livraison.
Aucun coffre ne copie automatiquement les objets des joueurs.
## 7. Orientation et intégration au client
- Masquer les positions numériques des surfaces fournies par Sanctuary et du
client pris en charge dans cette dimension : F3, HUD, Atlas, marqueurs,
Demeure, fiches de lieux, notifications, tombe et messages de transfert.
- Suspendre le relevé et l'affichage automatiques de la carte/mini-carte pour les
Backrooms. Préserver les cartes déjà enregistrées pour les autres dimensions.
Vérifier aussi les fonctions natives de carte qui pourraient contourner ce
parcours dans le client distribué.
- Préserver les moyens manuels existants : noms, panneaux, livres, croquis et
repères construits. Un éditeur de carte manuelle est hors de ce ticket.
- Ne pas diffuser un annuaire des salles personnelles ni leurs positions.
La découverte physique reste possible, sans autorisation du propriétaire.
- Les coordonnées restent utilisables dans des diagnostics opérateur explicites
et les preuves de test. L'absence de coordonnées est une règle d'interface et
de jeu, pas une promesse de cacher la position à un client modifié.
- Tous les nouveaux messages et libellés sont fournis en français et en anglais.
## 8. Persistance, migration et version de génération
Avant le code qui écrit des données, documenter les schémas et transitions :
- par joueur : identité, identifiant stable de salle, ancrage de retour et état
d'un éventuel transfert ;
- par secteur : identifiant/emprise, voisins et raccords, état de préparation,
graine, versions, instantané de ballast et réservations de refuges ;
- pour la reprise : étapes déjà enregistrées, réservations de matière lorsque
nécessaires, traitement d'une interruption entre planification et disponibilité.
Conserver les chunks Minecraft comme état construit et modifiable. Le plan
sert à produire les portions neuves ; il ne repeint pas les chunks sauvegardés.
Une donnée invalide est signalée et conservée, sans recréation silencieuse de
salle ou de registre vide. Une mise à jour ne réinterprète pas les secteurs
anciens avec de nouvelles recettes.
Développer d'abord sur des mondes neufs dans les dossiers ignorés. Avant toute
activation sur une sauvegarde existante, livrer un contrat d'adoption explicite :
ajout de la dimension et des registres, initialisation des liaisons aux lits,
conservation de l'Overworld, retour des joueurs présents dans les Backrooms lors
d'une désactivation et limites d'un retour de version. Une désactivation ne
supprime jamais les secteurs ni le ballast. Aucun déploiement personnel n'est
inclus dans la rédaction ou l'implémentation de ce ticket.
## 9. Étapes de réalisation du premier lot
Les étapes composent un seul parcours livrable. Les prototypes intermédiaires
restent dans les mondes de développement jusqu'à satisfaction des critères.
1. **Contrats et intégration** : vérifier la livraison ballast, fixer son
adaptateur, les schémas, la minabilité du décor et la règle du lit unique.
2. **Aller-retour** : dimension commune, deux salles distinctes, tableau et porte,
sommeil serveur, persistance et retours ordinaires/de secours.
3. **Réseau procédural** : secteur d'essai d'environ 12 à 20 pièces, au moins
une boucle et deux altitudes, habitation → poolrooms → infrastructure ;
une scène dreamcore et des repères reconnaissables. Les nombres sont des
objectifs de prototype, pas des tailles universelles du monde.
4. **Ballast et extension** : relier les recettes aux instantanés réels, comparer
plusieurs profils, prolonger vers un autre secteur et éprouver les reprises.
5. **Parcours client et livraison** : orientation manuelle, FR/EN, multijoueur,
performances, sauvegardes et preuves des critères ci-dessous.
## 10. Critères d'acceptation
Toutes les cases décrivent des vérifications futures ; aucune n'est validée par
la préparation de ce document.
- [ ] **Prérequis** : contrat/version du suivi ballast référencés ; une opération
réelle alimente un lot puis un nouveau secteur sans transaction inventée.
- [ ] **Accès** : sommeil complet individuel, de jour et de nuit, déclenchant
exactement un départ ; réveil anticipé sans départ ; temps et météo conservés.
- [ ] **Identité et visite** : A et B ont deux salles persistantes dans le même
réseau ; A rejoint celle de B à pied et y entre ; chaque lit extérieur mène
exclusivement à la salle de son joueur.
- [ ] **Retour** : A et B utilisent successivement un même lit des Backrooms,
dont celui d'une salle tierce, et rentrent chacun à leur origine. Tester lit
d'origine détruit, obstruction, remplacement et lit des Backrooms retiré
pendant le sommeil. Aucun transfert ne place le joueur dans le vide ou un mur.
- [ ] **Interruption et mort** : reconnexion, redémarrage et arrêt à chaque étape
du transfert conservent une salle et un inventaire uniques ; mort/tombe suivent
le contrat existant et le secours reste praticable.
- [ ] **Géométrie** : sur les graines `0`, `42` et `20260915`, démontrer deux
refuges raccordés, une boucle, deux altitudes, des passages praticables,
des bassins contenus et aucun raccord involontaire vers le vide.
- [ ] **Identité des lieux** : parcours client montrant habitation, poolrooms,
infrastructure en cobble et au moins une scène dreamcore ; repères suffisants
pour refaire un trajet sans coordonnées. Une validation visuelle accompagne
les contrôles géométriques.
- [ ] **Empreinte matérielle** : à graine et recettes égales, trois instantanés
contrôlés pierre/cobble, bois et verre/cuivre produisent des différences
vérifiables de matériaux/rôles tout en préservant le parcours et les ambiances.
- [ ] **Histoire conservée** : un nouvel apport affecte un nouveau secteur ;
plan, constructions, contenus et blocs déjà générés du premier restent
inchangés. Une période nulle et des données manquantes suivent deux traitements
distincts. Les éventuelles quantités extractibles ne sont attribuées qu'une fois.
- [ ] **Concurrence et reprise** : charger un plan par plusieurs ordres de chunks,
puis par deux explorateurs simultanés ; obtenir les mêmes raccords. Interrompre
la création d'un secteur et reprendre sans double réservation ni réécriture
de portions déjà disponibles aux joueurs.
- [ ] **Orientation** : aucun affichage de coordonnées ni cartographie automatique
des Backrooms dans les surfaces prises en charge ; cartes de l'Overworld
conservées, diagnostics opérateur explicites, messages et parcours FR/EN testés.
- [ ] **Charge et adoption** : file de génération bornée, arrivée sûre même en
retard de préparation, absence de blocage serveur ; fournir budget retenu,
mesures de temps de génération/tick/mémoire et configuration de la machine.
Vérifier le contrat d'adoption et le retour avant désactivation sur une copie
de développement, sans régénérer l'Overworld.
### Vérifications et preuves à produire lors de l'implémentation
- Tests purs du plan : raccords, accessibilité, recettes et reproductibilité.
- GameTests serveur ciblés : sommeil, identité, retours, persistance, fluides,
ballast et absence de doubles effets. Essais à deux clients pour le parcours
complet et ses rendus ; un test serveur seul ne valide pas le masquage client.
- `./gradlew check build`, puis `./gradlew assemblePack` si la distribution change.
- Rapports avec version Minecraft/mod/générateur, graines, instantanés de ballast,
coordonnées opérateur, configuration et captures. Conserver mondes et artefacts
dans les dossiers de développement ignorés ; résumer les preuves dans le ticket.
- À la livraison du mod, synchroniser `mod_version`, `pack_version` et
`packwiz/pack.toml` avec le prochain `beta.xxx`, conformément au
[versionnement](versioning.md). Ce document seul n'incrémente aucun binaire.
## 11. Hors périmètre et décisions de démarrage
Hors lot : système d'affinités/némésis, nouveaux pouvoirs, générateur général
d'Indoors achetables, mailbox, shop, objets perdus restitués, quêtes/boss de
Backrooms, portails à rendu transparent, géométrie qui se reboucle par
téléportation, évolution des pièces déjà construites et éditeur de cartes.
À fixer dans la première étape à partir du suivi livré : référence du prérequis,
unités et périodes du ballast, droits d'extraction/drops, dimensions des secteurs,
budgets de génération et détails de migration. Les réglages proposés de sommeil
et de secours sont à éprouver. Ces décisions ne rouvrent pas les règles d'accès,
de visite et de retour confirmées par le créateur.
## 12. Références
- [ANO-01 — doubles de Steve](steve-anomalies.md) prépare la suite : Herobrine
dans les Backrooms, mineur fantôme dans l'Overworld et les Backrooms, Steve
bugué persistant et transportable. Ces anomalies ont leurs lots propres et
ne bloquent pas la livraison du réseau BR-01. Leurs futures modifications
de blocs seront des actions de gameplay sauvegardées, jamais une régénération
implicite des secteurs existants.
- [Cosmologie : matière, espaces et mémoire](cosmologie.md).
- [Vision : dimensions et espaces](vision.md#dimensions-et-espaces).
- [Blocodex : portée des relevés disponibles](blocodex.md).
- [Temps réel : sommeil et horloges](realtime-beta037.md).
- [Règles de contribution](../CONTRIBUTING.md) et
[modèle Fonctionnalité](../.gitea/ISSUE_TEMPLATE/feature.md).
Le document conceptuel « Système des Habitants, Affinités et Anomalies » a nourri
la discussion ; ses autres mécanismes ne sont pas des dépendances de BR-01.
+95
View File
@@ -0,0 +1,95 @@
# UI-01 — cadre natif du Blocodex et seuil de sprint
Demande du 13 septembre 2026, branche `codex/blocodex-layout-beta004`.
Livraison locale d'essai : `beta.004`, après l'export immuable de beta.003.
## Résultat attendu
Le titre Blocodex et les onglets restent en haut de l'écran, comme les menus
Minecraft. Le bouton natif **Done / Terminé** reste centré en bas. Le corps
utilise la largeur et la hauteur disponibles à l'échelle de GUI choisie.
Ordre : **Discovery, Progression, Story, Inhabitant** ; traductions françaises
**Découvertes, Progression, Histoire, Habitant**. Inhabitant conserve la fiche
comme quatrième onglet. Discovery ouvre les connaissances de blocs existantes.
La navigation garde le même cadre et Done revient à l'écran qui a ouvert le
Blocodex, sans empiler les onglets comme des sous-menus.
Compétences à gauche, aptitudes défilantes à droite. Les six compétences
restent visibles ; Minage, Construction et Inventaire restent « À venir ».
La fiche et l'histoire doivent rester entièrement lisibles par défilement,
sans couper la biographie ni les libellés des événements.
Les six PNG 9×9 fournis le 13 septembre sont utilisés sans modification :
heart → Vie, hunger → Faim, mining → Minage, building → Construction,
breathing → Souffle, inventory → Inventaire. La taille suit l'échelle entière
du GUI ; une infobulle donne le nom de chaque compétence. À l'échelle minimale,
la colonne gauche dispose de plus de place pour conserver icône et libellé.
## Périmètre et validation
Le retour du créateur ajoute la correction de la faim : beta.003 autorisait
le sprint avec trois icônes pleines à cause d'un seuil relatif à la capacité.
beta.004 restaure le seuil vanilla **strictement supérieur à 6 points**.
Acheter le premier rang de Faim augmente la capacité mais ne remplit pas la
barre ; manger au-delà de trois icônes permet ensuite de courir. Le serveur
refuse un démarrage invalide et arrête un sprint quand la faim redescend à 6.
Les exceptions vanilla du vol créatif et des montures sont conservées.
Aucun prix, identifiant de sauvegarde ou terrain ne change. Les mondes et
profils beta.003 restent lisibles sans migration. Aucun déploiement personnel.
Vérifier en client natif : les quatre onglets, titre et Done ancrés, navigation
par clavier et souris, fermeture vers le jeu et vers Échap, défilement,
recherche et pagination de Discovery, tailles et échelles GUI natives.
Vérifier le seuil de sprint avant/après le premier achat de Faim, la baisse
de nourriture, la prédiction d'alimentation et l'exception créative.
Exécuter `check build` avec les GameTests de progression ciblés, puis assembler
et vérifier le MRpack beta.004.
## Vérifications effectuées
Sur macOS / Java 25, Minecraft `26.3-pre-2`, Fabric Loader `0.19.5`, Fabric API
`0.160.0+26.3`, exclusivement dans les dossiers de développement ignorés :
- `./gradlew check build -PsanctuaryFocusedTests=progression` réussit en
**4 min 8 s**. Les contrôles purs passent ainsi que **5/5 tests natifs**
exécutés par le serveur ciblé. Le scénario des capacités vérifie les seuils
de faim 6/7, l'achat qui ne nourrit pas, l'arrêt d'un sprint après baisse de
faim et l'exception du vol créatif. Les achats, respawn, données, noms et
position assise restent vérifiés par les scénarios de progression.
- Le parcours client final passe les quatre onglets dans huit
configurations de fenêtre/échelle : fenêtres 854×480 et 960×720, options
GUI 1, 2, 3 et automatique. Les dimensions logiques obtenues vont de
**320×240 à 960×720**. Titre, onglets ordonnés et Done ancrés sont contrôlés,
ainsi que recherche et pagination sur le vrai catalogue serveur,
navigation clavier et retour vers le jeu ou le menu Échap. Les six icônes
sont présentes en 9×9 dans chaque configuration.
- `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryProgressionClientTests=true` réussit en **1 min 37 s** sur le code
final : seuil client et prédiction d'alimentation, achats, mort et
redémarrage, navigation des quatre onglets. Les captures françaises au GUI
minimal et la progression à grande taille ont été inspectées : les icônes
sont nettes, associées aux bonnes compétences, sans chevauchement des libellés.
- `./gradlew assemblePack -x check` réussit après les contrôles précédents,
sans les relancer pendant l'assemblage. L'export packwiz est vérifié : CRC
ZIP, versions interne/externe, JAR embarqué identique au build, cadre et
mixin de sprint présents, ressources JSON et clés FR/EN, empreinte Fabric
API, index packwiz, six PNG identiques aux originaux et empreinte beta.003
antérieure conservée.
## Export local
**[Sanctuary-beta.004.mrpack](../build/Sanctuary-beta.004.mrpack)**,
2 214 350 octets. Minecraft et les dépendances restent inchangés.
La sauvegarde beta.003 peut être conservée ; un nouveau monde n'est pas requis.
SHA-256 MRpack : `aee4fdebd48d6719f85d2477fbefe90e12ae38313cc107615fa6105c0c57d475`.
SHA-256 JAR : `3a8c26105121340a41644c817533bff59f519d7f02837efe570511568eba98a6`.
Reçu : `build/blocodex004-artifact.json`. Aucun canal public ou installation
Prism personnelle n'est modifié.
Logs : `build/beta004-check-build.log`, `build/beta004-assemble-pack.log` et
`build/beta004-client-final.log`. Captures finales : `build/beta004-preview/`.
Les deux assertions worldgen historiques
signalées en beta.003 ne font pas partie de la sélection native de ce ticket
et ne sont pas présentées comme corrigées. Aucun essai Windows n'est revendiqué.
+175
View File
@@ -0,0 +1,175 @@
# Blocodex — navigation, découvertes et vitrine de l'habitant
Discussion du 13 septembre 2026, après l'essai de beta.004.
Branche de conception : `codex/blocodex-navigation`.
**Cadrage uniquement : les comportements ci-dessous ne sont pas encore livrés.**
Le pack beta.004 reste inchangé ; cette note ne modifie aucune sauvegarde.
## Décisions exprimées par le créateur
- Conserver le rendu Minecraft, le titre en haut et le bouton Terminé en bas.
- Réunir statistiques, advancements, carte, descriptions et constructions
dans la navigation du Blocodex.
- Cacher les entrées non découvertes aux joueurs ; permettre leur inspection
aux opérateurs. Distinguer explicitement les essais joueur et opérateur.
- Retirer S'asseoir des aptitudes et du passeport. La faculté de s'asseoir
reste disponible dès le début ; seul son emplacement dans ces menus change.
- Faire du passeport une fiche dont on peut être fier : exploits accomplis,
constellation favorite, type de créature favori.
- Un favori doit être découvert. Le type de créature favori peut changer une
fois toutes les **24 heures réelles** et donne une influence légère, notamment sur l'apprivoisement
et le butin. Le choix quotidien de différents types est volontairement permis.
- Intégrer les plans de construction avec Litematica.
- Le créateur valide la maquette comme référence à conserver et réutiliser
pour le site, avec le fonds d'images et de documents jusqu'à alpha.30.7.
- Priorité suivante : carte native Sanctuary inspirée de Xaero, puis Demeure,
factions et claims, New Game Plus et prestiges. L’exploration précède le
déblocage de Grande carte. Voir [MAP-01](atlas-beta005.md).
## Organisation proposée
Quatre rubriques principales stables, puis une navigation locale. L'accès à
une fonction est retrouvé par sa place et son nom, quelle que soit la touche
qui a ouvert le Blocodex. À petite échelle, les sous-rubriques passent sur
plusieurs lignes ; le corps défile sans déplacer l'en-tête ni le pied de page.
| Rubrique FR / EN | Sous-rubriques proposées | Rôle |
| --- | --- | --- |
| Découvertes / Discovery | Blocs, Objets, Créatures, Recettes | Ce que je connais, avec description et actions contextuelles. |
| Progression / Progression | Capacités, Exploits, Statistiques | Compétences à gauche et aptitudes à droite ; advancements Minecraft en priorité, accomplissements Sanctuary séparés ; compteurs vanilla. |
| Monde / World | Atlas, Constructions, Histoire | Cartes et marqueurs ; plans et matériaux ; événements, Gazette, archives et liens avec le Galactium lorsqu'ils seront disponibles. |
| Habitant / Inhabitant | Passeport et vitrine sur la même page | Identité, exploits épinglés, constellation favorite et créature favorite. |
La maquette approuvée utilise **Monde** à la place de Story pour accueillir
la carte et les constructions en plus de l'histoire. La référence archivée
est dans [archives/web](../archives/web/README.md) ; son statut reste une
conception validée, sans implémentation supplémentaire dans beta.004.
Les boutons Statistiques et Advancements peuvent d'abord ouvrir les écrans
natifs depuis Progression et revenir au Blocodex. Il n'est pas nécessaire de
réécrire leurs données ou leur rendu pour unifier l'accès. Le cadre reste
identique pour les pages Sanctuary ; les écrans communautaires peuvent garder
leur présentation avec un retour au bon écran parent.
L'item description devient le contenu de la fiche d'un objet découvert,
pas une rubrique de plus. Depuis une recette : ouvrir l'objet connu ; depuis
un exploit accompli : l'épingler dans le passeport ; depuis un favori : ouvrir
sa fiche ; depuis un plan : consulter les matériaux connus.
## Découvertes et droit de fabrication
Le socle actuel ne suit que les blocs. Il transmet leur catalogue complet,
et affiche aussi les noms inconnus : voir `BlockKnowledgeNetworking` et
`SanctuaryBlocodexScreen`. Les objets indépendants et créatures exigent un
contrat de découverte supplémentaire avant leur intégration réelle.
Pour la nouvelle vue joueur, une entrée inconnue ne produit aucune ligne,
silhouette, nom, description, résultat de recherche ou liste de favoris.
Afficher le nombre découvert, sans total de registre révélant les manques.
Les éventuelles pistes viendront de quêtes ou conversations, sans exposer
automatiquement le catalogue secret.
Filtrer la réponse Sanctuary côté serveur et les vues côté client. Une
navigation depuis une recette, un plan ou une recherche ne doit pas révéler
indirectement les noms et descriptions masqués. Ne pas considérer le registre
Minecraft, nécessaire au client, comme un secret cryptographiquement caché.
Conserver trois décisions distinctes : découverte de l'objet, accès à
l'outil de consultation des recettes, révélation d'une recette particulière.
**La fabrication manuelle reste libre**, même si la recette n'est pas révélée.
Les écrans vanilla conservent leurs règles de visibilité d'advancements ; on
ne cache pas un objectif Minecraft normal simplement parce qu'il est inachevé.
## Opérateur et essais
En solo, Autoriser les commandes permet d'accéder aux outils opérateur selon
les permissions réellement accordées. En multijoueur, le serveur décide des
droits du joueur ; le mode créatif seul n'est pas une preuve d'autorisation.
Utiliser le niveau des commandes Sanctuary existantes comme référence.
Un opérateur peut ouvrir une **Vue opérateur** explicitement marquée, avec
catalogue complet et états de découverte. La vue joueur reste disponible
pour tester le parcours ordinaire. Inspecter un contenu ne le marque pas
découvert et n'accorde aucun exploit, XP, favori ou aptitude.
La vue joueur d'un opérateur sert à vérifier l'affichage. Elle ne transforme
pas ses permissions : les tests d'autorité exigent aussi un vrai joueur sans
droits. Séparer les actions de diagnostic des actions qui modifient l'état.
Toute révocation de droits invalide la vue opérateur et son cache.
Matrice minimale du futur ticket :
- Solo sans commandes et client non-opérateur : inconnus absents, recherches
et chemins indirects filtrés, aucun accès aux outils opérateur.
- Solo avec commandes et opérateur serveur : inspection complète possible,
marquée comme telle ; aucune découverte enregistrée par cette inspection.
- Opérateur en vue joueur : mêmes lignes visibles que selon ses découvertes.
- Retrait des droits avec une page ouverte : retour à la vue autorisée.
- Découverte réelle, mort et reconnexion : mise à jour puis conservation.
- Carte verrouillée : raccourcis, menus et autres points d'entrée respectent
le même droit ; minimap, grande carte et marqueurs restent trois aptitudes.
## Passeport et affinité
Proposition : trois emplacements d'exploits Minecraft déjà obtenus, une
constellation connue et un type de créature découvert. Le nombre de trophées
et le moyen de partager le passeport restent à confirmer. Les identifiants
référencent les sources de vérité ; épingler n'accorde pas l'accomplissement.
La constellation favorite nécessite le futur système du ciel : aucune liste
fictive ne doit devenir un catalogue réel dans le mod.
Pour la créature, le créateur confirme un délai de **24 heures réelles depuis le dernier
changement**, calculé côté serveur et conservé après mort, déconnexion et
redémarrage. Il ne s'agit pas d'une remise à zéro à minuit.
Seul le favori courant donne un léger bonus, sans cumul permanent des anciens
choix. Les animaux déjà apprivoisés restent apprivoisés. Ne pas inventer
l'apprivoisement d'une espèce qui n'a pas cette mécanique : chaque type doit
avoir un effet adapté ou ne recevoir aucun effet mécanique.
Restent à régler avant le code : coefficient, types éligibles, variante ou
type entier, attribution du butin en coopération, et portée du bonus de butin
(mort de l'animal, productions comme laine/œufs, ou les deux). Un bonus à la
mort encourage à chasser son favori ; un bonus aux productions encourage à
s'en occuper. Le profil peut rester discret sans afficher un pourcentage.
Le contrat de persistance des favoris doit être écrit avant d'ajouter des
données aux habitants. Préférer un ajout versionné avec absence interprétée
comme aucun favori, sans réécriture silencieuse des profils beta.003/004.
## Carte et constructions
Sanctuary développe désormais sa cartographie native ; le partage futur
des découvertes reste de joueur à joueur. Litematica conserve la gestion de schémas, les projections et les
listes de matériaux : [documentation de l'auteur](https://github.com/maruohon/litematica/wiki/Frequently-Asked-Questions).
Sanctuary fournit le point d'entrée, les droits et les liens vers ses données.
Un plan reçu ne constitue pas automatiquement une découverte de ses matériaux.
Préciser le filtrage de la projection et de la liste avant l'intégration pour
éviter de révéler des matériaux inconnus par ces écrans.
Aucune compatibilité Minecraft 26.3-pre-2 de Xaero, JEI ou Litematica n'est
établie par cette note, et aucun de ces mods n'est ajouté au pack. Vérifier
version exacte, dépendances, API et distribution au ticket de chaque adaptateur.
Le collage créatif d'un schéma ne doit pas devenir une fonction de construction
accessible par la seule découverte d'un plan.
## Découpage proposé
L'ordre historique était carte native, puis Demeure, factions/claims,
New Game Plus et prestiges. Après beta.006, le créateur demande la carte
immersive et l'achèvement des six compétences avant le New Game+ ; les factions
sont conçues avec le cycle. Les [prochains tickets](prochains-tickets.md) font
foi pour cet ordre actualisé. Les lots d'interface ci-dessous restent identifiés.
1. **UI-02** : retirer S'asseoir de ces deux pages, filtrer le catalogue actuel
selon les droits et découvertes, ajouter les accès natifs Statistiques et
Advancements. Tests joueur/opérateur et retour des écrans. Aucun favori,
nouveau format de sauvegarde ou mod communautaire nécessaire.
2. **KNOW-02 / PROFILE-02** : découverte des objets et créatures, épinglage
des exploits et contrat des favoris. Effets d'affinité dans un lot séparé
une fois les règles chiffrées arrêtées ; le délai de 24 heures est confirmé.
3. **MAP-01 / CONNECT-01** : carte native, puis adaptateurs recettes et plans sur des versions
vérifiées ; réutiliser les mêmes contrôles de découverte et d'aptitudes.
La maquette de discussion illustre la navigation avec des données fictives.
Elle ne démontre ni l'intégration des mods ni l'application des permissions.
+255
View File
@@ -0,0 +1,255 @@
# Blocodex natif — connaissances, matière et stocks
Ticket META-01, branche `codex/blocodex-natif`, cible Minecraft **26.3-pre-2**.
Le Blocodex appartient au mod Sanctuary. Il est disponible sans appareil,
recette ni déblocage. La mémoire personnelle, le recensement du terrain et
celui des stocks forment un socle commun aux futures palettes de structures,
règles d’expansion et règles du shop. Les relevés datés ajoutent la temporalité
nécessaire à une future lecture de l’histoire économique du serveur.
## Contrat des informations
La mémoire est personnelle : une identité de joueur (UUID), dans une sauvegarde
de serveur, partagée entre ses dimensions. Les indicateurs sont indépendants.
| Information | Sens |
| --- | --- |
| Inconnu | Aucune observation, possession, pose ni statistique de minage ou de jet. C'est un état calculé, pas une étape enregistrée. |
| Vu | Le premier bloc rencontré par le regard du joueur, à au plus 32 blocs, observé côté serveur tous les 5 ticks. Les obstacles arrêtent le rayon ; les chunks absents ne sont pas chargés. Ce relevé ne couvre pas chaque pixel du champ de vision. |
| Miné | Compteur vanilla `mined` du bloc. Ses règles sont conservées : notamment pas de minage créatif, ni de minage sans l'outil requis. |
| Déjà possédé | Le bloc, sous forme d'item, a été présent dans l'inventaire personnel ou sur le curseur d'un menu. Les statistiques vanilla de ramassage et de jet prouvent aussi une possession passée. |
| Jeté | Compteur vanilla `dropped` de l'item du bloc. Il compte les unités volontairement jetées, pas les objets éjectés à la mort ni le butin produit par le bloc cassé. |
| Posé | Nombre de placements réussis par le joueur avec un item de bloc, y compris en créatif. Une tentative refusée, une interaction ou un placement par commande ne compte pas. |
| En inventaire | Quantité actuellement dans l'inventaire personnel, équipement et curseur compris. Les coffres ouverts, ender chests et contenus imbriqués des boîtes ne sont pas inclus. |
Les blocs sont identifiés par leur identifiant de registre ; les propriétés
d'état (orientation, humidité, etc.) ne créent pas une nouvelle fiche. Deux
identifiants restent distincts : une torche murale peut être vue et posée tandis
que l'item possédé correspond à la torche debout. Les noms des blocs inconnus
restent consultables, comme un catalogue ; cette version ne décide pas d'une
politique de secrets ou de verrouillage des recettes.
L'inventaire est observé chaque tick serveur, après les transactions de menus
et avant la consommation d'un item placé. Les statistiques de ramassage/jet
complètent ce relevé. Une mutation d'inventaire entièrement réalisée entre ces
points par un autre mod ne peut pas être reconstruite après coup.
Les spectateurs ne découvrent pas de blocs par le regard.
## Persistance et arrivée dans une sauvegarde antérieure
Contrat additif v1 : fichiers `data/sanctuary-blocodex/<uuid>.json`, enveloppe
avec `schema: 1` et UUID, puis observations, possessions et poses par identifiant.
Les statistiques vanilla restent dans leurs propres fichiers et sont seulement
lues. Aucune conversion du terrain, des paramètres de génération, des chunks,
du journal d'expansion ou des statistiques existantes n'est effectuée.
Sans fichier Blocodex, les observations et poses commencent vides. Le minage,
le jet et les preuves de possession sont disponibles depuis les statistiques
vanilla déjà présentes. On n'invente pas les observations ni les poses passées
à partir de `used`, qui compte aussi d'autres usages.
Les changements sont sauvegardés tous les 600 ticks, lors de la sauvegarde du
serveur, à la déconnexion et à l'arrêt. Un crash peut perdre les dernières
observations ou poses non sauvegardées. Un fichier invalide ou d'une version
inconnue désactive la mémoire concernée et n'est jamais remplacé silencieusement.
Les identifiants de mods absents sont conservés sur disque. Les anciennes
versions de Sanctuary ignorent ce répertoire additionnel ; les poses réalisées
pendant un retour à une ancienne version ne peuvent pas être récupérées.
## Réutilisation
`BlockKnowledgeService.knowledge(player, block)` et `snapshot(player)` renvoient
des valeurs immuables calculées côté serveur. Le service expose aussi sa santé ;
un consommateur doit refuser une condition de progression si la mémoire est
indisponible, plutôt que d'interpréter une panne comme une découverte vierge.
`BlockKnowledgeEvents.CHANGED` permet de réagir aux observations, possessions,
poses et changements de statistiques. Les écouteurs s'exécutent sur le thread
serveur ; ils ne constituent pas un journal transactionnel de récompenses.
Cette livraison ne verrouille aucune recette et n'accorde aucune récompense.
Palettes disponibles, recherches, progression et structures pourront ensuite
définir leurs propres conditions en utilisant cette API commune.
### Palettes de structures
`BlockKnowledgeService.palette(player, condition, tag)` croise les connaissances
du joueur avec une famille de matériaux. Les critères `BlockKnowledgeFacet`
sont combinables avec `and` et `or` : vus **ou** déjà possédés, minés **et**
actuellement portés, etc. Le résultat immuable garde les identifiants triés et
les quantités réellement portées.
```java
var candidates = BlockKnowledgeService.palette(player,
BlockKnowledgeFacet.SEEN.or(BlockKnowledgeFacet.POSSESSED),
BlockKnowledgeService.NATURAL_STRUCTURE_MATERIALS);
```
Le tag `sanctuary:structure_palette/natural` fournit une première famille de
pierres, terres, bois, feuilles et autres matériaux naturels, modifiable par
datapack. D'autres tags pourront définir des palettes minérales, végétales ou
propres à un biome. Le choix des couleurs, les contraintes physiques des blocs,
les quantités nécessaires et la construction de la structure appartiendront au
moteur de structures : une sélection de palette ne réserve aucun stock et ne
place aucun bloc.
## Recensement du terrain chargé
`TerrainCensus.snapshot(server)` expose une distribution des blocs par dimension ;
`TerrainCensus.chunkSnapshot(level, pos)` fournit le détail d’un chunk déjà
chargé. Ces lectures se font sur le thread serveur et renvoient des valeurs
immuables. Elles parcourent les chunks `FULL` déjà accessibles, sans charger
de chunk absent ni attendre la fin d’une génération.
Le comptage utilise les palettes des sections de 16 × 16 × 16 blocs. Il regroupe
les orientations et autres propriétés sous l’identifiant du bloc. Les blocs
d’air sont exclus ; l’eau et la lave conservent leurs identifiants de blocs.
Le budget est de **16 sections non vides par tick serveur**, partagé entre les
dimensions et les demandes du même tick. Une section entièrement vide est
reconnue par ses métadonnées, sans parcourir sa palette.
Le relevé est progressif. Une section modifiée est retirée des totaux dès que
sa révision change, puis remise dans la file de comptage. Les sections et
chunks déchargés sortent du relevé. Un consommateur dispose, par dimension ou
chunk, du nombre de sections chargées et comptées, du tick de capture, du tick
du dernier comptage effectué et de l’âge de la plus ancienne attente.
`complete()` et `coverage()` décrivent la couverture **des zones chargées**.
Une couverture de 100 % ne signifie jamais que toute la sauvegarde a été lue.
Pendant un rattrapage, zéro bloc compté ne prouve donc pas l’absence de ce bloc.
Les futures règles d’expansion devront fixer leur couverture minimale et leur
zone d’étude avant de prendre une décision. Les résultats en mémoire sont
reconstruits après redémarrage ; ce service n’écrit pas dans les chunks et ne
modifie pas leur génération.
## Recensement des stocks présents
`StockCensus.snapshot(server)` photographie les objets accessibles au tick de
la demande, sur le thread serveur. Le parcours des slots et des entités chargées
est effectué à la demande ; aucun abonnement ne le relance à chaque tick.
Les quantités sont des unités d’items, tous
types confondus : un lingot, un outil ou une graine sont comptés même s’ils ne
correspondent pas à un bloc. Les composants, l’usure et les enchantements ne
créent pas de nouveaux identifiants de stock dans cette version.
| Catégorie | Couverture |
| --- | --- |
| `playerItems` | Joueurs connectés : inventaire personnel, équipement et curseur du menu. Le contenu du menu ouvert n’est pas additionné. |
| `blockContainerItems` | Entités de blocs déjà instanciées dans les chunks chargés, qui exposent l’interface `Container` : coffres, hoppers, fours, pots décorés, etc. Chaque moitié d’un double coffre est comptée une fois. |
| `entityContainerItems` | Entités chargées qui exposent `Container`, notamment les wagonnets et bateaux à coffre. |
| `groundItems` | Quantités des `ItemEntity` chargées et encore présentes au sol. |
Le relevé ne déballe **aucune table de butin**. Tout conteneur dont la table
reste à résoudre est ignoré avant la lecture de ses slots ; son existence
augmente `pendingLootContainers`. Les entités de blocs encore stockées sous
forme de NBT et non instanciées sont également laissées intactes, avec leur
nombre dans `pendingBlockEntities`. Leur contenu n’est pas remplacé par une
estimation.
La couverture exclut les joueurs hors ligne, les chunks et entités déchargés,
les ender chests, le contenu imbriqué des shulker boxes et bundles, les grilles
de fabrication en cours dans l’inventaire ou l’établi (`menuInputsIncluded()`
est faux), les inventaires et équipements des créatures. Le résultat de
fabrication affiché avant validation ne constitue pas un stock supplémentaire.
Elle exclut aussi les objets internes
des entités de blocs qui n’exposent pas `Container`, comme les aliments d’un feu
de camp ou le livre d’un pupitre. Une shulker box portée compte comme un item ;
une shulker box posée et chargée expose son conteneur. Les exclusions figurent
dans le contrat de couverture ; `partial()` reste vrai.
Ce relevé indique où se trouvent les unités observées. Il ne les réserve pas,
ne les transfère pas et n’évalue pas leur prix. Ajouter le terrain aux stocks
ne donne pas une quantité immédiatement vendable : une roche dans un chunk
reste différente d’un item dans un coffre.
## Consultation et futurs consommateurs communs
`WorldCensusService.capture(server)` rassemble les deux relevés pour une même
lecture côté serveur. Le consommateur réutilise cet instantané pendant son
calcul et conserve ses informations de couverture. Le shop et les expansions
pourront ainsi consulter la même base, avec leurs propres règles de fraîcheur,
de portée géographique, de prix, de consommation et de réservation.
Les diagnostics suivants sont réservés aux opérateurs :
```text
/sanctuary census
/sanctuary census block minecraft:stone
/sanctuary census item minecraft:gold_ingot
```
Le résumé présente la couverture du terrain par dimension, les quatre catégories
de stocks et les conteneurs au butin encore indéterminé. Le Blocodex personnel
accessible par **B** conserve les données du joueur ; ces diagnostics ne diffusent
pas les inventaires agrégés aux autres joueurs.
## Relevés datés — portée de l’alpha.23
La collecte regroupe les activités observées par **jour civil UTC**, pour
l’ensemble du serveur, sans attribution à un UUID ou à une dimension :
| Action | Registre et unité |
| --- | --- |
| `mined` | `block` : nombre de blocs minés, selon les règles des statistiques vanilla. |
| `placed` | `block` : placements réussis par le joueur, créatif inclus et spectateurs exclus. |
| `picked_up` | `item` : unités ramassées observées par les statistiques vanilla. |
| `dropped` | `item` : unités volontairement jetées observées par les statistiques vanilla. |
| `crafted` | `item` : unités fabriquées créditées au joueur par les statistiques vanilla. |
Chaque combinaison conserve son action, son registre, son identifiant et une
quantité entière sur 64 bits, saturée à la valeur maximale en cas de dépassement.
Un compteur de minage n’est pas transformé en nombre d’items produits. Les actions
antérieures à l’installation ne sont pas réparties artificiellement entre des
dates à partir des statistiques cumulées de Minecraft.
`MaterialActivityHistory.snapshot(server, day)` expose un instantané immuable
avec le jour, les compteurs, `recorded` et `unsaved`. Un jour sans données
enregistrées demeure inconnu ; il ne constitue pas un historique d’activité nulle.
Les opérateurs peuvent consulter `/sanctuary history` ou préciser une date avec
`/sanctuary history 2026-09-10`. La commande affiche au plus les 16 lignes aux
quantités les plus élevées et indique combien ont été omises ; l’API conserve
l’ensemble des compteurs du jour.
La persistance additionnelle utilise `data/sanctuary-activity/YYYY-MM-DD.json`,
avec un schéma 1 et des dates UTC. Elle est séparée de la mémoire personnelle
et des chunks. Les écritures ont lieu tous les **600 ticks**, à la sauvegarde
et à l’arrêt du serveur, ainsi qu’au changement de jour observé par le service.
Un crash peut perdre les derniers relevés non sauvegardés, soit normalement
jusqu’à 30 secondes de jeu à 20 ticks par seconde. Le fichier conserve les
identifiants de mods absents ; il refuse les schémas inconnus, doublons,
compteurs invalides et changements externes. Une erreur arrête la collecte et
rend le service indisponible jusqu’à réparation puis redémarrage, en conservant
le fichier en cause. Les limites sont de 100 000 tuples et 16 Mio par jour.
Ces relevés permettent de distinguer des périodes d’activité. Ils ne conservent
pas d’historique des instantanés de stocks, ne couvrent pas la fabrication automatique des
machines et n’établissent ni consommation, ni perte, ni destination des objets.
Ils ne retracent pas chaque transfert entre coffres ou chaque changement de propriétaire, et
ne constituent pas un journal transactionnel d’achats, de récompenses ou de
réservations. Le **ballast**, ses unités, ses conversions et sa traduction en
géologie restent à concevoir dans le [cahier de cosmologie](cosmologie.md).
Aucun objet n’est consommé et aucune Backroom n’est générée par ces mesures.
## Référence WSMC retrouvée
La recherche locale a retrouvé une partie du travail précédent dans
`/Users/koka/Documents/sanctuary/Gameplay/blocodex` :
`ClientVoxelProjectBuilder` convertit des apparences de blocs et d’items en
volumes/couches de blocs ; `BlocodexStudioPalettes` sélectionne des matériaux
opaques appris. Le projet conserve aussi un instantané WSMC de 1 881 entrées
(1 168 blocs, 490 items, 223 mobs), issu de Minecraft 1.21.11.
Cette référence reste historique. La nouvelle API fournit la connaissance et
les candidats de palette ; la traduction de modèles d’entités en structures
(visage de creeper, squelette géant, etc.) reste un chantier distinct. Aucun
générateur d’entités ni import de ce snapshot ancien n’est ajouté au registre
de Minecraft 26.3 par le socle méta.
## Validation
Validation locale du 10 septembre 2026 : `./gradlew check build assemblePack`
passe, avec **24 GameTests natifs réussis**. Le client graphique vérifie les
widgets et les messages réels dans un nouveau monde intégré, avec B sans droit
opérateur, observation serveur et possession conservée après retrait du stock.
Les tests de stockage passent. Les [preuves et limites](testing-alpha23.md)
détaillent le protocole, l’artefact et son empreinte. Alpha.23 assemblée localement ;
publication du MRpack et mise à jour du canal demandées, en préparation.
+82
View File
@@ -0,0 +1,82 @@
# beta.049 — bateaux rectangulaires et blocs portés
Branche `codex/rectangular-boats-beta049`.
## Contrat
Quatre formats supplémentaires, largeur × longueur : 3 × 1, 1 × 3,
2 × 3 et 3 × 2. Les recettes reprennent exactement cette disposition dans
l'établi, avec uniquement des bateaux ordinaires identiques du même bois.
Les onze bois natifs sont couverts : 44 variantes ajoutées, 66 au total.
Les noms reprennent le bois suivi des dimensions, en français et en anglais.
Les plans rejoignent aussi une collection Bateaux et radeaux déjà acquise.
Chaque module accueille deux passagers, joueur ou animal. On remplit d'abord
les places principales de tous les modules, puis leurs places secondaires.
Cela donne 6 places en 3 × 1 et 1 × 3, 8 en 2 × 2, 12 en 2 × 3 et 3 × 2,
et 18 en 3 × 3. Les deux sièges sont décalés de 0,8 bloc dans le même module.
Les fonds natifs sont répétés, avec rebords uniquement
à l'extérieur et deux rames. Les commandes, moteurs et piles de beta.048 sont
conservés. Le supplément de masse est `(largeur + longueur − 2) × 0,25` :
les carrés conservent exactement leur équilibre, et tourner une recette
rectangulaire ne change pas sa puissance. Les limites de collision des nouveaux
rectangles suivent leur orientation.
## Blocs sur la tête
- Les sons natifs incluent le joueur qui actionne le bloc, le porteur et les
joueurs proches. Une seule diffusion serveur ; les blocs posés conservent
leur mécanisme de prédiction habituel.
- L'apparence reçoit l'état natif du bloc et les informations visibles du feu
de camp, du pupitre et du pot décoré. Les aliments en cuisson deviennent
visibles. Les événements d'ouverture et de fermeture des coffres sont transmis.
- Les modèles natifs des blocs avec rendu spécial sont utilisés. Les bateaux
ordinaires et collectifs disposent aussi de leur modèle 3D comme chapeau.
- Les façades des fours et les têtes sont tournées vers l'avant du personnage.
La transformation commune conserve le haut des modèles vers le haut.
- Un coup infligeant des dégâts produit dix ticks de signal redstone local.
Distributeurs, droppers, lampes et autres récepteurs natifs réagissent à ce
signal. Une trémie respecte sa règle native : un signal la verrouille
temporairement. Le piston s'étend et se rétracte localement, sans pousser le
terrain. La TNT garde son amorçage réel déjà existant.
Les cosmétiques bateaux restent des modèles portés ; ce ticket ne crée pas un
second véhicule pilotable sur la tête. Les conditions des blocs fonctionnels
et les règles de restitution de beta.043 restent applicables.
## Données et limites
Les anciens identifiants, bateaux et formats de sauvegarde restent stables.
La forme des nouveaux bateaux est portée par leur identifiant enregistré.
Les informations de rendu passent dans la synchronisation d'apparence existante,
pas dans une copie récupérable de l'inventaire. Les coffres et les fours ne
transmettent pas leur stockage à tous les observateurs. Aucun monde personnel
ni chunk existant n'est modifié par cette livraison.
Les animations de rendu sont limitées aux fonctions de présentation natives ;
un modèle client ne simule pas un second bloc fonctionnel. Les sources d'énergie
et les circuits environnants ne deviennent pas un réseau mobile de redstone.
## Vérification
`./gradlew check build :sanctuary:runGameTest assemblePack assembleTestPack`
réussit avec les groupes `boatshead,poultry,headblocks,cosmetics` : **35 tests
serveur**. Les 66 recettes sont fabriquées, leurs ingrédients mixtes refusés,
les capacités complètes et les passagers sauvegardés/rechargés. Les sièges
principaux précèdent les secondaires. Les paquets natifs de son contiennent
une diffusion sans exclusion pour la trappe portée, tout en gardant l'exclusion
vanilla sur un bloc normal. Les aliments, états, retrait des inventaires,
impulsions, extinction de lampe et amorçage unique de TNT sont contrôlés.
Le parcours client natif FR/EN passe : 66 modèles par tuiles, vol des quatre
rectangles via les touches réelles, aliments du feu de camp, ouverture/fermeture
de coffre et Shulker, animation de cloche avec fin, et bateaux comme chapeaux.
Les captures des têtes et fours ont été relues : façades vers l'avant, haut des
modèles conservé. Preuves dans `build/boats049-evidence/` ; logs
`build/boats049-delivery.log` et `build/boats049-client-final.log`.
Le reçu `build/boats049-artifact.json` atteste 1 529 classes et leurs ressources
conformes au build, les deux MRpacks, JEI et les textures conservées. Les archives
beta.048 sont inchangées. Aucun déploiement personnel ni publication du canal.
Une session avec deux clients distants n'a pas été relancée : le son a été
vérifié au niveau de sa diffusion serveur native, puis le rendu en client local.
+108
View File
@@ -0,0 +1,108 @@
# PROG-02B — Construction et vein building — beta.009
Branche : `codex/progression-vein-building`. Implémentation et export local
vérifiés le 13 septembre 2026 ; parcours graphique encore non validé, voir
ci-dessous. Cible : Minecraft 26.3-pre-2, Fabric et Java 25.
## Contrat préalable de migration
La progression personnelle passe du schéma 3 au schéma 4, en ajoutant
`building: 0`. Les schémas 1 et 2 passent d'abord par leurs migrations strictes
existantes. Les rangs, achats, dates, coûts, aptitudes et révisions sont
conservés sans achat fictif. L'historique accepte sept achats Construction
supplémentaires, soit 37 événements maximum ; chaque rang doit correspondre
exactement à ses achats. Les données invalides sont refusées sans remise à zéro.
La migration est idempotente et conserve l'identifiant `sanctuary:progression`.
La restauration réattache la représentation canonique, ensuite enregistrée par
la sauvegarde Minecraft normale. Mort, reconnexion et redémarrage conservent
les rangs. Aucun New Game+ n'est activé.
Les fichiers de configuration restent au schéma 2 : Construction utilise les
sept `statCosts`, par défaut 1, 2, 4, 8, 16, 32 et 64 niveaux. Aucun changement
des profils, couleurs, Atlas, Demeure, inventaire, génération ou chunks existants.
Client et serveur doivent utiliser beta.009 ensemble. Les versions antérieures
ne lisent pas le schéma 4 ; revenir en arrière exige une sauvegarde antérieure
des données de joueur. Aucun monde personnel n'est ouvert ou modifié ici.
## Contrat de jeu et valeurs d'essai
- Rang 0 : pose Minecraft individuelle. Sept achats débloquent les diamètres
3, 5, 7, 9, 11, 13 et 15 (jusqu'à 225 emplacements dans un plan).
- La portée de visée et d'attaque reste celle de Minecraft. Seul le plan autour
du point de départ s'agrandit ; aucune portée d'attaque supplémentaire.
- Une pose tous les deux ticks en survie ; lots bornés en créatif. Le statut
opérateur en survie n'accorde ni matériaux gratuits ni cadence créative.
- R est la touche commune configurable : avec un bloc en main, aperçu de
construction ; R + clic droit maintenus posent, R + molette règle le diamètre.
R + clic gauche reste le minage. B reste le Blocodex.
- Plan déterminé par la face visée et l'orientation du joueur, ordre du centre
vers l'extérieur. Le serveur recalcule et revalide les cibles, le stock et les
permissions. Relâcher, changer d'objet, ouvrir un menu, mourir, s'éloigner ou
perdre la connexion arrête le geste ; les poses déjà effectuées restent.
- Les poses passent par le placement natif pour les orientations, supports,
collisions, contenus d'objets, consommation, statistiques et traces Demeure.
Aucune récompense pour l'aperçu ou une pose refusée. Les surfaces ne remplacent
pas les blocs occupés et n'ouvrent pas les contenants servant de support.
Une dalle peut être fusionnée par son contexte Minecraft natif.
- Le plan couvre les emplacements dont le support existe déjà, comme le Builder
historique. L'aperçu ne dessine que les poses valides ; il ne coûte aucun objet.
La pile tenue fournit les matériaux, sans réapprovisionnement automatique.
- Portes, lits et plantes doubles gardent la pose individuelle, pour ne pas
modifier une seconde case hors du plan validé. Échafaudages et nénuphars aussi :
leurs placements natifs recherchent une autre cible. Les contextes déplacés
et chunks non chargés sont refusés avant tout placement groupé.
## Vérifications
- `./gradlew :sanctuary:compileGametestJava check build assemblePack -PsanctuaryFocusedTests=progression,map,demeure,mining,building`
**réussi en 3 min 55 s**, avec **28 tests serveur natifs obligatoires réussis**,
dont dix scénarios Construction. Journal : `build/beta009-delivery-complete.log`.
- Les contrôles purs relisent les schémas 1, 2 et 3 et vérifient l'idempotence,
les dates/coûts/rangs conservés, sept achats Construction, plafond et refus
d'un rang sans historique. La configuration reste au schéma 2.
- Les tests serveur vérifient le passage par le placement natif, les six faces,
les quatre orientations, les plans de 225 cases sans doublon, les coûts,
l'absence d'extension de portée, les stocks courts, le créatif, les dalles
simples/doubles/hautes et les escaliers. Les collisions avec un animal,
contenants occupés, droits Fabric, mutation pendant un callback, concurrence,
interruption et expiration du maintien sont couverts. Les statistiques,
Blocodex et contributions Demeure proviennent des poses confirmées.
- Le test de progression sauvegarde/recharge le joueur et copie ses achats,
dont Construction, lors d'une mort ordinaire. Le contrat de reprise est
contrôlé sans ouvrir un monde personnel.
- Le parcours client `Building009ClientChecks` est écrit et compilé : achats
par clic, aperçus 25/9, molette, arrêt, consommation, une seule couche par
geste, reconfiguration et interruption par le Blocodex. **Son exécution
reste non validée** : les deux lancements se sont bloqués avant le monde
dans `Minecraft.<init>` / `SDL_GL_SwapWindow`. Le contrôle de bureau a
confirmé que le Mac était verrouillé. Aucun résultat graphique beta.009
ni capture en jeu n'est revendiqué. Les processus de test ont été arrêtés ;
la valeur VSync du dossier de développement a été remise à sa valeur initiale.
Journaux : `build/beta009-client.log`, `build/beta009-client-retry.log` ;
piles : `build/beta009-client-threads.txt`, `build/beta009-client-retry-threads.txt`.
La sélection des tests serveur est limitée à
`progression,map,demeure,mining,building` ; ce ticket ne revendique pas la
correction des deux anciennes assertions de génération générales.
Référence historique en lecture seule : sélection, plan et session de
construction dans `../26.2/sanctuary`, GPL-3.0-or-later. Les appels natifs sont
vérifiés dans les classes de Minecraft 26.3-pre-2, dont `BlockItem.place`,
`ItemStack.useOn` et `ServerPlayerGameMode.useItemOn`. Le mixin commun contourne
seulement l'interaction du support comme le fait la pose accroupie ; les hooks
Fabric, le placement, les contenus d'objets, coûts et critères Minecraft restent
actifs. La revalidation a lieu après les callbacks et avant l'usage de l'objet.
## Artefact local
- [Sanctuary-beta.009.mrpack](../build/Sanctuary-beta.009.mrpack), **2 360 956 octets**.
- SHA-256 : `efa1ac7974b16e2f6169149518e08ed2bca4371b386b3413850b08618392da21`.
- Reçu : `build/building009-artifact.json` ; somme séparée :
`build/Sanctuary-beta.009.mrpack.sha256`.
- ZIP et JSON vérifiés, identité du JAR construit et du JAR Demeure embarqué,
versions internes, classes/mixins Construction, traductions FR/EN, six icônes
originales, hash Fabric API et index packwiz. Aucune classe de test embarquée.
Les exports beta.003 à beta.008 sont restés strictement identiques.
L'artefact est disponible pour essai local. Le canal packwiz n'a pas été publié
et aucune instance personnelle n'a été synchronisée.
+42
View File
@@ -0,0 +1,42 @@
# beta.041 — bébés portés sans ralentissement
Branche `codex/carry-babies-beta041`. Règle retenue : porter un bébé mob ne
ralentit pas le porteur. La précision demandée à l'utilisateur reste ouverte ;
cette interprétation est annoncée pendant le travail.
Les bébés natifs ne contribuent plus au poids de la pile. Les autres passagers
gardent un facteur de 0,75 chacun, avec le plancher global existant de 25 %.
Un joueur portant un bébé compte toujours lui-même lorsqu'il monte sur un
autre joueur. Le bébé ne rajoute pas une seconde pénalité au joueur du bas.
Les familiers utilisent l'âge de leur modèle natif : si celui-ci peut être
affiché en bébé, le familier bénéficie de la même exemption. Une petite taille
aléatoire ou un modèle adulte réduit ne suffit pas à devenir un bébé.
La vérification réutilise le modèle natif déjà mis en cache pour les sons ;
aucune entité supplémentaire n'est ajoutée au monde ou animée côté serveur.
Le calcul reste côté serveur et se remet à jour au prochain tick lorsqu'un
animal grandit sur la tête. Prendre et déposer applique le changement
immédiatement. Le portage, les collisions, le plané et les interactions gardent
leurs règles existantes. Aucun identifiant, attachement ou format de sauvegarde
n'est modifié.
## Validation
`./gradlew check build assemblePack assembleTestPack
-PsanctuaryFocusedTests=carry,familiar,movement,corrections,familiarhit` réussit,
avec **43 tests serveur natifs**. Les scénarios couvrent le bébé dans une pile
de joueurs, la croissance sans dépose, le retour au statut bébé, les familiers
vache/zombie et le dragon adulte réduit ; les anciens tests de poids, cumul de
modificateurs, démontage, plané et réaction aux coups passent également.
Les deux MRpacks correspondent aux 1 441 classes compilées. Seules les classes
de CarryService et FamiliarEntity diffèrent de beta.040 ; les 173 PNG et les
ressources client sont identiques. Aucun nouveau parcours graphique ou test de
connexion réseau dédié : les résultats client de beta.040 restent consignés
dans son reçu. Aucune acceptation d'EULA, installation personnelle ou
publication du canal. Les exports beta.039 et beta.040 restent immuables.
Exports : [pack normal](../build/Sanctuary-beta.041.mrpack) ·
[profil plat rapide](../build/Sanctuary-Test-beta.041.mrpack).
Preuves locales : `build/carry041-check.log`, `build/carry041-artifact.json`.
+73
View File
@@ -0,0 +1,73 @@
# Cartographie — pistes MIT et GPLv3
Relevé du 13 septembre 2026, demandé après la décision d'attendre Xaero.
Sources : métadonnées et versions officielles Modrinth, README et fichiers
LICENSE des dépôts liés par les auteurs. **Aucun mod installé, forké, compilé
ou testé en jeu pendant cette étude.**
## Pistes retenues pour comparaison
| Projet | Licence du projet vérifiée dans les sources | Version Fabric 26.2 identifiée | Intérêt pour Sanctuary |
| --- | --- | --- | --- |
| [Improved Maps](https://modrinth.com/mod/improved-maps) | [MIT](https://github.com/craftycorvid/ImprovedMaps/blob/main/LICENSE) | `1.0`, ID `kS9puVhR`, 21 août 2026 | Atlas géré côté serveur, copie des cartes pour les transmettre ; minimap et grand atlas avec le complément client. |
| [Simple Atlas](https://modrinth.com/mod/simple-atlas) | [MIT](https://github.com/RubberToe-06/simple_atlas/blob/master/LICENSE) | `1.2.0`, ID `6Hy4rXil`, 18 juin 2026 | Grande carte interactive, marqueurs, dimensions et fusion/copie d'atlas ; pas de minimap HUD annoncée dans les fonctions consultées. |
| [Ultimate Map Atlases](https://modrinth.com/mod/ultimate_map_atlases) | [GPLv3](https://github.com/nanakytim/Ultimate_Map_Atlases/blob/main/LICENSE), Modrinth : `GPL-3.0-only` | `26.2`, ID `bgd39YOI`, 17 juin 2026 | Minimap et carte fondées sur les cartes vanilla, atlas ouvrable/fermable et boussole influençant son affichage. |
| [BlueMap](https://modrinth.com/plugin/bluemap) | [MIT](https://github.com/BlueMap-Minecraft/BlueMap/blob/master/LICENSE) | `5.24-fabric`, ID `xvccCRD9`, 10 septembre 2026 | Carte 3D pour navigateur et site ; composant complémentaire, pas une minimap de jeu. |
Pour **chacun de ces quatre projets**, le filtrage des versions publiées par
Fabric + Minecraft `26.3-pre-2` renvoie **zéro version déclarée** au moment du
relevé. Une build 26.2 ne constitue pas une preuve de fonctionnement sur la
cible actuelle. Les pages générales peuvent décrire des fonctionnalités plus
récentes que certains binaires : vérifier le tag et le JAR retenus avant code.
## Lecture pour Sanctuary
**Improved Maps est la première piste à étudier si nous revenons à un fork
libre** : il réunit déjà minimap, grand atlas et cartes transmissibles. C'est
une appréciation de conception fondée sur les fonctions annoncées, pas un
résultat de test. Ses états sont liés à un objet atlas et aux cartes vanilla,
pas encore à l'identité et aux aptitudes Sanctuary. Les marqueurs personnels,
la séparation des trois aptitudes et l'ouverture sans objet depuis le Blocodex
restent à vérifier ou développer.
Simple Atlas est intéressant pour les marqueurs et la circulation de cartes.
Ultimate Map Atlases est une autre base possible pour une approche diégétique
où l'atlas s'ouvre et se ferme. Dans les deux cas, distinguer les découvertes
du joueur des cartes contenues dans un item partagé.
Ces trois solutions reposent sur les cartes vanilla : vérifier le rendu des
îles flottantes, surfaces superposées, dimensions, performances et niveaux de
zoom avant de les choisir comme remplaçant de Xaero. Leur licence principale
ne suffit pas à valider toute la pile : Improved Maps annonce Polymer (LGPLv3)
et Fabric API, Simple Atlas déclare Cloth Config (LGPLv3) dans sa version
26.2 ; Ultimate Map Atlases ne déclare pas de dépendance dans cette fiche
de version, ce qui ne prouve pas qu'il n'en a aucune à l'exécution.
BlueMap peut alimenter le futur site/Galactium avec des vues 3D. Il lit les
données du monde ; ses cartes ne sont donc pas automatiquement limitées aux
découvertes individuelles. Définir les zones et informations publiables avant
tout raccordement aux secrets et à la progression. Aucun rendu de monde ni
serveur web BlueMap n'a été lancé ici.
## Faux équivalents écartés du filtre strict
- **XaeroPlus** est MIT, mais requiert Minimap et World Map, qui restent
All Rights Reserved. Il ne remplace pas leurs moteurs.
- **VoxelMap-Updated** expose un dépôt source, mais le projet Modrinth
déclare All Rights Reserved : il ne répond pas au filtre MIT/GPLv3.
- **Antique Atlas 4** et **Surveyor** sont annoncés sous LGPL-3.0-or-later.
Ce sont des pistes libres, mais distinctes de GPLv3 et hors du filtre exact
demandé. La branche récente d'Antique Atlas 4 ne doit pas être confondue
avec l'ancien **Antique Atlas**, GPLv3, dont la dernière build Fabric
identifiée est `7.1.1-fabric-mc1.18.2`.
- **Map Atlases [Forge]** est GPLv3 mais le relevé ne contient pas de build
Fabric ; ne pas le confondre avec les ports ou variantes portant un nom proche.
## Preuves conservées
`archives/web/references/open-maps-intake-2026-09-13.json` contient les projets,
leurs licences déclarées, URLs des sources, IDs et dépendances des versions,
résultats du filtre exact et empreintes des fichiers LICENSE vérifiés dans
les quatre dépôts retenus. Le créateur a ensuite choisi une carte native Sanctuary :
voir [MAP-01](atlas-beta005.md). Ce relevé reste une référence historique,
sans substitution automatique dans Sanctuary.
-192
View File
@@ -1,192 +0,0 @@
# Chronologie de Sanctuary et calendrier en temps réel
**Repères donnés de mémoire : création le 16 mars 2026, développement le 24 mai,
alpha le 17 août et bêta le 8 septembre.** Ils restent à confronter aux versions
historiques ; un souvenir n’est pas une date de publication certifiée. Minecraft
constitue la chronologie principale, dans laquelle Sanctuary ouvre sa propre histoire.
Le temps du monde doit suivre le temps réel. Les conventions de calendrier
ci-dessous constituent une proposition avant implémentation.
Ce document complète [l’histoire de Steve et de Galactium](histoire-steve-galactium.md)
et les dossiers [2009–2014](recherche-minecraft-2009-2014.md),
[2015–2026](recherche-minecraft-2015-2026.md) et
[personnages](recherche-minecraft-personnages.md). « Chronologie principale »
désigne l’histoire de Minecraft, pas une demande de fusion Git dans `main`.
## Les origines et les jalons
| Repère | Date ou origine | Sens |
| --- | --- | --- |
| **Ère Minecraft** | **17 mai 2009**, origine proposée | Anniversaire public reconnu par Mojang. Les prototypes antérieurs appartiennent à la préhistoire documentaire. |
| **Ère Sanctuary** | **16 mars 2026**, souvenir de l’auteur | Origine de travail à confirmer avant de la figer dans les sauvegardes. |
| **Développement / première version** | **24 mai 2026**, souvenir et mention de l’ancien site | 69 jours après cette origine ; annonce datée de mai, conservée dans Git en juillet seulement. |
| **Alpha publique retrouvée** | **7 juillet 2026**, publication Modrinth et archive identique | Pack `2026.07.07`, Minecraft `26.1.2`, 113 jours après l’origine proposée. |
| **Dépôt historique / jalon alpha évoqué** | **17 août 2026**, création Gitea attestée | 154 jours après l’origine proposée ; l’alpha publiée en juillet est antérieure. |
| **Nouvelle base nommée Beta** | **8 septembre 2026**, création Gitea et premier commit attestés | 176 jours après l’origine proposée ; ses premières versions restent numérotées alpha. |
| **Anniversaire officiel** | Jour de la future release officielle, à enregistrer lors de sa publication | Fête annuelle de Sanctuary, retenue par l’auteur ; ne pas la fixer à une ancienne alpha par défaut. |
| **Âge de la partie** | Création effective de chaque monde serveur | Histoire locale de cette communauté : découvertes, charges, expansions et événements. |
Le 17 mai s’appuie sur l’anniversaire célébré par Mojang ; ce choix calendaire
ne prétend pas dater le premier prototype. Le modèle humain antérieur au
lancement public est étudié dans le dossier personnages.
[Mojang, 17 mai 2024](https://www.minecraft.net/en-us/article/the-15th-anniversary-cape).
Un serveur créé en septembre ne prétend pas avoir fonctionné depuis mars.
Il partage un passé narratif, puis possède son propre historique de partie.
Les neuf disparus appartiennent à cette histoire proposée ; les réalisations
des joueurs sont celles réellement enregistrées dans leur monde. Des serveurs
séparés ne partagent pas leurs réserves de charges.
## Place dans la chronologie principale
Les possibilités du jeu sont documentées dans les dossiers historiques. Leur
lecture narrative ci-dessous reste une proposition pour Sanctuary.
| Période | Repère Minecraft | Lecture mythologique proposée |
| --- | --- | --- |
| 2009–début 2010 | Premières phases et Indev ; construction, survie, fabrication, types de mondes dont les îles flottantes. | Steve mesure et rend habitable un lieu limité. |
| 2010–2011 | Infdev, Alpha, Beta, 1.0 : élargissement du monde, redstone, Nether, mécanismes, puis End et enchantements. | Les limites et les relations entre les lieux deviennent des questions. |
| 2012–2013 | 1.1 à 1.7.2 : commerce, écriture, automatisation et diversité des territoires. | Les solutions deviennent des installations capables de fonctionner pendant une absence. |
| 2014 | 1.8 et arrivée d’Alex. | Une deuxième mémoire compare et conserve les transformations du monde. |
| 2016–2019 | 1.9 à 1.15 : exploration, progrès, océans, métiers, vie des villages et abeilles. | Steve et Alex cherchent à relier des lieux et des usages sans en perdre l’histoire. |
| 2020–2021 | 1.16 à 1.18 : Nether enrichi, repérage et retour, cuivre, améthyste, nouvelles profondeurs. | Matière, forme et adresse deviennent comparables : premières formulations de Galactium. |
| 2022 | 1.19 et apparition commune des sept nouveaux skins. | Les neuf mettent en commun leurs expériences et retrouvent d’autres traces anciennes. |
| 2023–2025 | 1.20, 1.21 et drops : archéologie, conservation des récits, fabrication automatique et nouveaux usages. | Les expériences deviennent une infrastructure ; la prospérité augmente les dépendances. |
| **16 mars 2026, provisoire** | Création donnée de mémoire. | Origine proposée de la branche narrative Sanctuary. |
| **24 mai 2026, à recouper** | Jalon de développement donné de mémoire. | Son équivalent dans la fiction reste à choisir. |
| **7 juillet 2026** | Publication alpha `2026.07.07` sur Modrinth, archive retrouvée. | Première diffusion alpha directement recoupée par cet audit, pas nécessairement toute première diffusion du projet. |
| **17 août 2026** | Création du dépôt historique attestée ; début exact de l’alpha 26.2 encore inconnu. | Une étape de développement ne date pas automatiquement une catastrophe du récit. |
| **8 septembre 2026** | Nouvelle base `sanctuary-beta` attestée dans Git ; version initiale `0.1.0-alpha.1`. | Distinguer le nom du projet, sa phase souhaitée et les versions effectivement distribuées. |
| Après la fondation | Minecraft et Sanctuary continuent d’évoluer ; chaque partie enregistre ses propres événements. | Les joueurs peuvent vivre l’histoire suivante, sans tout attribuer aux anciens. |
Si le 16 mars est confirmé, la dernière Java stable à la fondation est **1.21.11**, publiée le 9 décembre
2025. **26.1 / Tiny Takeover** paraît le **24 mars 2026**, huit jours après la
fondation, et avant le jalon éditorial du 24 mai retrouvé sur l’ancien site. **26.2 / Chaos Cubed**,
du **16 juin 2026**, vient ensuite. Le détail de 26.3 et de ses préversions figure
dans le dossier récent.
[Java 1.21.11](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-21-11),
[Java 26.1](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-1),
[Java 26.2](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-2).
Cette comparaison ne prouve pas quelle version Minecraft le premier mod de
développement utilisait. Elle n’oblige ni à recréer une ancienne instance ni
à retirer les blocs récents des mondes actuels. Elle sert à dater un récit :
un élément ajouté après la fin choisie pour l’activité des anciens demande une
intervention ultérieure ou un prototype effectivement documenté. Disponibilité
expérimentale et sortie stable sont deux événements différents.
Les sources locales et distantes, ainsi que leurs limites, sont consignées dans
[l’audit des archives Sanctuary](recherche-archives-sanctuary.md). Les noms de
versions historiques sont conservés tels quels : ils ne sont pas renommés pour
les faire correspondre à ces quatre souvenirs.
La création ne date pas automatiquement la disparition des neuf. Même après
confirmation des jalons, leur donner le sens d’une dernière période d’expériences
ou d’une séparation serait un choix narratif supplémentaire.
## Compter les jours
Sous réserve de confirmer l’origine du 16 mars, proposition : afficher des
**jours civils écoulés**, avec **J+0** le jour de
l’origine. Les dates de fondation sont des dates, pas des instants UTC dont on
aurait inventé l’heure. Elles restent affichées comme le 17 mai et le 16 mars,
quel que soit le fuseau choisi pour présenter un événement.
Pour une même date civile `d` dans le fuseau calendaire de référence :
```text
jour_minecraft(d) = différence de dates entre 2009-05-17 et d
jour_sanctuary(d) = différence de dates entre 2026-03-16 et d
jour_partie(d) = différence de dates entre la création de cette partie et d
```
**jour_minecraft = jour_sanctuary + 6 147**.
| Date civile | Ère Minecraft | Ère Sanctuary proposée | Depuis le jalon du 24 mai |
| --- | ---: | ---: | ---: |
| 16 mars 2026 | J+6 147 | J+0 | Avant le jalon |
| 24 mars 2026 | J+6 155 | J+8 | Avant le jalon |
| 24 mai 2026 | J+6 216 | J+69 | J+0 |
| 7 juillet 2026 | J+6 260 | J+113 | J+44 |
| 17 août 2026 | J+6 301 | J+154 | J+85 |
| 8 septembre 2026 | J+6 323 | J+176 | J+107 |
| 11 septembre 2026 | J+6 326 | J+179 | J+110 |
Un affichage possible serait **« Sanctuary · J+179 · 08:00 »**, avec l’ère
Minecraft et l’âge de la partie dans le calendrier détaillé. Le 11 septembre
est un exemple daté, pas une valeur à figer dans le jeu. L’âge de la partie ne
peut être rempli qu’à partir de son origine effective. Afficher « Jour 1 »
plutôt que J+0 demanderait un décalage explicite ; 179 jours écoulés et le
180e jour sont deux façons différentes de décrire la même date.
## Horloge commune et simulation
La direction retenue est une correspondance avec l’heure civile choisie par
l’administrateur : à 8 h dans ce fuseau, il est 8 h dans le monde. Tous les
joueurs partagent ce repère, même s’ils habitent dans des pays différents.
Le sommeil ne fait pas sauter la nuit.
La date et l’heure ne dépendent pas de la vitesse de simulation. Les événements
peuvent conserver un instant UTC, présenté dans le fuseau choisi. Les jours du
calendrier changent à minuit dans son fuseau de référence, par différence de
dates civiles : une journée de changement d’heure ne dure pas toujours
86 400 secondes. Un fuseau géographique et un décalage horaire fixe sont deux
choix différents à présenter clairement.
| Domaine | Comportement proposé |
| --- | --- |
| Date, heure et âge calendaire | Continuent avec le temps réel, même serveur arrêté. |
| Ciel de l’Overworld | Retrouve l’heure civile courante à la reprise ; transitions et changements de fuseau restent à concevoir. |
| Cultures, mobs, redstone et programmes | Ne reçoivent pas automatiquement des heures de simulation hors ligne. |
| Charge libérée ou expansion acceptée | État persistant ; le passage du temps ne crée aucune charge ni nouvelle opération. |
| Nether, End, Indoors et Backrooms | Peuvent partager une date commune en gardant leurs ambiances et cycles propres. |
Attendre quelques ticks permet de coordonner un montage ; attendre dimanche
concerne une échéance civile. Le futur langage doit distinguer ces usages.
Une sauvegarde ou restauration conserve l’origine de la partie. Changer le
fuseau d’affichage ne réécrit pas les instants du journal. Changer le fuseau
du calendrier ou corriger une horloge système exige une règle explicite.
## Événements, étoiles et mémoire
**Sanctuary aura un anniversaire annuel à la date de sa release officielle.**
La direction est retenue ; le jour reste inconnu jusqu’à cette publication.
L’historique retrouvé du 7 juillet concerne une alpha et ne remplace pas ce
futur jalon. L’anniversaire commun du jeu peut être célébré par chaque serveur,
en plus de l’âge propre de sa partie. Le calendrier le signalera ; la fête,
ses activités et ses éventuelles récompenses restent à concevoir. Aucune
récompense économique ni charge d’expansion automatique n’est décidée ici.
Loterie du dimanche, achat hebdomadaire des navets, offres horaires, anniversaires
et panneaux d’événements s’appuieraient sur le même calendrier. Le traitement
d’une échéance manquée pendant un arrêt reste à définir ; aucun tirage ni gain
rétroactif automatique n’est décidé ici.
Le dimanche civil peut donner un repère concret au cycle de six jours puis un
jour de fête. Un cycle compté depuis la fondation serait une autre convention,
à distinguer de la semaine civile.
Les étoiles naissent toujours des accomplissements réels de la partie. Des
milliers de jours d’histoire préalable ne donnent pas automatiquement les
étoiles des anciens aux nouveaux joueurs. Des cartes célestes retrouvées dans
l’observatoire pourraient témoigner d’un autre ciel : une piste narrative.
Un noyau brisé, une charge libérée, une expansion acceptée et un continent
ouvert constituent des événements différents. Leurs dates suivent ce qui s’est
effectivement produit sur le serveur. Le calendrier rend leur succession
consultable sans fabriquer un historique d’activités antérieures.
## Points restant à définir
- Recouper les quatre dates données de mémoire ; fixer ensuite l’origine Sanctuary, l’origine Minecraft proposée du 17 mai 2009 et l’affichage J+0.
- Enregistrer la date effective de la release officielle pour l’anniversaire annuel de Sanctuary.
- Choisir le fuseau initial et les règles de changement de fuseau ou d’horloge.
- Déterminer l’origine d’une ancienne partie sans date fiable, avec un contrat de migration avant toute écriture dans sa sauvegarde.
- Définir reprises, expirations et opérations hors ligne pour les activités qui emploient le temps réel.
- Choisir les éventuels événements de fiction correspondant aux jalons historiques, ainsi que la date ou l’intervalle de disparition des anciens.
Les relevés quotidiens du Blocodex décrits actuellement sont agrégés en UTC.
Ils ne fournissent pas à eux seuls un journal local exhaustif ni un passé
antérieur à leur installation. Le calendrier futur doit conserver ces limites.
Ce document ne change ni l’horloge du jeu, ni les sauvegardes, ni les règles
économiques d’une instance.
+115
View File
@@ -0,0 +1,115 @@
# RECIPES-035 — collections Minecraft jouables
Branche `codex/collections-beta035`, base beta.034. Contrat tiré des
[67 collections](collections-minecraft.md) et de leur
[inventaire exhaustif](collections-minecraft-inventaire.md).
## Contrat et reprise des habitants
Les **2 042 recettes natives de Minecraft 26.3-pre-2** ont chacune leur collection
principale. Les **126 advancements** ouvrent les familles du tableau : chaque
advancement configuré suffit, sans achat du catalogue ni possession des ingrédients.
Les collections de survie s’ouvrent également à la découverte d’un membre admissible
ou d’une amorce. Comme depuis beta.024, « découverte » utilise les connaissances
existantes : observation réelle d’un bloc, objet connu, inventaire ou statistiques
natives. La lecture d’un plan ne crée jamais une découverte de son résultat ou de
ses ingrédients. La fabrication manuelle reste libre.
66 familles de survie et une référence technique sont livrées. La référence
`sanctuary:technical_catalogue` n’a aucun déclencheur de survie et ne s’ajoute pas
au carnet personnel, même avec un œuf de familier. Les blocs sans objet et les
blocs non récupérables (bedrock, générateurs, cadres de portail, etc.) ne sont pas
transformés en amorces d’inventaire. Les familles sans recette peuvent être
connues sans produire un faux gain de plans.
**Migration additive sans changement de format :** la pièce jointe
`sanctuary:recipe_knowledge` reste en schéma 1 ; aucun champ de sauvegarde n’est
ajouté, supprimé ou réinterprété. Au prochain chargement de leur carnet, les
habitants reçoivent les compléments correspondant à leurs collections déjà
ouvertes, objets connus et advancements déjà accomplis. Tous les identifiants et
recettes déjà appris restent conservés, même absents des nouvelles données.
Aucun monde existant n’est ouvert ou réécrit par la livraison.
`sanctuary:basic_wood` et `sanctuary:brewing` restent stables. Le bois conserve son
ancien tag `minecraft:planks` et **40 recettes complémentaires** de bateaux et
menuiseries du Nether ; les 170 recettes primaires restent classées séparément.
L’alchimie conserve le sélecteur `minecraft:brewing`, y compris les recettes de ce
type ajoutées par un datapack ou un mod, en plus de ses 286 recettes primaires.
Cette compatibilité ne révèle pas les pistons ou les boucliers avec une planche.
L’achat unique du catalogue reste à **4 niveaux**.
## Données et consultation
Les 67 JSON sont dans `data/sanctuary/sanctuary_recipe_collections/`. `recipes`
contient le classement principal ; `additional_recipes` préserve les accès
historiques. `items`, `item_tags` et `advancements` sont des portes alternatives.
`members.blocks` / `members.items` conservent le classement exact des identifiants
pour les futures fiches ; ces listes ne constituent pas des possessions requises.
`operator_only` empêche une définition technique de devenir un déblocage personnel.
Le chargement indexe objets, tags et advancements une fois par rechargement de
ressources. Une collection déjà enseignée ne reparcourt pas ses recettes à chaque
actualisation d’habitant. `/reload` renouvelle cet index et réconcilie une fois
les carnets ; aucune recette déjà apprise n’est retirée.
**Discovery → Recettes** affiche les noms FR/EN des collections connues. L’accès
au catalogue reste en haut, avant la liste, afin que les nouvelles collections
ne repoussent pas le bouton d’ouverture. Les notifications beta.034 signalent
les collections nouvellement ouvertes et regroupent les lots ; les reconnexions
ne rejouent pas l’historique.
Les fiches détaillées d’obtention, le musée visuel de tous les blocs, les gestes
sans recette (commerce, oxydation, croissance…), quêtes et bounties restent à
concevoir. Aucune recette artificielle ni expansion de dimension n’est ajoutée.
## Compléter le catalogue
Modifier les deux documents de référence, puis exécuter :
```sh
python3 scripts/compile_collections.py --write
python3 scripts/compile_collections.py
```
Le contrôle compare les deux directions advancement/collection, les 2 042 recettes
uniques, les 1 815 identifiants distincts, les amorces, les définitions serveur et
les noms FR/EN. Il est intégré à `check` ; les tests Minecraft confrontent ensuite
ces identifiants aux registres et recettes réellement chargés. Le générateur ne
télécharge rien et ne modifie ni les recettes natives ni les documents sources.
## Vérifications et livraison
`./gradlew check build assemblePack assembleTestPack` avec les suites
`collections,recipes,notifications,progression,cycle` réussit : **28 tests serveur**.
La matrice exerce les **126 advancements**, les 66 voies de découverte des familles,
les identifiants des registres réellement chargés, les limites bois/machines,
les amorces du lit, de l’alambic, du fabricateur et de la brosse, l’isolation des
habitants et la reprise des carnets beta.034. Les 2 042 recettes primaires sont
comparées à l’ensemble des recettes vanilla chargées, sans identifiant manquant.
Le parcours client natif final réussit sur le profil plat : achat réel du
catalogue, familles enseignées par advancement sans ingrédients, consultation
effective des plans de Shulker, transfert depuis la sixième rangée, vue opérateur
et révocation, notifications, rendu FR/EN après rechargement terminé, puis
véritables New Game+, mort/respawn et redémarrage du serveur. Les nouvelles
collections et le reçu du catalogue sont conservés dans ces trois passages.
Les captures sont dans `build/collections035-evidence`.
L’assemblage final après les vérifications client utilise `assemblePack
assembleTestPack -x check`, sans répéter les tests serveur déjà passés. Les classes
du moteur serveur correspondent à celles vérifiées ; ZIP, 1 322 classes Sanctuary,
67 définitions, traductions, dépendances imbriquées et profil facultatif ont été
comparés aux builds. JEI conserve exactement son binaire `30.32.0-sanctuary.2`.
- [Sanctuary-beta.035.mrpack](../build/Sanctuary-beta.035.mrpack), pack normal.
- [Sanctuary-Test-beta.035.mrpack](../build/Sanctuary-Test-beta.035.mrpack), profil plat rapide.
SHA-256 normal : `dfcf5927eaef183fe582b95454480849a08353561cb66d83a514d8a0274b5c60`.
SHA-256 test : `f94f216b5b09c7ebeafea45a8d735978a4efc354aa245ffbfd993ee7e6db2b24`.
Reçu : `build/collections035-artifact.json`. Journaux :
`build/collections035-check.log`, `build/collections035-client-final.log` et
`build/collections035-assemble-final.log`.
Client et serveur beta.035 ensemble, sur Minecraft 26.3-pre-2 / Loader 0.19.5 /
Fabric API 0.160.0+26.3. Les exports antérieurs sont inchangés. Aucun canal de
distribution, instance Prism personnelle ou monde existant n’a été modifié.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+351
View File
@@ -0,0 +1,351 @@
# Familiers — proposition d’équilibrage v1
Une [proposition v2 du 14 septembre 2026](spawn-eggs-refonte-v2.md) reprend
la fréquence d’usage, la complémentarité avec les potions et les combinaisons
libres entre joueurs. Elle reste documentaire et non implémentée ; cette v1
conserve son rôle de référence de la première implémentation.
Passe de conception du 13 septembre 2026, pour les **88 œufs Minecraft de
26.3-pre-2** présents dans Sanctuary. Les cinq raretés sont : **commun, peu
commun, rare, extraordinaire, légendaire**.
**Première implémentation dans [beta.019](companion-powers-beta019.md), à éprouver.**
Les [ajustements beta.020](familiar-interactions-beta020.md) remplacent les limites
v1 de perception et de téléportation à travers les murs, et corrigent le freinage
des chutes. Cette proposition reste la référence initiale pour les essais ;
elle ne constitue pas un équilibrage déjà démontré. Les pouvoirs restent désactivés
dans beta.018. L’[inventaire historique](companion-powers-inventory.md) conserve
les anciennes définitions de 26.2 ; ce document propose de les remplacer.
Les 25 anciennes variantes ItsAlive restent hors de cette première passe :
elles ne font pas partie du pack actuel.
## Intention
Chaque familier donne **un passif identifiable et un actif qui change un geste
de jeu**. Un œuf commun doit pouvoir rester un choix de fin de partie. La rareté
décrit la difficulté d’obtention et l’ampleur de l’intervention ; elle ne doit pas
devenir un multiplicateur général de dégâts, de vie ou de rendement.
On part de trois cœurs, trois barres de faim et trois bulles de respiration.
Les familiers complètent les compétences et les aptitudes. Ils ne donnent pas
de rang d’inventaire, de tri gratuit, de nage rapide sans Nage, de carte complète,
de recettes inconnues, de minage groupé au-delà du rang acheté ou de vol permanent.
Les anciens bonus permanents Force II, Résistance II, respiration aquatique
illimitée, régénération gratuite et trêve générale avec les monstres disparaissent.
| Rareté | Place dans le jeu | Obtention proposée | Recharge habituelle |
|---|---|---|---|
| Commun | Un geste quotidien devient plus agréable ; une petite manœuvre utile. | Découverte et premier objectif lié à l’espèce. | 20–60 s |
| Peu commun | Une spécialité nette : potager, plongée, troupeau, déplacement, protection. | Quelques objectifs différents et une offrande adaptée. | 30–75 s |
| Rare | Un véritable outil de métier ou une action tactique marquante. | Expédition, maîtrise d’une activité ou petite quête propre au mob. | 40–100 s |
| Extraordinaire | Une capacité qui transforme brièvement une situation, parfois en groupe. | Défi important, lieu spécifique et composant difficile à obtenir. | 60–150 s |
| Légendaire | Un moment exceptionnel, visible et préparé, avec une identité forte. | Aboutissement d’une grande aventure ; déblocage collectif puis épreuve personnelle. | 180 s |
Les chiffres de recharge ci-dessous priment sur ces fourchettes. La rareté de
l’œuf est indépendante de la fréquence d’apparition naturelle du mob : un
Creeper peut être courant dans le monde et son lien de familier être rare.
La répartition couvre **22 communs, 22 peu communs, 25 rares, 16 extraordinaires
et 3 légendaires**. Ces nombres ne sont pas des probabilités de tirage :
l’obtention proposée passe par des objectifs identifiés, pas par une loterie.
## Règles communes proposées
### Équipement, coût et rythme
- Un seul familier équipé, donc un seul passif et un seul actif. Le passif prend
effet après 10 secondes avec le même œuf. Les améliorations temporaires qu’il
donne cessent au déséquipement ; cela ne supprime pas les objets déjà déplacés
ou les blocs déjà construits légitimement.
- Une aptitude générale **Lien actif**, proposée à **4 niveaux**, ouvre la touche
de pouvoir configurable. Les passifs viennent avec le familier. La rareté
n’ajoute pas une série de taxes en XP. Ce nom et ce prix sont implémentés dans beta.019 ; G est proposé par défaut
et reste reconfigurable.
- La recharge appartient au joueur et au slot de familier : utiliser un actif
bloque tous les autres jusqu’à la fin de cette recharge. Changer d’œuf, mourir,
se reconnecter ou passer en New Game+ ne la réinitialise pas. Les échéances
utilisent le temps réel du serveur et sont conservées ; le temps hors ligne
peut s’écouler normalement. Les effets actifs, eux, ne travaillent pas hors ligne.
- Pas de barre de mana supplémentaire ni de coût de faim uniforme. Les dépenses
sont indiquées : ingrédients, lait, munition, durabilité ou faim pour un soin.
Une action impossible ne consomme rien et ne lance pas la recharge. Une action
réellement déclenchée, même esquivée, dépense ses ressources et sa recharge.
- Aucun bonus de vie maximale, de faim maximale ou de taille de groupe miné/posé.
Les soins ne dépassent jamais la vie maximale. **Un cœur = 2 points de vie
(PV)** ; une demi-barre de faim = 1 point de nourriture.
- Les bonus de vitesse continus et temporaires d’un même familier ne se cumulent
pas : prendre le plus fort. Une impulsion ponctuelle reste limitée par sa
distance annoncée. Une plateforme ou suspension de familier ne constitue pas
un nouvel appui pour relancer un pouvoir aérien.
- Un bonus de respiration ralentit la consommation d’air, sans remplir la jauge.
Une réserve d’air active ajoute seulement la quantité annoncée, plafonnée à
la capacité achetée. Les déplacements aquatiques restent lents sans Nage.
- Un déplacement respecte les collisions et les zones autorisées. Pas de traversée
d’une paroi, de porte fermée ou d’un accès réservé. Une capacité de sauvetage
n’immunise pas contre la lave, le vide ou une chute ultérieure.
### Production, progression et informations
- Le compagnon invincible reste sans collision et n’est pas une cible qui absorbe
les attaques. Il ne combat, ne récolte, ne pond, ne se reproduit et ne produit
aucune ressource de manière autonome.
- Un actif de récolte transforme ou ramasse uniquement des ressources réelles.
Plantation, construction et carburant utilisent le stock du joueur ; les outils
perdent leur durabilité. Une case d’inventaire verrouillée reste inutilisable.
- Les plafonds de récolte ne cumulent pas un deuxième groupe avec le vein mining.
Un actif exécute soit son geste spécialisé, soit le geste groupé normal. Les
outils requis, protections, portées et limites de compétences restent applicables.
- Les gains de rendement plafonnent à **+10 % au total**, y compris le favori et
les autres futurs systèmes. Pas de bonus aux minerais, au butin de mort, à l’XP,
aux charges de faction, aux monnaies rares ou aux probabilités d’œufs.
- Un bonus de production se valide sur un cycle complet avec le même propriétaire
et le même familier. Un seul bonus par culture, animal ou machine et par cycle :
équiper au moment de récolter, multiplier les joueurs ou casser/reposer ne crée
pas de nouveau droit. Chaque cycle reste traçable côté serveur.
- Un repérage aide à chercher dans les chunks déjà chargés ; il ne charge pas de
terrain distant. Il ne révèle ni coffres privés, ni contenu de coffres fermés,
ni identité ou position précise d’un joueur caché, ni secret du scénario. Les marqueurs temporaires de pouvoir
restent locaux au monde : ils ne débloquent aucune fonction de l’Atlas.
- Les filtres par objet ou espèce ne proposent que les découvertes personnelles.
Un sonar peut signaler une présence anonyme, sans révéler son nom ou compléter
une entrée du Blockodex à travers un mur.
### Combat et coopération
- Les dégâts annoncés sont **par cible, avant protection, en PvE**. Les coups
respectent les immunités et fenêtres d’invulnérabilité natives : pas de double
impact caché par tick. Les dégâts viennent du joueur, jamais d’une IA invincible.
- Les bonus offensifs passifs concernent les monstres, pas les autres joueurs.
En PvP, les interventions offensives viennent des actifs annoncés ci-dessous.
- En PvP, les dégâts additionnels de familier sont plafonnés à **2 PV par cible
pour toute l’activation**, y compris projectiles, zones, poison et dégâts différés.
Les dégâts d’une arme utilisée normalement restent ceux de l’arme ; seul son
supplément de familier entre dans ce plafond. Aucune pénétration d’armure en PvP.
- La visibilité et les droits du joueur sont vérifiés au déclenchement et à
l’impact. Pas d’explosion qui casse le terrain, d’incendie propagé, d’attaque à
travers une paroi ou de commande opérateur. Les boss résistent aux déplacements
forcés et aux entraves, mais prennent les dégâts permis par leurs règles natives.
- Les ralentissements PvP sont limités à **20 % et 2 secondes** ; pas d’immobilisation
ni d’aveuglement d’un joueur. Après une entrave de familier, une cible est protégée
des nouvelles entraves de familiers pendant 6 secondes. Les déplacements forcés
d’un joueur ne dépassent pas 1 bloc ; leurs dégâts de chute attribuables au pouvoir
entrent dans le plafond PvP. À défaut de cette attribution fiable, on désactive
la poussée PvP au premier portage.
- Les tirs et charges ont un signal perceptible d’au moins 0,5 seconde ; les actifs
légendaires annoncent leur départ durant 1,5 à 2 secondes. On peut esquiver,
interrompre une canalisation en blessant son auteur ou se mettre à couvert.
- Les soins et déplacements de groupe concernent le propriétaire et des alliés
consentants, jamais des inconnus déplacés de force. Un même buff ne se cumule pas
entre familiers. Un soin, rechargement ou suspension de consommation d’air impose à son bénéficiaire une
récupération égale à la recharge du pouvoir reçu, pour empêcher les rotations
de soigneurs et les échanges entre espèces. Cette récupération est commune à
tous les familiers pour chaque famille d’effet : soin d’un côté, air de l’autre.
Elle est conservée à la reconnexion et au prestige. Les bonus de réduction de dégâts venant des familiers plafonnent à
25 %, sauf le coup unique explicitement protégé par une garde.
- Les effets de peur ne fonctionnent que sur les petits monstres ordinaires,
pendant au plus 2 secondes sur un monstre déjà engagé. Aucun raid ou boss ne se
désactive. Une cible effrayée bénéficie ensuite de 10 secondes de répit.
## Commun — gestes quotidiens et premières aventures
| Familier | Passif | Actif proposé | Recharge |
|---|---|---|---|
| Chauve-souris (`bat`) | **Adaptation obscure** : après 3 s immobile dans l’obscurité, les surfaces visibles s’éclaircissent légèrement ; aucune vision à travers la roche. | **Écho** : pendant 6 s, indique la direction de trois présences vivantes maximum à 12 blocs ; aucune identité ni position précise derrière une paroi. | 30 s |
| Chat (`cat`) | **Pattes de velours** : −20 % de dégâts de chute. | **Feulement** : repousse jusqu’à trois Creepers ou Phantoms à moins de 5 blocs et les fait hésiter 2 s ; aucune immunité ensuite. | 45 s |
| Poule (`chicken`) | **Petites ailes** : la distance de chute tolérée augmente de 1 bloc. | **Battement** : ralentit la descente pendant 2 s, sans remonter et sans effacer la chute déjà accumulée. | 30 s |
| Morue (`cod`) | **Petites branchies** : l’air diminue 10 % moins vite. | **Dernière bulle** : rend une bulle d’air ; utilisable seulement dans l’eau, sans dépasser la capacité achetée. | 45 s |
| Vache (`cow`) | **Lait sélectif** : boire du lait conserve les effets bénéfiques. | **Lait partagé** : consomme un seau de lait, rend le seau vide et retire Poison/Faim au porteur et à deux alliés consentants à 3 blocs. | 60 s |
| Âne (`donkey`) | **Pas chargé** : −10 % d’épuisement dû au sprint. | **Déchargement** : transfère au plus 18 piles existantes vers le coffre visé à portée normale, seulement des types déjà présents ; hotbar et équipement exclus. | 30 s |
| Renard (`fox`) | **Approche discrète** : −15 % de distance de détection initiale par les animaux sauvages fuyants. | **Plongeon** : petit bond horizontal de 3 blocs, puis ramasse une pile visible à l’arrivée si une case est disponible. | 25 s |
| Grenouille (`frog`) | **Berges faciles** : se déplacer au sol dans un bloc d’eau peu profonde est 10 % plus rapide ; ne débloque pas la nage. | **Langue** : attire une pile d’objets visible à 6 blocs ; peut aussi attirer d’un bloc un petit monstre ordinaire, sans dégâts. | 20 s |
| Cheval (`horse`) | **Cavalier** : +10 % de vitesse à une monture terrestre réellement chevauchée, sans améliorer son saut. | **Galop** : +25 % de vitesse terrestre pendant 4 s, monté ou à pied ; exige la faim nécessaire au sprint. | 35 s |
| Lama (`llama`) | **Caravanier** : les laisses du joueur tolèrent 2 blocs supplémentaires avant rupture. | **Crachat** : projectile à 10 blocs, 1 PV et ralentissement de 15 % pendant 2 s ; une seule cible. | 25 s |
| Mule (`mule`) | **Sentier sûr** : −20 % de recul reçu en chevauchant une monture. | **Chargement** : transfère au plus 9 piles de stockage vers l’inventaire de sa monture visée, à 3 blocs ; aucune case ni capacité ajoutée. | 30 s |
| Cochon (`pig`) | **Bon appétit** : +10 % de saturation obtenue avec carottes, betteraves et pommes de terre cuites ; aucun point de faim supplémentaire. | **Fouille** : indique durant 10 s jusqu’à trois végétaux récoltables déjà connus à 16 blocs, sans générer de truffe ou de butin. | 40 s |
| Lapin (`rabbit`) | **Pied léger** : +10 % de vitesse en position accroupie. | **Bond** : saut dirigé jusqu’à 2 blocs de haut ou 3 blocs de long ; aucun enchaînement aérien. | 25 s |
| Saumon (`salmon`) | **À contre-courant** : −25 % de poussée subie par l’eau courante. | **Remontée** : impulsion verticale jusqu’à 3 blocs dans l’eau ; ne donne pas d’air et respecte le plafond de la surface. | 30 s |
| Mouton (`sheep`) | **Laine isolante** : le gel de la neige poudreuse s’accumule 20 % moins vite. | **Coussin** : consomme une laine pour réduire de 50 % les dégâts du prochain atterrissage dans les 8 s ; réduction plafonnée à 2 PV. | 45 s |
| Squelette (`skeleton`) | **Main stable** : l’arc reste précis en déplacement lent, avec dispersion réduite de 15 %, sans accélérer sa charge. | **Tir repère** : la prochaine flèche tirée dans les 8 s marque sa cible 6 s pour le tireur ; dégâts normaux, munition consommée, joueurs visibles seulement en ligne de vue. | 35 s |
| Slime (`slime`) | **Souplesse** : −15 % de dégâts de chute et −15 % de ralentissement dans les blocs de miel. | **Rebond** : réduit de 50 % un atterrissage imminent, au plus 2 PV, puis rebondit de 2 blocs maximum ; expire après 4 s, une seule fois. | 40 s |
| Araignée (`spider`) | **Prise ferme** : +15 % de vitesse sur les échelles et les lianes. | **Accroche** : adhère à la paroi visée pendant 4 s et peut y grimper de 2 blocs maximum ; pas d’escalade permanente ni de plafond franchi. | 35 s |
| Poulpe (`squid`) | **Eau claire** : réduit légèrement le voile sous-marin, sans voir plus loin que les chunks chargés. | **Nuage d’encre** : échappe 2 s à la détection de monstres aquatiques non-boss à 4 blocs ; contre des joueurs, produit uniquement un nuage de particules lisible. | 45 s |
| Têtard (`tadpole`) | **Reprendre haleine** : la jauge d’air se recharge 20 % plus vite à la surface, sans augmenter sa capacité. | **Retour à la rive** : indique pendant 10 s la berge praticable la plus proche dans un rayon de 16 blocs ; pas de téléportation. | 30 s |
| Poisson tropical (`tropical_fish`) | **Œil du récif** : les coraux et herbiers déjà découverts contrastent mieux sous l’eau à moins de 8 blocs. | **Palette vivante** : repère durant 10 s jusqu’à trois variantes de coraux ou poissons déjà connues dans un rayon de 16 blocs, sans dévoiler les inconnues. | 40 s |
| Zombie (`zombie`) | **Tenace** : lorsque la vie est sous 30 %, le recul reçu diminue de 20 %. | **Second souffle** : transforme 1 point de nourriture en 1 PV sur 5 s ; dégâts reçus ou attaque interrompent le soin, la nourriture est déjà dépensée. | 60 s |
## Peu commun — une spécialité affirmée
| Familier | Passif | Actif proposé | Recharge |
|---|---|---|---|
| Tatou (`armadillo`) | **Carapace réflexe** : après 5 s accroupi, le prochain projectile inflige 15 % de dégâts en moins ; le bénéfice expire dès la fin de l’accroupissement. | **En boule** : garde immobile de 3 s, −40 % sur le premier coup uniquement, réduction plafonnée à 2 PV ; attaquer ou bouger la rompt. | 45 s |
| Abeille (`bee`) | **Pollinisateur** : +10 % de progression naturelle des cultures proches à 4 blocs, seulement durant la présence active du joueur. | **Butinage** : consomme jusqu’à 4 poudres d’os pour traiter jusqu’à 4 plantes accessibles distinctes ; chaque plante reçoit une application native, sans garantie de maturité. | 45 s |
| Dromadaire (`camel`) | **Endurance du désert** : −15 % d’épuisement du sprint sur sable et sable rouge. | **Grande enjambée** : franchit un intervalle horizontal jusqu’à 5 blocs, depuis un sol stable ; pas de charge infinie au-dessus du vide. | 40 s |
| Araignée venimeuse (`cave_spider`) | **Habitué au venin** : −20 % de durée des nouveaux poisons reçus. | **Morsure** : la prochaine frappe de mêlée dans les 6 s ajoute jusqu’à 2 PV de poison sur 4 s ; poison non létal. | 45 s |
| Golem de cuivre (`copper_golem`) | **Lecture du circuit** : affiche le niveau de signal du composant de redstone directement visé à portée normale. | **Diagnostic** : pendant 10 s, colore les états alimentés de 32 composants maximum appartenant au circuit exposé visé, dans un rayon de 8 blocs ; aucun signal modifié. | 40 s |
| Dauphin (`dolphin`) | **Nage accompagnée** : +10 % de vitesse de nage, uniquement avec l’aptitude Nage et la faim requise. | **Sillage** : laisse pendant 5 s un courant de vitesse +20 % pour le porteur et deux nageurs consentants à 4 blocs ; ne fournit pas d’air. | 50 s |
| Noyé (`drowned`) | **Main sous l’eau** : réduit de 10 % la pénalité de vitesse de minage sous-marin, sans supprimer la pénalité ni modifier les groupes. | **Ancrage** : reste stable dans l’eau pendant 6 s malgré les courants ; peut miner à portée habituelle et continue à consommer de l’air. | 40 s |
| Poulpe luisant (`glow_squid`) | **Lueur douce** : éclairage personnel des surfaces visibles à 4 blocs sous l’eau ; aucun changement du niveau lumineux serveur. | **Balise vivante** : pose pour 20 s une balise lumineuse non solide à un point visible à 8 blocs, partagée avec le groupe ; pas de découverte ou waypoint permanent. | 45 s |
| Chèvre (`goat`) | **Sabots** : réduit de 20 % les glissades sur glace quand on est accroupi. | **Coup de corne** : charge de 3 blocs, inflige 2 PV à la première cible et la pousse de 2 blocs maximum en PvE ; collisions respectées. | 40 s |
| Momifié (`husk`) | **Marche aride** : les effets de Faim reçus durent 20 % moins longtemps. | **Poussière** : une zone de 3 blocs gêne 3 monstres maximum, ralentis de 20 % pendant 3 s ; aucun aveuglement de joueur. | 50 s |
| Ocelot (`ocelot`) | **Sous-bois** : +10 % de vitesse en position accroupie dans une végétation dense, sans traverser les feuilles solides. | **Esquive** : pas latéral de 3 blocs ; aucun instant d’invulnérabilité ni passage à travers une entité solide. | 30 s |
| Panda (`panda`) | **Gourmandise ciblée** : manger une part de gâteau donne 10 % de saturation supplémentaire. | **Culbute** : roulade de 3 blocs sur terrain libre ; réduit de 25 % le premier dégât reçu durant la seconde du mouvement, au plus 1 PV. | 40 s |
| Perroquet (`parrot`) | **Sentinelle** : imite un monstre découvert et visible qui entre dans les 10 blocs, avec au moins 15 s entre alertes. | **Imitation** : attire l’attention de trois monstres ordinaires non engagés vers un point visible à 8 blocs pendant 4 s ; aucune cible invincible persistante. | 45 s |
| Poisson-globe (`pufferfish`) | **Immunité partielle** : −20 % de dégâts de poison, sans supprimer les autres effets. | **Hérissement** : pendant 5 s, la première attaque de mêlée reçue applique à son auteur 2 PV de poison maximum sur 4 s, non létal ; n’annule pas le coup reçu. | 50 s |
| Ours blanc (`polar_bear`) | **Pelage polaire** : −20 % de dégâts de gel. | **Protection du petit** : pendant 5 s, le porteur ou un allié consentant à 4 blocs subit 25 % de dégâts de mêlée en moins ; un seul bénéficiaire. | 60 s |
| Golem de neige (`snow_golem`) | **Pas d’hiver** : le joueur ne s’enfonce plus pendant la première seconde d’un contact avec la neige poudreuse ; le gel reste possible. | **Bourrasque** : lance trois boules de neige en éventail, ralentissement 20 % pendant 2 s au plus une fois par cible ; consomme trois boules de neige, dégâts natifs. | 35 s |
| Arpenteur (`strider`) | **Pieds chauds** : −20 % de dégâts de contact avec le magma, aucune immunité à la lave. | **Pas de braise** : pendant 3 s, permet de marcher sur la surface de lave sur 5 blocs maximum ; ne protège pas une immersion ni la fin de l’effet. | 60 s |
| Tortue (`turtle`) | **Apnée tranquille** : l’air diminue 15 % moins vite quand le joueur reste presque immobile dans l’eau. | **Abri** : garde de 4 s, −40 % sur le premier projectile reçu, réduction plafonnée à 2 PV ; déplacement ralenti de 30 %, attaque impossible pendant la garde. | 50 s |
| Villageois (`villager`) | **Carnet du voisinage** : mémorise les offres déjà consultées, leurs prix et l’heure de consultation ; n’actualise pas un marchand éloigné. | **Commande groupée** : exécute jusqu’à trois échanges d’une offre choisie en un geste, au prix et dans le stock actuels, puis place les résultats dans les cases libres. Fournitures réelles, aucune réservation de case verrouillée, aucun bonus d’XP par échange. | 45 s |
| Loup (`wolf`) | **Riposte de meute** : +10 % de dégâts de mêlée contre le dernier monstre qui a blessé le porteur, durant 6 s. | **Cible de meute** : désigne un monstre visible à 12 blocs pendant 8 s ; les animaux déjà apprivoisés et réellement présents du porteur le priorisent, sans bonus de dégâts ou d’invincibilité. Ne déclenche pas une attaque collective contre un joueur. | 45 s |
| Embourbé (`bogged`) | **Pied de marais** : +10 % de vitesse sur boue et dans l’eau peu profonde, sans nage rapide. | **Flèche des marais** : la prochaine flèche dans les 8 s porte 2 PV de poison non létal maximum sur 4 s ; utilise une flèche et l’arc normalement. | 50 s |
| Desséché (`parched`) | **Habitué à l’épuisement** : les nouveaux effets de Faiblesse durent 20 % moins longtemps. | **Trait épuisant** : la prochaine flèche dans les 8 s réduit de 15 % les dégâts de mêlée de sa cible pendant 4 s ; ne détruit pas sa nourriture. | 50 s |
## Rare — des outils de métier et de vraies manœuvres
| Familier | Passif | Actif proposé | Recharge |
|---|---|---|---|
| Allay (`allay`) | **Ramasseur choisi** : rayon de ramassage de 4 blocs pour le seul type d’objet tenu en main secondaire ; objets libres et accessibles seulement. | **Récolte musicale** : attire pendant 8 s jusqu’à 16 piles libres du type choisi à 8 blocs, autour du joueur ou d’un bloc musical visé ; aucun accès aux conteneurs. | 45 s |
| Axolotl (`axolotl`) | **Convalescence aquatique** : les dégâts reçus de monstres aquatiques diminuent de 10 %. | **Soin de rive** : au contact de l’eau, consomme 1 point de nourriture pour rendre 1 PV au porteur ou à un allié consentant à 4 blocs, sur 4 s ; interruption aux dégâts. | 60 s |
| Blaze (`blaze`) | **Chaleur entretenue** : +10 % de progression de cuisson d’un four déjà allumé à 4 blocs ; consomme le carburant 10 % plus vite, sans multiplier l’XP par objet cuit. | **Salve ardente** : trois projectiles esquivables répartissant au plus 4 PV par cible, portée 16 blocs ; pas de feu au sol ni de brûlure supplémentaire. | 60 s |
| Breeze (`breeze`) | **Lecture du vent** : les charges de vent personnelles produisent 15 % de recul en moins sur le porteur ; pas de réduction générale des explosions. | **Pas de vent** : impulsion de 5 blocs horizontalement ou 3 blocs verticalement depuis un appui, puis 1 s de descente ralentie ; une seule impulsion. | 40 s |
| Dromadaire momifié (`camel_husk`) | **Caravane nocturne** : −15 % d’épuisement dû au sprint la nuit sur terrain sec. | **Traversée** : ruée horizontale de 6 blocs depuis le sol, sans dégâts ; le ralentissement de terrain est ignoré 2 s, mais les collisions restent actives. | 50 s |
| Creeper (`creeper`) | **Mèche sensible** : alerte sonore lorsqu’une TNT amorcée ou un Creeper en amorçage est visible à 8 blocs ; ne désamorce rien. | **Détonation maîtrisée** : après 1 s d’annonce, souffle de rayon 3 blocs, jusqu’à 4 cibles, 4 PV chacune et petit recul ; aucun bloc détruit ni explosion à la mort. | 75 s |
| Endermite (`endermite`) | **Récupération de perle** : −20 % de dégâts subis lors d’une téléportation par perle d’Ender. | **Petit décalage** : téléportation de 3 blocs maximum vers un sol visible et libre ; ne franchit pas de paroi, aucune annulation d’une chute engagée. | 45 s |
| Gardien (`guardian`) | **Écailles** : −10 % de dégâts de projectiles reçus sous l’eau. | **Rayon** : verrouillage visible de 1,5 s, puis 4 PV à une cible à 12 blocs ; couper la ligne de vue ou blesser le lanceur interrompt le tir. | 60 s |
| Hoglin (`hoglin`) | **Carrure** : −20 % de recul en mêlée. | **Percussion** : charge de 4 blocs, 4 PV à la première cible, recul PvE de 2 blocs ; s’arrête contre un obstacle. | 55 s |
| Cube de magma (`magma_cube`) | **Peau chaude** : les embrasements reçus durent 20 % moins longtemps, sans protéger de la lave. | **Bond brûlant** : saut de 3 blocs maximum ; l’atterrissage dans les 3 s produit une onde de rayon 2 blocs, 3 PV, trois cibles maximum, sans incendie. | 55 s |
| Mooshroom (`mooshroom`) | **Cuisine fongique** : les ragoûts aux champignons consommés donnent 10 % de saturation supplémentaire. | **Bouillon réconfortant** : consomme un ragoût aux champignons et rend son bol ; le porteur et deux alliés consentants à 4 blocs récupèrent chacun 1 PV sur 5 s. Un dégât interrompt le soin du bénéficiaire concerné ; aucune nourriture ajoutée. | 90 s |
| Nautile (`nautilus`) | **Réserve mesurée** : l’air diminue 15 % moins vite pendant un déplacement lent. | **Cloche de plongée** : suspend la consommation d’air pendant 6 s pour le porteur immobile sous l’eau ; ne remplit pas sa jauge, bouger ou attaquer interrompt l’effet. | 75 s |
| Phantom (`phantom`) | **Vol de nuit** : −20 % de dégâts de chute pendant la nuit. | **Glissade nocturne** : plane en descente durant 4 s maximum, sans gain d’altitude ; l’usage nocturne porte la durée à 6 s. | 65 s |
| Piglin (`piglin`) | **Habitué du troc** : mémorise la liste des résultats de troc déjà obtenus ; les résultats inconnus restent masqués. | **Choix du marchand** : pour un seul prochain troc dans les 20 s, consomme deux lingots d’or et propose deux tirages natifs ; garde un résultat et abandonne l’autre. Pas d’amélioration des poids de rareté. | 90 s |
| Pillard (`pillager`) | **Arbalétrier** : −10 % de temps de chargement de l’arbalète, sans modifier les munitions ou l’enchantement Charge rapide. | **Tir de couverture** : le prochain projectile d’arbalète dans les 8 s crée à l’impact une zone d’hésitation de 2 blocs pendant 3 s ; trois monstres maximum ralentis de 20 %, dégâts du projectile normaux. | 50 s |
| Poisson d’argent (`silverfish`) | **Lecture de la pierre** : après avoir visé 2 s un bloc de pierre à portée, signale s’il est infesté ; aucun minerai révélé. | **Fissure témoin** : montre pendant 8 s les faces de cavité directement derrière le bloc visé, profondeur 2 blocs maximum ; ne révèle ni contenu, ni minerai, ni structure protégée. | 50 s |
| Cube de soufre (`sulfur_cube`) | **Décontamination** : les nouveaux effets de Poison et de Faiblesse durent 10 % moins longtemps. | **Projection corrosive** : projectile à 10 blocs, 3 PV et dégâts de mêlée de la cible réduits de 15 % pendant 4 s ; aucune armure détruite, aucune corrosion de blocs. | 60 s |
| Lama de marchand (`trader_llama`) | **Inventaire de caravane** : affiche les places libres des montures du joueur réellement présentes à 8 blocs. | **Convoi** : rappelle jusqu’à trois de ses montures à 12 blocs vers une place visible proche ; elles marchent, ne se téléportent pas et ne traversent pas les obstacles. | 60 s |
| Marchand ambulant (`wandering_trader`) | **Carnet de voyage** : garde les offres et emplacements de marchands déjà rencontrés, avec date ; aucune actualisation distante ou garantie de présence. | **Étal partagé** : pendant 30 s, un allié consentant à 16 blocs peut consulter et effectuer une transaction du marchand devant le porteur avec ses propres ressources ; les deux joueurs restent proches, le prix et le stock sont inchangés. | 90 s |
| Cheval-zombie (`zombie_horse`) | **Longue route** : la monture terrestre réellement contrôlée subit 20 % de dégâts de chute en moins ; le familier lui-même ne sert pas de monture. | **Endurance morte-vivante** : pendant 6 s, la monture et son cavalier reçoivent 20 % de recul en moins et traversent l’eau peu profonde 15 % plus vite ; pas de respiration offerte. | 60 s |
| Zombie-villageois (`zombie_villager`) | **Médecin de campagne** : affiche l’avancement estimé d’une guérison de zombie-villageois visible à 6 blocs. | **Veille** : canalise 8 s près d’un zombie-villageois déjà en guérison pour avancer de 20 s son temps restant ; une seule application de familier par guérison, pas d’ingrédient économisé. | 90 s |
| Piglin zombifié (`zombified_piglin`) | **Retenue** : raccourcit de 20 % la colère individuelle d’un Piglin zombifié, sans prévenir l’alerte de groupe ou pardonner une nouvelle attaque. | **Offrande d’apaisement** : consomme un lingot d’or pour interrompre 2 s la poursuite de trois Piglins zombifiés ordinaires à 5 blocs ; la colère reste enregistrée. | 75 s |
| Vagabond (`stray`) | **Tireur du froid** : −20 % de glissade sur glace pendant la visée à l’arc. | **Trait givrant** : la prochaine flèche dans les 8 s ralentit de 20 % pendant 3 s ; munition et dégâts natifs, aucune glace placée. | 50 s |
| Vindicateur (`vindicator`) | **Bûcheron précis** : −10 % de durée de casse des bûches à la hache, dans les limites normales du minage acheté. | **Brise-garde** : la prochaine frappe de hache dans les 6 s prolonge de 1 s une désactivation de bouclier réussie ; pas de dégâts supplémentaires. En PvP, prolongation plafonnée à 0,5 s. | 60 s |
| Zoglin (`zoglin`) | **Instinct de survie** : −15 % de recul lorsque la vie est sous 50 %. | **Ruée furieuse** : charge de 5 blocs sans changement de direction après départ, 4 PV à la première cible ; annonce de 0,75 s qui permet l’esquive. | 60 s |
## Extraordinaire — transformer une situation
| Familier | Passif | Actif proposé | Recharge |
|---|---|---|---|
| Grinceur (`creaking`) | **Écorce** : après 3 s immobile au sol, −15 % de dégâts tant qu’on reste immobile ; attaquer interrompt ce passif. | **Enracinement** : pendant 6 s, immobile et sans attaquer, réduit les dégâts de 25 % et le recul de 50 % ; jusqu’à trois alliés consentants à 3 blocs reçoivent −10 % de dégâts tant qu’ils restent proches. | 100 s |
| Grand gardien (`elder_guardian`) | **Bâtisseur immergé** : −15 % de pénalité de minage sous-marin, sans supprimer l’exigence d’air, d’outil ou de rang. | **Sanctuaire marin** : zone de rayon 4 blocs pendant 8 s, centrée au lancement ; le porteur et trois alliés consentants suspendent leur consommation d’air et subissent 15 % de dégâts en moins tant qu’ils y restent. | 120 s |
| Enderman (`enderman`) | **Calme du regard** : croiser brièvement le regard d’un Enderman donne 1 s supplémentaire avant son agression ; une attaque ne bénéficie d’aucune tolérance. | **Pas de l’End** : téléportation jusqu’à 8 blocs sur un appui visible et libre, après 0,75 s de préparation ; ne traverse aucune paroi, porte fermée ou zone interdite. | 75 s |
| Évocateur (`evoker`) | **Étude des maléfices** : les nouveaux effets de Faiblesse et de Lenteur durent 15 % moins longtemps. | **Ligne de crocs** : après 1 s d’annonce, dessine une ligne de 8 blocs sur un sol continu visible ; 5 PV par cible au maximum, trois cibles maximum, aucun croc derrière un mur. | 90 s |
| Ghast (`ghast`) | **Artillerie aérienne** : les projectiles renvoyés par le joueur ont 10 % de vitesse supplémentaire, sans bonus de dégâts. | **Boulet spectral** : projectile lent et renvoyable, portée 24 blocs, explosion de rayon 2 blocs pour 5 PV, quatre cibles maximum ; terrain et feu inchangés. | 90 s |
| Ghast joyeux (`happy_ghast`) | **Main du bâtisseur** : tient la position 0,5 s après avoir quitté accidentellement un bord en mode accroupi ; une fois par appui stable de 2 s, aucun escalier dans le vide. | **Plateforme de nuage** : crée à côté d’un bloc d’appui visible une plateforme personnelle de 3 × 3 pour 8 s, dans la portée de pose ; aucun objet ou bloc ne peut y être construit, elle ne porte ni passager ni mécanisme et avertit avant de disparaître. | 120 s |
| Golem de fer (`iron_golem`) | **Présence protectrice** : le premier coup de mêlée reçu après 10 s sans dégâts inflige 15 % de dégâts en moins. | **Interposition** : pendant 5 s, le porteur et deux alliés consentants à 3 blocs réduisent les dégâts de mêlée de 25 % et ne sont pas projetés en l’air ; le porteur avance 20 % moins vite. | 90 s |
| Piglin barbare (`piglin_brute`) | **Garde d’or** : porter au moins une pièce d’armure d’or réduit le recul de mêlée de 15 % ; aucune trêve avec les brutes. | **Contre brutal** : fenêtre de parade frontale de 1 s avec arme de mêlée ; si un coup est paré, réduit ses dégâts de 40 %, au plus 2 PV, puis la prochaine frappe dans les 3 s ajoute 2 PV en PvE. | 75 s |
| Ravageur (`ravager`) | **Masse** : −25 % de recul terrestre, sans bonus de dégâts permanent. | **Percée** : charge annoncée de 6 blocs, heurte jusqu’à trois cibles, 5 PV chacune ; s’arrête devant le premier bloc solide et ne casse aucune culture. | 90 s |
| Shulker (`shulker`) | **Prudence verticale** : −20 % de durée de Lévitation reçue. | **Ancrage de chantier** : reste suspendu à sa position actuelle pendant 6 s maximum, à moins de 4 blocs d’un appui solide ; peut poser à portée normale, sans ascension. Se déplacer annule l’effet, avertissement avant la chute. | 100 s |
| Cheval-squelette (`skeleton_horse`) | **Cavalier des fonds** : l’air du cavalier diminue 15 % moins vite lorsqu’il est sur une monture immergée. | **Traversée des eaux** : le cavalier et sa monture marchent sur l’eau pendant 6 s et 10 blocs au maximum ; aucun effet sur la lave, aucune protection après expiration. | 90 s |
| Renifleur (`sniffer`) | **Mémoire botanique** : en visant une plante connue, indique ses conditions de croissance manquantes observables : lumière, substrat ou eau, selon son espèce. | **Piste ancienne** : pendant 15 s, indique une direction approximative vers du sable ou du gravier suspect à 24 blocs, types déjà découverts et chunks déjà chargés ; ne lit pas le butin, ne détecte pas une salle fermée ou un lieu réservé au scénario. | 120 s |
| Vex (`vex`) | **Esprit agile** : −20 % de durée de ralentissement dû aux effets reçus, sans traversée des collisions. | **Main spectrale** : atteint un bloc de construction visible 2 blocs au-delà de la portée habituelle pour une seule pose ou récupération autorisée ; exige outil, matériaux et rang, jamais de coffre ou mécanisme distant. | 60 s |
| Sorcière (`witch`) | **Dosage précis** : les potions bues par le porteur durent 10 % plus longtemps ; aucune amplification de niveau ni changement des effets instantanés. | **Fiole partagée** : consomme une potion buvable choisie et transmet à deux alliés consentants à 4 blocs sa moitié de durée, ou sa moitié de soin instantané, chacun ; ne transforme pas une potion en objet revendable. | 100 s |
| Wither squelette (`wither_skeleton`) | **Os calcinés** : les nouveaux effets de Wither durent 20 % moins longtemps. | **Entaille sombre** : la prochaine frappe de mêlée dans les 6 s applique au plus 3 PV de flétrissement sur 4 s et réduit les soins reçus de 20 % pendant 4 s ; soin réduit de 10 % et durée 2 s en PvP. | 75 s |
| Nautile-zombie (`zombie_nautilus`) | **Sang-froid abyssal** : à moins d’un tiers d’air, le recul reçu sous l’eau diminue de 25 %, sans restaurer d’air. | **Sauvetage** : propulse vers le haut, sur 6 blocs maximum, le porteur et un allié immergé consentant à 3 blocs ; rend une bulle à chacun, sans dépasser leur capacité. Plafonds et obstacles arrêtent la remontée. | 120 s |
## Légendaire — trois moments exceptionnels
| Familier | Passif | Actif proposé | Recharge |
|---|---|---|---|
| Ender Dragon (`ender_dragon`) | **Maîtrise du ciel** : −20 % de dégâts de collision en élytres et de projectiles reçus en l’air ; aucune armure supplémentaire au sol. | **Essor draconique** : après 2 s d’annonce au sol, soulève de 8 blocs le porteur et trois alliés consentants à 4 blocs, puis permet 10 s de vol plané, déplacement total plafonné à 40 blocs. Aucun maintien d’altitude, aucune deuxième impulsion ; descente signalée, pas d’immunité à l’arrivée. | 180 s |
| Warden (`warden`) | **Écoute profonde** : perçoit la direction de vibrations à 8 blocs, sans nom, silhouette ou coordonnées exactes ; les joueurs accroupis ne sont pas révélés. | **Onde sonique** : après 2 s de canalisation sonore, frappe dans une ligne de 12 blocs jusqu’à trois cibles visibles pour 10 PV chacune en PvE, interrompt leur attaque si elle est interruptible et détruit les projectiles hostiles rencontrés. Pas de dégâts à travers un mur, ni de pénétration d’armure en PvP. | 180 s |
| Wither (`wither`) | **Volonté funèbre** : quand la vie passe sous 30 %, les nouveaux ralentissements durent 25 % moins longtemps ; aucune résurrection ni explosion à la mort. | **Moisson des ombres** : après 1,5 s d’annonce, tire trois crânes lents et esquivables vers les cibles visées à 16 blocs, au maximum 12 PV par cible et trois cibles au total. Les dégâts réellement infligés rendent 10 % de leur valeur au porteur, plafonnés au plus petit de 2 PV ou 20 % de sa vie maximale. Aucun vol de vie sur alliés, familiers, animaux apprivoisés ou cibles invulnérables ; aucun terrain détruit. | 180 s |
## Obtenir les œufs sans transformer les animaux en distributeurs
**Toute cette acquisition est proposée : beta.018 ne la contient pas.**
1. Découvrir personnellement l’espèce en jeu ouvre sa fiche de lien dans le
Blockodex. Observer ne donne pas directement un œuf ou une série d’XP.
2. Réussir un objectif approprié débloque une première essence : s’occuper d’un
animal, réaliser une production variée, accomplir une exploration ou maîtriser
une interaction avec un monstre. Pas de « tuer 500 exemplaires » ni de minuterie
AFK pour les obtenir.
3. L’offrande fournit le coût matériel. Les objectifs et leurs récompenses sont
enregistrés par habitant et monde ; New Game+ ne distribue pas à nouveau les
premières récompenses. Les duplicatas éventuels demandent une recette ou un
échange explicite, pas une nouvelle validation de la même découverte.
4. Le familier peut être conservé au prestige. Sa puissance n’augmente pas avec
le chiffre romain, et ses réserves respectent toujours les compétences du
personnage courant. Aucun prestige supplémentaire n’est requis pour rééquiper
un familier déjà acquis.
Exemples de pistes d’obtention, à transformer ensuite en vrais objectifs :
| Œuf | Objectif proposé |
|---|---|
| Poule — commun | Découvrir, nourrir et accompagner la croissance d’une poule réelle. |
| Squelette — commun | Observer son arc et bloquer un tir avec un bouclier ; aucune ferme à kills requise. |
| Abeille — peu commun | Installer un rucher et récolter miel puis cire en préservant ses habitantes. |
| Golem de cuivre — peu commun | Construire puis diagnostiquer un premier circuit fonctionnel. |
| Allay — rare | Rencontrer un Allay, lui confier un objet et organiser une collecte près d’un bloc musical. |
| Piglin — rare | Découvrir plusieurs résultats de troc distincts ; pas acheter cent fois le même résultat. |
| Golem de fer — extraordinaire | Participer à la défense d’un village puis à sa remise en état, avec des objectifs vérifiables. |
| Renifleur — extraordinaire | Mener une séquence d’archéologie, faire éclore un véritable renifleur et cultiver ses plantes. |
| Ender Dragon — légendaire | L’achèvement collectif de l’aventure de l’End ouvre le lien ; chaque habitant réalise ensuite son épreuve d’exploration. |
| Warden — légendaire | Réussir une expédition de discrétion dans les profondeurs et rapporter une archive ; tuer le Warden n’est pas le passage obligé. |
| Wither — légendaire | Participer au défi du Wither puis à la construction d’une balise utile à la communauté ; pas recevoir un œuf à chaque boss farmé. |
Le déblocage collectif ne remet pas automatiquement un légendaire à tous les
comptes. La contribution personnelle doit rester accessible aux nouveaux venus
après l’événement, par une épreuve rejouable dont la récompense est unique pour
chaque habitant. Les noms d’épreuves ci-dessus sont des intentions, pas des
advancements déjà présents.
L’objet obtenu en survie devra être un **œuf de familier inerte** : même apparence
d’espèce et même slot, mais impossible à utiliser comme œuf d’apparition vanilla
dans le monde ou dans un distributeur. Sans cette distinction, l’obtention d’un
œuf de Wither, de villageois ou de renifleur ferait aussi apparaître des entités
et casserait l’équilibre de production. Il faudra spécifier le contrat d’objet,
sa provenance serveur et la migration des œufs de test avant tout portage ;
aucune transformation des objets actuels n’est faite ici.
Les règles actuelles de mort restent la référence : l’œuf équipé tombe si
keepInventory est désactivé. Une récupération/recréation d’essence perdue et un
éventuel commerce de familiers demandent leurs propres règles avant ouverture en
survie. En première expérimentation, proposer le lien comme personnel et les
objets de test comme opérateur évite de décider silencieusement de cette économie.
## Première série de tests d’équilibrage
Commencer par **Poule, Vache, Âne, Abeille, Golem de cuivre, Axolotl, Creeper,
Enderman et Shulker**. Ce petit ensemble couvre chute, soin, transfert, production,
information, dégâts, téléportation et construction. Il vérifie les règles communes
avant de multiplier les effets. Les légendaires viennent après cette mesure.
| Situation | Ce qu’il faut vérifier |
|---|---|
| Nouveau personnage à 3–3–3 | Aucun passif ne permet d’ignorer durablement faim, air ou chute ; un actif utile ne suppose pas un inventaire rempli de potions. |
| Compétences maximales | Un commun est encore utile pour un métier ; il n’est pas remplacé automatiquement par un légendaire. |
| Après New Game+ | Les réserves d’air, les soins et la portée groupée se bornent aux nouveaux rangs ; aucun coût ou délai réinitialisé. |
| PvP à trois cœurs | Au plus un cœur de dégâts additionnels par activation et par cible, y compris poison, feu, impacts multiples et chute attribuable ; annonce et esquive réelles. |
| 30 joueurs réunis | Pas de chaîne de peur, de boucliers ou de bulles d’air infinie ; pas de cumul de bonus de production et pas de recherche de chunks distants. |
| Échanges et déséquipement | Aucun buff stocké en changeant d’œuf, aucune potion/munition/ressource dupliquée, une seule recharge commune persistante. |
| Claims et lieux à secrets | Téléportations, silhouettes, main spectrale et plateformes respectent les accès ; les pouvoirs ne court-circuitent pas une salle fermée. |
| Ergonomie | Prévisualiser la portée, l’appui, les bénéficiaires, les matériaux et la recharge ; un refus explique ce qui manque sans consommer l’action. |
Mesurer le temps gagné sur une vraie tâche, le taux de survie et la fréquence
d’utilisation. Un passif constamment équipé dans tous les contextes est suspect ;
un actif jamais utilisé malgré sa disponibilité doit être renforcé ou remplacé.
Les +10 % ne sont pas une garantie : les pouvoirs de construction et d’information
peuvent gagner bien plus de temps qu’un petit bonus de dégâts.
## Points à résoudre avant implémentation
- Les bonus permanents de vitesse de production, les échanges à distance et les
plateformes demandent un état serveur dédié : ce
sont des contrats à écrire, pas de simples effets de potion à importer.
- Le Renifleur ne génère aucun site ni butin. Le filtre excluant lieux protégés
et salles fermées doit être fiable avant d’activer sa recherche.
- La main spectrale du Vex étend uniquement un geste de construction explicite ;
son interaction avec les structures protégées devra être testée avant activation.
- Le premier ticket de pouvoirs inclura configuration serveur, libellés FR/EN,
attribution PvP et contrat de sauvegarde des recharges. Cette passe documentaire
ne modifie ni version, ni monde, ni binaire.
+107
View File
@@ -0,0 +1,107 @@
# beta.019 — couverture des familiers
Les 88 passifs et 88 actifs disposent d’un chemin d’exécution. Les chiffres et
conditions de chaque pouvoir restent détaillés dans la [proposition v1](companion-powers-balance-proposal.md).
La suite client extrait les **88 modèles natifs**, à deux instants, en contrôlant
leur éclairage et leur échelle. Cela ne constitue pas 88 essais manuels de pouvoirs.
Le tableau distingue les contrôles comportementaux propres à une espèce des
contrats communs (achat, persistance, coûts, portées, consentement et interruptions).
La balance en partie réelle reste à éprouver ; « modèle seulement » signifie
que le gameplay de cette espèce ne possède pas encore de scénario automatique dédié.
Points d’entrée : `CompanionPassives` et les mixins `Companion*` pour les passifs ;
`CompanionActions`, `CompanionWork`, `CompanionQueries`, `CompanionTrades`,
`CompanionPlatform` et `CompanionProjectiles` pour les actifs. Les tests sont dans
`Companion019GameTests`, `Companion019ClientChecks` et `Companion019Smoke`.
| Familier | Passif implémenté | Actif implémenté | Vérification spécifique |
| --- | --- | --- | --- |
| Chauve-souris (`bat`) | Adaptation obscure | Écho (30 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Chat (`cat`) | Pattes de velours | Feulement (45 s) | Attribut de chute et suppression au changement d’œuf ; consentement. |
| Poule (`chicken`) | Petites ailes | Battement (30 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Morue (`cod`) | Petites branchies | Dernière bulle (45 s) | Ajout d’air plafonné à trois bulles et récupération du bénéficiaire. |
| Vache (`cow`) | Lait sélectif | Lait partagé (60 s) | Nettoyage natif du lait, conservation des effets bénéfiques, seau consommé/rendu. |
| Âne (`donkey`) | Pas chargé | Déchargement (30 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Renard (`fox`) | Approche discrète | Plongeon (25 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Grenouille (`frog`) | Berges faciles | Langue (20 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Cheval (`horse`) | Cavalier | Galop (35 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Lama (`llama`) | Caravanier | Crachat (25 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Mule (`mule`) | Sentier sûr | Chargement (30 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Cochon (`pig`) | Bon appétit | Fouille (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Lapin (`rabbit`) | Pied léger | Bond (25 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Saumon (`salmon`) | À contre-courant | Remontée (30 s) | Navigation aquatique après le déplacement laborieux au sol. |
| Mouton (`sheep`) | Laine isolante | Coussin (45 s) | Consommation dans les seules cases ouvertes ; coussin limité et utilisé une fois. |
| Squelette (`skeleton`) | Main stable | Tir repère (35 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Slime (`slime`) | Souplesse | Rebond (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Araignée (`spider`) | Prise ferme | Accroche (35 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Poulpe (`squid`) | Eau claire | Nuage d’encre (45 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Têtard (`tadpole`) | Reprendre haleine | Retour à la rive (30 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Poisson tropical (`tropical_fish`) | Œil du récif | Palette vivante (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Zombie (`zombie`) | Tenace | Second souffle (60 s) | Achat, persistance de recharge, soin progressif payé en faim et interrompu par dégâts. |
| Tatou (`armadillo`) | Carapace réflexe | En boule (45 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Abeille (`bee`) | Pollinisateur | Butinage (45 s) | Propriétaire du cycle de culture, interruption sans crédit récupérable. |
| Dromadaire (`camel`) | Endurance du désert | Grande enjambée (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Araignée venimeuse (`cave_spider`) | Habitué au venin | Morsure (45 s) | Réduction native de durée du poison. |
| Golem de cuivre (`copper_golem`) | Lecture du circuit | Diagnostic (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Dauphin (`dolphin`) | Nage accompagnée | Sillage (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Noyé (`drowned`) | Main sous l’eau | Ancrage (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Poulpe luisant (`glow_squid`) | Lueur douce | Balise vivante (45 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Chèvre (`goat`) | Sabots | Coup de corne (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Momifié (`husk`) | Marche aride | Poussière (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Ocelot (`ocelot`) | Sous-bois | Esquive (30 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Panda (`panda`) | Gourmandise ciblée | Culbute (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Perroquet (`parrot`) | Sentinelle | Imitation (45 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Poisson-globe (`pufferfish`) | Immunité partielle | Hérissement (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Ours blanc (`polar_bear`) | Pelage polaire | Protection du petit (60 s) | Révocation immédiate d’un effet allié. |
| Golem de neige (`snow_golem`) | Pas d’hiver | Bourrasque (35 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Arpenteur (`strider`) | Pieds chauds | Pas de braise (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Tortue (`turtle`) | Apnée tranquille | Abri (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Villageois (`villager`) | Carnet du voisinage | Commande groupée (45 s) | Coûts natifs, limites de stock, objets produits et rejet du rejeu du devis. |
| Loup (`wolf`) | Riposte de meute | Cible de meute (45 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Embourbé (`bogged`) | Pied de marais | Flèche des marais (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Desséché (`parched`) | Habitué à l’épuisement | Trait épuisant (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Allay (`allay`) | Ramasseur choisi | Récolte musicale (45 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Axolotl (`axolotl`) | Convalescence aquatique | Soin de rive (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Blaze (`blaze`) | Chaleur entretenue | Salve ardente (60 s) | Progression réelle du four, carburant accéléré et sortie unique. |
| Breeze (`breeze`) | Lecture du vent | Pas de vent (40 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Dromadaire momifié (`camel_husk`) | Caravane nocturne | Traversée (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Creeper (`creeper`) | Mèche sensible | Détonation maîtrisée (75 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Endermite (`endermite`) | Récupération de perle | Petit décalage (45 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Gardien (`guardian`) | Écailles | Rayon (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Hoglin (`hoglin`) | Carrure | Percussion (55 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Cube de magma (`magma_cube`) | Peau chaude | Bond brûlant (55 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Mooshroom (`mooshroom`) | Cuisine fongique | Bouillon réconfortant (90 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Nautile (`nautilus`) | Réserve mesurée | Cloche de plongée (75 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Phantom (`phantom`) | Vol de nuit | Glissade nocturne (65 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Piglin (`piglin`) | Habitué du troc | Choix du marchand (90 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Pillard (`pillager`) | Arbalétrier | Tir de couverture (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Poisson d’argent (`silverfish`) | Lecture de la pierre | Fissure témoin (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Cube de soufre (`sulfur_cube`) | Décontamination | Projection corrosive (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Lama de marchand (`trader_llama`) | Inventaire de caravane | Convoi (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Marchand ambulant (`wandering_trader`) | Carnet de voyage | Étal partagé (90 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Cheval-zombie (`zombie_horse`) | Longue route | Endurance morte-vivante (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Zombie-villageois (`zombie_villager`) | Médecin de campagne | Veille (90 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Piglin zombifié (`zombified_piglin`) | Retenue | Offrande d’apaisement (75 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Vagabond (`stray`) | Tireur du froid | Trait givrant (50 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Vindicateur (`vindicator`) | Bûcheron précis | Brise-garde (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Zoglin (`zoglin`) | Instinct de survie | Ruée furieuse (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Grinceur (`creaking`) | Écorce | Enracinement (100 s) | Déplacement annule racines et résistance liée. |
| Grand gardien (`elder_guardian`) | Bâtisseur immergé | Sanctuaire marin (120 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Enderman (`enderman`) | Calme du regard | Pas de l’End (75 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Évocateur (`evoker`) | Étude des maléfices | Ligne de crocs (90 s) | Crocs visuels temporaires exclus des sauvegardes. |
| Ghast (`ghast`) | Artillerie aérienne | Boulet spectral (90 s) | Vol ; rendu client. |
| Ghast joyeux (`happy_ghast`) | Main du bâtisseur | Plateforme de nuage (120 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Golem de fer (`iron_golem`) | Présence protectrice | Interposition (90 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Piglin barbare (`piglin_brute`) | Garde d’or | Contre brutal (75 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Ravageur (`ravager`) | Masse | Percée (90 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Shulker (`shulker`) | Prudence verticale | Ancrage de chantier (100 s) | Destruction du support arrête la suspension. |
| Cheval-squelette (`skeleton_horse`) | Cavalier des fonds | Traversée des eaux (90 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Renifleur (`sniffer`) | Mémoire botanique | Piste ancienne (120 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Vex (`vex`) | Esprit agile | Main spectrale (60 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Sorcière (`witch`) | Dosage précis | Fiole partagée (100 s) | Potion réelle partagée, demi-durée, maintien d’une potion ordinaire ultérieure. |
| Wither squelette (`wither_skeleton`) | Os calcinés | Entaille sombre (75 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Nautile-zombie (`zombie_nautilus`) | Sang-froid abyssal | Sauvetage (120 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Ender Dragon (`ender_dragon`) | Maîtrise du ciel | Essor draconique (180 s) | Déplacement aérien effectif, espace libre ; rendu client. |
| Warden (`warden`) | Écoute profonde | Onde sonique (180 s) | Modèle natif ; essais gameplay spécifiques à poursuivre. |
| Wither (`wither`) | Volonté funèbre | Moisson des ombres (180 s) | Plafonds PvE/PvP partagés, exclusion des apprivoisés ; vol. |
+152
View File
@@ -0,0 +1,152 @@
# beta.019 — pouvoirs des 88 familiers
Ticket ouvert le 13 septembre 2026, branche `codex/companion-powers-beta019`.
### États ajoutés et déplacements
La livraison inclut les déplacements propres aux familles : vol orbital du
Dragon, vol du Wither et des Ghasts, nage et difficultés des aquatiques hors de
l’eau. Le familier reste temporaire, invincible et sans combat autonome.
Les cycles de culture et de four utilisent de nouvelles pièces jointes JSON
versionnées `sanctuary:companion_crop_cycles` sur le niveau et
`sanctuary:companion_furnace_cycle` sur le four. Absence : aucun cycle antérieur
crédité. Un cycle déjà entamé ne gagne pas de propriétaire rétroactivement.
La présence continue, le même propriétaire et le même équipement sont vérifiés ;
quitter la zone, changer de lien ou arrêter le serveur invalide le cycle en cours.
Les fractions ne sont jamais transférées à un nouveau cycle. Aucun objet,
résultat, carburant, niveau d’XP ou bloc de sauvegarde existant n’est converti.
Un JSON invalide ou d’une version future est conservé et bloque seulement ce
bonus. Les nouveaux tags peuvent être ignorés lors d’un retour à beta.018.
La guérison du zombie-villageois reçoit un booléen persistant indépendant,
`sanctuary:companion_cure_used`, absent par défaut, limitant Veille à une fois.
Les devis, choix de troc et plateformes sont temporaires et ne survivent pas à
une déconnexion. Un choix de troc abandonné perd ses deux lingots déjà offerts ;
il ne fournit aucun des deux résultats.
**Livraison locale beta.019 vérifiée — 13 septembre 2026.**
Le créateur autorise l’implémentation des 88 passifs et 88 actifs de la
[proposition v1](companion-powers-balance-proposal.md), et la correction du rendu
noirci des compagnons. Les rangs I–III, les soins faisant évoluer le lien et les
œufs Anomaly à contreparties sont explicitement reportés au prochain ticket.
Aucun malus solaire ou autre malus historique n’est ajouté aux œufs ordinaires.
## Contrat de stockage et de migration
Les accessoires beta.018 et leurs identifiants restent inchangés. Aucun monde,
chunk ou objet d’une installation personnelle n’est converti par les outils de
développement. Les nouvelles données se créent uniquement quand le serveur du
mod exécutera les nouvelles fonctionnalités.
Le lien actif et les délais des pouvoirs utilisent un état joueur indépendant,
versionné et persistant, copié à la mort et conservé au New Game+. L’absence de
cet état signifie lien non acheté, aucune recharge. Une version inconnue ou des
données invalides désactivent les pouvoirs de ce joueur sans effacer son état.
L’achat utilise les niveaux réellement disponibles côté serveur. Les identifiants
et achats des anciennes aptitudes ne sont pas renommés et leur stockage n’est
pas réécrit pour ajouter ce lien indépendant.
Les recharges reposent sur les échéances du serveur et sont communes au slot.
Le déséquipement interrompt les améliorations temporaires. Reconnexion, mort et
prestige ne donnent pas de nouvelle charge. Les améliorations de soin et d’air
possèdent aussi leur récupération par bénéficiaire.
La configuration dédiée `config/sanctuary/companion-powers.json` propose les
valeurs v1, les cinq raretés et les réglages serveur. Les clients reçoivent une
vue bornée de leur propre état. Les cibles, ressources, droits, dégâts et
transactions sont contrôlés côté serveur. Le consentement aux effets alliés
est explicite et révocable ; l’appartenance à une faction ne le remplace pas.
Les œufs natifs restent les objets de test déjà utilisés en beta.018.
L’obtention des essences en survie et leur forme inerte sont un chantier distinct
de l’activation des pouvoirs demandée ici : aucun œuf natif n’est distribué par
un advancement et aucune récompense d’acquisition n’est inventée.
## Livraison et vérifications
La livraison comprend une interface FR/EN lisible pour le lien actif,
le familier équipé, sa rareté, ses deux effets, sa recharge et son raccourci.
Le rendu est contrôlé dans le client avec les modèles natifs et leur lumière
ambiante ; la couverture des scénarios est détaillée ci-dessous. Les vérifications couvrent les transactions, les interruptions,
le PvP, les portées, l’absence de chargement distant, les capacités initiales et
maximales, les échanges d’œufs, la mort et le prestige.
Les pouvoirs et leurs vérifications sont [recensés individuellement](companion-powers-beta019-coverage.md). Une
déclaration de registre ou une description affichée ne prouve pas à elle seule
que son effet fonctionne. `check build` et `assemblePack` sont exécutés pour
la livraison locale beta.019. Le canal packwiz et Prism ne sont pas modifiés
sans demande de mise à jour correspondante.
## Utilisation de la version d’essai
Équiper un œuf dans sa case de familier. Son passif s’active après **10 secondes**
avec le même œuf. **B → Progression → Aptitudes → Lien actif** coûte **4 niveaux**
par défaut ; **G**, configurable dans Contrôles, déclenche le pouvoir.
Le panneau **Familier** indique la rareté, le passif, l’actif, les conditions et
la recharge. Il contient le consentement aux effets alliés et un bouton opérateur
pour préparer un nouvel essai. Les achats, temps de recharge et récupérations
soin/air sont stockés séparément des compétences et conservés à la mort et au prestige.
Viser ce sur quoi agir : coffre, monstre, villageois ou surface. Les objets
nécessaires se prennent dans les rangées ouvertes. Le villageois ouvre un devis
aux prix et stocks natifs ; le Piglin offre deux tirages après paiement. Un choix
en attente peut être rouvert dans le panneau Familier, par exemple après avoir
libéré une case. Les relevés marchands s’affichent dans le carnet.
Les équipes Minecraft et les membres d’une même faction Sanctuary sont exclus
des cibles offensives. Recevoir les aides reste un consentement personnel,
indépendant de la faction. Les poussées offensives PvP sont désactivées dans ce
premier portage, comme prévu par la proposition.
Les familiers utilisent des navigations terrestres, volantes ou aquatiques ;
le Dragon décrit une orbite, le Wither et les Ghasts restent en vol. Poissons,
calmars, gardiens, dauphins et nautiles nagent dans l’eau et se débattent au sol.
Grenouilles, lapins et cubes bondissent ; les amphibies peuvent aussi nager.
Ces déplacements sont propres au compagnon : aucune IA hostile native n’est importée.
Le rendu réutilise les modèles et animations natifs, avec l’éclairage calculé à
la position réelle du petit compagnon. Les anciens proxys non tickés conservaient
une position précédente à l’origine, ce qui faussait l’échantillonnage de lumière.
## Limites de cette première implémentation
Les rangs I–III, œufs Anomaly, malus et évolution par les soins restent au prochain
ticket. L’obtention des œufs en survie reste à concevoir. Aucun équilibrage de
partie à 30 joueurs ni comportement de chaque actif en toutes circonstances
n’est revendiqué. La [couverture](companion-powers-beta019-coverage.md) distingue
les scénarios vérifiés des essais à poursuivre.
La lumière du calmar luisant est une indication visuelle personnelle sur les
surfaces cubiques exposées, sans modifier la lumière du monde ni les règles de
spawn. Les signaux redstone sont un relevé du circuit au déclenchement. Les
variantes de poissons tropicaux doivent avoir été observées personnellement ;
leur mémoire utilise une note `seen_fish_v1` bornée, dérivée des identifiants
natifs de motif et de couleurs. Ces indices ne révèlent aucune entrée via l’Atlas.
Les permissions passent par les règles natives et le point d’intégration
`CompanionWorld.ALLOW` ; les futurs claims devront s’y raccorder.
## Proximité du joueur et transparence
Les familiers volants passent progressivement de transparents à opaques entre
**0,6 et 3,5 blocs** du regard du joueur. La distance à la caméra est également
prise en compte en troisième personne. La courbe est continue et adoucie aux
extrémités : aucun changement brutal d’opacité au seuil. Le corps et les couches
des yeux partagent ce fondu, y compris pour le Dragon et le Wither.
Le fondu appartient uniquement au rendu du familier volant. Il n’agit ni sur
les monstres du monde ni sur les collisions, pouvoirs ou déplacements. La
couleur et le matériau translucide sont inscrits dans chaque modèle envoyé au
rendu différé ; l’opacité ne reste jamais active pour l’entité suivante.
## Vérifications de livraison
- `./gradlew check build assemblePack -PsanctuaryFocusedTests=companions,accessories,movement,progression,cycle,mining,building,inventory,inventoryflow,sorting,tutorial` : contrôles purs et **91 tests serveur réussis**.
- Parcours client natif sur un nouveau monde Sanctuary de développement, graine 42 : achat à quatre niveaux, consentement, interface aux échelles 2/3/4, touche G et recharge après changement d’œuf, puis devis de villageois avec paiement réel.
- Extraction des 88 modèles natifs à deux instants ; éclairage et échelle contrôlés. Pour chaque volant, vérification du matériau translucide et de l’alpha des couches du corps et des yeux, sans effet sur l’entité suivante. Captures de proximité à 4 / 2 / 0,8 blocs.
- Le catalogue ne constitue pas une validation exhaustive du gameplay des 88 paires. Voir la [couverture par espèce](companion-powers-beta019-coverage.md).
- MRpack contrôlé : CRC, versions, JAR embarqué identique au build, Demeure imbriqué identique, FR/EN, 88 passifs et 88 actifs, absence de tests. Les PNG existants et l’export beta.018 gardent leurs empreintes.
Export : [Sanctuary-beta.019.mrpack](../build/Sanctuary-beta.019.mrpack).
Reçu : `build/companion019-artifact.json`.
SHA-256 MRpack : `ba3a7a0ceb1a9a71c135cdb5ddeacb431969eb2e8fd32d8bfaf5fab0e34d3bd3`.
SHA-256 JAR : `e27cb61fdb1d55fec88f86cb8e9696eca6ca12a923129843208afbff6a6efc71`.
+242
View File
@@ -0,0 +1,242 @@
# Inventaire des pouvoirs de familiers — référence 26.2
Relevé du 13 septembre 2026 pour préparer le ticket de validation des pouvoirs.
**Aucun de ces pouvoirs n’est activé dans Sanctuary beta.018.** L’œuf y fournit
uniquement l’apparence du compagnon, son suivi et les particules de caresse.
La [proposition d’équilibrage v1](companion-powers-balance-proposal.md) classe
les 88 œufs actuels en commun, peu commun, rare, extraordinaire et légendaire,
avec de nouveaux passifs, actifs, coûts et recharges. C’est une proposition
de remplacement ; le présent document reste le relevé historique de la 26.2.
Le code historique contient **88 essences Minecraft** : elles correspondent
exactement aux **88 fichiers d’œufs de Minecraft 26.3-pre-2**, version du pack.
Il définit aussi **25 overrides ItsAlive**, absents du pack beta.018 actuel.
Ce document décrit les branches du code, pas des comportements déjà testés en bêta.
Les effets sans chiffre sont de niveau I. Les passifs concernent le joueur portant
l’œuf. La recharge concerne l’actif, en secondes à 20 ticks/s. Chaque utilisation
réussie ajoute **0,45 point d’épuisement**, et non 0,45 barre de faim. L’ancien
actif exige l’aptitude COMPANION_ACTIVE_POWER ; son raccourci était G, configurable.
Les cooldowns sont communs au joueur : changer d’œuf ne les annule pas.
## Les 88 œufs Minecraft de notre version
| Mob / œuf | Passifs et contreparties | Actif | Recharge |
|---|---|---|---|
| Abeille (`bee`) | Chute lente | Pollinisation | 12 s |
| Allay (`allay`) | Chance | Aimant à objets | 8 s |
| Âne (`donkey`) | Résistance | Aimant à objets | 10 s |
| Araignée (`spider`) | Vision nocturne ; Escalade des murs | Langue agrippante | 8 s |
| Araignée venimeuse (`cave_spider`) | Vision nocturne ; Escalade des murs | Poison | 8 s |
| Arpenteur (`strider`) | Résistance au feu ; Faiblesse à l’eau/pluie | Ruée | 6 s |
| Axolotl (`axolotl`) | Respiration aquatique | Soin | 14 s |
| Blaze (`blaze`) | Résistance au feu ; Faiblesse à l’eau/pluie | Petite boule de feu | 8 s |
| Breeze (`breeze`) | Chute lente | Ruée aérienne | 4 s |
| Chat (`cat`) | Vitesse ; Apaise les Creepers ; Apaise les Phantoms | Effroi | 12 s |
| Chauve-souris (`bat`) | Vision nocturne ; Chute lente | Sonar des entités | 10 s |
| Cheval (`horse`) | Vitesse II | Ruée | 5 s |
| Cheval-squelette (`skeleton_horse`) | Respiration aquatique ; Vision nocturne ; Trêve morts-vivants | Ruée | 7 s |
| Cheval-zombie (`zombie_horse`) | Vitesse II ; Brûle au soleil ; Trêve morts-vivants | Ruée | 7 s |
| Chèvre (`goat`) | Sauts améliorés ; Résistance | Charge | 7 s |
| Cochon (`pig`) | Aucun | Repérage du butin | 14 s |
| Creeper (`creeper`) | Explosion à la mort sans dégâts au terrain | Détonation | 16 s |
| Cube de magma (`magma_cube`) | Résistance au feu ; Sauts améliorés II ; Faiblesse à l’eau/pluie | Bond | 5 s |
| Cube de soufre (`sulfur_cube`) | Résistance au feu ; Faiblesse à l’eau/pluie | Acide | 9 s |
| Dauphin (`dolphin`) | Respiration aquatique ; Grâce du dauphin | Sonar des entités | 9 s |
| Desséché (`parched`) | Résistance au feu ; Faiblesse à l’eau/pluie ; Trêve morts-vivants | Acide | 10 s |
| Dromadaire (`camel`) | Vitesse | Ruée | 6 s |
| Dromadaire momifié (`camel_husk`) | Vitesse ; Trêve morts-vivants | Charge | 8 s |
| Embourbé (`bogged`) | Vision nocturne ; Trêve morts-vivants | Poison | 10 s |
| Ender Dragon (`ender_dragon`) | Chute lente ; Résistance II | Souffle du dragon | 20 s |
| Enderman (`enderman`) | Force ; Faiblesse à l’eau/pluie | Téléportation | 6 s |
| Endermite (`endermite`) | Vitesse II | Téléportation | 4 s |
| Évocateur (`evoker`) | Chance | Crocs d’évocateur | 14 s |
| Gardien (`guardian`) | Respiration aquatique | Rayon gardien | 10 s |
| Ghast (`ghast`) | Chute lente ; Faiblesse à l’eau/pluie | Boule de feu explosive | 12 s |
| Ghast joyeux (`happy_ghast`) | Chute lente | Flottement | 6 s |
| Golem de cuivre (`copper_golem`) | Célérité | Sonar des entités | 10 s |
| Golem de fer (`iron_golem`) | Résistance II | Frappe au sol | 12 s |
| Golem de neige (`snow_golem`) | Aucun | Rafale de neige | 7 s |
| Grand gardien (`elder_guardian`) | Respiration aquatique ; Force de conduit | Rayon gardien | 16 s |
| Grenouille (`frog`) | Sauts améliorés II | Langue agrippante | 6 s |
| Grinceur (`creaking`) | Vision nocturne ; Résistance III immobile | Enracinement | 14 s |
| Hoglin (`hoglin`) | Force | Charge | 9 s |
| Lama (`llama`) | Aucun | Crachat ciblé | 6 s |
| Lama de marchand (`trader_llama`) | Chance | Troc chanceux | 14 s |
| Lapin (`rabbit`) | Vitesse II ; Sauts améliorés II | Bond | 4 s |
| Loup (`wolf`) | Force | Rugissement | 10 s |
| Marchand ambulant (`wandering_trader`) | Chance II | Sonar des entités | 16 s |
| Momifié (`husk`) | Force ; Trêve morts-vivants | Festin | 12 s |
| Mooshroom (`mooshroom`) | Régénération | Festin | 12 s |
| Morue (`cod`) | Respiration aquatique | Bulle protectrice | 12 s |
| Mouton (`sheep`) | Chute lente ; Résistance | Flottement | 8 s |
| Mule (`mule`) | Vitesse ; Résistance | Ruée | 7 s |
| Nautile (`nautilus`) | Respiration aquatique ; Souffle du Nautile | Bulle protectrice | 8 s |
| Nautile-zombie (`zombie_nautilus`) | Respiration aquatique ; Brûle au soleil ; Trêve morts-vivants | Bulle protectrice | 9 s |
| Noyé (`drowned`) | Respiration aquatique ; Brûle au soleil ; Trêve morts-vivants | Crachat ciblé | 9 s |
| Ocelot (`ocelot`) | Vitesse II ; Vision nocturne | Roulade | 5 s |
| Ours blanc (`polar_bear`) | Résistance ; Respiration aquatique | Rugissement | 12 s |
| Panda (`panda`) | Résistance | Roulade | 8 s |
| Perroquet (`parrot`) | Chute lente | Sonar des entités | 8 s |
| Phantom (`phantom`) | Vision nocturne ; Chute lente ; Brûle au soleil ; Trêve morts-vivants | Flottement | 6 s |
| Piglin (`piglin`) | Chance ; Trêve Piglins | Troc chanceux | 16 s |
| Piglin barbare (`piglin_brute`) | Force II ; Trêve Piglins | Frappe au sol | 10 s |
| Piglin zombifié (`zombified_piglin`) | Résistance au feu ; Trêve morts-vivants ; Trêve Piglins | Troc chanceux | 14 s |
| Pillard (`pillager`) | Chance | Crachat ciblé | 7 s |
| Poisson d'argent (`silverfish`) | Célérité II | Téléportation | 5 s |
| Poisson tropical (`tropical_fish`) | Respiration aquatique ; Vision nocturne | Bulle protectrice | 10 s |
| Poisson-globe (`pufferfish`) | Respiration aquatique | Poison | 9 s |
| Poule (`chicken`) | Chute lente | Flottement | 5 s |
| Poulpe (`squid`) | Respiration aquatique | Encre | 9 s |
| Poulpe luisant (`glow_squid`) | Respiration aquatique ; Vision nocturne | Encre | 10 s |
| Ravageur (`ravager`) | Force II ; Résistance | Charge | 12 s |
| Renard (`fox`) | Vitesse ; Vision nocturne | Roulade | 5 s |
| Renifleur (`sniffer`) | Chance II | Repérage du butin | 12 s |
| Saumon (`salmon`) | Respiration aquatique ; Grâce du dauphin | Ruée | 5 s |
| Shulker (`shulker`) | Résistance ; Résistance III immobile | Lévitation | 10 s |
| Slime (`slime`) | Sauts améliorés II ; Chute lente | Bond | 4 s |
| Sorcière (`witch`) | Chance | Potion de soutien | 14 s |
| Squelette (`skeleton`) | Vision nocturne ; Brûle au soleil ; Trêve morts-vivants | Crachat ciblé | 7 s |
| Tatou (`armadillo`) | Aucun | Carapace | 12 s |
| Têtard (`tadpole`) | Respiration aquatique ; Sauts améliorés | Bond | 5 s |
| Tortue (`turtle`) | Respiration aquatique ; Résistance | Carapace | 10 s |
| Vache (`cow`) | Aucun | Purification | 14 s |
| Vagabond (`stray`) | Vision nocturne ; Brûle au soleil ; Trêve morts-vivants | Gel | 9 s |
| Vex (`vex`) | Chute lente ; Vitesse | Téléportation | 5 s |
| Villageois (`villager`) | Héros du village | Faveur villageoise | 18 s |
| Vindicateur (`vindicator`) | Force II | Frappe au sol | 9 s |
| Warden (`warden`) | Vision nocturne ; Résistance II | Onde sonique | 20 s |
| Wither (`wither`) | Chute lente ; Résistance II ; Trêve morts-vivants | Flétrissement | 20 s |
| Wither squelette (`wither_skeleton`) | Résistance au feu ; Trêve morts-vivants | Flétrissement | 12 s |
| Zoglin (`zoglin`) | Force II ; Trêve morts-vivants | Charge | 10 s |
| Zombie (`zombie`) | Force ; Brûle au soleil ; Trêve morts-vivants | Rugissement | 12 s |
| Zombie-villageois (`zombie_villager`) | Chance ; Brûle au soleil ; Trêve morts-vivants | Faveur villageoise | 18 s |
## Détail des traits passifs
- **Trêve** : toutes les 10 ticks, efface la cible des mobs concernés qui visent
le propriétaire, dans une boîte de 24 blocs autour de lui. Ce n’est pas une
invulnérabilité. Le chat utilise ce même mécanisme pour Creepers et Phantoms.
- **Morts-vivants reconnus par la trêve** : bogged, camel_husk, drowned, husk,
parched, phantom, skeleton, skeleton_horse, stray, wither_skeleton, zoglin,
zombie, zombie_horse, zombie_nautilus, zombie_villager, zombified_piglin.
Le boss Wither ne figure pas dans cette liste de cibles pacifiées.
- **Faiblesse à l’eau/pluie** : Faiblesse II et Lenteur I tant que le joueur
est dans l’eau ou sous la pluie ; ce trait ne code pas de dégât direct.
- **Soleil** : applique 45 ticks de feu chaque seconde si le ciel est lumineux,
visible au-dessus du joueur, sans eau/pluie. Aucun test de casque ici.
- **Défense immobile** : Résistance III si la vitesse horizontale au carré est
inférieure à 0,0025. Le contrôle ne porte pas sur la vitesse verticale.
- **Escalade** : pousse la vitesse verticale à au moins 0,18 contre un mur et
réinitialise la chute.
- **Explosion à la mort** : puissance 3, sans feu ni destruction de blocs.
- Les effets passifs ordinaires sont renouvelés toutes les 10 ticks pour 35 ticks.
Retirer l’œuf arrête leur renouvellement ; les dernières durées peuvent subsister.
## Ce que font réellement les actifs
Les dégâts indiqués sont des points de vie : **2 points = 1 cœur**, avant les
réductions natives éventuelles. Les zones sont des boîtes autour du joueur,
pas un rayon sphérique strict. Elles excluent le propriétaire et les familiers,
mais peuvent inclure d’autres joueurs. Les actifs ciblés choisissent la créature
vivante la plus proche dans un cône jusqu’à 24 blocs ; la fonction ne vérifie
pas la ligne de vue. Ces points devront être testés et arbitrés avant portage.
| Actif | Comportement du code historique |
|---|---|
| Acide (`ACID`) | Poison II et Lenteur II pendant 7 s sur la cible. |
| Aimant à objets (`MAGNET`) | Attire les objets au sol dans une zone de 12 blocs autour du joueur, impulsion de 0,45 vers ses yeux. |
| Bond (`BOUNCE`) | Vitesse verticale relevée au minimum à 1,05 ; distance de chute réinitialisée. |
| Bond du chasseur (`POUNCE`) | Impulsion force 2,15, minimum vertical 0,65 ; si une cible existe, Lenteur V pendant 2,5 s. |
| Boule de feu explosive (`FIREBALL`) | Lance une véritable LargeFireball native, puissance d’explosion 1. Les effets sur le terrain suivent le projectile natif. |
| Bulle protectrice (`BUBBLE`) | Respiration aquatique pendant 15 s et Absorption I pendant 10 s. |
| Carapace (`SHELL`) | Résistance IV et Lenteur II pendant 5 s. |
| Charge (`CHARGE`) | Impulsion force 2,35, minimum vertical 0,15 ; Résistance II pendant 3 s. Aucun dégât de contact spécifique codé ici. |
| Crachat ciblé (`SPIT`) | 3 dégâts d’attaque et recul sur la cible. Le code applique directement les dégâts : il ne crée pas de projectile de crachat ou de flèche. |
| Crocs d’évocateur (`FANGS`) | Fait apparaître huit crocs natifs en ligne, espacés de 1,35 bloc dans la direction du regard. |
| Détonation (`DETONATE`) | Explosion de puissance 2,25 centrée sur le joueur, sans feu ni destruction du terrain. |
| Effroi (`SCARE`) | Même effet codé que Rugissement : 2 dégâts, recul, Faiblesse I pendant 4 s dans une zone de 11 blocs. |
| Encre (`INK`) | Invisibilité 5 s pour le joueur ; Cécité 4 s aux autres entités vivantes proches, zone de 9 blocs. |
| Enracinement (`ROOT`) | Résistance IV, Absorption II et Lenteur IV pendant 6 s. |
| Faveur villageoise (`TRADE`) | Héros du village II pendant 15 s. |
| Festin (`FEAST`) | Rend 3 points de vie, soit 1,5 cœur, et donne Absorption I pendant 10 s. Ne remplit pas la faim. |
| Floraison (`BLOOM`) | Même effet codé que Pollinisation : Régénération I et Célérité I pendant 6 s aux autres entités vivantes proches, zone de 7 blocs. |
| Flottement (`FLOAT`) | Ajoute une impulsion de 0,45 dans le regard et 0,55 vers le haut ; Chute lente pendant 8 s ; distance de chute réinitialisée. |
| Flétrissement (`WITHER`) | Wither II pendant 7 s et 5 dégâts magiques sur la cible. |
| Frappe au sol (`SLAM`) | 7 dégâts, recul et Faiblesse I pendant 4 s aux autres entités vivantes dans une zone de 8 blocs ; efface leur cible si elle était le propriétaire. |
| Gel (`FREEZE`) | Lenteur IV et Faiblesse I pendant 8 s sur la cible ; ne crée pas de glace. |
| Langue agrippante (`TONGUE`) | Attire la cible vers le joueur avec une impulsion horizontale et une composante verticale de 0,25. |
| Lévitation (`LEVITATE`) | Lévitation I pendant 5 s sur la cible. |
| Onde sonique (`SONIC`) | 10 dégâts de type sonicBoom et recul sur la cible. |
| Petite boule de feu (`SMALL_FIREBALL`) | Lance une véritable SmallFireball native dans la direction regardée. |
| Poison (`POISON`) | Poison I pendant 7 s sur la cible. |
| Pollinisation (`POLLINATE`) | Régénération I et Célérité I pendant 6 s aux autres entités vivantes proches, zone de 7 blocs. Le propriétaire est exclu ; aucune pousse de cultures dans cette fonction. |
| Potion de soutien (`POTION`) | Purification, Régénération II et Résistance I pendant 8 s. Cette potion est fixe, malgré l’ancien libellé « aléatoire ». |
| Purification (`CLEANSE`) | Retire Lenteur, Fatigue de minage, Nausée, Cécité, Faim, Faiblesse, Poison, Wither et Obscurité. Ne retire pas indistinctement tous les effets. |
| Rafale de neige (`SNOW`) | Même effet codé que Gel : Lenteur IV et Faiblesse I pendant 8 s ; pas de boule de neige native créée. |
| Rayon gardien (`BEAM`) | 6 dégâts magiques et Surbrillance 5 s sur la cible. |
| Repérage du butin (`TRUFFLE`) | Rend lumineux les objets déjà au sol dans une zone de 18 blocs et donne Chance II pendant 12 s. Ne génère aucun trésor ; le marquage des objets n’a pas de minuterie de retrait ici. |
| Roulade (`ROLL`) | Impulsion force 1,35, minimum vertical 0,08 ; Résistance III pendant 1,5 s. |
| Rugissement (`ROAR`) | 2 dégâts, recul et Faiblesse I pendant 4 s aux autres entités vivantes dans une zone de 11 blocs ; efface leur cible si elle était le propriétaire. |
| Ruée (`DASH`) | Impulsion selon le regard : force 1,8, minimum vertical 0,12 ; distance de chute réinitialisée. |
| Ruée aérienne (`AIR_DASH`) | Impulsion selon le regard : force 1,45, minimum vertical 0,45 ; distance de chute réinitialisée. |
| Soin (`HEAL`) | Rend 6 points de vie, soit 3 cœurs. |
| Sonar des entités (`SONAR`) | Applique Surbrillance pendant 10 s aux autres entités vivantes proches, zone de 28 blocs. Ne détecte ni minerais ni redstone. |
| Souffle du dragon (`DRAGON_BREATH`) | Lance une véritable DragonFireball native. |
| Troc chanceux (`BARTER`) | Chance III et Héros du village I pendant 12 s. Ne produit aucun échange ou objet à lui seul. |
| Téléportation (`TELEPORT`) | Cherche une destination sans collision de 12 à 2 blocs devant le joueur, par pas de 0,5. Se téléporte à la première trouvée et réinitialise la chute. |
| Vomi (`VOMIT`) | Cécité 6 s, Surbrillance 12 s et Faim II pendant 8 s sur la cible. Aucune attraction de horde codée dans cette fonction. |
## Les 25 œufs ItsAlive historiques
Ils sont résolus par l’identifiant de l’objet œuf, pour distinguer notamment les
Mooblooms qui partagent un type d’entité. Ils ne sont pas distribués en beta.018.
| Mob / œuf | Passifs et contreparties | Actif | Recharge |
|---|---|---|---|
| Œuf d'apparition d'infecté (`infected`) | Vitesse II à 40 % de vie ou moins ; Trêve Infectés | Rugissement | 10 s |
| Œuf d'apparition de chargeur (`charger`) | Résistance ; Trêve Infectés | Charge | 9 s |
| Œuf d'apparition de cracheur (`spitter`) | Trêve Infectés | Acide | 9 s |
| Œuf d'apparition de Hunter (`hunter`) | Vitesse ; Trêve Infectés | Bond du chasseur | 7 s |
| Œuf d'apparition de Moobloom allium (`allium_moobloom`) | Régénération | Purification | 12 s |
| Œuf d'apparition de Moobloom bleuet (`cornflower_moobloom`) | Chance II | Troc chanceux | 16 s |
| Œuf d'apparition de Moobloom coquelicot (`poppy_moobloom`) | Bonus de vie | Soin | 12 s |
| Œuf d'apparition de Moobloom hibiscus (`hibiscus_moobloom`) | Régénération | Floraison | 14 s |
| Œuf d'apparition de Moobloom houstonie bleue (`azure_bluet_moobloom`) | Célérité | Ruée | 7 s |
| Œuf d'apparition de Moobloom lilas (`lilac_moobloom`) | Vitesse II | Ruée | 7 s |
| Œuf d'apparition de Moobloom marguerite (`oxeye_daisy_moobloom`) | Aucun | Purification | 12 s |
| Œuf d'apparition de Moobloom muguet (`lily_of_the_valley_moobloom`) | Aucun | Poison | 10 s |
| Œuf d'apparition de Moobloom narcisse (`narcissus_moobloom`) | Absorption | Bulle protectrice | 14 s |
| Œuf d'apparition de Moobloom orchidée bleue (`blue_orchid_moobloom`) | Respiration aquatique | Bulle protectrice | 12 s |
| Œuf d'apparition de Moobloom pissenlit (`dandelion_moobloom`) | Chute lente | Flottement | 7 s |
| Œuf d'apparition de Moobloom tournesol (`sunflower_moobloom`) | Célérité | Floraison | 10 s |
| Œuf d'apparition de Moobloom tulipe blanche (`white_tulip_moobloom`) | Résistance | Carapace | 12 s |
| Œuf d'apparition de Moobloom tulipe orange (`orange_tulip_moobloom`) | Résistance au feu | Floraison | 14 s |
| Œuf d'apparition de Moobloom tulipe rose (`pink_tulip_moobloom`) | Régénération | Soin | 12 s |
| Œuf d'apparition de Moobloom tulipe rouge (`red_tulip_moobloom`) | Force | Floraison | 14 s |
| Œuf d'apparition de vomiteur (`vomiter`) | Trêve Infectés | Vomi | 12 s |
| Œuf d’apparition de baleine volante (`flying_whale`) | Chute lente ; Respiration aquatique | Bulle protectrice | 10 s |
| Œuf d’apparition de Bracken (`bracken`) | Vision nocturne ; Vitesse | Effroi | 12 s |
| Œuf d’apparition de fantôme (`ghost`) | Invisibilité ; Chute lente | Téléportation | 7 s |
| Œuf d’apparition de papillon (`papillon`) | Chute lente ; Sauts améliorés | Pollinisation | 8 s |
## Sources et points à reprendre
- [Registre et exécution historiques](../../26.2/sanctuary/src/main/java/fr/koka99cab/sanctuary26/sanctuary/gameplay/SanctuaryCompanionPowers.java) : registre vanilla ligne 827, ItsAlive ligne 918 ; passifs ligne 222, actifs ligne 286.
- SHA-256 du Java consulté : `0b3ea8571161fe8eccb059ca2d5ca12f8351c80ad7cd5a81556e199175ebeea5`.
- [Ancien résumé alpha.96](../../26.2/sanctuary/COMPANION_POWERS.md), conservé en lecture seule.
- Œufs présents : fichiers `assets/minecraft/items/*_spawn_egg.json` du JAR
Minecraft 26.3-pre-2 ; noms FR issus de son index d’assets local.
- [Contrat beta.018](companions-cosmetics-beta018.md) : pouvoirs expressément exclus du portage actuel.
Le présent relevé corrige des imprécisions du résumé historique : le sonar du
golem de cuivre est le sonar générique d’entités ; le chat possède aussi Vitesse ;
l’Embourbé, l’Araignée venimeuse et le Grinceur ont Vision nocturne ; le dromadaire
momifié a Vitesse ; le Nautile a aussi Respiration aquatique ; le Phantom a aussi
la trêve. Potion n’est pas aléatoire, Festin ne nourrit pas, et les « projections »
de squelette, noyé et pillard appliquent des dégâts ciblés sans projectile natif.
Les seuls projectiles natifs créés dans le registre actif sont les boules de feu
et le souffle du dragon ; les crocs sont leurs propres entités.
Aucun effet, identifiant, réglage, monde ou binaire n’a été modifié pour ce relevé.
+153
View File
@@ -0,0 +1,153 @@
# beta.018 — cases de familier, cape et cosmétique de tête
Ticket du 13 septembre 2026, branche `codex/companions-cosmetics-beta018`.
Contrat écrit avant les changements de stockage. Référence 26.2 consultée en
lecture seule ; aucun pouvoir passif ou actif de familier n'est porté ici,
sur décision explicite du créateur. Leur validation aura son ticket dédié.
## Interface et objets
L'en-tête de l'inventaire indique uniquement Inventaire / Inventory, sans
compteur de rangées. La capacité reste lisible dans Progression et par les cases.
Trois cases d'équipement distinctes rejoignent le panneau personnel, toujours
disponibles : un œuf de familier, une cape, un objet cosmétique sur la tête.
Chaque case contient un vrai objet, limité à une unité. Les clics et Maj-clics
utilisent les menus synchronisés et respectent les rangées débloquées.
De haut en bas : cosmétique de tête, cape, œuf de familier, main secondaire.
Cet ordre est visuel ; les identifiants de stockage familier/cape/tête restent fixes.
Maj-clic équipe automatiquement œufs et capes ; le cosmétique se place à la main.
Le tri et le changement de hotbar ne déplacent pas cet équipement.
Maj + clic gauche maintenu permet de parcourir les cases et d’exécuter leur
Maj-clic natif successivement. Le geste part d’une case avec le curseur vide ;
chaque case est visitée une seule fois, y compris lors d’un mouvement rapide.
Relâcher le clic ou Maj termine le geste. Coffres, fours et autres conteneurs
gardent leurs destinations et restrictions natives. Le catalogue créatif garde
ses gestes d’origine ; l’inventaire personnel Sanctuary utilise ce raccourci.
La touche de rangée fonctionne également en jeu sans écran : Tab avance,
Maj + Tab recule. Elle reste configurable et garde la même sélection de rangée
à la réouverture de l’inventaire. Seules les rangées débloquées sont parcourues.
Une commutation interrompt l’utilisation de l’objet tenu, comme un changement
de case de hotbar natif, et reste validée par le serveur.
Les trois PNG fournis dans `../textures/{egg,cape,cosmetics}.png` sont copiés sans
retouche dans le mod et dans les sources du resource pack.
Un œuf d'apparition de mob équipé fait apparaître un petit compagnon temporaire
qui se déplace réellement : navigation autour des obstacles, promenade proche
et téléportation vers une place libre s'il est trop loin ou bloqué. Le suivi par
apparition à côté du joueur de la 26.2 est remplacé. Le retirer le fait disparaître.
Il est invincible et ne collisionne pas avec les autres entités. Le clic droit
du propriétaire le caresse et émet des particules aux couleurs de son œuf.
Une entité de familier dédiée utilise l'apparence du mob, afin de ne pas hériter
de ses attaques ou comportements destructeurs. Les animations restent visuelles.
Le familier n'est pas une source renouvelable de butin, d'XP ou de produits.
Ses pouvoirs ne sont pas activés. Les œufs natifs restent disponibles pour les
tests opérateur ; leur acquisition en survie n'est pas inventée dans ce ticket.
`sanctuary:zero_cape` est une première cape de test, libellée Cape Zéro / Zero Cape,
avec un visuel provisoire trouvé en ligne et une provenance documentée. Elle se
teste depuis le créatif ou `/give`. Elle utilise le mouvement de cape natif ;
elle ne modifie ni les élytres ni le compte Minecraft.
Le cosmétique accepte tout objet/bloc. Il ne remplace pas le casque serveur et
ne donne ni protection, ni effet, ni déclenchement d'objet. Les propriétés d'état
de bloc sont utilisées pour le rendu lorsque possible. Un piston porté sur la
tête s'étend brièvement quand le joueur reçoit des dégâts, uniquement en rendu :
aucun bloc placé ou déplacé, aucun signal de redstone.
## Sauvegarde, mort et New Game+
Ajout d'un champ joueur `sanctuary:accessories`, schéma 1, contenant trois piles
optionnelles dans l'ordre familier/cape/tête. Un ancien joueur beta.017 commence
avec trois cases vides ; aucun déplacement ni changement des 54 cases existantes,
du journal de progression ou de cycle. Les données inconnues/corrompues sont
conservées et rendues non modifiables, sans remplacement silencieux.
Les objets suivent la mort native : ils tombent si keepInventory est désactivé,
sont conservés sinon. Le New Game+ les garde comme le reste de l'inventaire.
La créature temporaire n'est jamais sauvegardée dans les chunks ; elle est
recréée depuis l'œuf après reconnexion/changement de dimension, sans doublon.
Les apparences cape/tête sont synchronisées par le serveur aux observateurs,
y compris lors de l'arrivée d'un nouveau joueur. Aucun bonus serveur ne dépend
de ces apparences. Nouveau contrat réseau `sanctuary:accessories_v1` : client et
serveur beta.018 ensemble. Aucun monde personnel ou installation n'est modifié.
## S’allonger et se reposer
W est un geste de base gratuit. S’allonger disparaît des aptitudes achetables.
Maj + W conserve le déblocage Se reposer et son coût. Le repos utilise le rendu
natif de sommeil au lit, orienté selon le joueur, distinct de la posture mobile.
Il ne déclenche pas le sommeil serveur, ne fixe pas de point de réapparition et
ne fait pas avancer le temps. Les anciens champs et preuves d’achat `lying`
sont conservés pour lire les sauvegardes beta.017 ; aucun nouvel achat n’est
accepté et `lyingCost` devient un champ historique sans effet.
## Validation
### Sélections de minage et de construction
Le retour d’essai ajouté pendant ce ticket fixe le groupe au premier clic
maintenu avec R. Le client conserve l’origine, les cases et le palier ; le
serveur valide la visée au démarrage puis poursuit le même travail sans exiger
de regarder encore l’origine. Tourner la caméra ou bouger en restant à portée
ne remet pas la charge à zéro. La construction garde son plan, sa face et ses
directions de pose initiales, y compris pour les escaliers. Le contexte de pose
est figé sans modifier la caméra ou la position réelle du joueur.
La molette règle le palier avant le clic. Pendant le maintien, le groupe reste
fixe, même après sa fin : il faut relâcher avant d’en choisir un autre. Les
interruptions par changement d’outil, portée, menu, mort, droits, matériaux ou
perte de maintien restent actives. Les interactions natives, durées, coûts et
limites de blocs restent inchangés. Aucun nouveau format de sauvegarde ou paquet
réseau n’est introduit pour ce verrouillage ; son état est temporaire.
### Parcours client
Le parcours automatisé du client Minecraft 26.3-pre-2, sur un monde de
développement neuf de graine 42, passe avec le vrai clavier et la vraie souris :
- Emplacements synchronisés et ordre visuel, inventaire à 1 et 6 rangées, FR/EN.
- Maj-clic œuf/cape, placement manuel du cosmétique, piston avant/après un dégât
serveur et rendu d’épée, tête de joueur, coffre et piston.
- Suivi vivant et caresse ; rendus loup, vache, perroquet, creeper, morue et ghast.
- W gratuit, achat du repos, rendu de sommeil distinct et arrêt par déplacement.
- Tab en jeu, Maj inverse, maintien sans répétition, autre touche configurée,
conservation des 54 positions visibles et de la colonne sélectionnée.
- Balayage rapide dans les deux sens d’un coffre, destination pleine, une seule
visite par case, tri ingrédient/combustible du four, arrêt au relâchement de Maj,
équipement automatique œuf/cape et absence de cosmétique automatique.
- Veine de huit blocs entièrement cassée après changement de visée et déplacement
à portée ; cible voisine conservée pendant le maintien, puis minée après
relâchement et nouveau clic. Molette sans effet sur la sélection verrouillée.
- Surface de 25 escaliers terminée en regardant ailleurs et en bougeant, avec
orientation initiale et consommation exacte ; aucune nouvelle surface après
la fin tant que le clic est maintenu.
Les captures sont dans `mods/sanctuary/build/run/clientGameTest/screenshots/` ;
le journal complet final est `build/group-lock018-client.log` (1 min 46 s).
`build/cosmetics018-client.log` conserve le premier parcours des accessoires
et raccourcis, également réussi avant l’ajout des sélections verrouillées.
Limites : les essais ne constituent pas une validation de toutes les espèces,
de tous les modèles spéciaux d’objets/blocs, ni d’une session multijoueur sous
latence. Le déplacement du compagnon reste terrestre, même pour une apparence
aquatique ou volante. Les pouvoirs de familiers attendent leur ticket dédié.
### Serveur et distribution
`./gradlew check build assemblePack -PsanctuaryFocusedTests=accessories,progression,movement,inventory,inventoryflow,sorting,cycle,mining,building`
passe en **4 min 51 s**, avec **67 tests serveur obligatoires réussis**, ainsi
que les contrôles purs du dépôt. Journal : `build/cosmetics018-check-build.log`.
Les tests couvrent les six capacités d’inventaire, équipement typé, destination
pleine, mort, sauvegarde/rechargement, conservation au prestige, données futures
préservées, navigation et invincibilité du familier, interruption de l’arc lors
d’un changement de rangée, protections et coûts natifs du minage/construction.
La durée de minage reste identique entre une caméra fixe et une caméra qui
tourne ; le contexte de construction figé ne fuit pas dans la pose individuelle.
Export local : [Sanctuary-beta.018.mrpack](../build/Sanctuary-beta.018.mrpack),
**2 617 278 octets**. SHA-256 :
`06997ae60f3306b9b973c4b5e83894ca302905fbdd337e1d0c36abf0fa4d9aba`.
Reçu : `build/cosmetics018-artifact.json`. ZIP, versions, JAR Sanctuary et Demeure
embarqués, ressources, libellés, index packwiz et dépendance Fabric API vérifiés.
Les exports beta.003 à beta.017 restent identiques ; aucune installation
personnelle ni canal publié n’a été modifié.
+187
View File
@@ -0,0 +1,187 @@
# Sanctuary — analyse de la vision et préparation de la consultation
**14 septembre 2026 · Ticket documentaire local CONSULT-01 · Branche `codex/consultation-discord`.**
Livrable associé : **[120 posts Discord prêts à copier](consultation-discord-posts.md)**. Ils couvrent les décisions de jeu, les retours sur les mécaniques actuelles et les besoins de communauté déduits de l’analyse. Ils n’ont pas été publiés. Aucun vote, témoignage ou accord d’anciens joueurs n’a été inventé.
Un **[extrait des 12 premiers posts](consultation-discord-premiere-serie.md)** permet de lancer la discussion sans parcourir toute la banque.
## 1. Ce que l’analyse fait ressortir
**Sanctuary dispose déjà d’une progression personnelle documentée, mais sa promesse centrale — transformer ensemble un monde grâce à ses activités — demande encore sa boucle de jeu collective.** On peut développer son personnage, explorer, construire, recommencer et créer une faction. Les recherches et contributions ouvrant un continent, l’économie, les protections territoriales, les quêtes et la grande histoire ne sont pas encore reliées en un parcours jouable documenté.
La vision est cohérente autour de trois expériences : devenir capable de choses nouvelles ; rendre le monde habitable avec d’autres ; laisser une histoire visible dans les lieux et le ciel. Ses inconnues les plus importantes portent sur **qui peut agir, à quel rythme, avec quelles conséquences pour les autres et pour ceux qui arrivent plus tard**. Choisir d’abord les objets, leurs recettes ou leurs prix laisserait ces problèmes sans réponse.
Les anciens joueurs peuvent particulièrement bien éclairer les moments qui rassemblaient, les contraintes qui décourageaient, le plaisir des pouvoirs et la manière dont les voisinages fonctionnaient. La documentation ne contient pas un corpus de leurs retours permettant de présumer ces préférences. Les deux premières questions sont donc libres et précèdent les listes de fonctionnalités.
## 2. Périmètre et méthode
La base est l’**état local de travail**, qui comportait de nombreuses modifications et additions avant cette tâche, sur `codex/realtime-tracking-beta037`. La configuration indique `mod_version=beta.037` et `pack_version=beta.037`. Les notes décrivent des exports locaux ; cela ne prouve pas que les anciens joueurs disposent de cette version ni qu’elle est installée sur un serveur public.
Le corpus inventorié comprend les **102 fichiers Markdown alors présents dans `docs/`**, le README, le changelog, les consignes de contribution et de versionnement, les notices et guides du pack, les README des modules et les archives documentaires pertinentes. La vision, les cahiers de cosmologie, structures, expansion et progression ont été examinés pour leurs décisions ; les contrats de versions pertinentes ont été croisés pour actualiser les statuts. Les historiques de terrain et de validation ont été parcourus par leur structure, leurs états et leurs limites. Les grands inventaires de recettes servent à vérifier la couverture des familles, pas à voter ligne par ligne sur des milliers de recettes.
Il s’agit d’un **audit documentaire de conception**, pas d’un nouvel audit exhaustif du code, d’une vérification de toutes les preuves historiques ni d’un essai multijoueur. « Livré » ci-dessous signifie **décrit comme livré et accompagné de vérifications dans le contrat concerné**. Aucun test Minecraft n’a été exécuté pour cette tâche documentaire et aucune compatibilité externe n’est extrapolée depuis une ancienne étude.
Ordre de lecture retenu en cas de divergence : décision explicite récente pour l’intention ; contrat de livraison le plus récent sur la mécanique pour l’état documenté ; proposition datée pour les possibilités ; référence alpha ou 26.2 pour l’historique. Un document récent ne remplace un ancien contrat que sur les sujets qu’il traite.
Les posts portent quatre statuts :
- **Souvenir** : information à recueillir, absente des sources.
- **Choix ouvert** : décision explicitement laissée à concevoir ou à équilibrer.
- **Retour sur l’existant** : une règle existe ; on évalue son effet sans la présenter comme indécise à l’origine.
- **Question déduite** : conséquence ou besoin identifié par l’analyse, à confirmer auprès des joueurs.
## 3. Ce qui est déjà fixé ou documenté comme jouable
| Sujet | Point de départ à conserver dans les discussions | Sources |
| --- | --- | --- |
| Monde | Un monde flottant commun ; Petit 512, Moyen 724, Grand 1 024 de diamètre nominal. Chantier de terrain clôturé par le créateur sur alpha.30.7. | [Vision](vision.md), [alpha.30.7](generation-alpha30.7.md) |
| Expéditions | Quatre régions de 512 blocs déjà ouvertes dans les nouveaux mondes concernés. La révision beta.002 retient nord boréal, est tropical/volcan, sud aride/canyon, ouest humide/océan ; les futures ouvertures collectives restent absentes. | [beta.001](expeditions-beta001.md), [beta.002](expeditions-beta002.md), [expansion](expansion.md) |
| Arrivée | Fiche d’habitant et couleur, accueil, cinématique de 29,5 secondes que l’on peut passer. Départ 3/3/3. | [Progression](progression-beta003-contract.md), [introduction](introduction-beta031.md) |
| Compétences | Six compétences fonctionnelles. Minage individuel à vitesse native au départ, jusqu’à 200 % et veines de 256 blocs ; construction jusqu’aux plans 15×15 ; inventaire de 9 à 54 cases, hotbar comprise. | [Minage](mining-beta008.md), [construction](building-beta009.md), [inventaire](inventory-beta010.md) |
| Coûts et amorce | Courbe par défaut 1, 2, 4, 8, 16, 32, 48 niveaux ; inventaire sur les cinq premiers achats. Cinq étapes de premiers gestes, 8 points d’XP chacune, une fois par habitant et monde. Équilibrage à éprouver. | [beta.013](progression-inline-beta013.md), [tutoriel](tutorial-xp-beta016.md) |
| Mort | Compétences et aptitudes conservées. Sans keepInventory, 70 % des points d’XP non investis laissés en orbes récupérables par tous ; objets selon les règles de mort applicables. | [Contrat initial](progression-beta003-contract.md), [inventaire](inventory-beta010.md) |
| New Game+ | Volontaire après les six compétences au maximum, sans exiger toutes les aptitudes. Compétences et XP remises à zéro par défaut ; aptitudes, objets, connaissances, monde et affiliations conservés. Objets des rangées verrouillées retirables. | [Cycles](cycle-factions-beta011.md) |
| Factions | Une affiliation à la fois. Un cycle donne un prestige et une charge ; une charge fonde deux places, une charge ajoute une place. Invitations, départ, exclusion, transfert et dissolution existent. Aucun claim n’en découle. | [Cycles et factions](cycle-factions-beta011.md) |
| Demeure | Mesure des empreintes d’habitation dans les zones connues ; la décroissance après absence ne constitue pas un droit de reprise de propriété. | [Demeure](demeure-beta006.md), [module](../mods/demeure/README.md) |
| Connaissances et carte | Carte native personnelle de surface, exploration mémorisée avant achat, absence de partage automatique ; filtres Discovery des entrées connues. Bestiaire complet, minimap, marqueurs et partage restent des sujets distincts. | [Atlas](atlas-beta005.md), [menus beta.033](menus-discovery-beta033.md), [navigation](blocodex-navigation.md) |
| Recettes | Catalogue JEI porté, connaissances distinctes de la possession, fabrication manuelle libre. 67 collections dont une technique ; 2 042 recettes classées et 126 advancements associés. Fiches détaillées d’obtention et musée encore futurs. | [Recettes](recipes-jei-beta024.md), [collections beta.035](collections-beta035.md) |
| Familiers | 88 paires de pouvoirs révisées, recharges et budgets partagés, nom et taille persistants, interactions. Acquisition de survie, rangs I–III et Anomaly non livrés. | [beta.020](familiar-interactions-beta020.md), [beta.032](spawn-eggs-v2-beta032.md), [catalogue](spawn-eggs-v2-catalogue-beta032.md) |
| Gestes et visuels | Portage et piles de joueurs, plongeon, posture allongée, plané avec animal volant porté, cosmétiques interactifs et lumières dynamiques. La TNT portée est une vraie exception avec dégâts. | [Accessoires](companions-cosmetics-beta018.md), [TNT](head-cosmetics-beta021.md), [lumières](dynamic-lights-beta030.md), [beta.036](corrections-beta036.md) |
| Temps et objectifs | Temps réel saisonnier, choix serveur, sommeil sans saut de nuit, phantoms naturels d’insomnie désactivés en temps réel. Suivi commun avec trois objectifs épinglés au maximum ; quêtes non livrées. | [beta.037](realtime-beta037.md) |
| Canon | Neuf anciens personnages, ruines comme traces d’anciennes solutions, Indoors contrôlés et Backrooms orphelins. Le canon et les identités retenus ne deviennent pas un sondage de popularité. | [Cosmologie](cosmologie.md) |
## 4. Les tensions de design à résoudre en priorité
| Tension | Pourquoi elle change réellement la partie | Décision ou essai utile |
| --- | --- | --- |
| Coopération / passage obligé par le prestige | Un groupe d’amis peut vouloir se structurer avant qu’un membre ait maximisé six compétences. Les places financées par répétition de cycles peuvent faire du groupe une récompense de grind. | P06, P07, P10–P12, puis essai de fondation à plusieurs. |
| Départ fragile / joueur occasionnel | Trois cœurs et neuf cases peuvent créer de l’entraide ou décourager avant la première relation sociale. Les premiers gestes donnent déjà de l’XP : il faut mesurer le départ actuel. | P04, P08, P09, P15 et une heure sans commandes. |
| Exploration / stocks disponibles | Quatre îles sont déjà ouvertes, et certains îlots aériens de la fin alpha sont volontairement riches. « Ressources rares » n’est pas une preuve de besoin d’expansion. | P19, P23, P26–P27 ; relever les ressources effectivement accessibles pendant une partie. |
| Initiative / décision commune | Ouvrir une île modifie durablement le monde de tous. Le financeur, le constructeur de la machine et les futurs usagers ne sont pas forcément les mêmes. | P21–P25 ; préciser aussi la décision de lancement et l’annulation avant consommation. |
| Progression / économie de l’XP | Capacités, enchantements, transports et futurs gestes créatifs peuvent se concurrencer. Une source d’XP dominante peut décider du rythme de tous les autres systèmes. | P09–P10, P18, P29 ; mesurer les budgets par activité avant de choisir les prix. |
| Habiter / combattre / plaisanter | Factions, Demeure, braquages, téléportations, TNT et lucky blocks ne partagent pas encore un contrat de protection. Un geste amusant pour l’un peut détruire le projet d’un autre. | P31–P40, P114, P102 ; tester des situations aux frontières des permissions. |
| Monde permanent / pression horaire | Temps réel, offres horaires, dimanche, quotas et production peuvent favoriser une disponibilité que les anciens n’ont plus. | P04–P06, P49, P52, P54–P55, P58, P100, P113. |
| Découverte / connaissance extérieure | Les joueurs connaissent déjà Minecraft et peuvent consulter un wiki. Le secret du catalogue ne doit pas devenir une obligation d’ignorer ce qu’ils savent. | Garder la fabrication libre ; P63–P67 et un parcours d’information volontaire. |
| Attachement / objet échangeable | Un compagnon nommé et singulier peut aussi être perdu, vendu, prêté ou remplacé par un plus rare. Ces intentions produisent des relations très différentes. | P71–P75 ; fixer l’acquisition et la récupération avant un marché des œufs. |
| Histoire commune / événements manqués | Boss uniques, reliques et révélations peuvent laisser les absents sans rôle. Le ciel et les archives peuvent valoriser une première victoire sans rendre les suivants inutiles. | P06–P07, P82–P86, P107–P108, P116. |
| Ballast / conservation économique | Une trace narrative n’est ni un prélèvement autorisé ni un stock restituable. Rendre le ballast exploitable peut créer une nouvelle source de monnaie ou de matériaux. | P92–P93, P117 ; un cas complet d’opération → trace → lieu → récupération. |
| Proximité du créatif / avenir de la survie | Les possibilités créatives changent la valeur de la production, des objets rares et du commerce. Les droits opérateur ne sont pas une récompense de gameplay implicite. | P18 et P85 avant de définir la récompense des sept boules. |
## 5. Carte complète des décisions restantes
Les plages renvoient aux identifiants du [document de posts](consultation-discord-posts.md). La colonne finale conserve les détails à spécifier après la consultation : les joueurs choisissent une expérience, puis le ticket en fait une règle testable. Aucun de ces détails n’est marqué comme implémenté par ce document.
| Domaine | Décisions de jeu encore ouvertes ou à réévaluer | Posts | Détails à arrêter au ticket |
| --- | --- | --- | --- |
| Identité du projet | Souvenirs à retrouver, irritants, priorité des piliers, durée des sessions et des aventures. | P01–P05 | Population et rythme de test visés ; distinguer monde permanent et futurs départs saisonniers. Aucun effacement décidé. |
| Accueil et inclusion | Place des nouveaux, absents, non-combattants, autonomie des premières heures. | P06–P09, P111–P112 | Aides, jalons, lisibilité de la fiche et de l’introduction, accès sans vocal, besoins de clavier et de lecture. |
| Progression | Temps du premier cycle, sources d’XP, intérêt du prestige, confort achetable et plafond d’inventaire. | P09–P16 | Prix et courbes après mesures ; ne pas récompenser de nouveau une découverte déjà payée ; traitement des futurs plafonds sans altérer les cycles archivés. |
| Mort | XP publique ou réservée, pertes ordinaires et objets personnels, effort de récupération. | P13–P14, P73, P90–P91 | Expiration, décès répété, vide, lave, déconnexion, keepInventory et garanties contre les doubles restitutions. |
| Factions | Moment de fondation, charges et capacité, délégation et responsable absent. | P11–P12, P35 | Rôles fins, seuils, invitations, règles de trésorerie future et sort des dépenses au départ ; ne pas confondre couleur d’habitant et identité collective. |
| Claims et voisinages | Protection personnelle avant faction, agrandissement, visiteurs, abandon, visibilité Demeure. | P31–P36 | Emprise verticale, sous-sols, limites de chunk, espaces publics, accès aux animaux et coffres, chevauchements, alertes et contestations. Demeure reste une mesure sauf nouveau contrat explicite. |
| Conflit et risques | PvP, conditions des braquages, enjeu volable, présence des défenseurs, dégâts collatéraux. | P37–P40, P114 | Fenêtres, cooldowns, avertissements, attribution d’une attaque, usages du foret, sanctions et réparation d’incidents. Les dates d’absence ne valent pas consentement. |
| Expansion collective | Motivation après les quatre îles initiales, cadence, décideurs, formes de contribution et coûts. | P19–P23 | Population de référence, progression des prix, plusieurs projets simultanés, annulation, remboursement, droit de lancer et usage public de la nouvelle terre. |
| Recherches et machine | Informations accessibles avant engagement, apprentissage, montage et programmation. | P24–P25, P60 | Rôles de l’assembleur, contrôleur, terminal, dépôt et ancre ; connexions, recettes, autorisations ; distinction mailbox / dépôt collectif / dépôt de machine. |
| Territoire et ressources | Préservation de l’île, carrière, pénurie bloquante, ressources exclusives, identité des futurs biomes. | P19, P26–P27, P118 | Relevés après génération, ressources finies/renouvelables, emprises et accessibilité ; nouveau biome et palette sur graines versionnées, sans rouvrir implicitement le chantier alpha. |
| Ruines | Utilité immédiate, indices, réappropriation, lien avec les machines et les personnages. | P78–P79, P84 | Pour chaque lieu : ancien usage, plan, accès, butin, état, exceptions collectives, présence garantie/facultative et répétition. Relire les versions plus récentes avant de reprendre WG-26. |
| Donjon majeur | Blocage qu’il lève, nature du défi, bénéficiaires, répétition, usage après victoire. | P80–P84 | Identité et comportements du boss, objet installé/consommé/conservé, site indispensable accessible, objet perdu, participants tardifs, spawners et récompenses personnelles. |
| Transport | Première traversée, priorité des moyens, coût et place des réseaux publics. | P28–P29, P119 | Waystones horizontales connues et ascenseurs, rayon et arrivée approximative du téléporteur, temps d’activation, accès, capacités et vitesses ; ziplines, leads consommés par grappin, bateau/poule, biplan, Happy Ghast, taille de Magic Carpet. |
| Monnaies | Rôle pratique des trois gemmes, convertibilité, production et usages de dépense. | P42–P45, P48 | Origine et génération des rubis/saphirs, recettes, taux, frais, quantités, sinks et effets des fermes. Les valeurs de ponte de la vision demandent un essai d’économie. |
| Boutique et marché | Lieu, stock réel ou apport du serveur, prix, échanges entre joueurs et renouvellement des offres. | P41–P46, P113 | Nombre et prix des neuf emplacements envisagés, durée d’une offre, frais d’annonce, réservation, transfert de propriété, livraison échouée et stockage plein. |
| Catalogue et courrier | Signification exacte d’une réserve en saphirs, garantie apportée, livraison et délégation. | P45, P47, P49 | Limites par objet, dépôt ou assurance, propriétaire de la mailbox, récupération de l’accès, boîte pleine et envoi annulé ; éviter toute création illimitée par réservation. |
| Navets et loterie | Achat dominical accessible, place du hasard, exclusivités et attentes des absents. | P49–P50 | Cours, fréquence, péremption éventuelle non décidée, ticket gagné/comment, probabilités, plafond, financement et règles des futurs casinos événementiels. |
| Quêtes et événements | Activités utiles, quotas, partage des récompenses, rendez-vous libres ou programmés. | P51–P54 | Trois difficultés/gemmes, acceptation, abandon, expiration, dépôts, attribution XP/butins ; auteur des panneaux, inscriptions, anniversaires, visiteurs, concours et Gazette. |
| Villageois et automatisation | Premières tâches, personnes autorisées, production en l’absence des joueurs. | P56–P58 | Rayon des cloches, bannières en conflit, salaires et entretien, stocks sources/destinations, métier, refus, capture/changement d’équipe ; différences ticks chargés / heures réelles. |
| Machines de production | Convoyeurs, ordinateur, terminal commun et chargement de chunk. | P56, P58–P60 | Six ports, langage et exemples, stockage jusqu’à 128 coffres envisagés, connexion/permissions, périmètre et durée des clés de chunk, limites de charge serveur. |
| Construction avancée | Plans guidés ou automatisés, circulation des schémas, utilité des prefabs. | P17, P61 | Attribution de l’auteur, partage/vente, matériaux inconnus, vraie consommation, permissions, supports, annulation ; vérifier Litematica sur la version exacte au ticket. Voxelier reste non prioritaire. |
| Cartographie | Transmission volontaire, niveau d’information de la minimap, reliefs superposés, marqueurs. | P62–P64 | Copie ponctuelle ou mise à jour, périmètre du partage, provenance, carte de faction, limites du brouillard et de l’export Web ; autres dimensions et cartes souterraines. |
| Découvertes | Critères du bestiaire, fiches d’obtention, niveau de guidage, alchimie par familles. | P65–P67, P115 | Vue/possession/fabrication distinctes, variantes d’espèces, gestes sans recette, encyclopédie technique, musée et récompenses éventuelles de collection ; contenu déjà connu conservé. |
| Profil et affinités | Vitrine, favoris, effet sur apprivoisement, production ou chasse, consultation d’autrui. | P68–P69, P115, P120 | Nombre de trophées ; type/variante favori ; petit coefficient et bénéficiaire du butin ; délai de 24 h déjà retenu ; gestes et portée de lecture des PV. |
| Familiers | Acquisition, hasard/objectif choisi, marché, perte, rangs et nature d’Anomaly. | P71–P76 | Contrat d’œuf de survie inerte à décider avant distribution ; duplication et première récompense ; sort des œufs de test, familles rares, découverte et stabilisation ; essais solo puis coop. |
| Capes et objets exceptionnels | Valeur de souvenir, mérite, appartenance ou collection ; puissance des anomalies. | P50, P75, P77 | Visuel original de Cape Zéro, modes d’obtention des capes, tables des quatre familles de lootboxes, équipement titane indestructible et enchantements, rareté qui reste désirable sans remplacer tout le reste. |
| Cosmologie et récit | Manière de raconter, rôle des joueurs dans l’issue, trois épreuves manquantes. | P78, P85–P86 | Nature exacte de la découverte, rôle encore vague de Zuri, liens d’Alex, journaux des neuf personnages, apparitions, dénouement ; ces révélations peuvent rester un atelier d’auteur séparé. |
| Fin et après-fin | Réussite commune, droits créatifs de gameplay, poursuite du monde. | P05, P18, P85–P86 | Sept objets et leur réunion, seuil de fortune, cauchemar, rencontre d’Alpha, nécromancien, conséquences de victoire, nouveaux arrivants et nouveaux cycles. |
| Dimensions | Priorité et rôle distinct des Cavernes, Alpha, Backrooms et Indoors. | P30, P87, P94 | Accès Nether/End existants ou à relier au parcours, ressources des Cavernes, cité ancienne et boss, apparence Alpha limitée à sa dimension ; conservation des régions exploitées. |
| Backrooms | Accès, retour, récupération de biens perdus, propriété et rétention. | P88–P91 | Lumière et niveau de danger, lieu d’arrivée, mort/déconnexion, secours, distinction objet identifié / ressource de décor / résidu. Aucun espace réel ne devient sans référence de sauvegarde. |
| Ballast et géologie | Trace gratuite, coût, conséquence contrôlable, lecture des périodes, extraction. | P92–P93, P117 | Opérations contributrices, unités, conservation ou transformation, provenance, période, moment de génération, strates des anciens, bornes ; préserver les lieux déjà explorés. |
| Indoors | Usages, géométrie, propriété partagée et accès de remplacement. | P94–P97 | Tailles 5³ à 100³ indicatives, transfert/vente, déconnexion, visiteurs coincés, fermeture et devenir du contenu ; dimension technique ou régions d’un espace partagé à choisir par les développeurs. |
| Cuisine et cultures | Complexité, terroirs, serres, transmission du savoir et temporalité alimentaire. | P98–P101 | Premier catalogue d’ingrédients/plats, ustensiles, étapes, nature de la « poudre », maturation du vin/fromage/saucisson, pages de Steve et pages secrètes ; rôle nutritionnel à mesurer avec Faim/Repos/familiers. |
| Faune et végétation | Utilité et attachement aux rares, nouveaux environnements, productions localisées. | P48, P99, P106, P118 | Tables d’apparition, ponte non reproductible, armures de poule, variantes Moobloom, fleurs et bois lavande/ébène/mossy/blueberry ; formes, noms FR/EN et identifiants à stabiliser. |
| Humour et danger | Limites d’Only Fun, événements absurdes, proximité des nouveaux hostiles. | P40, P102–P103, P106 | Portée des interactions, consentement, baleine fantôme et Happy Creeper, classes de zombies, fréquence, raids éventuels, distances aux refuges et comportement des boss. |
| Armes et petits objets | Place des armes à feu, objets d’activité et écoute de musique. | P104–P105, P110 | Munitions pépites/lingots/minerais, argent/titane, creeper lock/mining rifle, enchantements, Weather/Fragment/Randomizer/Mega TNT ; format caméra/cartes, particuleur, référence du disque et lecture audiovisuelle. |
| Ciel et calendrier | Organisation des étoiles, constellations, droits de dessin, cycles et datation visible. | P107–P109, P116 | Géométrie selon le point de vue, noms et longue-vue, étoiles adjacentes, coût point/segment, cycle stellaire de sept jours, origine et relation au soleil ; étoiles des absents et densité à long terme. |
| Site et histoire | Gazette, activités entre connexions, publication volontaire et portée des découvertes. | P70, P120 | Identités partagées, événements personnels/collectifs, spoilers, causalité, exports et actions Web validées serveur ; journal fonctionnant sans site. Les agrégats matériels ne suffisent pas à reconstruire cette histoire. |
| Pack et exploitation | Accessibilité, performances et format des essais ; besoin réel des intégrations. | P111–P112 | Contrôles sans bouton latéral, lisibilité, effets et sons réglables ; matrice de versions/licences, machines cibles, support Mac/Windows, rollback et canal. Master Key : rôles de maintenance, journal des réparations et diagnostics, distincts des pouvoirs de jeu. |
## 6. Incohérences et formulations documentaires à corriger
Ces points sont relevés pour un futur entretien documentaire ; les fichiers sources existants n’ont pas été réécrits dans cette tâche.
| Passage pouvant induire en erreur | Lecture actualisée | Correction documentaire proposée |
| --- | --- | --- |
| [README](../README.md) : nouveautés beta.037, tableau de version et exemple de JAR encore beta.036. | Les deux propriétés sont beta.037 ; [la livraison](realtime-beta037.md) est locale. | Une courte fiche de version actuelle, puis un historique daté. Ne pas déduire l’état du canal depuis la version de travail. |
| [Vision](vision.md) : progression décrite comme future dans « Périmètre de départ », conclusion invitant encore à obtenir le premier monde stable. | Des compétences, cycles et factions sont décrits comme livrés ; worldgen clôturé sur alpha.30.7. | Marquer ces paragraphes comme cadrage initial et ajouter l’état actuel en tête. |
| Vision : tous commencent isolés avant l’ouverture progressive des continents. | [beta.001–002](expeditions-beta002.md) ouvre déjà quatre anciennes expéditions dans les nouveaux mondes concernés. | Distinguer les terres héritées de celles que les joueurs créeront ensuite. |
| Vision/expansion : boussole froid/chaud/sec/humide. | Convention facultative ; les îles initiales ont une répartition spécifique confirmée, dont ouest humide et est tropical. | Ne pas transformer la convention climatique en loi des quatre expéditions. |
| Vision et ancienne présentation worldgen : monde de 384 blocs. | [alpha.30.4](generation-alpha30.4.md) documente Y0–639 constructibles ; alpha.30.7 conserve le plafond Y640. | Distinguer hauteur constructible actuelle, volume du terrain et configurations historiques. |
| Vision : minage très lent, place de la hotbar à préciser, taux de perte XP et charges encore ouverts. | [Minage](mining-beta008.md) démarre à 100 % ; [inventaire](inventory-beta010.md) inclut la hotbar ; [mort](progression-beta003-contract.md) et [cycles](cycle-factions-beta011.md) fixent des valeurs configurables. | Conserver ces mentions comme anciennes intentions, lier les contrats courants. Poser un retour d’essai, pas une question d’implémentation initiale. |
| [Prochains tickets](prochains-tickets.md) et plusieurs sections du backlog gardent de longues questions désormais résolues en beta.011. | Le bandeau de statut est à jour, le corps conserve le cadrage d’origine. | Séparer « contrat final », « limites encore ouvertes » et « discussion historique ». |
| [Backlog](backlog.md) : REALTIME « à cadrer » sous TIME-037 livré ; quêtes prévues en haut à gauche. | [beta.037](realtime-beta037.md) livre l’horloge et impose le même moteur et placement que les autres objectifs, sans second HUD. | Retirer ces deux entrées des prochaines décisions actives ou les marquer remplacées. |
| [beta.034](notifications-beta034.md) : bas à droite et suivi automatique ; beta.033 : Factions/History dans Échap. | [beta.036](corrections-beta036.md) retient haut à droite par défaut et suivi choisi ; beta.034 déplace Factions/History dans Prestige. | Garder chaque contrat daté ; une notice joueur actuelle doit décrire seulement les accès actuels. |
| [Navigation Blocodex](blocodex-navigation.md) : tout est encore présenté comme conception et les inconnus sont décrits visibles dans le socle. | Recettes, objets connus, filtrage et accès ont progressé en beta.024–036 ; vitrine/favoris et bestiaire restent à distinguer. | Une matrice par fonction évitera « tout livré » et « tout absent ». |
| [Collections](collections-minecraft.md) : définitions intégrées en tête, puis « futur ticket » et ancienne séquence de livraison dans le corps ; README beta.024 encore « proposition non active ». | [beta.035](collections-beta035.md) matérialise les 67 collections. Les fiches d’obtention et le musée restent futurs. | Séparer les données livrées des extensions de présentation, conserver le prototype JSON comme exemple historique. |
| [Familiers v1](companion-powers-balance-proposal.md), [v2](spawn-eggs-refonte-v2.md) : couches de propositions avec états à dates différentes. | [beta.032](spawn-eggs-v2-beta032.md) et son catalogue décrivent les 88 pouvoirs ; acquisition, rangs et Anomaly restent ouverts. | Présenter une source des valeurs courantes et une liste distincte des hypothèses d’acquisition. |
| [Structures-conception](structures-conception.md) : « alpha.22 reste la version publiée », petite sélection de lieux, rôles des personnages encore largement ouverts. | Les versions [alpha.30.6](generation-alpha30.6.md), [alpha.30.7](generation-alpha30.7.md) et [cosmologie](cosmologie.md) décrivent des évolutions ultérieures. | Ne pas appliquer toute la liste WG-26 comme un prochain chantier. Réconcilier chaque lieu et son rôle avec la génération finale et le canon. |
| Formules générales sur « Fabric API seule dépendance de gameplay » dans le README et les guides de pack. | Demeure et un fork JEI sont embarqués ; Fabric API reste la dépendance externe distincte décrite par le pack. | Distinguer dépendances externes, modules embarqués et intégrations envisagées. |
| Anciennes notes : contrôles visuels en attente, versions suivantes : parcours clients réussis. | Une validation ultérieure ciblée n’est pas automatiquement celle de tous les anciens scénarios ni un test d’équilibre. | Une matrice consolidée « comportement / dernière preuve / essai restant » ferait gagner plus qu’une nouvelle accumulation de totaux de tests. |
Le défaut principal de la documentation est donc **l’accumulation de l’historique dans les pages d’orientation**. Elle conserve utilement les décisions et les limites, mais le lecteur doit reconstruire lui-même ce qui fait encore débat. Une future page « état actuel et décisions ouvertes » reliée aux contrats éviterait de transformer les anciens « reste à faire » en nouveau backlog.
## 7. Comment utiliser les réponses
### Premier tour : choisir ce qu’on veut vivre
Commencer par **P01 et P02**, sans afficher d’abord toutes les fonctionnalités possibles : on recueille les souvenirs spontanés. Continuer avec **P03, P06, P08, P12, P19, P21, P31, P37, P71, P85**. Cette série de douze questions fixe les priorités, le rythme social, la protection et les grandes récompenses.
Lire les commentaires avant de conclure avec un pourcentage. Une préférence majoritaire pour le conflit peut aussi révéler qu’une partie du groupe ne reviendrait pas avec cette règle. Conserver séparément avis sur une ancienne version, préférence théorique et observation sur une bêta précise. La taille des groupes de répondants ne permet pas de présumer l’opinion de tous les anciens.
### Deuxième tour : préciser seulement les branches retenues
- Si le groupe veut des territoires durables : P32–P36, puis les accès et limites des protections.
- Si le braquage est accepté : P39 et P114. Si le groupe choisit de le réserver aux donjons, ces questions deviennent inutiles.
- Si l’expansion collective motive : P20, P22–P27, P119, puis le rôle du donjon P80.
- Si les familiers comptent : P72–P75 et P76 sur des usages réels, sans mettre 88 fiches au vote d’un coup.
- Si l’économie est prioritaire : P41–P50, P58, P113 ; vérifier ensemble sources de ressources, dépenses et disponibilité horaire.
- Si les mystères attirent : P78–P86. Proposer P92–P93 et P117 dans un espace volontaire si l’on veut garder cette idée secrète pour le reste des joueurs.
Les autres thèmes gardent leur série indépendante. Une préférence pour la cuisine n’impose pas immédiatement toute sa liste d’ingrédients ; on peut choisir une chaîne complète, par exemple récolter → transformer → préparer → partager.
### Troisième tour : convertir les avis en petits essais
| Essai proposé | Matériel déjà documenté | Observation attendue |
| --- | --- | --- |
| Une heure d’arrivée en survie | Profil normal, premiers gestes, compétences, inventaire. | Premier achat, premières morts, incompréhensions, moment où l’on veut aider quelqu’un ou demander de l’aide. |
| Une tâche avec quelques familiers | Pouvoirs beta.032 ; œufs fournis dans un monde de test puisque l’acquisition n’existe pas. | Fréquence d’usage, effets compréhensibles, tâches rendues possibles, comparaison seul/à plusieurs et compagnon que l’on veut garder. |
| Une expédition avec chantier | Quatre régions ouvertes, carte personnelle, gestes de construction. | Temps et difficulté de traversée, manque réel de ressources, besoin de transport et intérêt d’une future expansion. |
| Un atelier de règles de voisinage | Situations discutées ou simulées ; ne pas prétendre que les claims sont actifs. | Visiteur, accident, stock commun, absence, reprise, personne hors faction ; règles contradictoires repérées avant le code. |
Une décision exploitable contient : **règle provisoire, raison exprimée, personnes affectées, situation testée et critère qui conduirait à la revoir**. Le modèle de retour à la fin des posts rend cette décision visible sans la confondre avec une fonctionnalité livrée.
## 8. Ce qui reste de la responsabilité de conception et de développement
Certaines inconnues demandent un atelier d’auteur ou une preuve technique, plutôt qu’un vote Discord :
- **Équilibrage chiffré** : coefficients des 88 familiers, coûts exacts, taux de change, tables de butin, quotas, courbes de prix, fréquences de ponte et de spawn. Les avis donnent le ressenti visé ; les parties et mesures fixent les valeurs d’essai.
- **Contrats de données** : identités stables, achats non répétés, objets uniques, panne entre paiement et livraison, copie des cartes, restauration, fermeture d’Indoor et journal transactionnel du ballast. Un choix de joueur ne dispense pas de ces garanties.
- **Sauvegardes et génération** : toute nouvelle version de terrain, dimension, extension ou récupération exige son périmètre et, si nécessaire, un contrat de migration. Aucun sondage n’autorise à effacer ou régénérer une partie existante.
- **Intégrations** : disponibilité, licence, dépendances et comportement réel de Sodium, Iris, Simple Voice Chat, Litematica, Golden Days ou autres pistes sur la version exacte. Le besoin peut être voté ; la compatibilité se vérifie au moment du ticket.
- **Canon et révélations** : nature de l’ancienne découverte, sacrifice et dénouement, détail des journaux et énigmes. On peut coécrire avec des volontaires avertis, sans dévoiler les réponses à tous pour choisir leur mode de découverte.
- **Direction artistique** : formes d’arbres, silhouettes de lieux, variantes de Moobloom, graphismes de Cape Zéro, vocabulaire FR/EN et palette du pack. Après les attentes d’usage, présenter quelques exemples concrets permettra de décider plus utilement que des noms seuls.
- **Exploitation et Master Key** : rôles de maintenance, diagnostics, réparation et journalisation ; état du canal de distribution, compatibilité client/serveur et limites de performances. L’administrateur doit pouvoir réparer un incident sans transformer les récompenses de jeu en droits opérateur.
## 9. Livraison de cette analyse
Trois fichiers documentaires ajoutés : analyse, banque complète et extrait de démarrage. Les changements préexistants ont été conservés ; aucun code, version binaire, manifeste, monde, serveur, canal packwiz ou instance Prism n’a été modifié par cette tâche. La branche documentaire conserve l’état de travail déjà présent ; elle ne constitue pas un commit isolé de l’ensemble des modifications antérieures.
La vérification de livraison porte sur les **120 identifiants uniques**, les blocs à copier, leur longueur, les liens locaux et la couverture des familles de la vision. Les hypothèses sont signalées et les propositions de réponse ne valent ni résultats de sondage ni décisions validées. Une modification documentaire seule ne nécessite ni incrément beta ni construction Gradle.
File diff suppressed because it is too large Load Diff
+181
View File
@@ -0,0 +1,181 @@
# Sanctuary — les 12 premiers posts Discord
Extrait préparé le 14 septembre 2026. Copier uniquement les blocs de texte. Publier les deux souvenirs en premier, puis avancer avec un ou deux sujets ouverts à la fois. Les numéros renvoient à la [banque complète de 120 posts](consultation-discord-posts.md).
L’[analyse documentaire](consultation-discord-analyse.md) donne les sources, les décisions encore ouvertes et les points déjà réglés dans la bêta. Aucun message n’a été publié.
## Message d’ouverture
```text
J’aimerais construire la suite de Sanctuary avec les personnes qui y ont joué.
Je vais poster des questions petit à petit. Certaines parlent de vos souvenirs ; d’autres présentent une mécanique envisagée pour la suite. Quand quelque chose existe déjà dans la bêta, je le préciserai.
Vous pouvez répondre avec une lettre, proposer autre chose ou raconter une situation vécue. « Je ne sais pas » et « ça ne m’intéresse pas » sont aussi utiles. Si vous parlez d’une ancienne partie, indiquez laquelle si vous vous en souvenez.
Ce qui m’aide le plus : votre préférence et ce qu’elle changerait dans votre façon de jouer. Les votes me guideront ; les désaccords et les essais en jeu compteront aussi.
```
### P01 — Le souvenir à retrouver
Souvenir libre · À publier avant les sondages de fonctionnalités.
```text
Quel moment vécu sur Sanctuary aimerais-tu pouvoir revivre dans la nouvelle version ?
Raconte une scène précise : ce que tu faisais, avec qui, et ce qui l’a rendue mémorable. Ça peut être une construction, une découverte, un accident, une rencontre ou un truc complètement idiot.
```
### P02 — Ce qui te faisait décrocher
Souvenir libre.
```text
Qu’est-ce qui t’a déjà fait perdre l’envie de te connecter à Sanctuary ?
Une situation concrète m’aidera plus qu’une liste de fonctionnalités manquantes. Ça peut venir du jeu, du rythme du serveur ou de la vie du groupe. Pas besoin de nommer quelqu’un.
```
### P03 — La priorité à protéger
Question déduite · Arbitrage entre les piliers de la vision.
```text
Si je dois protéger une seule qualité de Sanctuary dans les prochains développements, laquelle doit passer en premier ?
A — L’exploration et les découvertes surprenantes.
B — La construction et les grands projets communs.
C — La progression, la production et les échanges.
D — La vie du groupe, les rencontres et les moments absurdes.
```
### P06 — Revenir après une absence
Question déduite · À traiter avant les coûts collectifs et le calendrier.
```text
Si tu reviens après deux semaines d’absence et que les autres ont beaucoup avancé, qu’est-ce qui t’aiderait le plus à reprendre ?
A — Profiter immédiatement des infrastructures et des accès ouverts par le serveur.
B — Avoir un parcours personnel de rattrapage plus court.
C — Retrouver des activités utiles au groupe dès mon niveau actuel.
D — Rejouer les grandes étapes manquées avec d’autres volontaires.
```
### P08 — Le départ fragile
Retour sur l’existant · Ne propose pas de rétablir l’ancien minage ralenti.
```text
Dans la bêta, on commence avec 3 cœurs, une petite réserve de faim et d’air, et 9 cases d’inventaire. Le minage de départ garde la vitesse Minecraft normale ; les premiers gestes donnent un peu d’XP.
Quel ressenti voudrais-tu pendant la première heure ?
A — Une vraie fragilité qui rend l’entraide nécessaire.
B — Un départ exigeant, avec un abri et les premiers progrès rapidement accessibles.
C — Une mise en route assez confortable ; le danger vient ensuite de l’exploration.
D — Il me faut un essai de cette bêta pour me prononcer.
```
### P12 — Fonder une faction avant le prestige
Retour sur une règle livrée · Une évolution demanderait une décision explicite.
```text
Aujourd’hui, fonder une faction demande une charge gagnée en terminant un cycle. La faction commence à deux places ; ses invités n’ont pas besoin de prestige.
À quel moment voudrais-tu pouvoir créer ton groupe officiel ?
A — Dès l’arrivée ; le prestige servirait ensuite à le développer.
B — Après un petit objectif collectif accessible en début de partie.
C — Après le premier cycle, comme dans la bêta actuelle.
D — Les groupes informels me suffisent ; la faction peut rester tardive.
```
### P19 — Ce que doit apporter une nouvelle île
Choix ouvert · Distinction essentielle avec les quatre expéditions déjà ouvertes.
```text
Les nouveaux mondes ont déjà quatre îles d’expédition accessibles : boréale au nord, tropicale à l’est, aride au sud et océanique à l’ouest. Leur accès ne demande pas de déblocage collectif.
Qu’est-ce qui justifierait le mieux de financer ensuite un nouveau continent ?
A — Des ressources impossibles à trouver ailleurs.
B — Un lieu de mystère, un donjon ou une nouvelle étape de l’histoire.
C — Un nouveau territoire pour construire et s’installer.
D — Un environnement qui permet de nouvelles cultures et productions.
```
### P21 — Qui choisit l’expansion
Choix ouvert · Gouvernance à fixer avant les dépenses collectives.
```text
Une future installation permettra aux joueurs d’ouvrir un continent. Qui devrait décider du projet à financer ?
A — L’ensemble du serveur, par un vote ouvert.
B — Les personnes qui contribuent à ce projet.
C — Chaque faction, pour ses propres expéditions.
D — N’importe quel groupe qui construit l’installation et réunit les moyens.
```
### P31 — Une maison sans faction
Choix ouvert · Demeure n’est actuellement pas une protection.
```text
La bêta sait montrer les lieux habités avec Demeure, mais ne protège pas encore les constructions par des claims.
Comment voudrais-tu protéger ta première maison ?
A — Un petit terrain personnel gratuit dès l’arrivée.
B — Un terrain personnel gagné après quelques activités de début de partie.
C — Une protection fournie par une faction que je rejoins.
D — Des règles de voisinage et une intervention humaine en cas de problème.
```
### P37 — La place du PvP
Choix ouvert · À trancher avant armes, familiers et braquages.
```text
Quelle place voudrais-tu donner aux combats entre joueurs dans Sanctuary ?
A — Des duels acceptés par les deux personnes.
B — Des arènes ou événements annoncés.
C — Des conflits de factions déclarés, dans des zones et périodes précises.
D — Un danger possible dans les territoires sauvages, avec des refuges protégés.
```
### P71 — Obtenir son premier familier
Choix explicitement ouvert · Les pouvoirs sont livrés, leur acquisition normale en survie reste à concevoir.
```text
La bêta possède déjà les pouvoirs de 88 familiers, mais leur obtention en survie reste à construire.
Comment voudrais-tu obtenir ton premier œuf de familier ?
A — En prenant soin d’un animal ou en réussissant une interaction avec son espèce.
B — En terminant une petite quête dont la récompense est connue.
C — En découvrant un lieu ou un coffre, avec une part de surprise.
D — En choisissant un compagnon de départ, puis en recherchant les suivants.
```
### P85 — Une réussite collective
Choix ouvert · Ne révèle pas le dénouement narratif.
```text
Quel accomplissement te ferait dire « on a vraiment réussi cette aventure Sanctuary ensemble » ?
A — Avoir transformé les îles en un monde habité et relié.
B — Avoir résolu le grand mystère de ce monde.
C — Avoir rendu possibles des constructions et techniques extraordinaires.
D — Avoir créé une communauté dont les projets continuent sans objectif final imposé.
```
## Après ces premiers retours
Choisir la prochaine série selon les réponses : progression, voisinage, expansion, familiers ou récit. Le [modèle de retour sur une discussion](consultation-discord-posts.md) permet ensuite d’annoncer une règle provisoire et l’essai qui servira à la vérifier.
+121
View File
@@ -0,0 +1,121 @@
# HUD-036 — notifications choisies, vol porté et discrétion
Branche `codex/hud-gliding-stealth-beta036`, base beta.035.
Cible inchangée : Minecraft 26.3-pre-2, Java 25.
## Contrat jouable
Les notifications démarrent **en haut à droite**. Options → Notifications propose
les neuf ancrages : quatre coins, quatre milieux de bord et centre. La préférence
locale existante est conservée ; les fichiers antérieurs sans position prennent
le nouveau défaut. Aucun réglage de quête n’est ajouté.
Les colonnes F3 et les annonces natives réservent leur surface réelle, mesurée
sur la même image, y compris avec une échelle F3 différente. Le fil reste dans
la colonne choisie, se place dans une zone libre et réduit le nombre de lignes
si nécessaire. Barres de boss, sous-titres et ensemble vie/XP/hotbar réservent aussi
leur place. Quand aucun emplacement lisible ne reste, les messages attendent ;
le profiler circulaire et la visualisation de chunks suspendent le fil. F1, les
menus et les écrans de chargement le masquent également.
Un advancement commencé ne reste **plus suivi automatiquement à vie**. Ses
nouveaux progrès s’effacent comme les découvertes (durée réglable 3–15 secondes,
5 par défaut, plus deux secondes pour les progrès). Un état inchangé ne relance
pas le délai. La mort et la réapparition effacent le fil temporaire sans rejouer
les anciens critères ni les découvertes.
Dans **Advancements**, cliquer sur une icône visible et incomplète l’épingle ;
cliquer à nouveau retire le suivi. Un `+` doré marque l’icône et une indication
FR/EN explique le geste. Glisser la carte de l’arbre ne bascule jamais le suivi.
Jusqu’à **trois objectifs** sont choisis ; un quatrième remplace le plus ancien.
Les critères reçus du serveur alimentent les jauges, même avant le premier
critère réussi. Une réussite complète retire automatiquement l’épingle.
Le choix survit à la mort et à la reconnexion, séparément pour chaque compte
et monde local ou adresse de serveur. Les préférences restent uniquement dans
`config/sanctuary-notifications.json` ; les clés de contexte sont hachées.
L’option Objectifs épinglés masque ces suivis sans oublier la sélection.
Les progrès récents non épinglés gardent leur bref affichage temporaire.
## Déplacements
Porter un animal volant sur sa tête permet de **planer automatiquement pendant
la descente** : vitesse verticale plafonnée à 0,12 bloc/tick, sans impulsion vers
le haut. Les poules comptent parmi les oiseaux qui amortissent la chute. Les
familiers utilisent l’espèce de leur œuf. Le compagnon doit réellement être porté ;
un animal proche ou simplement suiveur ne suffit pas. Le ralentissement dû au
portage reste appliqué. Le vol créatif, les élytres, l’eau et la lave conservent
leur fonctionnement. Une pile de joueurs ne transmet pas ce pouvoir à son socle.
La distance de chute accumulée est effacée pendant le plané. Relâcher l’animal
rétablit immédiatement la gravité et l’accumulation d’une nouvelle chute : aucune
potion persistante ni immunité générale aux dégâts.
Allongé ou au repos **au sol**, le joueur réduit de moitié sa visibilité dans
les tests natifs de détection des mobs. L’effet se combine avec les règles
Minecraft déjà présentes. À proximité, les mobs peuvent encore détecter et
frapper. Le plongeon, la nage et le vol ne procurent pas ce bonus. Les cibles
existantes ne sont pas effacées de force. La petite silhouette native demeure,
y compris son intérêt face aux flèches ; aucun changement de visée des squelettes.
## Compatibilité
Aucun changement de schéma des sauvegardes serveur, des identifiants de jeu, des
récompenses, des recettes, des générations ou des expansions. Les deux préférences
client nouvelles et le suivi restent hors des mondes. Aucune installation de jeu
personnelle n’est mise à jour par ce ticket.
## Suite, non implémentée ici
- Quêtes en haut à gauche : après les blocs rubis/saphir et leur contrat serveur.
- Temps réel : horloge et fuseau système automatiques en solo ; fuseau choisi
dans la configuration serveur en multijoueur. Une région solaire approximative
choisie séparément doit déterminer latitude/saison/date, lever et coucher du
soleil. Le fuseau seul ne suffit pas à déterminer la géographie. Ne pas demander
d’adresse personnelle, ne pas collecter la géolocalisation ni publier une position
précise. Définir avant implémentation le profil solaire de secours en solo,
les changements d’heure, le passage de minuit et la migration du temps des mondes.
## Vérifications
`./gradlew check build assemblePack assembleTestPack` réussi avec les suites
ciblées `corrections,notifications,carry,movement,progression,recipes,collections` :
**36 tests serveur**, dont la matrice des 126 advancements de collections.
Le contrôle de géométrie couvre 180 combinaisons et les collisions F3/toasts/boss/HUD.
Deux parcours client natifs réussissent sur des mondes plats de développement :
- « A Balanced Diet » après rotten flesh expire ; clic/re-clic/glissement de
l’arbre, épingle conservée après respawn et retirée après réussite.
- 36 combinaisons GUI/position avec F3, son échelle indépendante, boss, hotbar,
réglages enregistrés et écrans FR/EN inspectés visuellement.
- Vraie descente du joueur avec un perroquet porté et atterrissage sans dégâts.
- Sorties des collections Archery, Woodworking, Boats and Rafts et Books and
Storage trouvées dans le filtre JEI ; ouverture des vraies recettes arc,
établi, bateau et livre sans possession préalable, avec inconnus préservés.
La persistance du choix est contrôlée dans le fichier client ; la mort/respawn
est exercée en jeu. La conservation à la reconnexion utilise ce même contexte
chargé au retour, sans parcours supplémentaire de redémarrage pour ce ticket.
La discrétion est contrôlée par les tests de détection natifs côté serveur ;
l’équilibre face à plusieurs mobs en partie reste à apprécier.
Exports locaux vérifiés : [normal](../build/Sanctuary-beta.036.mrpack) et
[monde plat rapide](../build/Sanctuary-Test-beta.036.mrpack). Les 1 335 classes du
mod, les trois classes du module de test, les JAR imbriqués et les ressources
correspondent au build. Les collections et générations restent identiques ;
les packs beta.034/beta.035 sont inchangés.
Reçu : `build/corrections036-artifact.json` ; captures :
`build/corrections036-evidence/`. Logs : `build/corrections036-check-final.log`,
`build/corrections036-client-options-final.log`, `build/blueprint036-client.log`.
## Retour JEI intégré
Une collection pouvait enseigner ses recettes tout en laissant leurs sorties
masquées dans le catalogue d’objets de JEI. La recherche de l’arc, d’un bateau ou
d’un livre restait donc impossible tant que le joueur ne l’avait pas possédé.
Les sorties des recettes connues deviennent désormais consultables dans JEI.
Leur index se reconstruit sur changement du carnet ou du runtime, pas à chaque
image. Cela n’ajoute aucune possession au carnet Discovery, ne révèle pas les
matières premières inconnues et ne débloque aucune autre recette. L’aptitude
Catalogue reste nécessaire. Les définitions de collections côté serveur,
récompenses et format de carnet restent inchangés ; pas de changement du fork JEI.
+338
View File
@@ -0,0 +1,338 @@
# Sanctuary — matière, espaces et mémoire
**Cahier de conception issu du texte de l’auteur.** Il prolonge
[la vision](vision.md) et [la conception des lieux](structures-conception.md).
Les citations conservent les formulations fournies ; les points à préciser
sont identifiés comme tels. Ce document ne livre aucun générateur ni système
économique. **Backrooms, Indoors, shop et ballast ne sont pas implémentés.**
Le Blocodex natif de l’alpha.23 locale fournit un premier socle de données
pour des mécaniques futures, avec les limites décrites dans [son contrat](blocodex.md).
## Minecraft comme archéologie d’un autre Minecraft
Steve, Ari, Sunny, Kai, Zuri, Alex, Efe, Makena et Noor sont les neuf personnages
disparus de la partie. Ils ont découvert quelque chose de révolutionnaire et ont
continué parce que ça marchait. Jusqu’au moment où ça n’a plus marché.
> Ils n’ont pas ouvert quelque chose qu’ils n’auraient pas dû ouvrir. Ils ont
> construit quelque chose qu’ils ne savaient plus refermer.
L’histoire part de quelque chose qui a fonctionné : des besoins satisfaits, des
lieux devenus utilisables, des opérations répétées et des installations agrandies.
Une ruine doit permettre de retrouver cette ancienne solution. Ses circulations,
ses raccords, ses réparations et ses extensions racontent un fonctionnement avant
de raconter son interruption.
> Chaque ruine de sanctuary doit être une trace d’une ancienne solution pas
> seulement la trace d’un problème.
Le dialogue fourni par le créateur pour la bêta.001 précise leurs rôles.
Il emploie **Efe**, retenu ici à la place du « Mefe » de la première note.
Kai et Efe sont jumeaux ; Steve et ses amis sont des héros trans. Cette dimension
doit rester présente avec naturel, dans leurs relations et leurs actes.
| Personnage | Rôle ou lien retenu dans les notes |
| --- | --- |
| Makena | Cuisine |
| Sunny | Redstone |
| Kai et Efe | Construction |
| Zuri | « Exploitation », dont le sens et les limites restent à préciser |
| Ari | Villageois |
| Noor | Aventure |
| Alex | Lien avec Steve, à développer |
| Steve | Sacrifice et protection des joueurs |
Dans cette fiction, Steve a contenu Notch en s’enfermant avec lui. Le
**Galactium**, vide qui structure les mécaniques de Minecraft, est envisagé
comme le lieu de son isolement. Alpha, Backrooms et un double laissé derrière
lui participent aux pistes de dissimulation. Les compagnons disparus pourraient
subsister comme apparitions et interlocuteurs de marchés particuliers.
Des pages de journaux propres à chaque personnage permettraient de rapprocher
des récits incomplets : leur lecture collective ferait comprendre l’histoire.
Le retour de Steve, la transformation ou la défaite de Notch et les conséquences
pour les joueurs restent des questions ouvertes. Les discussions autour du
créatif ou d’un nouveau cycle ne fixent pas encore une fin de partie.
Ces éléments concernent les personnages de la fiction Sanctuary.
Les [quatre anciennes expéditions](expeditions-beta001.md) reprennent pour leurs
noms Noor, Makena, Kai et Efe, Ari. Cela n’attribue pas automatiquement à chacun
une machine, une gemme ou une quête. Les journaux à collecter, apparitions, boss
et pouvoirs décrits ici ne sont pas implémentés dans ce ticket.
## Les doubles de Steve — conception du 15 septembre 2026
Les [trois doubles décrits dans ANO-01](steve-anomalies.md) sont des anomalies
de Sanctuary. **Ils ne sont pas encore implémentés.** Leur origine détaillée
reste à découvrir au fil de l'histoire.
- **Herobrine** se cache dans les Backrooms. Il peut frapper, poser des blocs,
enfermer un joueur, avancer ou attendre derrière lui qu'il se retourne.
Au moment où le joueur le voit, il disparaît.
- **Le mineur fantôme** creuse des galeries dans l'Overworld **et** les Backrooms,
surtout dans les chunks les moins marqués par Demeure. De face comme de dos,
on voit l'arrière de sa tête.
- **Le Steve bugué** est extrêmement rare, en T-pose avec des UV mal placés.
Une fois trouvé, il reste ; on peut l'embarquer dans un bateau et le déplacer.
Cette présence durable constitue une preuve que Steve existe. Ses lieux
d'apparition restent à définir.
Herobrine laisse des effets puis disparaît ; le mineur laisse des galeries ;
le Steve bugué peut être conservé et montré aux autres. Ces comportements
n'attribuent pas d'avance à l'un des doubles l'identité du Steve originel.
ANO-01 distingue les décisions du créateur des modalités techniques proposées.
## Deux devenirs de la même technologie
Les Indoors et les Backrooms appartiennent à la même logique de fabrication des
espaces. Ce qui les distingue est leur relation à une intention et à une
référence : sait-on encore pourquoi cet espace existe et comment le retrouver ?
| Espace | Direction donnée par l’auteur | Conséquence pour la conception |
| --- | --- | --- |
| **Indoor** | « espace artificiel référencé et contrôlé » | Un intérieur est produit intentionnellement et reste associé à son accès et à son usage. Une porte peut mener à un espace dix fois plus grand que le bâtiment extérieur. |
| **Backroom** | « espace artificiel orphelin » | Un espace demeure alors que sa destination ou sa raison d’être a disparu. Sa forme peut conserver les restes d’une fonction sans retrouver l’ensemble auquel elle appartenait. |
L’auteur décrit chaque Indoor comme une petite dimension instanciée. Les
computers utilisent **probablement** cette technologie pour leurs expériences :
cette relation est une piste forte, sans avoir encore de protocole ni de machine
définitivement assignée.
Les Backrooms, dans cette cosmologie, ne sont pas une destination demandée au
même titre qu’un monde. Elles sont ce que la machine produit lorsqu’elle ne sait
pas où mettre quelque chose :
- un espace généré puis annulé ;
- une expérience interrompue ;
- deux règles demandant deux états incompatibles ;
- une room qui n’est plus référencée ;
- une coordonnée qu’aucun monde ne revendique.
> La machine ne détruit pas parfaitement les espaces. Elle les laisse derrière.
> Backrooms.
L’image du « garbage collector raté de Minecraft » exprime cette accumulation.
L’arborescence proposée par l’auteur la représente ainsi :
```text
WORLD
├── overworld
├── caverns
├── nether
├── end
├── sanctuary
└── /unreferenced/
└── backrooms
```
C’est une représentation narrative, pas une arborescence de fichiers ni la
liste des dimensions actuellement enregistrées par le mod. **L’espace orphelin
est une fiction à mettre en scène.** Une réalisation Minecraft devra conserver
des espaces correctement sauvegardés, identifiés et référencés côté serveur.
Le choix entre dimensions techniques et régions d’un espace partagé reste à
concevoir. Rien ici ne prévoit de perdre de vraies références de sauvegarde,
de supprimer des chunks ou de provoquer leur corruption pour obtenir cet effet.
## De la matière sans contexte
Le système reçoit des matériaux et tente de les réorganiser en espace valide :
```text
stone stone dirt copper oak_planks iron stone glass ...
```
Il possède de la matière, mais aucune destination n’a été demandée. Il tente
alors de l’encoder sous forme de chunks : un couloir, une salle, encore une
salle, un plafond, une porte donnant sur rien, une plomberie sans bâtiment,
un entrepôt infini.
> Les Backrooms sont la tentative du générateur de Minecraft de faire quelque
> chose avec de la matière sans contexte.
La **matière** donne une palette et une présence physique. Le **contexte** lui
donnait un usage, des dimensions, des voisins, un accès ou une destination.
Cette distinction permet de dessiner un lieu dont les parties sont intelligibles
alors que leur assemblage ne retrouve plus son intention : une plomberie garde
sa logique de raccord, mais le bâtiment qu’elle devait desservir n’est plus là.
Elle ne justifie pas de remplacer la conception par des blocs placés au hasard.
Il reste à définir ce que la machine conserve de ce contexte : seulement les
matériaux, des fragments de plans, des types de pièces, des relations entre
espaces ou des traces d’opérations. Aucun catalogue de rooms ni algorithme de
recomposition n’est arrêté. Les palettes limitées et le futur moteur de
traduction en structures peuvent servir cette direction ; le moteur n’est pas
créé par ce document.
## Le ballast de l’économie
La direction fournie relie directement cette cosmologie aux actions des joueurs.
Utiliser le shop, téléporter, ouvrir des Indoors, déplacer de la matière ou
expandre le monde produit du **ballast**. Plus ces opérations se multiplient,
plus les Backrooms se remplissent. Elles deviennent l’externalité du système
économique de Sanctuary : une activité visible laisse ailleurs des conséquences
que ses utilisateurs pourront découvrir beaucoup plus tard.
Le ballast relie donc production, échanges et géographie. Un objet déplacé ne
change pas seulement de propriétaire ou de position dans cette vision ; son
passage par ces technologies peut laisser une empreinte dans le monde.
La forme de cette empreinte reste à décider pour chaque opération.
| Opération envisagée | Articulation à définir avant de l’implémenter |
| --- | --- |
| Shop et échanges | Quel événement produit du ballast : vente, achat, consommation par un service, autre opération ? Quelle matière lui correspond et à quel moment l’échange est-il terminé ? |
| Téléportation | Que laisse le déplacement : trace de matière transportée, coût matériel ou autre résidu à choisir ? Les types de téléportation partagent-ils cette règle ? |
| Ouverture d’un Indoor | Que produit la création d’un espace contrôlé ? Que deviennent ensuite une fermeture, un transfert d’accès ou une expérience interrompue ? |
| Déplacement de matière | Quelles opérations participent à cette économie ? Un transport manuel, un convoyeur, un stockage ou une transformation ne sont pas encore déclarés équivalents. |
| Expansion | Comment la préparation et la création d’un continent se rattachent-elles aux matériaux engagés et aux espaces laissés derrière ? |
« Ballast » ne fixe pas encore une quantité, une unité, un coût ou une monnaie.
Il faut notamment décider s’il représente une matière effectivement retirée,
une trace de son traitement ou les deux selon les opérations. Aucun taux de
conversion ni conservation quantitative stricte n’est établi. Le document
n’autorise donc pas à prélever des objets dans les inventaires ou à les dupliquer
dans des coffres au nom de cette cosmologie.
## Lire l’histoire économique dans la géologie
La génération doit dépendre du comportement réel des joueurs. L’auteur donne
trois exemples qui fixent la direction sans constituer des recettes de génération :
| Histoire du serveur | Trace possible dans les Backrooms |
| --- | --- |
| Le serveur consomme énormément de pierre. | Les premières couches deviennent minérales. |
| Une phase d’industrialisation utilise beaucoup de cuivre. | Des zones techniques apparaissent. |
| Des tonnes de bois sont sacrifiées. | Un gigantesque Indoor abandonné peut émerger. |
Des mois après, les joueurs peuvent descendre et reconnaître dans les lieux
traversés une période de l’histoire du serveur. Le choix des matériaux doit
pouvoir conserver une différence entre une phase minérale, une phase industrielle
et d’autres formes de production, au lieu de tout réduire à la dernière palette
dominante.
Cette intention demande une temporalité explicite. Deux histoires se rencontrent :
celle des neuf personnages, antérieure à l’arrivée des joueurs, et celle que le
serveur écrit pendant la partie. La première fournit les vestiges d’un autre
Minecraft ; la seconde peut produire de nouveaux dépôts et de nouvelles traces.
La présence de strates initiales issues de l’ancienne partie, leur contenu et
leur articulation avec les apports actuels restent à décider.
Il faut encore choisir la durée des périodes observées, ce qui forme un dépôt,
le moment où un dépôt devient un lieu et la manière dont les périodes se
succèdent dans l’espace. Une couche n’est pas nécessairement un niveau vertical :
la géographie de cette chronologie reste à dessiner. La règle devra préserver
les espaces déjà visités et construits ; changer les statistiques actuelles ne
doit pas devenir une régénération implicite d’anciens chunks.
## Ce que le socle méta peut fournir
Le Blocodex appartient à Sanctuary et peut être consulté par plusieurs mécaniques.
Il distingue actuellement connaissance, observation, minage, possession passée,
jet, pose et stock porté. Les critères de connaissance et les familles de
matériaux peuvent aider un futur moteur à constituer une palette utilisable.
Ces informations personnelles ne suffisent cependant pas à décrire l’histoire économique :
- **miné** ne veut pas dire consommé par le shop ou engagé dans une machine ;
- **jeté** compte les jets volontaires vanilla, pas les objets brûlés ou perdus
dans le vide ;
- **déjà possédé** est une preuve persistante, pas un stock encore disponible ;
- **posé** ne fournit pas à lui seul le plan d’une construction ni sa date ;
- le stock personnel ne recense pas tous les coffres et réseaux du serveur.
Le socle méta distingue maintenant trois relevés :
| Relevé | Ce qu’il permet de connaître |
| --- | --- |
| Mémoire personnelle | Ce qu’un joueur a vu, miné, possédé, jeté ou posé ; des critères pour ses palettes. |
| Distribution actuelle | Les blocs du terrain chargé et les stocks accessibles, comptés séparément avec leur couverture. |
| Activité datée du serveur | Les quantités minées, posées, ramassées, jetées et fabriquées, agrégées par jour UTC depuis l’installation. |
Le troisième relevé conserve une trace des périodes d’activité après le
déplacement des stocks. Il peut montrer une période de minage intense de cuivre,
mais ne prouve pas que ce cuivre a été sacrifié à une machine. Il ne reconstruit
pas les mois précédant son installation et ne calcule aucun ballast. Les limites
de persistance et de couverture figurent dans le [contrat méta](blocodex.md).
Avant la génération historique, il faudra donc définir quels faits les systèmes
économiques enregistrent : action réalisée, matériau, quantité, moment ou période,
origine et destination utiles à cette action. Leur traitement devra distinguer
une opération terminée d’une tentative refusée et éviter de compter plusieurs
fois la même opération après reprise. La granularité, la conservation et le
format de ces transactions restent à concevoir dans un contrat propre. Les
agrégats journaliers déjà disponibles ne sont pas un journal transactionnel :
ils ne doivent autoriser ni prélèvement, ni récompense, ni restitution d’objet.
## Machines, références et anciennes solutions
Les computers pourraient expérimenter dans les Indoors parce qu’ils offrent
des espaces contrôlés. Il reste à préciser ce qu’ils demandent à un espace et
comment cette demande le rattache à une installation, une porte ou un usage.
La cause d’un orphelin dans la fiction devra être compréhensible sans demander
au joueur de connaître les fichiers de sauvegarde.
L’assembleur, le contrôleur, le terminal, le dépôt et l’ancre spatiale restent
des concepts en discussion dans [le cahier des machines](structures-conception.md#ordinateurs-et-installation-dexpansion).
Les questions communes sont maintenant plus précises : qui formule la demande
d’espace, qui fournit sa matière, qui conserve sa référence, qui présente son
état, et comment une fermeture ou une interruption est représentée ? Cette liste
ne répartit pas arbitrairement cinq fonctions entre cinq blocs.
Les ruines peuvent rendre ces questions visibles par leurs usages passés.
L’observatoire, la salle d’expansion rééquipable, l’atelier caché et la grande
traversée restent la sélection de conception actuelle. Pour chacun, il faut
retrouver ce qui y était observé, préparé, fabriqué ou relié, puis montrer les
extensions et le travail interrompu. Ce sont des questions de fiche de lieu,
pas la confirmation de machines présentes ni d’un accès aux Backrooms dans
chaque ruine. Le donjon majeur conserve son boss et son objet de quête à définir ;
il n’est pas automatiquement identifié au réacteur ou à l’origine de la panne.
La même ligne relie le passé et la partie actuelle :
> une infrastructure dont l’auteur a progressivement disparu derrière son
> fonctionnement.
## Accès, retour et récupération : règles encore ouvertes
**Décisions du 15 septembre 2026 :** le [ticket BR-01](backrooms-implementation.md)
fixe désormais le parcours des salles personnelles : sommeil complet depuis son
lit de l'Overworld, arrivée dans un Indoor de protection intégré aux Backrooms,
passage caché par Steve derrière un tableau et une porte ouverte. Les Indoors
interconnectés forment le dysfonctionnement où le ballast du monde est redirigé.
Chaque salle est liée à un joueur et peut être découverte et visitée à pied par
les autres. Tout lit utilisable dans les Backrooms ramène chaque joueur à son
propre lit d'origine dans l'Overworld. Les lieux se cartographient manuellement,
sans coordonnées affichées. **Implémentation prévue seulement après le suivi
du ballast.** Les règles d'accès ci-dessous sont le cadrage antérieur ; BR-01
les précise pour ce parcours. Récupération d'objets perdus, économie et Indoors
généraux conservent leurs contrats à établir.
La vision antérieure envisage le lit pour entrer dans les Backrooms, des sources
de lumière pour les explorer et des coffres recueillant des objets perdus dans
le vide ou brûlés. Elle prévoit aussi des accès d’Indoors liés à la mailbox de
leur propriétaire. Ces intentions doivent être raccordées à la cosmologie du
ballast ; elles ne définissent pas encore un parcours complet.
Avant un ticket jouable, il faut notamment arrêter :
1. Les moyens d’entrer, les destinations d’arrivée, le retour et le comportement
lors d’une mort ou d’une déconnexion.
2. La propriété et le partage des Indoors, la perte de leur objet d’accès, leur
fermeture et la distinction entre un accès absent et un espace fictionnellement
devenu orphelin.
3. Le rapport entre ballast, géologie et objets récupérables : quelle part fait
décor ou ressource, quelle part demeure un objet identifiable, et comment sa
récupération évite une restitution multiple.
4. Les opérations qui alimentent réellement les dépôts, leurs unités, leur
cadence et les limites de stockage et de génération.
5. Les indices permettant de lire une période économique ou une ancienne solution,
sans attribuer d’avance une cause à tous les lieux et aux neuf disparus.
Les pool rooms et salles étranges physiques sous l’île restent des structures
de l’Overworld. Leur ressemblance éventuelle avec les Backrooms ne les transforme
pas automatiquement en espaces orphelins. Les passages entre ces lieux, les
Indoors et les Backrooms devront être décidés explicitement.
La prochaine étape de conception peut prendre un seul cas complet : une
opération économique réelle, la trace qu’elle conserve, son dépôt, puis le lieu
que ce dépôt permettrait de générer et d’explorer. Ce cas permettrait de fixer un
premier contrat vérifiable sans prétendre que toute la cosmologie est déjà jouable.
+172
View File
@@ -0,0 +1,172 @@
# CYCLE-01 · PROG-03 · FACTION-01 · NGP-01 — beta.011
Contrat commun établi avant l'évolution des sauvegardes. Branche :
`codex/factions-new-game-plus`. Minecraft reste **26.3-pre-2**.
> Historique beta.011. Depuis [beta.038](graves-food-beta038.md), la fondation
> coûte 10 niveaux et crée une seule place, sans prestige ; les charges servent
> aux places supplémentaires. Les anciennes fondations restent inchangées.
## Règles de cette livraison
Un cycle est personnel. Le premier porte le numéro 1. Seul un habitant vivant
ayant les **six compétences au maximum** peut confirmer son New Game+.
Les aptitudes ne conditionnent pas ce passage. Une mort ordinaire ne termine
jamais un cycle et ne distribue aucune récompense de prestige.
Valeurs initiales de `config/sanctuary/cycle-factions.json` : chaque passage
accorde **1 prestige et 1 charge personnelle**. Créer une faction coûte
**1 charge**, donne **2 places**, fondateur compris. Chaque membre peut payer
**1 charge pour ajouter 1 place**. Le plafond de cette première version est
100 membres. Le prestige compte les cycles achevés ; ce n'est pas une monnaie.
Les charges inutilisées appartiennent à l'habitant. Les places financées
appartiennent à la faction et restent après un départ ou un New Game+.
Aucun remboursement lors d'une dissolution. Les règles monétaires sont
configurables au redémarrage, mais ne recalculent jamais les anciens événements.
Une personne appartient à une seule faction à la fois. Le propriétaire invite,
révoque les invitations, exclut, transmet la responsabilité et dissout.
Les invitations durent 7 jours réels ; elles ne réservent pas de place.
L'acceptation revalide place, invitation et absence d'autre faction. Les membres
peuvent partir ; le propriétaire doit transmettre ou dissoudre. Son absence
ne transfère pas automatiquement la propriété. Le changement de propriétaire
annule les invitations en cours. La couleur de faction est copiée de celle du fondateur à sa création ;
la couleur personnelle reste indépendante.
Les factions n'accordent encore ni claims ni protection de blocs.
## Matrice du New Game+
| Donnée | Traitement |
| --- | --- |
| Six compétences | Rang zéro : 3 cœurs, 3 nourritures, 3 bulles, gestes individuels, 9 cases |
| XP non dépensée | Remise à zéro par défaut ; option serveur `keepXp` |
| Identité, UUID, pseudo enregistré, bio, couleur | Conservés |
| Aptitudes et preuves de leurs achats | Conservées |
| Achats du cycle terminé | Archivés intégralement, coûts et dates compris |
| Objets, équipement, main secondaire, coffre de l'Ender | Conservés, sans déplacement |
| Rangées d'inventaire redevenues verrouillées | Occupées et visibles en récupération : retrait autorisé, nouveau dépôt interdit |
| Recettes, découvertes, Atlas personnel, statistiques et advancements | Conservés |
| Demeure, faction, rôle, invitations encore valides | Conservés |
| Prestige et charges personnelles | Conservés, puis récompense du cycle ajoutée une seule fois |
| Monde, constructions, coordonnées du joueur | Conservés ; aucune régénération ou téléportation |
| Santé, faim, air courants | Bornés aux nouvelles capacités, sans soin gratuit |
| Argent, coffre-fort, favoris, mémoire Web | Systèmes futurs ; ce ticket ne crée ni ne migre de données fictives |
Exemple : Alice termine son premier cycle, obtient prestige 1 / charge 1 et
fonde une faction de deux places. Bob la rejoint sans payer. Son propre premier
New Game+ lui donne une charge : il l'investit et la faction passe à trois
places. Au deuxième New Game+ d'Alice, son prestige devient 2 ; sa nouvelle
charge reste personnelle et son rôle de propriétaire demeure. Ses 54 cases
pleines ne sont ni effacées ni jetées : les 45 cases désormais verrouillées
restent retirables jusqu'à leur prochain déblocage.
## Contrat de migration et reprise
L'adoption des progressions beta.003–010 est additive : schémas 1–5 vers
**schéma 6**, avec `cycle: 0` (zéro cycle terminé). Aucun achat n'est perdu.
La révision réseau vaut `cycle * 64 + nombre d'achats actifs`, empêchant qu'un
ancien clic d'achat soit accepté après remise à zéro. Les identifiants existants
restent stables. La capacité de configuration `sanctuary:cycle_factions_v1`
exige la mise à jour des deux côtés avant de rejoindre.
Le nouveau fichier `data/sanctuary-cycle-factions.json` est un journal de monde
versionné (schéma 1), lié à la graine, contenant UUID de monde et événements
datés identifiables. Il reconstruit soldes, factions et fins de cycle. Chaque
mutation est validée sur une copie, écrite par remplacement atomique puis
publiée en mémoire. Une erreur ou un fichier modifié extérieurement bloque les
mutations ; aucune remise à zéro silencieuse.
Un New Game+ écrit **d'abord** sa fin de cycle et sa récompense dans ce journal,
puis applique la nouvelle progression au joueur. Au prochain chargement, si
le journal a un cycle d'avance, sa décision est rejouée sur le joueur (avec
sa politique XP enregistrée). Si les numéros concordent, rien n'est réinitialisé.
Un joueur en avance sur le journal, ou en retard de plus d’un cycle, est
refusé, ce qui détecte une restauration partielle incompatible. Le délai entre clics utilise une horloge monotone réelle (250 ms), indépendante
des ticks suspendus dans le menu pause solo. Lire une page ne consomme pas
le délai réservé à une mutation. Le solde d’XP est envoyé explicitement avec
la progression pour rester exact pendant cette pause. Les tentatives répétées d'un même cycle ne donnent
pas de charge supplémentaire. La sauvegarde vanilla conserve les objets et
la progression dans le même fichier joueur, comme en beta.010. Les acquisitions
d’objets entre deux sauvegardes restent soumises à l’autosauvegarde Minecraft :
ce journal ne remplace pas la sauvegarde générale du monde.
Faire une copie complète du monde arrêté avant adoption ; restaurer ensemble
le journal, les fichiers des joueurs et les autres données du monde. Le retour
aux anciens binaires après adoption n'est pas supporté. Ce contrat autorise
l'évolution du code de lecture/écriture ; aucun monde personnel n'est modifié
par les travaux de développement.
## Livraison et vérifications
Les contrôles du contrat pur passent : reprise beta.010, cinq/six compétences,
conservation des aptitudes, deux cycles successifs, double requête, dépenses,
propriétaire absent, invitations concurrentes, expiration exacte à sept jours,
transmission, dissolution, relecture du journal et refus d'une écriture après
corruption ou modification externe.
Les sept scénarios natifs propres à beta.011 passent (8/8 avec l'admission
Fabric), puis la suite progression/carte/Demeure/minage/construction/inventaire/
cycles passe à **45/45**. Ils couvrent notamment :
- Inventaire réellement rempli de 54 piles avant passage ; récupération dans
le menu natif, équipement et coffre de l'Ender conservés.
- Retour à 3/3/3 sans soin offert, XP zéro, nouvel achat possible et ancien
paquet d'achat refusé grâce à la révision de cycle.
- Identité, statistiques, observations Atlas et influence Demeure conservées.
- Décision de fin écrite puis relecture d'un ancien fichier joueur ; après une
seconde sauvegarde, l'XP et les achats du nouveau cycle ne sont plus remis
à zéro. L'option de conservation XP est prise dans la décision enregistrée.
- Mort ordinaire après New Game+ : même progression, prestige et faction.
- Création, invitations par pseudo/UUID, contribution d'un membre, changement
de responsable, conteneurs ouverts et mode spectateur refusés.
Le test de reprise a d'abord détecté un problème de fixture : chaque joueur
simulé possède un nouveau profil d'authentification, que Minecraft rétablit au
chargement. La fixture de reconnexion utilise maintenant le même UUID.
Le parcours client natif `Cycle011ClientChecks` est compilé : ouvert depuis
le menu pause, cycle verrouillé, aperçu/annulation, passage confirmé, création
et journal, à deux échelles GUI. **Il n'a pas été exécuté graphiquement : le
Mac est verrouillé. Aucun rendu beta.011 n'est déclaré vérifié.**
La commande de livraison est :
```sh
JAVA_HOME=/Users/koka/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home \
./gradlew check build assemblePack \
-PsanctuaryFocusedTests=progression,map,demeure,mining,building,inventory,cycle
```
Les logs restent ignorés dans `build/cycle011-delivery-final.log`,
`build/cycle011-smoke.log` et `build/cycle011-client-final-compile.log`.
La commande finale réussit en **3 min 55 s**, avec les 45 tests natifs et
les contrôles purs. Le reçu `build/cycle011-artifact.json` confirme l'intégrité
ZIP, l'identité des JAR compilés et embarqués, les versions beta.011, les
87 libellés FR/EN des cycles, les dépendances exactes et les assets conservés.
Les exports beta.003–010 gardent leurs empreintes précédentes.
Artefact local : `build/Sanctuary-beta.011.mrpack` — 2 479 614 octets.
SHA-256 : `dae0d1fbd8f410fd73b2d3053ef0f17539e24639c3d338ce84dbfca6e4f43ec0`.
L'export local ne publie pas le canal packwiz et ne modifie aucune instance Prism.
## Essai en jeu
Installer la même beta.011 côté client et serveur. Dans un monde de test,
`/experience add @s 1000 levels` permet à un opérateur de tester les achats
sans attendre. Acheter les quarante rangs des six compétences dans le Blocodex,
puis ouvrir **Progression → Cycle**. Acheter les aptitudes reste facultatif.
Remplir aussi les dernières rangées avant de confirmer pour vérifier leur
récupération. Un second joueur peut rejoindre la faction via son invitation
sans avoir lui-même fait de New Game+.
Les invitations et les actions de faction se trouvent dans **Monde → Factions**,
l'historique dans **Monde → Journal des cycles et factions**. Les montants
s'éditent dans `config/sanctuary/cycle-factions.json`, serveur arrêté : `reward`,
`creationCost`, `initialCapacity`, `expansionCost`, `maxMembers`, `keepXp`.
Le prestige reste toujours le nombre de cycles terminés. Le journal est borné
à 100 000 événements / 16 Mio ; il refuse d'effacer les anciennes archives
pour faire de la place. Une future rotation nécessitera son propre contrat.
Le journal fournit une ontologie locale (`sanctuary:cycle_completed`, `sanctuary:faction_*`) ; aucune
connexion au site ni distribution de droits opérateur n'est incluse.
+119
View File
@@ -0,0 +1,119 @@
# beta.057 — météo quotidienne Sanctuary
Branche `codex/daily-weather-beta057`. Contrat avant implémentation : une météo
commune par date civile du monde, en réutilisant le fuseau du système Real Time.
La météo est indépendante du mode du soleil : `vanilla` rend le cycle à
Minecraft ; `realtime` conserve le profil choisi pour la journée. Les profils
pluie et orage sont continus ; le profil averses alterne pluie et pauses sèches.
Le tirage local est déterministe selon la graine du monde et la date, sans
réseau ni géolocalisation. Les proportions de départ configurables sont :
65 % beau temps, 15 % ciel gris, 5 % brouillard, 10 % averses, 3 % pluie
continue et 2 % orage continu. Ce sont des probabilités par journée.
Les proportions se règlent dans `config/sanctuary/weather.json` ; la prévision
déjà enregistrée pour aujourd'hui ne change pas lors d'un rechargement.
Les transitions d'intensité, sons, neige par biome et éclairs restent natifs.
Le profil averses place une pluie de 35 à 75 minutes dans chaque tranche de
3 heures réelles, avec des pauses sèches. La position de chaque passage est
calculée depuis la graine/date/tranche ; une reconnexion ne la déplace pas.
Les tranches comptent le temps réellement écoulé depuis le minuit local,
y compris lors des journées de 23 ou 25 heures au changement d'heure.
Le ciel gris et les averses atténuent les couleurs du ciel et la lumière solaire
sans transformer artificiellement l'état sec en pluie. Le brouillard utilise
les distances natives (fin atmosphérique 80 blocs, ciel 120, nuages 96) et se
compose avec le réglage Vanilla Light. La transition des ambiances prend environ
10 secondes de jeu. Eau, lave, cécité et obscurité gardent leurs attributs natifs.
La présentation se branche sur les couches d'environnement de Minecraft :
pas de nouvelle passe shader, texture de bruit, reconstruction des chunks ni
rechargement des shaders. Les moteurs de shaders externes restent à vérifier.
Le serveur transmet le profil aux clients à la connexion et lors de ses
changements, y compris le retour à Vanilla. La pluie et l'orage utilisent leurs
paquets natifs. Le calcul météo se fait une fois par seconde ; l'écriture du
journal n'a lieu qu'au changement de date ou de mode.
## Contrat de sauvegarde et de retour
Un fichier additif `data/sanctuary-weather.json`, schéma 1, conserve le mode,
la date civile et sa prévision. Il est écrit atomiquement avant toute action
météorologique. Aucun ancien schéma ni paramètre de génération n'est modifié.
Un document invalide est conservé ; le chargement refuse la prise de contrôle.
Le mode quotidien est activé par défaut seulement dans les mondes Sanctuary
et Sanctuary Test. Un monde vanilla ordinaire garde son comportement natif.
Les jours manqués ne sont pas simulés. La reconnexion et le redémarrage gardent
le profil du jour ; un nouveau profil est choisi à minuit dans le fuseau du
serveur intégré ou dédié, et non à chaque journée Minecraft.
Le cycle aléatoire et l'effacement de la pluie par le sommeil sont suspendus
uniquement quand cette météo contrôle le monde. Les règles de jeu sauvegardées
ne sont pas modifiées. Le retour à Vanilla reprend les durées natives depuis
l'état météo courant, sans conserver une durée de 24 heures en ticks.
Sans le mod, Minecraft peut reprendre ses durées usuelles. Les autres systèmes
de simulation et les dimensions sans météo restent natifs.
## Commandes et extension future
Configuration serveur `config/sanctuary/weather.json` :
```json
{
"enabled": true,
"overcastPercent": 15,
"fogPercent": 5,
"showersPercent": 10,
"rainPercent": 3,
"thunderPercent": 2
}
```
Le beau temps représente le reste jusqu'à 100 %. Une somme supérieure à
100 %, un entier négatif ou fractionnaire et un document invalide sont refusés.
Les nouveaux poids s'appliquent au prochain jour ; `enabled: false` rend
immédiatement la météo au moteur après rechargement. Le retour explicite
à Vanilla dans un monde est conservé même après réactivation globale.
- `/sanctuary weather` : consulter le mode, la prévision et sa date/fuseau.
- `/sanctuary weather realtime` : activer le mode quotidien (opérateur).
- `/sanctuary weather vanilla` : reprendre le cycle Minecraft (opérateur).
- `/sanctuary weather reload` : recharger les proportions/configuration (opérateur).
En Real Time, `/weather` indique comment reprendre le mode Vanilla pour
changer la météo librement. Les mutations passent par l'autorité serveur.
La Weather TNT qui force ou arrête la pluie appartient au prochain ticket ;
aucun nouveau bloc, explosif ni recette n'est ajouté ici.
## Vérifications
Le contrôle `weather057Smoke`, intégré à `check`, passe 222 058 assertions :
50 000 tirages quotidiens, proportions, bornes, persistance, rechargement,
refus des données invalides, retours de mode et absence de rattrapage hors ligne.
Il vérifie aussi les tranches d'averses, leurs pauses sèches, les journées de
23/25 heures et le 29 février. Les proportions observées sont respectivement
32 451 / 7 558 / 2 478 / 4 914 / 1 522 / 1 077 jours pour beau temps / gris /
brouillard / averses / pluie / orage.
Le client intégré `Weather057ClientChecks` vérifie les six profils natifs,
les paquets de pluie/orage et du nouveau profil, le brouillard réellement
utilisé par le rendu, l'absence de pluie en gris/brouillard, l'alternance humide
et sèche pendant une même journée d'averses, et les passages de date.
Les durées aléatoires sont suspendues sans modifier la règle de jeu ; le reset
météo utilisé par le sommeil est bloqué en Real Time et disponible en Vanilla.
Les commandes, leurs permissions, l'indépendance du soleil, les configurations
invalides, les retours Vanilla et les libellés FR/EN sont vérifiés.
`./gradlew check build assemblePack assembleTestPack -x :sanctuary:runGameTest`
réussit sur Minecraft 26.3-pre-2 avec Java 25. Les essais natifs utilisent
`-PsanctuaryClientTests=true -PsanctuaryWeather057ClientTests=true
-PsanctuaryQuickTests=true`. Aucun serveur dédié ni EULA supplémentaire accepté.
Les frontières horaires sont simulées avec une horloge injectée dans le monde
de test ; plusieurs journées d'hébergement réel ne sont pas revendiquées.
Aucun monde personnel, canal public ou instance de jeu n'est modifié.
Logs : `build/weather057-check.log`, `build/weather057-client.log`.
Captures : `build/weather057-evidence/`. La confirmation d'intégrité des exports
est consignée dans `build/weather057-artifact.json`.
[Pack normal](../build/Sanctuary-beta.057.mrpack) ·
[Monde plat rapide](../build/Sanctuary-Test-beta.057.mrpack).
+41
View File
@@ -0,0 +1,41 @@
# Ticket beta.006 — Atlas exploré et premières empreintes Demeure
Résultat livré localement : déplacer la carte par glisser-déposer répété, découvrir un paysage progressivement, afficher une grille de chunks et consulter les empreintes d'habitation. L'utilisateur a choisi les empreintes et la grille ; réservation, factions et protection des chunks restent au prochain ticket.
## Source et périmètre
La référence signalée par l'inventaire 26.2 se trouve dans `../Structures/demeure` (sources ciblant Minecraft 26.1.2, auteur KOKA99CAB, GPL-3.0-or-later). Aucun changement dans ces dépôts historiques. Demeure reste un mod autonome sous `mods/demeure`, embarqué dans Sanctuary et adapté aux API exactes de 26.3-pre-2. Il fournit les empreintes, Sanctuary décide de l'accès à leur représentation dans l'Atlas.
Ce premier port reprend les influences par chunk, la nature initiale, les états neutre/sauvage/habité/partagé/contesté/dominé/abandonné et les traces des déplacements, de l'activité, des blocs réellement posés ou cassés, des récoltes, du sommeil et des morts. La présence animale, villageoise et hostile est agrégée autour des habitants actifs. Nourrissage, naissance, cuisson, propriété animale individuelle et commandes historiques attendent leurs hooks de réussite et leur ticket. Aucun clic infructueux n'est crédité, aucune XP n'est distribuée par Demeure.
## Contrat de migration et de confidentialité
- Aucun changement de génération, de graine, de chunks, d'expansion, de progression ou d'identité d'habitant.
- L'Atlas passe du schéma JSON 1 au schéma 2 lors de sa prochaine sauvegarde. Les 256 pixels de chaque ancien chunk restent connus. Dans le même tableau de couleurs, 0 signifie désormais inconnu, 1 représente le vide effectivement observé, 4..255 conservent les couleurs Minecraft. Les anciens pixels 0..3 sont convertis en 1. Cette conversion est idempotente et ne peut révéler aucun nouveau chunk. Les lecteurs beta.005 refusent le schéma 2 : retour arrière exige de restaurer une sauvegarde préalable.
- Les nouveaux relevés découvrent les pixels dans un rayon de 32 blocs avec une bordure tramée, en lisant uniquement les chunks déjà chargés. L'union des observations est conservée dès l'arrivée, même avant l'aptitude Grande carte. Une absence de couleur n'efface jamais une ancienne découverte. Il s'agit d'une révélation cartographique de surface, pas d'un calcul de visibilité optique.
- Les identifiants et le format des paquets `sanctuary:atlas_request` / `sanctuary:atlas_response` restent stables. Les empreintes utilisent un nouveau paquet séparé et borné. Le client et le serveur doivent utiliser le même pack pour la nouvelle interprétation du pixel inconnu.
- Demeure crée un fichier distinct `data/demeure/footprints-v1.json`, indexé par dimension et chunk, lié à la graine. Aucun ancien fichier Demeure n'est importé ni modifié. Les premiers scores commencent à zéro lors du portage.
- Les jours sont des jours UTC réels (horloge serveur), indépendants de `/time`. Une interruption ne simule pas d'activité. La décroissance après 14 jours d'absence est appliquée avant toute nouvelle contribution ; revenir ne ressuscite pas les anciens scores. Un recul d'horloge ne crée ni nouvelle journée ni nouveau budget.
- Les contributions par sujet et chunk sont plafonnées à 8 par jour réel, conservées avec leur budget et date. Maximum 16 384 chunks, 32 influences par chunk, fichier limité à 64 Mio. Aucun effacement silencieux en cas de limite ou de corruption ; le service refuse d'écraser un fichier corrompu ou modifié extérieurement.
- Une grille géométrique peut couvrir le brouillard ; aucun état Demeure n'est transmis pour un chunk inconnu. Le survol d'un pixel inconnu ne révèle pas l'empreinte. Une empreinte ne constitue ni propriété ni protection et ne dit pas qu'un chunk est juridiquement réservable.
- La vue opérateur demeure explicite et vérifiée sur le serveur ; elle n'ajoute aucune découverte personnelle. Changement de rôle, de dimension ou de permission efface les données de la vue précédente.
## Validation effectuée
- `./gradlew check build assemblePack -PsanctuaryFocusedTests=progression,map,demeure` : réussi en 4 minutes, **8/8 tests natifs serveur**. Le test Demeure vérifie les placements réussis/refusés, la destruction native, l'aptitude carte, les chunks inconnus, les permissions opérateur et les spectateurs. Un premier lancement avait échoué dans le montage du faux joueur spectateur (connexion absente) ; ce montage a été corrigé puis les huit tests ont été relancés avec succès.
- `./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryProgressionClientTests=true` : réussi en 1 min 37 s. Les glissements passent par `MouseHandler.onButton/onMove`, avec les constantes SDL de Minecraft, et non par des appels directs au gestionnaire de la carte. Plusieurs gestes, relâchement hors carte, zoom natif, nouvelle requête, rafraîchissement, deux tailles de fenêtre, activation de la grille, vrais paquets Demeure, inspection opérateur et révocation sont vérifiés.
- Les tests de contrats vérifient les anciens pixels de vide conservés, la migration idempotente, l'union de visites, les pixels inconnus, les fichiers corrompus, la capacité et l'isolation. Demeure vérifie aussi le budget après rechargement, le recul d'horloge, la décroissance avant retour, les états du territoire et les dimensions distinctes.
- Les fichiers produits par le client natif contiennent **16 chunks / 2 913 pixels connus** dans l'Atlas schéma 2, et un chunk Demeure schéma 1. La sauvegarde est constatée dans le monde de développement ; aucun monde personnel n'a été ouvert.
- Captures inspectées dans `build/beta006-preview/`, notamment les interfaces à 640 et 1280 pixels, le brouillard et la carte verrouillée. FR/EN alignés ; aucun changement aux icônes ni aux noms de couleurs approuvés.
- La sélection native cible ce ticket et la progression. Les deux assertions worldgen générales déjà connues en beta.003/005 ne sont pas revendiquées corrigées. Réservation/protection des claims, factions et port complet des interactions Demeure restent hors de cette livraison.
## Artefact d'essai
[Sanctuary-beta.006.mrpack](../build/Sanctuary-beta.006.mrpack), **2 298 722 octets**.
Le mod Demeure autonome est inclus dans le JAR Sanctuary via la déclaration Fabric `jars` ; l'assemblage contrôle son identité et sa licence. Aucun second fichier n'est à installer manuellement.
- SHA-256 MRpack : `ef8499de78461e7eab7bafe3d1ccf38a2d06ec3a0e0884e8e10ffe30fc63071f`.
- SHA-256 Sanctuary : `40f674ca491c1f7e12c0d5dd8994e01e7f998a079fa1853960cfc609c5d0fec6`.
- SHA-256 Demeure : `8993d777ca47f0a7a7a9425532606f772dfdb5db07d400c2adb4207346acd674`.
ZIP, versions internes, dépendances exactes, JAR imbriqué identique au build, notices, ressources et index packwiz vérifiés. Les MRpacks beta.003, .004 et .005 gardent leurs empreintes. Reçu `build/demeure006-artifact.json` ; journaux `build/beta006-delivery-final.log` et `build/beta006-client.log`. Export local uniquement : aucune publication de canal ni synchronisation Prism.
+72
View File
@@ -0,0 +1,72 @@
# beta.026 — affichage Demeure sans recalcul par image
Ticket sur `codex/demeure-map-performance-beta026`.
## Diagnostic et contrat
La couche Demeure parcourait ses chunks puis les 256 blocs de chaque chunk
visible à chaque image. Chaque bloc connu produisait un rectangle GUI distinct,
y compris quand rien ne changeait. Le nombre de dessins dépendait donc de la
surface explorée visible ; le bouton Demeure désactivait ce travail.
La correction prépare une texture transparente de 1 024 × 1 024 pixels, alignée
sur celle du terrain. Son rendu demande un seul dessin. Seuls les chunks dont
les pixels connus ou la couleur Demeure changent sont repeints. Déplacer ou
zoomer transforme l’image existante ; changer la fenêtre de chunks la reprojette.
Les lots réseau identiques ne doivent provoquer ni effacement, ni nouvel envoi
de texture au GPU. Une empreinte absente du lot suivant doit disparaître.
Demeure reste activé par défaut. Ses règles serveur, contributions, scores,
dates et sauvegardes restent inchangés. Aucun format de sauvegarde ou protocole
ne change, aucun chunk n’est généré ou modifié par ce ticket. Les zones inconnues
et le vide restent transparents, le changement de vue/dimension et la révocation
des droits effacent également la couche Demeure. Les textures sont libérées à
la fermeture de l’écran. Mémoire supplémentaire bornée : 4 Mio de pixels côté
CPU et une texture RGBA8 de 4 Mio côté GPU.
## Vérifications et limites
Mesure native avant/après avec une même surface de 256 chunks de laboratoire,
en comptant les rectangles, les transferts de textures et le temps CPU de
soumission de la couche. Cas fixes, déplacement maintenu, couche masquée/réactivée,
lots identiques et modifiés, brouillard, permissions, redimensionnement et fermeture.
Les mesures de soumission ne sont pas une promesse de FPS sur chaque machine.
`./gradlew check build assemblePack -PsanctuaryClientTests=true
-PsanctuaryMapPerfClientTests=true -PsanctuaryFocusedTests=progression,map,demeure`
réussit : **9 tests natifs serveur**, contrôles de contrats, compilation du
parcours graphique et assemblage du pack. Journal : `build/atlas026-check.log`.
Le parcours graphique préparé s’exécute avec :
```sh
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
-PsanctuaryMapPerfClientTests=true
```
Il **reste à exécuter sur une session macOS déverrouillée**. Les essais de
référence ont été interrompus au démarrage graphique, avant les mesures ;
`IOConsoleLocked` était vrai. Aucun gain chiffré de FPS, temps CPU mesuré ou
résultat graphique n’est revendiqué pour cette livraison. Le code Atlas de
référence a été contrôlé identique au JAR beta.025 et conservé dans
`build/atlas026-before.class` pour une comparaison ultérieure ; les autres
contrôles serveur ne dépendent pas de l’affichage.
La couche réutilise les mêmes couleurs et alpha par pixel : 0 pour l’inconnu
et le vide, `0xA0` au bord des chunks, `0x25` à l’intérieur. Un changement de
métadonnées sans changement de couleur met à jour le survol sans repeindre.
Les paquets terrain et Demeure sont appariés dans l’ordre déjà garanti par
`AtlasService.reply` ; le résumé Demeure, même vide, clôt son lot terrain.
Le lot en attente est borné à 16 chunks et annulé au changement de requête.
## Artefact local
[Sanctuary-beta.026.mrpack](../build/Sanctuary-beta.026.mrpack), **4 766 675 octets**.
SHA-256 : `f564aabbee977d48e8f3d0d2ea4178b23b18f33f42110ab0dba733f2ae008fbb`.
Reçu : `build/atlas026-artifact.json`.
ZIP, version, 1 253 classes Sanctuary, absence de tests embarqués et identité
des JAR Demeure/JEI vérifiés. Seule la classe de l’écran Atlas diffère dans le
code compilé Sanctuary par rapport à beta.025 ; les classes du module Demeure
sont identiques. L’export beta.025 conserve son empreinte. Aucun canal, instance
Prism ou monde personnel n’a été modifié.
+42
View File
@@ -0,0 +1,42 @@
# beta.028 — plongeon jusqu’à collision
## Contrat
Un saut en sprint suivi de **S’allonger** (W par défaut, touche configurable)
déclenche toujours une seule impulsion vers l’avant. La posture de plongeon
reste active jusqu’au contact du sol, d’un mur, d’un plafond ou à l’entrée dans
l’eau ou la lave. La limite automatique de 30 ticks (1,5 seconde) est retirée.
Relâcher ou réappuyer sur la touche, utiliser Maj ou tourner la caméra ne fait
pas sortir de la posture en plein vol. Le serveur décide de sa fin.
La gravité, les dégâts de chute et les règles de nage restent natifs. Le
plongeon ne permet pas une nouvelle impulsion après avoir touché un mur :
il faut à nouveau partir d’un saut en sprint depuis le sol. Mort, vol, monture
et autres états incompatibles interrompent toujours la posture. Les règles
de collision natives empêchent de se relever à travers un plafond trop bas.
Le même attachement temporaire `sanctuary:lying` et la même valeur 3 sont
réutilisés. Aucun nouveau format de sauvegarde, aucune migration et aucun
changement des mondes. Client et serveur beta.028 ensemble.
## Vérifications
**32 tests serveur natifs réussis**, dont 5 nouveaux tests : maintien pendant
240 ticks avec posture native et demandes répétées,
collisions réelles via le moteur (mur, plafond, sol), redépart après un nouveau
saut, arrêt dans l’eau et conservation de la nage verrouillée, mort et vol.
Régressions familiers, repos et piles de joueurs incluses.
`./gradlew check build assemblePack -PsanctuaryFocusedTests=carry,familiar,movement`
réussit en 3 min 47 s. La vérification visuelle reste à confirmer : session Mac
verrouillée pendant cette livraison.
Export local vérifié : [Sanctuary-beta.028.mrpack](../build/Sanctuary-beta.028.mrpack).
Versions, intégrité ZIP, 1 253 classes compilées et JAR imbriqués vérifiés.
Seuls DiveService, LyingService et LyingClient (et leurs classes internes)
changent dans le code du jeu ; les aides FR/EN sont actualisées. Le portage,
la carte et les autres systèmes conservent leur code beta.027.
L’export beta.027 reste intact. Aucun déploiement effectué.
SHA-256 MRpack : `531386776236e08cbeef8a26b77ccaf04533cce6bb47f695777190d0e94e5793`.
Reçu : `build/dive028-artifact.json` ; vérificateur : `build/verify-dive028.py`.
+107
View File
@@ -0,0 +1,107 @@
# LIGHT-01 — éclairage dynamique, beta.030
## Contrat
Les objets lumineux tenus en main principale ou secondaire, les cosmétiques de
tête et les objets jetés éclairent le décor et les entités. Les autres joueurs
sont des sources au même titre que soi. Un gâteau coiffé d'une bougie n'éclaire
que si sa bougie est allumée ; les états des blocs font autorité.
L'effet est visuel côté client, sans bloc artificiel, modification de sauvegarde
ou changement des règles de spawn. La lumière utilise la teinte native de la
lightmap ; ce ticket ne crée pas de lumière colorée ni d'ombres dynamiques.
Les objets jetés dans une cellule de 4 × 4 × 4 blocs partagent une source :
l'objet le plus lumineux la représente, à une position arrondie au demi-bloc.
Les quantités des piles ne multiplient pas la lumière. Les sources immobiles
ne provoquent pas de reconstructions répétées du terrain. Les calculs utilisent
un instantané immuable indexé par section et une file de sections dédupliquée,
traitée avec un budget par tick, sans chargement de chunks.
## Utilisation et réglages
L'effet est activé de base, sans aptitude. Il suit aussi les objets lumineux
tenus par les créatures, leurs équipements de tête et les entités en feu.
Les inventaires fermés, coffres et rangées non sélectionnées ne sont pas des
sources. Les spectateurs n'éclairent pas les autres joueurs.
`config/sanctuary-dynamic-lights.json` est créé localement au premier lancement.
Le redémarrage du client applique les changements :
| Réglage | Valeur initiale | Rôle |
| --- | ---: | --- |
| `enabled` | `true` | Active l'éclairage visuel |
| `updateIntervalTicks` | 4 | Collecte des objets cinq fois par seconde à 20 TPS client |
| `dropClusterSize` | 4 | Taille des cellules de regroupement des objets jetés |
| `maxSources` | 32 | Sources les plus proches ; celle du joueur local est prioritaire |
| `range` | 48 | Distance maximale de collecte autour de la caméra, en blocs |
| `sectionUpdatesPerTick` | 12 | Maximum de sections marquées à mettre à jour par tick |
| `itemOverrides` | `{}` | Intensité 0–15 par identifiant d'objet, par exemple `"mod:lampe": 12` |
Les réglages numériques sont bornés pour éviter un coût accidentel démesuré.
Contrôles → Sanctuary propose également « Activer / désactiver les lumières
dynamiques », sans touche attribuée par défaut. Ce raccourci agit pour la session.
Une désactivation éteint aussi les sections précédemment éclairées.
Les objets-blocs utilisent leur émission native et leur composant `BLOCK_STATE`.
Les bougies colorées et les gâteaux composites utilisent exactement l'état
synchronisé du cosmétique. Hors blocs, le seau de lave émet 15, bâton/poudre de
Blaze 10, poudre lumineuse/baies lumineuses 8, poche d'encre luisante/cadre
luminescent 6. Une surcharge d'objet remplace explicitement ce comportement,
y compris son état allumé/éteint ; 0 permet d'exclure un objet.
## Portée technique
Le rendu natif de Minecraft **26.3-pre-2** reçoit des coordonnées de lightmap
enrichies : terrain et occlusion ambiante, eau, particules, blocs-entités et
entités. La lumière du ciel et les surfaces déjà lumineuses sont préservées.
Les tâches de reconstruction reçoivent chacune un instantané immuable.
Les changements de monde et déconnexions abandonnent les sources précédentes.
La décroissance est radiale, avec la lightmap habituelle de Minecraft : elle
ne calcule pas d'occultation par les murs ni de couleur propre à chaque lampe.
Les sources distantes au-delà du rayon ou du budget sont ignorées ; beaucoup
de sources mobiles peuvent rendre leur suivi plus progressif. Un mouvement
de caméra seul ne change pas la position d'une lampe portée.
## Vérifications
- Contrôles CPU : 10 000 objets dans une même cellule donnent une seule source,
plafonnement des sources, priorité locale, coordonnées négatives, sections
dédupliquées, budget strict, aucune invalidation après 500 mises à jour
immobiles, déplacement, suppression et conservation des instantanés des workers.
- 100 000 requêtes d'éclairage comparées à une référence brute sans index :
mêmes résultats. Sur ce Mac M1, un million de requêtes sur l'index de stress
prennent 20–26 ms sur les exécutions de vérification ; c'est une mesure CPU
isolée, pas un résultat FPS.
- Client natif réussi (`build/dynamic030-client-final.log`) : pièce fermée
sombre, torche principale, lanterne des âmes secondaire, bloc lumineux sur
la tête, gâteau allumé puis éteint, autre joueur avec lanterne, déplacement
du porteur et suppression des objets. Les coordonnées de lumière du moteur
de monde restent à zéro alors que le maillage et les entités s'éclairent.
- 200 torches jetées fusionnent naturellement en quatre piles, toutes servies
par une seule source. Le courant déplace les objets ; l'éclairage les suit.
Après leur retrait, l'image redevient sombre. Neuf captures sont conservées
dans `build/dynamic030-evidence/`.
- `./gradlew check build assemblePack -PsanctuaryFocusedTests=lights,cosmetics,familiarhit -PsanctuaryExpansionReload=true`
réussit : **21 tests serveur**, dont le registre complet des objets-blocs,
les états de bougies, le gâteau manipulé par un habitant et sa synchronisation.
Les régressions des cosmétiques et réactions des familiers passent également.
Log : `build/dynamic030-check.log`.
- Le client natif est lancé avec `./gradlew :sanctuary:runClientGameTest
-PsanctuaryClientTests=true -PsanctuaryLightsClientTests=true
-PsanctuaryFocusedTests=lights`. Le dernier parcours complet réussit.
## Livraison locale
[Sanctuary-beta.030.mrpack](../build/Sanctuary-beta.030.mrpack), 4 792 058 octets.
Version interne `beta.030`. Les 1 269 classes compilées correspondent au JAR
embarqué ; aucune classe de test n'est distribuée. Le JAR JEI et les classes
Demeure sont identiques à beta.029. Les classes existantes de Sanctuary restent
identiques, hors l'initialiseur qui enregistre l'éclairage. L'archive beta.029
est préservée.
SHA-256 : `7942c661cbb01b5d0e4b6a59d9839e450223ab57aa3d45297c6816e884d70e80`.
Reçu : `build/dynamic030-artifact.json`. Export local vérifié, sans publication
du canal ni installation dans Prism.
+19
View File
@@ -7,6 +7,25 @@ les commandes d’expansion dans le choix public **Sanctuary**. Le
alpha.12/12.1 et leur [laboratoire](alpha12-laboratory.md) restent historiques.
Le déblocage par recherches, XP et contributions n’est pas encore implémenté.
## beta.001 — anciennes expéditions proches
Les nouveaux mondes bêta commencent avec Sanctuary et quatre régions ouvertes
de 512 blocs : nord glacial/Peaks, est tropical/Volcan, sud aride/Canyon et
ouest humide/Océan. Leur [contrat de création](expeditions-beta001.md) est
distinct de celui des anciennes sauvegardes.
Dans ces mondes, les commandes cherchent au plus près sur l’axe choisi, par
pas de 16 blocs, en conservant les marges écrites et les contrôles d’occupation.
Le dernier argument `distance` reste une distance minimale **entre centres** ;
`0` demande le placement automatique le plus proche admissible. Les commandes
dans les mondes alpha conservent le placement précédent et son secteur aléatoire.
Les quatre régions initiales se génèrent à l’exploration, comme Sanctuary ;
les futures régions créées par commande gardent la préparation progressive.
Avec les permissions opérateur : `/sanctuary expansion list` affiche les noms
et identifiants ; `/sanctuary expansion visit noor_vigil` visite la région du
nord. Les autres identifiants sont `makena_embers`, `kai_efe_rift` et `ari_waters`.
## Taille initiale et extensions — alpha.13
Le bouton natif **Personnaliser** propose **Petit** (512 blocs de diamètre
+155
View File
@@ -0,0 +1,155 @@
# beta.001 — les quatre anciennes expéditions
Ticket local **EXP-01**, branche `codex/ancient-expeditions-beta001`. Ce contrat
décrit la création des quatre anciennes expéditions. La préparation de versionnement BETA-01 est conservée
dans cette première bêta, encore non publiée.
## Les régions
Répartition confirmée par le créateur :
| Direction | Nom | Climat | Relief |
| --- | --- | --- | --- |
| Nord | La Veille de Noor / Noor’s Vigil | glacial | peaks |
| Est | Les Braises de Makena / Makena’s Embers | tropical | volcano |
| Sud | La Faille de Kai et Efe / Kai and Efe’s Rift | arid | canyon |
| Ouest | Les Eaux d’Ari / Ari’s Waters | humid | ocean |
Ces régions sont les traces d’expéditions des anciens personnages, ouvertes
avant l’arrivée des joueurs actuels. Le relief de Sanctuary reste celui de
l’alpha.30.7 ; les quatre régions utilisent les générateurs d’expansion existants.
Leur diamètre nominal est **512 blocs chacune**, confirmé par le créateur.
## Contrat de création et de sauvegarde
- Réserver les quatre régions ensemble lors de la création d’un **nouveau
monde Sanctuary bêta**, avant de publier les régions au générateur.
- Enregistrer leur identité, graine dérivée, direction, climat, relief, taille
et position. Les îles sont ouvertes dès le départ ; leurs chunks se génèrent
à l’exploration, comme ceux de l’île initiale. Elles ne demandent pas de coût
ni de déblocage par les joueurs.
- Distinguer ce contrat dans les paramètres du nouveau monde. L’absence du
paramètre `ancient_expeditions` conserve le contrat alpha.24/30.7 ; aucune ancienne sauvegarde ne
reçoit automatiquement les quatre îles.
- Utiliser un journal bêta distinct, versionné, vérifié et atomique. Aucun
journal existant n’est converti : `data/sanctuary-world-beta001/expansions.json`,
schéma `3`, disposition `expedition_layout=1`. En cas de journal incomplet ou invalide,
arrêter avec une erreur au lieu de recréer les régions.
- Conserver les identifiants des codecs et du terrain existants. Le nouveau
paramètre doit survivre à Personnaliser, à l’écriture du monde et au rechargement.
- Une sauvegarde bêta n’est pas rétrocompatible avec les binaires alpha :
ne pas la rouvrir avec eux. Les mondes alpha restent sur leur ancien contrat.
## Placement proche
Chercher d’abord la position admissible la plus proche sur l’axe cardinal,
sans l’écart supplémentaire ni le décalage aléatoire des anciennes commandes.
Conserver les emprises écrites, la marge de décoration et la séparation des
chunks ; les bateaux et autres réservations aériennes restent prioritaires.
Avancer par pas d’un chunk si une réservation interdit la première position.
La distance entre centres comprend les rayons des deux îles : ce n’est pas
la longueur du vide à traverser entre leurs rivages.
Le même placement proche est disponible pour les nouvelles demandes d’expansion
dans les mondes bêta. Les contrôles d’occupation et de reprise du vide certifié
restent obligatoires ; une distance `0` ne donne aucune permission d’écraser
un chunk existant. Les positions et règles des mondes alpha sont conservées.
Le plan utilise les identifiants stables `noor_vigil`, `makena_embers`,
`kai_efe_rift`, `ari_waters`. Leurs noms FR/EN sont affichés dans la liste
opérateur ; les identifiants restent présents pour les commandes. Les structures
vanilla suivent les possibilités naturelles de chaque région : les quatre
ouvertures initiales n’imposent pas un bâtiment particulier. Les futures
expansions par commande gardent leur précontrôle de structure existant.
## Périmètre narratif
Le lore fourni associe Noor à l’aventure, Makena à la cuisine, Kai et Efe à la
construction et Ari aux villageois. Les noms des expéditions prolongent ces rôles.
Steve et ses amis sont des héros trans de cette fiction. Steve s’est sacrifié
pour contenir Notch ; Galactium, Alpha, Backrooms et les récits fragmentaires
des personnages nourrissent la suite. Le dénouement et les pouvoirs restent à
définir. Ces éléments ne décrivent pas des mécaniques déjà livrées : aucun boss,
pouvoir, journal à collecter ou déblocage créatif n’est ajouté par ce ticket.
## Essai local
Importer `build/Sanctuary-beta.001.mrpack` dans le lanceur, puis créer
un **nouveau monde de type Sanctuary**. Pour une visite rapide, choisir Créatif
et autoriser les commandes. La graine `0`, taille Moyen (724), permet de retrouver
les mesures natives ci-dessous.
`/sanctuary expansion list` affiche les cinq régions et les noms localisés.
Les commandes de visite sont :
```text
/sanctuary expansion visit noor_vigil
/sanctuary expansion visit makena_embers
/sanctuary expansion visit kai_efe_rift
/sanctuary expansion visit ari_waters
```
Le pack cible Minecraft `26.3-pre-2`, Fabric Loader `0.19.5` et Fabric API
`0.160.0+26.3`, avec Java 25. Cet export local n’avance pas le canal packwiz
publié et n’installe rien dans une instance personnelle.
## Vérifications
Plans déterministes sur les trois tailles et les graines `0`, `42` et
`-7228211907433324401` ; quatre directions exactes, identités et profils attendus,
emprises distinctes, réservations aériennes respectées et distances mesurées.
La suite pure `ancientExpeditions001Smoke` passe : persistance des cinq régions,
reprise, refus de corruption et d’un bootstrap interrompu, ajout d’une expansion
ultérieure et ancien journal alpha inchangé octet pour octet. Les neuf plans
utilisent un ciel vide ; un cas supplémentaire impose de vraies réservations
de bateaux de fixture et vérifie leur priorité.
`./gradlew assemblePack -x :sanctuary:check` réussit. L’export packwiz/Modrinth
est vérifié : versions, index et empreintes, intégrité des deux archives,
JAR embarqué identique au JAR construit et activation des expéditions dans
le preset. Le reçu est dans `build/expeditions001-artifact.json` (ignoré).
`./gradlew check build -PsanctuaryFocusedTests=expeditions` réussit en 4 min 29 s :
tous les contrôles purs du cycle et les **3 GameTests ciblés** passent sur
Moyen 724, graine `0`. Les quatre régions génèrent leurs vrais chunks, leurs
biomes correspondent aux climats attendus, l’océan contient un bassin d’eau,
et chaque visite trouve un point d’arrivée sûr. Un premier lancement avait
expiré à cause d’un callback de test qui se replanifiait sous la même clé ;
le scénario corrigé passe sans modifier le code de jeu.
La seconde exécution, avec `-PsanctuaryExpansionReload=true`, réussit en
1 min 40 s (**3/3**) : mêmes régions et codec, journal inchangé, et quatre
blocs témoins posés lors du premier processus toujours présents après reprise.
Les paramètres des trois tailles et des deux états de structures expérimentales
passent aussi une écriture/lecture native sur disque ; un codec alpha sans
le nouveau paramètre conserve son ancien journal.
Mesures sur Moyen 724, graine `0`, disposition `1` :
| Région | Centre X/Z | Ancienne distance entre centres | Nouvelle distance | Écart estimé de terrain sur l’axe |
| --- | --- | --- | --- | --- |
| Noor | 0 / -784 | 933 | 784 | 416 |
| Makena | 784 / 0 | 1 076 | 784 | 360 |
| Kai et Efe | 0 / 784 | 1 013 | 784 | 404 |
| Ari | -784 / 0 | 1 096 | 784 | 348 |
Distances en blocs. Le dernier relevé échantillonne les hauteurs du générateur
tous les quatre blocs sur l’axe des centres ; ce n’est pas la distance minimale
entre deux rivages ni un tracé de pont. Le placement gagne ici 149 à 312 blocs
entre centres, mais les emprises conservées et la forme réelle des paysages
laissent encore un vide important. Un rapprochement supplémentaire qui ferait
se chevaucher leurs chunks demanderait une évolution du contrat de propriété.
Après ces essais, la version interne a été simplifiée à `beta.001` à la demande
du créateur. `./gradlew build assemblePack -x :sanctuary:check` réussit en 7 s.
Le JAR final est identique au JAR testé, sauf le champ `version` de
`fabric.mod.json`. Les 12 contrôles du nouveau format passent ; le MRpack
final contient uniquement `sanctuary-beta.001.jar` comme JAR Sanctuary.
Les preuves ignorées sont dans `build/expeditions001-check-build-retry.log`,
`build/expeditions001-reload.log`, `build/beta001-clean-naming-assemble.log`,
`build/expeditions001-artifact.json` et
`mods/sanctuary/build/run/gameTest/diagnostics/expeditions001/724-0-{native,reload}.json`.
Ce ciblage ne revendique pas la réussite de toute la suite native générale :
les deux assertions déjà relevées pendant [BETA-01](versioning.md) restent
ouvertes. Les chunks natifs sont vérifiés sur Moyen/graine `0` ; l’inspection
visuelle client et les essais Windows restent à effectuer.
+101
View File
@@ -0,0 +1,101 @@
# beta.002 — climats et temples des expéditions
Ticket local **EXP-02**, branche `codex/expedition-biomes-temples-beta002`.
Le créateur a validé visuellement la génération de beta.001 et demande :
- Nord : boréal/Peaks, avec taïga, neige et biomes de glace dans la palette boréale.
- Ouest : conserver l’île océanique humide, avec un bassin `warm_ocean` et du corail vivant.
- Sud : une pyramide du désert sur l’île aride/Canyon.
- Est : un temple de la jungle dans l’île tropicale/Volcan, à une position qui varie avec la graine.
Les quatre noms, directions, diamètres de 512 blocs et règles de rapprochement
de beta.001 sont conservés. Les deux bâtiments utilisent les structures vanilla,
avec leurs coffres, pièges, sauvegarde et localisation natives.
## Contrat des nouveaux mondes
Les nouveaux mondes enregistrent `ancient_expeditions=true` et
`expedition_revision=2` dans le générateur. L’absence de révision reste `1`
pour beta.001 ; l’absence d’expéditions garde le contrat alpha. Le journal
beta.002 utilise `data/sanctuary-world-beta002/expansions.json`, schéma `3`,
`expedition_layout=2`. Aucun ancien journal n’est converti et aucun chunk
d’une sauvegarde jouée n’est régénéré.
Les nouveaux biomes ne s’appliquent qu’à cette révision. Les deux temples sont
planifiés avant l’exploration, à partir de la graine et du terrain, puis leurs
starts sont enregistrés par Minecraft lors de la génération des chunks.
Ils respectent l’option vanilla de génération des structures. La disposition
et ses règles restent versionnées pour éviter de déplacer un site au rechargement.
## Placement des temples
Les candidats sont des chunks de l’inté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.
Elle ne modifie pas le relief pour imposer un bâtiment. Elle partage un cache
borné à 32 768 colonnes par temple. Si aucun site admissible n’est trouvé dans
ce budget, la création refuse explicitement cette disposition au lieu d’annoncer
un temple absent. Les essais de graines ci-dessous donnent le périmètre vérifié.
Les starts utilisent `minecraft:desert_pyramid` et `minecraft:jungle_pyramid`.
Ils sont connus de `/locate structure` et sauvegardés au format natif. Leur
réservation protège aussi les salles enfouies, les coffres et les pièges contre
les structures voisines et la décoration ultérieure. Seules les pièces du
temple concerné peuvent écrire dans son volume protégé pendant sa génération.
Le bassin d’Ari conserve ses contours, profondeur et eau de beta.001 ; son
biome chaud active les véritables features de récif vanilla. Aucune décoration
artificielle de corail mort ne remplace ce récif.
## Vérifications
Sur macOS / Java 25, avec les mêmes dépendances Minecraft `26.3-pre-2`,
Fabric Loader `0.19.5` et Fabric API `0.160.0+26.3` :
- `./gradlew check build -PsanctuaryFocusedTests=expeditions` réussit en
4 min 38 s : contrôles purs du cycle et **4/4 GameTests ciblés**.
- Les plans des trois tailles sur les graines `0`, `42` et
`-7228211907433324401` conservent les centres et les graines des quatre îles.
Les journaux des deux révisions sont testés : relecture, refus de migration
implicite et octets beta.001 conservés. Les réglages beta.001 sans révision
explicite gardent leur valeur `1` ; les réglages beta.002 survivent à
Personnaliser et à une vraie sauvegarde/relecture des trois tailles.
- Sur Moyen 724 / graine `0`, les chunks des deux temples sont générés et
inspectés, leurs starts passent un aller-retour NBT et `/locate` les trouve.
La pyramide possède **4 coffres et 9 TNT**, le temple de jungle **2 coffres
et 2 distributeurs**. La palette boréale échantillonnée contient les six
biomes : taiga, grove, snowy_taiga, snowy_plains, ice_spikes et frozen_peaks.
**69 blocs de corail vivant** sont comptés dans les trois premiers chunks
océaniques inspectés ; ce nombre n’est pas un inventaire de toute l’île.
- La reprise dans un deuxième processus réussit, **4/4**, en 1 min 56 s.
Les rapports des temples/récif avant et après reprise sont identiques ;
le journal, les paramètres et les quatre blocs témoins des joueurs sont
conservés. Le refus de chevauchement inclut les chambres enfouies des temples.
- Un nouveau monde Moyen 724 / graine `42` passe aussi **4/4**, en 2 min 15 s,
avec les six biomes boréaux et 178 blocs de corail vivant dans les trois
chunks inspectés. Les deux sites diffèrent de ceux de la graine `0` :
pyramide au chunk `[3, 48]` au lieu de `[2, 46]`, temple au chunk `[50, -7]`
au lieu de `[56, -3]`. Les coffres et pièges attendus sont présents.
- `./gradlew assemblePack -x :sanctuary:check` réussit en 6 s après les
contrôles. L’export `build/Sanctuary-beta.002.mrpack` est vérifié : intégrité
ZIP, versions et dépendances, index packwiz, JAR embarqué identique au JAR
construit, révision `2` du nouveau preset et présence du lecteur beta.001.
Le reçu est dans `build/expeditions002-artifact.json`.
MRpack SHA-256 : `8a7f956b554385362f70a6b535504ecf5223d3ee86bf3c81bce2913060c104ca`.
JAR SHA-256 : `1d7ff72567aa6d9807332917368a13c1e72bcbb3b6d6620c4a0f72907978b4fb`.
Importer **`Sanctuary-beta.002.mrpack`**, puis créer un nouveau monde de type
**Sanctuary**, avec les structures activées pour visiter les temples. Les
commandes `/sanctuary expansion visit kai_efe_rift` et
`/sanctuary expansion visit makena_embers` amènent sur les îles concernées ;
`/locate structure minecraft:desert_pyramid` et
`/locate structure minecraft:jungle_pyramid` localisent les bâtiments natifs.
Les logs ignorés sont dans `build/expeditions002-check-build.log`,
`build/expeditions002-reload-0.log` et `build/expeditions002-native-42.log`.
Les relevés détaillés sont dans
`mods/sanctuary/build/run/gameTest/diagnostics/expeditions002/`.
La suite native générale garde les deux assertions historiques décrites dans
`docs/versioning.md` ; cette livraison ne les présente pas comme corrigées.
L’inspection graphique du nouveau pack et les essais Windows restent à faire.
+46
View File
@@ -0,0 +1,46 @@
# FACTION-046 — deux places dès la fondation
Branche `codex/sky-flight-zoom-beta046`, à partir de beta.045.
## Contrat
Une nouvelle faction coûte toujours dix niveaux par défaut, sans prestige.
Elle dispose de deux places : le fondateur responsable et un invité, qui rejoint
sans payer et sans prestige. La troisième place et les suivantes demandent une
charge de prestige chacune par défaut. Le serveur revalide la capacité à chaque
acceptation : deux invitations simultanées ne permettent pas de dépasser la limite.
## Migration
La configuration `config/sanctuary/cycle-factions.json` passe au schéma 3.
Les schémas 1 et 2 sont lus puis convertis une seule fois au chargement :
`initialCapacity` devient 2 ; un ancien `maxMembers: 1` devient 2. Les prix,
récompenses, autres plafonds et le réglage de conservation d'XP sont préservés
(la conversion historique de `creationCost` vers dix niveaux reste applicable
au schéma 1). Cette règle vaut uniquement pour les fondations futures.
Le journal `data/sanctuary-cycle-factions.json` accepte les schémas 1, 2 et 3.
La lecture ne réécrit pas les anciens événements : capacités, membres, dépenses,
charges et prestiges existants restent identiques. La prochaine mutation écrit
le schéma 3 avec l'historique conservé. Les créations anciennes à une place
restent valides, les nouvelles créations en proposent deux. Les identifiants
d'événements et de sauvegarde ne changent pas. Ne pas faire relire un journal
schéma 3 par un ancien binaire ; restaurer ensemble journal et joueurs pour
revenir en arrière. Aucun monde personnel n'est modifié pendant ce ticket.
Le marqueur réseau additif `sanctuary:faction_founding_pair_v1` évite qu'un
ancien client lise une configuration qu'il ne reconnaît pas. Les libellés FR/EN
présentent les deux places, dont une pour le fondateur.
## Vérifications et livraison
Le test de contrat `cycle011Smoke` passe : conversion des configurations
schémas 1/2, idempotence, conservation d’une ancienne faction à une place,
fondation à deux places, invitation immédiate et écritures interrompues.
Les scénarios natifs font partie des 20 GameTests serveur ciblés réussis :
un invité rejoint sans prestige, un troisième membre est refusé jusqu’au
financement d’une place, puis peut rejoindre. Les nouveaux instantanés client
reflètent la capacité et les dépenses exactes.
Build, exports et parcours client sont décrits dans
[le ticket beta.046](sky-flight-zoom-beta046.md) et [Distribution](packwiz.md).
+180
View File
@@ -0,0 +1,180 @@
# beta.054 — familiers de combat, duels et mises
Branche `codex/familiar-combat-beta054`. Cette version ajoute le combat physique,
les profils des 88 espèces, les ordres et les duels avec mises en objets. Le
catalogue de conception reste [la refonte](familiar-combat-design.md). La
validation des duels ci-dessous ne constitue pas une validation exhaustive de
chacun des comportements et services de vie commune des 88 fiches.
## Compatibilité et migration additive
- Les identifiants d'objets, d'entités, d'aptitudes et de sauvegardes existants
restent stables. Aucun monde personnel n'est ouvert ou modifié par les tests.
- Un ancien œuf équipé reçoit une identité individuelle au premier usage du
nouveau système. Son objet, son nom, sa taille et ses autres composants sont
conservés. Les œufs non utilisés ne sont pas réécrits.
- L'identité utilise une entrée séparée de `custom_data` ; la santé, le K.-O.,
les techniques et souvenirs utilisent un registre versionné séparé du monde.
Les registres historiques de progression et de pouvoirs restent lisibles.
- Un identifiant ou schéma inconnu est conservé et désactivé, jamais converti
silencieusement en un nouveau compagnon. Une copie du même œuf représente le
même individu ; elle ne crée pas une réserve de santé supplémentaire.
- Retrait, transfert, mort, prestige et reconnexion ne réinitialisent ni la vie
ni les délais. Un seul exemplaire d'un individu peut être actif sur le serveur.
- Les futures espèces disposent de profils nommés et versionnés ; leur retrait
temporaire conserve les données de leurs individus pour une réinstallation.
- Revenir à beta.053 masque les données nouvelles sans les supprimer. Les
modifications faites avec une ancienne version ne sont pas une synchronisation
inverse du combat : sauvegarder le monde avant tout retour de version.
## Règles de cette livraison
Un compagnon actif, combat en temps réel, actions émises depuis sa position.
Suivre, engager, protéger et rappeler ; G lance la technique équipée et une
touche configurable ouvre les ordres. Les signatures sont immédiatement
accessibles ; le Lien actif déjà acheté garde sa valeur pour les variantes.
Les nouveaux menus réutilisent les contrôles et textures natifs.
Le combat termine après une période sans engagement réel. Rappeler reste
possible immédiatement ; changer d'individu attend la fin de cette période.
Les dégâts ennemis peuvent provoquer un K.-O., jamais détruire l'œuf. Les
caresses et coups amicaux gardent leur retour visuel et sonore sans dégâts.
Les soins utilisent des ressources réelles et le repos hors combat.
Les attaques autonomes et les nouvelles techniques de combat préservent le
terrain. Les anciens usages de travail, dont démolition et allumage, sont
séparés et explicitement sélectionnés hors combat ; leurs droits et ressources
restent applicables. Les anciens bonus de combat ne s'ajoutent pas aux nouveaux.
Le consentement allié, les factions et le réglage PvP s'appliquent côté serveur.
## Duels entre joueurs
### Duels et mises — contrat ajouté le 15 septembre
Les deux joueurs acceptent une invitation locale, puis valident chacun les deux
mises affichées. Une mise est facultative et contient au plus une pile d'objets,
avec ses composants natifs. Les cases de l'inventaire débloqué servent à choisir
la pile (clic) ou un objet (clic droit). L'emplacement de mise est un aperçu :
les objets restent dans l'inventaire jusqu'à la double validation. Toute
modification annule les validations ; une ancienne révision ne peut accepter
une nouvelle offre. Les quantités sont revérifiées et retirées côté serveur.
Trois secondes de préparation, trois minutes de combat maximum. Les permissions
du duel concernent exclusivement les deux familiers, même entre alliés ou quand
le PvP général est désactivé. Les propriétaires peuvent donner les ordres et
utiliser leurs techniques, mais ne frappent pas directement le familier adverse.
Le terrain reste soumis au contrat du combat. Pas d'apprentissage par duels.
Vie et recharges réelles persistent après le résultat ; aucune guérison de duel.
K.-O., abandon explicite, rappel, changement d'individu ou sortie du périmètre
de 24 blocs donnent la victoire à l'adversaire. Une interruption technique,
déconnexion ou expiration sans gagnant restitue les mises. Le résultat indique
les dégâts, impacts et techniques pour faciliter les essais. Une déconnexion
volontaire reste indistinguable d'une coupure réseau : ces paris amicaux ne
constituent pas un classement compétitif résistant à ce comportement.
Le gagnant reçoit les deux mises. Un inventaire plein conserve le paiement dans
le registre, accessible depuis Duel. Aucun gain n'est lâché au sol. Le nouveau
fichier `sanctuary/familiar-stakes-v1.json` et le reçu joueur additif
`sanctuary:familiar_duel_receipt` forment le contrat de transaction : journal
écrit avant le débit, inventaire et reçu sauvegardés ensemble, résultat écrit
avant paiement, puis accusé de réception sauvegardé avant purge du journal.
Dans 26.3-pre-2, l'hôte solo est lui aussi sauvegardé dans `playerdata` ;
`level.dat` conserve son `singleplayer_uuid`, pas son inventaire.
La reprise d'un journal encore actif restitue les objets réellement débités ;
un résultat déjà enregistré conserve son gagnant. Une erreur ou un schéma
inconnu désactive les paris et préserve les données pour récupération.
Retour à beta.053 : ne pas jouer avec des mises en attente. Terminer les duels
et récupérer tous les objets avant un retour de version ; sinon restaurer la
sauvegarde complète correspondante, jamais uniquement le journal ou un joueur.
Ces ajouts ne réécrivent aucun monde historique hors de la migration paresseuse
explicitée plus haut. Les tests utilisent exclusivement des mondes de développement.
## Niveaux stockés — contrat du 15 septembre
La fiche du familier permet de déposer ou retirer l'XP hors combat et hors
invitation/duel. Les montants sont des points d'XP exacts : un cran correspond
à la prochaine frontière de niveau du familier au dépôt et au niveau entier
inférieur au retrait, suivant la courbe Minecraft.
« Tout déposer » et « Tout retirer » conservent également les points partiels.
Le niveau est attaché à l'individu dans l'œuf et suit les échanges, jamais au
joueur. Chaque niveau donne +2,5 % de vie maximale et +1,25 % de dégâts,
sans plafond de progression de jeu. La rareté monte d'un palier tous les dix
niveaux, jusqu'à légendaire ; les statistiques continuent ensuite à progresser.
Changer la charge conserve la vie courante absolue (bornée par le nouveau
maximum) et ne soigne pas. Les délais et souvenirs sont conservés.
Migration additive explicite : les individus de schéma 1 se lisent avec zéro
XP ; leur prochaine écriture produit le schéma 2 avec `storedXp`. Le registre
extérieur reste `familiars-v1.json`. Les schémas inconnus restent préservés.
Un nouveau journal `sanctuary/familiar-xp-v1.json` contient uniquement les
transferts en attente. Le reçu joueur `sanctuary:familiar_xp_receipt` est
sauvegardé avec l'XP native avant de valider la nouvelle charge du familier.
Une reprise termine uniquement une opération dont ce reçu existe ; autrement,
elle l'annule sans crédit. Un individu avec transfert non résolu est gelé
jusqu'à la reconnexion du joueur concerné. Une erreur conserve le journal et
désactive les transferts. Le compteur utilise des entiers 64 bits ; une
opération dépassant la représentation native du joueur est refusée sans perte.
Les copies d'un œuf partagent le même solde serveur. Avant un retour à une
ancienne version, retirer l'XP et terminer tous les transferts ; restaurer une
sauvegarde complète plutôt que des fichiers individuels.
Les points de vie sont conservés dans les unités du profil de base, puis
convertis en réserve effective pour les dégâts et les affichages Sanctuary.
Cela permet de dépasser la limite de l'attribut natif de santé, sans introduire
un plafond caché à la progression. Les soins et le repos restaurent la même
fraction de la réserve qu'avant cette extension.
## Vérifications
Sur Minecraft 26.3-pre-2, Java 25, dans un monde plat de développement :
- `Combat054ClientChecks` : chargement des 88 profils, attaque autonome du loup
depuis son entité physique, blessure persistante, sauvegarde et vraie
reconnexion ; menus FR/EN.
- `Duel054Checks` : deux entités `ServerPlayer`, invitation, double validation,
changement de mise et refus d'une ancienne validation, refus d'une case
verrouillée, aucun débit avant consentement mutuel.
- Combat autonome, adversaire limité au familier, absence d'aide du rival,
dégâts directs du propriétaire refusés, K.-O., paiement exact, réclamation
répétée sans duplication et absence d'apprentissage par duel.
- Duel sans mise, projectile natif, projectile non sauvegardable, abandon,
blessure conservée et refus d'un projectile arrivé après la fin du duel.
- Clic natif sur la mise dans le menu, aller-retour réseau et mise effacée
côté serveur ; affichage et commandes FR/EN.
- Inventaire plein, gain conservé, récupération ultérieure, reprise du journal
interrompu, restitution sans double paiement, coffre renommé avec contenu
natif conservé après le transit.
Les tests serveur ci-dessus tournent dans le client intégré, sans accepter
l'EULA d'un serveur dédié. Ils ne remplacent pas une session de charge avec
deux clients réseau indépendants. Captures : `build/combat054-evidence/` ; journal
client : `build/combat054-final-client-pack.log`.
`Experience054Checks` vérifie également les frontières de la courbe XP native,
les allers-retours d'XP même après une dépense de niveaux, les points partiels,
le refus d'une requête périmée, le gel dès l'invitation de duel et pendant un
combat. Un familier de niveau 120 inflige les dégâts supplémentaires réels ;
sa réserve de santé reçoit les dégâts en unités effectives. Dépôt et retrait
ne restaurent pas sa vie. La migration de schéma 1 conserve les inconnus.
La reprise est testée avant débit, après reçu joueur et après écriture du
familier ; les tentatives répétées ne multiplient pas les crédits. Un échange entre deux
joueurs conserve la charge, permet au nouveau propriétaire de la retirer et
refuse qu'une copie conservée par l'ancien propriétaire serve à la voler. Les boutons
natifs, la rareté légendaire de l'œuf et une nouvelle ouverture du monde avec
l'XP stockée sont vérifiés. Ce ne sont pas des tests d'arrachement physique du
disque ou de panne électrique.
## Limites de la refonte à vérifier par espèce
La validation exhaustive conserve comme critères : comportement favorable et refus utile pour chaque espèce,
munitions/consommables conservés, origine des attaques, protections finies,
K.-O./soins, rappel/changement/transfert/reconnexion, PvP et factions, absence de
destruction autonome, menus FR/EN et conservation des fonctionnalités historiques.
Les valeurs restent des valeurs de test. Certains services de vie commune et certaines variantes utilisent encore des
comportements génériques : plateforme commune pour plusieurs espèces,
ancrage par ralentissement, suivi de cible simple et protection sans renvoi
réel de projectile. Leur fidélité au catalogue reste à finaliser. Les duels
rendent les essais possibles ; cette livraison ne constitue pas la finition
exhaustive des 88 fiches ni la fin de leur équilibrage.
+405
View File
@@ -0,0 +1,405 @@
# Les 88 familiers — combattre et vivre ensemble
**Proposition de conception du 15 septembre 2026. Aucun de ces changements n'est implémenté par ce document.**
Ticket documentaire **FAM-DESIGN-03**, branche `codex/familiar-combat-design`.
Référence du dépôt : **beta.052**, Minecraft **26.3-pre-2**. Catalogue fermé sur les
88 entrées de [CompanionType.java](../mods/sanctuary/src/main/java/fr/koka/sanctuary/companion/CompanionType.java).
Les raretés existantes sont conservées : **22 / 22 / 25 / 16 / 3**.
## 1. Direction et portée
Le créateur demande d'explorer le combat avec son familier, avec Pokémon comme
point de départ modifiable, puis d'établir le rôle des 88 espèces. Cette proposition
retient le **combat en temps réel en duo** : le joueur combat avec ses armes,
ses outils et le terrain ; son compagnon agit physiquement à ses côtés.
L'objectif est de pouvoir raconter « il m'a couvert pendant que je rechargeais »
ou « je suis revenu le chercher », puis de retrouver ce même compagnon dans la
vie quotidienne. Son rôle, ses initiatives et ses réactions doivent être visibles.
État actuel : les [pouvoirs beta.044](spawn-eggs-catalogue-beta044.md) sont surtout
déclenchés par le joueur ; les familiers sont invincibles et sans combat autonome.
Le [nom, la taille et les interactions](familiar-interactions-beta020.md), ainsi que
le [nom à l'arrivée](starter-name-beta052.md), constituent des bases déjà livrées.
La présente proposition introduit un autre fonctionnement ; les anciens pouvoirs,
bonus et dégâts natifs ne s'additionnent pas automatiquement à ces nouvelles fiches.
Le catalogue beta.044 continue de décrire le jeu livré tant qu'un ticket de code
n'a pas remplacé explicitement chaque comportement concerné.
Les noms français ci-dessous servent la lecture du document ; les identifiants
entre parenthèses font autorité. Une future interface devra avoir ses libellés FR/EN.
## 2. Règles communes proposées
### Un partenaire, quelques ordres
- **Un seul compagnon actif par joueur.** Un combat engage ce duo. Remplacer le
compagnon attend la sortie de combat ; le rappeler reste possible immédiatement.
- **Suivre** : accompagne, signale les menaces, attend l'engagement du joueur.
**Engager** : poursuit la cible désignée dans un périmètre local.
**Protéger** : reste près d'une personne ou d'un point désigné et intercepte.
**Rappeler** : abandonne son action et revient ; l'ordre peut aussi le ranger.
- En défense, il réagit à une agression subie par le duo. Il ne choisit pas tout
seul des animaux neutres ou des inconnus comme ennemis et ne poursuit pas hors
du périmètre. Une cible perdue conduit au retour, avec un signal compréhensible.
- **G déclenche une technique équipée**, choisie parmi la signature et une variante
apprise. Un sélecteur d'ordres configurable donne accès aux consignes. Les gestes
précis devront être essayés avec les raccourcis déjà présents dans Sanctuary.
- L'initiative de chaque fiche est l'action de base autonome, répétée à cadence
mesurée tant que l'ordre le permet. La technique G demande un choix du joueur.
Les signatures sont accessibles dès le début de la relation ; le premier combat
doit enseigner leur usage. L'articulation avec l'achat actuel du Lien actif reste
à traiter explicitement dans le ticket de progression.
### Des corps présents dans le combat
- Attaques, écrans et aides partent **du compagnon**. Son trajet, sa position, sa
préparation et sa récupération comptent. Les animations accompagnent la réponse
sans imposer un long déplacement à chaque geste d'urgence.
- Les cibles peuvent l'attaquer et interrompre ses actions annoncées. Les attaques
lourdes laissent le temps de s'écarter. La puissance dépend du rôle et de ces
fenêtres, jamais simplement de la rareté ou de la taille visuelle de l'œuf.
- Les familiers gardent une circulation confortable autour des alliés. Une garde
intercepte les attaques dans son volume d'effet ; elle n'exige pas de bloquer
physiquement les portes avec le corps du compagnon.
- Les poissons et autres aquatiques portent sur terre une **petite enveloppe d'eau
magique**, proche du sol, qui autorise leurs actions courtes. Elle ne crée pas
d'eau, ne permet pas de voler avec le joueur et ne le fait pas respirer. Dans
l'eau réelle, ces compagnons gagnent surtout de la liberté de mouvement. Tous
doivent avoir au moins un service de combat utilisable sur Sanctuary Island.
- Un cheval familier reste un petit esprit compagnon. Les aides de déplacement
sont brèves ; les chevaux et bateaux réels gardent leur rôle de transport.
- Les familiers morts-vivants restent utilisables en journée. Les propriétés des
mobs sauvages ne s'appliquent que lorsqu'elles servent un comportement prévu
dans la fiche. Ni combustion solaire ni mort de l'abeille après une piqûre ici.
### Se protéger mutuellement
- Chaque compagnon aurait sa propre vie et pourrait **tomber K.-O.** Il se replie
dans son œuf. Le combat continue avec le joueur encore debout.
- Le repos hors combat permet sa récupération ; nourriture et soins réels peuvent
aider pendant une expédition. Le délai et les quantités restent à régler en
prototype. L'absence du joueur ne dégrade jamais la relation.
- Rappel, changement d'œuf, déconnexion ou mort du joueur ne rendent pas gratuitement
la vie et les techniques. Blessures et récupération suivent le même individu.
- Le K.-O. du compagnon ne détruit pas son œuf. La perte éventuelle de l'objet à la
mort du joueur reste un sujet distinct, selon les règles d'inventaire existantes.
Conserver une mémoire ne promet pas de recréer un œuf perdu ou détruit.
- Le joueur peut continuer ses activités avec un compagnon au repos. Aucun métier
ni accès à la progression n'exige d'avoir un compagnon disponible en permanence.
### Des règles qui permettent de combiner les espèces
- Les provocations, leurres et déplacements d'ennemis concernent d'abord les
**monstres ordinaires**. Ils n'imposent jamais une visée ou un déplacement à un
joueur. Boss, grosses créatures et cibles immunisées ont une résistance adaptée.
Les protections, frappes et repères restent utiles contre eux.
- Une entrave est courte, puis la cible bénéficie d'une résistance commune aux
nouvelles entraves. Alterner 30 familiers ne doit pas immobiliser une cible à vie.
- Les gardes ont une capacité d'absorption finie et des angles lisibles. Une même
attaque ne peut pas être annulée successivement par une chaîne de familiers.
- Les soins et l'air ont un budget commun **par bénéficiaire**. Tous les soins
rendent des PV réels, bornés par sa capacité. Ils consomment la ressource annoncée
et ne peuvent pas être multipliés en changeant de compagnon ou en traversant
plusieurs fois la même zone. Les recettes d'alchimie conservent leur intérêt.
- Les armes de tir matérielles utilisent de vraies munitions préparées par le
joueur. Les projectiles intrinsèques, comme les crachats et rayons, restent des
effets sans butin récupérable. Les capacités n'ajoutent aucun inventaire général :
les livraisons déplacent des objets existants et accessibles. Échec de livraison :
retour au stock d'origine, ou dépôt réel récupérable si ce retour est impossible.
- Les fournitures viennent des cases débloquées ou d'un stockage explicitement
autorisé et proche. Le compagnon n'ouvre pas des coffres distants ou inconnus.
Un joueur reçoit manuellement les potions et aliments livrés ; leur consommation
automatique est limitée aux compagnons alliés auxquels le soin est destiné.
- Le PvE est la cible du premier prototype. En multijoueur, aides et déplacements
alliés respectent le consentement existant ; les attaques respectent les factions,
les permissions et le réglage PvP. Les chiffres PvP demanderont leurs essais.
- **Terrain : décision proposée pour ce futur système** : les attaques autonomes
de combat n'endommagent pas les constructions. Démolition et allumage existent
comme ordres de travail explicites, avec leurs ressources et droits. Cela change
les explosions natives livrées en beta.044 ; ce changement devra être nommé dans
le futur ticket et sa migration, et n'est pas actif aujourd'hui.
- Les repères utilisent des cibles ou indices locaux et une mémoire autorisée.
Un familier ne révèle ni une carte entière ni le contenu d'un coffre fermé.
### Apprentissage et attachement
Chaque fiche donne une **signature initiale** et une **variante à apprendre**.
On en équipe une à la fois, hors combat. La variante propose une autre façon
d'aider ; elle ne s'ajoute pas comme un second bouton obligatoire. Le comportement
de base reste disponible avec l'une ou l'autre.
La confiance grandit par des expériences variées et utiles : aider réellement,
explorer, se protéger, se reposer ensemble. Temps AFK, ennemis invoqués pour farm,
coups volontaires sur ses alliés et répétition de caresses ne font pas progresser
la maîtrise. Les premiers apprentissages doivent être accessibles rapidement.
Les petits gestes des fiches sont des **expressions possibles de l'espèce**.
Chaque individu aurait un tempérament stable qui choisit leur fréquence et leur
forme sans rendre un compagnon moins fiable. Il conserve son nom, sa taille,
ses apprentissages et quelques souvenirs attestés : lieu de rencontre, expédition,
secours réel, retour au foyer, prestige vécu. La fiche Habitant porterait cette
mémoire ; la relation se manifesterait surtout dans le monde.
Le têtard et la grenouille, ainsi que les variantes mortes-vivantes, restent ici
des espèces distinctes. Une évolution ou une transformation serait une décision
séparée, jamais une conversion automatique d'un individu auquel on s'est attaché.
## 3. Catalogue complet
Les actions ci-dessous sont des comportements proposés. Les mots « court »,
« proche », « quelques » décrivent l'intention avant mesure. Les dégâts, PV,
portées, recharges et coûts définitifs seront établis par famille de comportement,
puis vérifiés par espèce. Aucun équilibrage chiffré des 88 n'est revendiqué.
### Communs — 22
| Nº · Familier | Rôle et initiative autonome | G · Signature | Variante à apprendre | Vie commune : service et petit geste |
| --- | --- | --- | --- | --- |
| 01 · Chauve-souris (`bat`) | **Éclaireuse.** Tourne à distance des coups et signale l'ennemi qui approche derrière le joueur. | **Écholocalisation** : une pulsation révèle brièvement les créatures proches qui bougent, avec des repères directionnels. | **Diversion** : passe devant une cible pour attirer brièvement son attention, puis revient se mettre à l'abri. | Guide vers une ouverture proche déjà détectée ; se suspend au plafond au repos. |
| 02 · Chat (`cat`) | **Garde rapprochée.** Reste près du joueur et griffe les petits ennemis qui franchissent sa garde. | **Dos rond** : s'interpose et fait hésiter ou reculer les petits monstres devant lui. | **Patte vive** : bondit sur l'assaillant désigné pour interrompre une préparation interruptible. | Avertit des Creepers proches ; choisit un endroit chaud pour se coucher. |
| 03 · Poule (`chicken`) | **Gêne de proximité.** Picore une cible engagée, recule et oblige les monstres ordinaires à se retourner. | **Grand battement** : une bourrasque courte écarte les petits ennemis autour du joueur. | **Réception** : rejoint un allié qui chute et freine une descente, puis doit se reposer. | Aide les petits franchissements et les réceptions de chantier ; accourt lorsqu'on sort des graines. |
| 04 · Morue (`cod`) | **Secours individuel.** Suit le duo à couvert ; lance une petite giclée défensive sur l'ennemi qui s'approche. | **Bulle de secours** : apporte à une personne ou un familier une bulle qui éteint une brûlure ; sous l'eau, elle rend aussi un peu d'air. | **Éclaboussure** : projette un jet bref qui repousse une petite cible et mouille localement les créatures touchées. | Repère une poche d'air proche ; dessine un petit cercle autour du plongeur revenu à la surface. |
| 05 · Vache (`cow`) | **Protectrice de contact.** Se place de côté devant son maître et donne un coup de tête à l'assaillant proche. | **Lait de secours** : apporte une dose du lait fourni pour retirer Poison et Faim à un bénéficiaire. | **Épaule solide** : encaisse une partie d'un prochain impact destiné à un allié, avec sa propre vie. | Transporte un seau préparé sur une courte distance ; vient frotter son front après un secours. |
| 06 · Âne (`donkey`) | **Ravitailleur de position.** Reste derrière le duo, lui apporte ses munitions disponibles et rue sur ceux qui le poursuivent. | **Point de ravitaillement** : dépose près de lui un petit lot choisi du stock du joueur pour les alliés qui viennent le prendre. | **Dégage !** : une ruade repousse l'ennemi le plus proche et lui ouvre un trajet de retour. | Aide au rangement dans un coffre désigné ; attend patiemment au point de livraison. |
| 07 · Renard (`fox`) | **Opportuniste.** Contourne une cible occupée par le joueur, mord puis se retire. | **Chapardage** : file chercher un objet au sol désigné, même près des ennemis, et le rapporte. | **Feinte** : fait mine d'engager une cible, l'attire de quelques pas puis esquive de côté. | Récupère les récoltes tombées ; rapporte fièrement un objet dans sa gueule. |
| 08 · Grenouille (`frog`) | **Contrôle précis.** Bondit entre les appuis et frappe à courte portée avec sa langue. | **Coup de langue** : tire vers elle un objet ou un petit ennemi désigné. | **À la rescousse** : ramène un allié consentant vers son appui proche et sûr. | Récupère des objets tombés au bord de l'eau ; coasse après un saut réussi. |
| 09 · Cheval (`horse`) | **Attaquant mobile.** Charge une cible isolée, frappe puis prend de la distance pour revenir. | **Percée** : traverse une courte ligne et heurte le premier ennemi, en conservant une sortie libre. | **Ouvrir la route** : passe devant le joueur et lui donne un bref sillage de déplacement au sol. | Accompagne les trajets entre lieux connus ; hennit en reconnaissant le point de départ. |
| 10 · Lama (`llama`) | **Tireur défensif.** Garde sa distance et crache sur la cible désignée. | **Crachat d'arrêt** : un crachat appuyé interrompt une préparation légère et repousse peu. | **Volée** : répartit trois crachats entre les ennemis proches, avec moins d'effet par cible. | Aide à tenir une petite caravane regroupée ; relève la tête après un tir réussi. |
| 11 · Mule (`mule`) | **Messagère mobile.** Circule derrière les alliés, avec une ruade de défense si son trajet est coupé. | **Livraison urgente** : apporte directement l'objet préparé au bénéficiaire désigné. | **Relais** : reprend chez un allié consentant un lot qu'il lui confie et le ramène au propriétaire. | Transporte un lot entre deux personnes ou stockages proches autorisés ; annonce son arrivée d'un bref cri. |
| 12 · Cochon (`pig`) | **Débusqueur.** Flanque la cible et la bouscule du groin lorsqu'elle se cache derrière un petit obstacle. | **Truffe au sol** : suit l'odeur récente d'une cible observée et révèle sa dernière direction à proximité. | **Bousculade** : pousse de côté une petite cible pour l'exposer à la ligne de tir du joueur. | Cherche des plantes déjà connues ; s'assoit près du repas sans le consommer. |
| 13 · Lapin (`rabbit`) | **Leurre agile.** Harcèle par de petits coups puis bondit hors de portée de mêlée. | **Fausse piste** : attire un monstre ordinaire vers le point proche choisi par le joueur, avec un trajet d'évasion. | **Bond complice** : rejoint le joueur puis accompagne un court franchissement dirigé, une fois par vol. | Aide à franchir un petit écart ; bondit de joie lorsque le joueur le rejoint. |
| 14 · Saumon (`salmon`) | **Intercepteur linéaire.** Prend son élan et heurte une cible dans un passage court. | **Contre-courant** : un jet linéaire repousse les ennemis qui avancent face à lui. | **Sillage** : trace un passage bref que les alliés peuvent suivre pour se déplacer ; plus libre dans l'eau. | Guide une traversée aquatique locale ; saute à la sortie du courant. |
| 15 · Mouton (`sheep`) | **Amortisseur.** Reste près d'un allié et absorbe une part limitée d'un contact avec sa toison, puis doit récupérer. | **Cocon de laine** : se blottit contre un bénéficiaire pour amortir le prochain impact, au prix de sa garde. | **Coussin** : utilise une laine fournie pour préparer une petite réception temporaire au sol. | Sécurise une réception de chantier ; se secoue après avoir protégé quelqu'un. |
| 16 · Squelette (`skeleton`) | **Archer précis.** Tire des flèches fournies, depuis un angle dégagé, et recule si un ennemi l'approche. | **Tir visé** : prépare un tir précis sur une cible, annoncé et interrompu si elle casse la ligne de vue. | **Tir de couverture** : tire pour gêner brièvement la progression d'un monstre dans un passage. | Montre si sa ligne de tir est dégagée ; redresse sa posture après une bonne flèche. |
| 17 · Slime (`slime`) | **Contrôle élastique.** Bondit contre les ennemis proches et les écarte légèrement. | **Rebond** : se comprime puis projette une petite cible dans une direction annoncée. | **Tremplin** : se place sur un appui et fournit un rebond au prochain allié consentant ; capacité finie. | Sert d'appui de chantier temporaire ; imite les sauts du joueur au repos. |
| 18 · Araignée (`spider`) | **Attaquante verticale.** Grimpe les surfaces pour contourner une défense et mord au contact. | **Fil tendu** : pose entre deux appuis proches un fil temporaire qui freine le premier ennemi le traversant. | **Descente surprise** : depuis un vrai appui en hauteur, se laisse tomber sur la cible désignée. | Repère un parcours grimpable proche ; attend suspendue pendant les pauses. |
| 19 · Calmar (`squid`) | **Protection de retraite.** Reste entre le joueur et ses poursuivants, donnant de petits coups de tentacule. | **Écran d'encre** : masque brièvement une zone et gêne le suivi visuel des monstres ordinaires. | **Jet arrière** : se propulse et repousse un poursuivant proche pour ouvrir une retraite. | Aide à repérer un objet dans l'eau proche ; s'étale calmement dans son enveloppe au repos. |
| 20 · Têtard (`tadpole`) | **Guetteur de secours.** Reste à couvert et signale l'allié proche qui manque d'air ou n'a plus de sortie dégagée. | **Issue !** : rejoint et indique un petit passage local praticable pour la retraite du duo. | **Bulle de garde** : apporte un écran d'eau qui absorbe une petite attaque frontale puis éclate. | Guide vers une berge accessible ; revient vérifier que le joueur le suit. |
| 21 · Poisson tropical (`tropical_fish`) | **Marqueur mobile.** Tourne autour d'une cible désignée à distance et maintient son repère tant qu'il la voit. | **Éclat coloré** : marque les ennemis visibles d'une petite zone pour coordonner les tirs. | **Fausse cible** : laisse un reflet coloré fragile qui attire brièvement un monstre ordinaire. | Pose un repère visuel local pour une expédition ; montre ses couleurs en retrouvant son propriétaire. |
| 22 · Zombie (`zombie`) | **Combattant d'endurance.** Avance lentement, frappe régulièrement et garde sa cible au contact. | **S'accrocher** : retient brièvement une petite cible avec ses bras, en restant lui-même exposé. | **Second souffle** : recule auprès du joueur et consomme une nourriture fournie pour récupérer lentement sa propre vie. | Pousse un objet tombé hors d'un coin accessible ; lève les bras pour demander une caresse. |
### Peu communs — 22
| Nº · Familier | Rôle et initiative autonome | G · Signature | Variante à apprendre | Vie commune : service et petit geste |
| --- | --- | --- | --- | --- |
| 23 · Tatou (`armadillo`) | **Intercepteur compact.** Suit l'allié protégé et se met en boule sur le trajet d'un petit projectile ; sa garde s'épuise. | **Bouclier roulant** : roule jusqu'au point désigné et y absorbe quelques impacts frontaux, immobile. | **Ricochet** : roule contre une cible puis rebondit vers le joueur ; faible frappe de dégagement. | Inspecte un passage étroit praticable ; se déroule prudemment après le danger. |
| 24 · Abeille (`bee`) | **Harcèlement aérien.** Pique puis se retire ; poison bref limité, sans cumul de doses. | **Pollen** : marque une cible visible d'un nuage qui permet de suivre son déplacement proche. | **Dard précis** : prépare une piqûre unique plus engagée, puis reste brièvement vulnérable au retour. | Replante une récolte désignée avec les graines du joueur ; se pose sur une fleur pendant les pauses. |
| 25 · Dromadaire (`camel`) | **Franchisseur.** Frappe au contact et passe les petits obstacles pour rejoindre les alliés. | **Enjambée** : déplace brièvement un allié consentant par-dessus un obstacle bas, vers un appui visible. | **Rempart haut** : se campe devant un allié et encaisse une part limitée des coups venant de face. | Aide à franchir un fossé court ; s'agenouille près du lieu de repos. |
| 26 · Araignée venimeuse (`cave_spider`) | **Assaillante de recoin.** Passe par les petits espaces et applique un poison bref par morsure. | **Morsure tenace** : reste un instant accrochée à une cible pour délivrer une seule dose, exposée aux coups. | **Nid de fils** : crée une petite zone temporaire qui freine les premiers monstres la traversant. | Inspecte un interstice proche sans casser la paroi ; se recroqueville après une caresse. |
| 27 · Golem de cuivre (`copper_golem`) | **Auxiliaire mécanique.** Reste près des dispositifs du joueur et repousse d'un coup de bras un ennemi approchant. | **Déclencheur** : rejoint puis actionne une commande redstone autorisée et désignée, permettant d'utiliser un piège préparé. | **Parade de cuivre** : intercepte un projectile pour l'allié choisi, même en terrain sans installation. | Trie un lot dans des rangements proches appris ; tapote un coffre une fois sa livraison terminée. |
| 28 · Dauphin (`dolphin`) | **Escorte rapide.** Frappe en passant et revient se placer entre un poursuivant et l'allié escorté. | **Sillage d'évacuation** : entraîne un allié consentant sur un court trajet dégagé ; nage dans l'eau, glissade brève au sol. | **Sauvetage** : rejoint un allié dans l'eau et l'accompagne vers une surface libre proche. | Guide les nageurs entre deux points locaux ; joue avec un objet qu'on lui lance. |
| 29 · Noyé (`drowned`) | **Combattant d'ancrage.** Reste sur son appui, frappe au contact et résiste aux petits déplacements. | **Agrippe** : tient brièvement une cible proche pour empêcher qu'elle s'éloigne, tout en restant attaquable. | **Ancrage partagé** : protège un petit point des poussées et courants pour les alliés qui y prennent position. | Stabilise une courte séance de travail sous l'eau ; examine les objets ramenés du fond. |
| 30 · Poulpe luisant (`glow_squid`) | **Éclaireur de cible.** Éclaire les silhouettes déjà visibles près du duo et tient ses distances. | **Encre lumineuse** : touche une cible d'une marque brillante persistante quelques instants, même si elle se cache à proximité. | **Signal de regroupement** : pose un halo au sol autour de lui qui indique un point sûr choisi, sans soin ni invulnérabilité. | Balise un chantier sombre ; pulse doucement lorsque le joueur revient. |
| 31 · Chèvre (`goat`) | **Brise-position.** Cherche un angle latéral et donne des coups de corne brefs. | **Coup de boutoir** : charge un ennemi pour le déloger de son appui ; préparation visible et collision réelle. | **Contre-charge** : attend une attaque de mêlée annoncée et percute l'assaillant au moment de son entrée. | Repère un chemin de petits appuis ; gratte le sol avant de bondir. |
| 32 · Zombie momifié (`husk`) | **Pression de proximité.** Avance avec constance et frappe les cibles qui restent dans sa portée. | **Poussière** : soulève un écran au sol qui gêne la poursuite des monstres ordinaires et se déplace avec le vent. | **Poigne sèche** : une frappe préparée applique une brève Faiblesse, puis le laisse récupérer. | Signale un abri proche déjà aperçu ; s'époussette à la fin d'une traversée. |
| 33 · Ocelot (`ocelot`) | **Chasseur isolant.** Approche une cible par un flanc dégagé et revient après une griffe. | **Embuscade** : bondit depuis un couvert réel sur une cible qui regarde ailleurs ; engagement risqué. | **Pas de côté** : esquive l'attaque annoncée d'une cible puis riposte si elle reste à portée. | Suit la piste locale d'un animal observé ; s'approche lentement lorsqu'on s'accroupit. |
| 34 · Panda (`panda`) | **Garde de zone proche.** Frappe lentement les ennemis autour de lui, avec une bonne tenue au sol. | **Roulade** : roule dans un passage, écarte de petits ennemis puis doit se relever. | **Assise solide** : s'assoit devant un allié et forme une garde courte, robuste mais immobile. | Aide à pousser un lot tombé vers un point de collecte ; s'assoit pour regarder le joueur manger. |
| 35 · Perroquet (`parrot`) | **Sentinelle sonore.** Signale les préparations des ennemis proches avec un cri dirigé vers leur position. | **Imitation** : place un leurre sonore à un point visible pour détourner un monstre ordinaire. | **Alerte ciblée** : surveille une cible et annonce ses préparations pendant une courte fenêtre. | Reconnaît certains sons de dangers déjà rencontrés ; danse près d'une musique. |
| 36 · Poisson-globe (`pufferfish`) | **Défense de contact.** Se place près d'un allié et pique les ennemis qui le touchent lorsqu'il est gonflé. | **Hérisson** : se gonfle sur place pour fermer un petit passage par des représailles de poison limitées. | **Gonflement brusque** : une expansion unique repousse les petits ennemis proches, puis le laisse dégonflé. | Signale les créatures qui s'approchent dans l'eau ; se gonfle de surprise devant un objet nouveau. |
| 37 · Ours polaire (`polar_bear`) | **Protecteur d'un allié.** Se maintient entre la personne protégée et son dernier agresseur, frappant lourdement à courte portée. | **Couvre-moi** : accompagne la retraite d'un allié en interceptant une quantité limitée de dégâts de mêlée. | **Coup de patte** : large frappe de dégagement devant lui, avec une récupération exposée. | Escorte les trajets dans les reliefs enneigés ; s'allonge tout près du compagnon protégé. |
| 38 · Golem de neige (`snow_golem`) | **Tireur de gêne.** Lance des boules de neige fournies : faibles impacts réguliers et gêne brève des monstres ordinaires. | **Bourrasque neigeuse** : consomme plusieurs boules pour couvrir un passage de tirs successifs. | **Refroidissement** : projette sa neige sur une petite zone pour éteindre les créatures en feu ; pas de soin. | Éteint de petits départs de feu explicitement visés avec le stock fourni ; penche sa tête après le dernier lancer. |
| 39 · Arpenteur (`strider`) | **Escorte thermique.** Reste près du joueur sur terrain chaud et frappe à courte portée sans brûler le sol. | **Passage brûlant** : guide un allié consentant sur une courte surface de lave vers un appui sûr. | **Évacuation** : rejoint le point sûr désigné et aide un allié proche à quitter la zone en feu, même sans lave. | Sécurise une courte traversée au-dessus de lave ; tremblote près du froid puis se détend à la chaleur. |
| 40 · Tortue (`turtle`) | **Garde directionnelle.** Avance lentement devant l'allié protégé et intercepte avec sa carapace une part limitée des attaques frontales. | **Carapace avancée** : maintient un écran mobile frontal pendant une retraite ou une approche. | **Verrou** : se campe dans un passage et gagne en garde au prix de toute mobilité. | Sert de repère stable pour une plongée ; enfouit légèrement ses pattes sur son lieu de repos. |
| 41 · Villageois (`villager`) | **Intendant de combat.** Reste à couvert et présente les fournitures préparées aux alliés qui se rapprochent. | **Abri de fortune** : déploie un bouclier fourni en garde fixe, protégeant brièvement un angle pendant un soin manuel. | **Distribution** : remet à plusieurs alliés proches une portion de nourriture fournie par personne ; les joueurs choisissent de la manger. | Mémorise les offres consultées et aide les échanges de proximité ; acquiesce après une tâche réussie. |
| 42 · Loup (`wolf`) | **Partenaire de mêlée.** Contourne l'ennemi engagé par le joueur, mord et reste attentif aux attaques sur son maître. | **Interception** : bondit sur une menace approchante et interrompt une préparation légère. | **Poursuite** : rejoint rapidement une cible qui s'éloigne puis la frappe, au risque de quitter sa protection. | Suit la piste d'une créature observée ; vient se frotter au joueur après un combat difficile. |
| 43 · Embourbé (`bogged`) | **Archer d'usure.** Tire des flèches fournies depuis un couvert ; se déplace peu entre deux tirs. | **Flèche empoisonnée** : prépare une dose de poison sur une seule flèche ; l'immunité et les budgets d'effets s'appliquent. | **Tir rasant** : projette avec une flèche une petite éclaboussure de boue temporaire qui ralentit un passage. | Reconnaît les appuis dans un marais proche ; secoue ses champignons après la pluie. |
| 44 · Squelette desséché (`parched`) | **Archer d'affaiblissement.** Tire des flèches fournies et privilégie la cible la plus proche de l'allié protégé. | **Trait épuisant** : une flèche préparée inflige une brève Faiblesse à une cible. | **Réserve de tir** : attend derrière l'allié et tire sur son assaillant à la première ouverture, puis se replie. | Observe les approches dégagées autour d'un camp ; se range dans l'ombre auprès du joueur. |
### Rares — 25
| Nº · Familier | Rôle et initiative autonome | G · Signature | Variante à apprendre | Vie commune : service et petit geste |
| --- | --- | --- | --- | --- |
| 45 · Allay (`allay`) | **Secours aérien.** Récupère un objet préparé ou correspondant à la consigne et le rapporte en évitant la mêlée ; fragile et limité à un petit lot. | **Livraison par les airs** : apporte une potion ou un aliment réel à un allié par un trajet aérien court, puis revient. | **Récupération** : va chercher un lot d'objets tombés dans une zone dangereuse désignée et les ramène. | Ramasse les objets du type montré ; danse au retour d'une livraison. |
| 46 · Axolotl (`axolotl`) | **Combattant de secours.** Mord une cible proche puis se retire auprès d'un allié blessé. | **Faire le mort** : tombe immobile, poussant un monstre ordinaire à changer de cible ; reste vulnérable aux attaques de zone. | **Convalescence** : consomme une nourriture fournie et accompagne une récupération lente d'un compagnon allié au repos, interrompue par les coups. | Escorte les plongées et se pose près d'un blessé ; agite ses branchies après une caresse. |
| 47 · Blaze (`blaze`) | **Tireur incendiaire.** Tire une petite flamme annoncée à cadence modérée, puis se décale. | **Salve** : prépare trois petites boules de feu vers une cible, avec des fenêtres d'esquive entre les tirs. | **Rideau de chaleur** : maintient devant lui un cône court qui brûle les ennemis traversant son approche. | Allume un foyer désigné par un ordre de travail explicite ; fait tourner ses bâtons lorsqu'il est content. |
| 48 · Breeze (`breeze`) | **Manipulateur de trajectoires.** Bondit de côté et frappe d'une petite poussée à distance. | **Rafale** : déplace les créatures légères et les nuages mobiles dans la direction visée, sans renouveler leur contenu. | **Déviation** : prépare une rafale courte qui détourne un projectile compatible, une seule fois et sans augmenter ses dégâts. | Déplace des lots au sol et aide un court saut consenti ; tourne sur lui-même après une combinaison réussie. |
| 49 · Dromadaire momifié (`camel_husk`) | **Escorte de percée.** Avance droit au contact et garde son cap malgré les petites poussées. | **Traversée poussiéreuse** : parcourt une ligne courte et laisse derrière lui un écran mobile qui couvre la progression des alliés. | **Extraction** : rejoint un allié consentant puis le guide vers un appui proche hors de la mêlée. | Ouvre un trajet dans les reliefs secs ; secoue une poussière visuelle après le voyage. |
| 50 · Creeper (`creeper`) | **Menace de proximité.** S'approche prudemment et bouscule d'un petit coup de tête ; attend un ordre pour s'amorcer. | **Détonation** : annonce sa mèche, explose au point atteint, puis recule épuisé ; dégâts de zone, terrain protégé dans cette proposition. | **Embuscade** : attend sur un point désigné ; le joueur déclenche sa mèche lorsque des ennemis sont bien placés. | Signale les amorçages proches ; un ordre de démolition distinct pourrait réutiliser son explosion avec droits et coût. Se détend après la fin de sa mèche. |
| 51 · Endermite (`endermite`) | **Perturbatrice de courte portée.** Effectue de petits déplacements instantanés entre deux morsures, avec récupération visible. | **Interversion** : échange sa place avec celle de son propriétaire consentant à très courte portée, si les deux arrivées sont sûres et autorisées. | **Détour** : passe de l'autre côté d'un petit obstacle autorisé pour attaquer une cible, puis revient par son trajet possible. | Inspecte une arrivée de l'autre côté d'une mince paroi autorisée ; se rapproche par de petits bonds quand on l'appelle. |
| 52 · Gardien (`guardian`) | **Tireur à verrouillage.** Suit une cible du regard et lance des impulsions faibles en gardant sa ligne de vue. | **Rayon concentré** : canalise un tir puissant sur une cible ; le rayon visible annonce l'impact, et un obstacle ou un coup peut l'interrompre. | **Balayage** : fait pivoter lentement un rayon moins puissant sur un arc court pour contrôler une approche. | Inspecte une ligne sous l'eau sans révéler les blocs cachés ; replie ses pointes au repos. |
| 53 · Hoglin (`hoglin`) | **Percuteur frontal.** Frappe lourdement avec ses défenses et pousse légèrement la cible qui lui fait face. | **Encornement** : une courte charge soulève un monstre ordinaire et le rejette derrière son point d'impact. | **Barrage** : reste sur une ligne et repousse les premiers ennemis qui tentent de la franchir. | Dégage un chemin parmi des objets au sol sans casser le terrain ; gratte le sol avant le départ. |
| 54 · Cube de magma (`magma_cube`) | **Contrôle des appuis.** Bondit au contact et délivre un bref choc chaud à sa réception. | **Réception brûlante** : saute sur un point visible et produit une petite zone chaude temporaire qui gêne l'occupation de l'appui. | **Cœur chaud** : reste au sol et protège son voisinage par des impulsions courtes, au prix de sa mobilité. | Allume un foyer sur ordre explicite ; rougeoit doucement quand on se repose près de lui. |
| 55 · Champimeuh (`mooshroom`) | **Soutien de repas.** Reste près des alliés et repousse d'un coup de tête les ennemis qui approchent du groupe. | **Soupe commune** : distribue les portions de soupe réellement préparées aux alliés proches ; faim et effets de l'aliment s'appliquent normalement. | **Voile de spores** : forme autour d'elle un nuage mobile qui gêne la vue des monstres ordinaires pendant une pause de soin. | Sert les repas préparés ; laisse tomber quelques spores visuelles en se secouant. |
| 56 · Nautile (`nautilus`) | **Point de respiration.** Suit l'allié protégé et garde une courte impulsion d'eau pour écarter un assaillant. | **Cloche d'air** : maintient une petite poche d'air pour plusieurs bénéficiaires dans l'eau, tant que leur budget le permet. | **Coquille partagée** : crée un écran circulaire de faible capacité autour de lui, utile aussi sur terre. | Prépare une pause de plongée ; rentre un instant dans sa coquille après une caresse. |
| 57 · Phantom (`phantom`) | **Attaquant en piqué.** Décrit une orbite basse, plonge sur une cible puis doit reprendre son élan. | **Piqué** : un long passage annoncé frappe une cible exposée et se termine par une remontée vulnérable. | **Aile de secours** : rejoint un allié en chute et accompagne une descente contrôlée vers un appui accessible. | Escorte les passages en hauteur ; vient se poser à proximité quand le joueur se couche. |
| 58 · Piglin (`piglin`) | **Duelliste adaptable.** Utilise l'arme réelle confiée pour cette mission, mêlée ou arbalète, en privilégiant une cible isolée. | **Feinte armée** : simule une approche puis frappe ou tire lorsque la cible se découvre ; consomme sa munition si nécessaire. | **Repli couvert** : recule vers le joueur en maintenant une menace de tir, ou en parant avec son arme de mêlée. | Assiste les trocs avec les ressources du joueur ; examine un lingot montré sans le voler. |
| 59 · Pillard (`pillager`) | **Arbalétrier de position.** Recharge à couvert et tire des carreaux fournis depuis un angle choisi. | **Couverture** : dépense plusieurs munitions pour battre un passage par des tirs successifs. | **Tir croisé** : rejoint un second angle visible, puis attend le signal pour tirer sur la cible du joueur. | Aide à préparer une position de tir et annonce quand il est prêt ; vérifie son arbalète pendant les pauses. |
| 60 · Poisson d'argent (`silverfish`) | **Assaillant des interstices.** Se faufile par les passages disponibles au ras du sol et mord les pieds d'une cible. | **Accroche** : gêne brièvement le déplacement d'une petite cible en restant au contact, exposé aux coups. | **Sonde de paroi** : détecte une cavité immédiatement derrière une face proche et indique un autre angle d'approche possible. | Inspecte les infestations et cavités locales ; vient se cacher près des bottes du joueur. |
| 61 · Cube de soufre (`sulfur_cube`) | **Contrôle corrosif.** Bondit à courte portée et projette une goutte acide intrinsèque sur sa cible. | **Flaque acide** : couvre un petit appui d'une zone de dégâts temporaires ; aucun bloc ni objet n'est dissous. | **Éclaboussure** : remplace la zone persistante par un cône court de gouttelettes, plus mobile mais moins durable. | Aide à nettoyer l'oxydation d'un cuivre désigné avec la vraie hache et les droits du joueur ; frémit et fait des bulles visuelles au repos. |
| 62 · Lama de marchand (`trader_llama`) | **Garde de convoi.** Reste près de la personne ou de la monture escortée et crache sur ses poursuivants. | **Cercle de garde** : se déplace autour du bénéficiaire et répartit ses crachats entre les menaces qui approchent. | **Rassemblement** : rappelle vers lui les montures possédées et compagnons alliés consentants en désengagement, par des trajets praticables. | Regroupe une caravane ; compte visuellement ses compagnons de route en tournant la tête. |
| 63 · Marchand ambulant (`wandering_trader`) | **Auxiliaire d'évacuation.** Reste mobile entre les couverts et indique une position locale de repli. | **Échappée discrète** : utilise une vraie potion d'invisibilité préparée sur lui-même et mène le duo vers le repli ; le joueur conserve sa visibilité normale. | **Cache de secours** : apporte puis pose un lot réel de fournitures au repli choisi pour le récupérer après la fuite. | Partage les lieux d'approvisionnement déjà rencontrés ; déplie un petit geste de présentation lorsqu'il arrive. |
| 64 · Cheval-zombie (`zombie_horse`) | **Escorte tenace.** Avance au contact, frappe d'une ruade et résiste aux petites poussées pendant son déplacement. | **Route obstinée** : accompagne un allié consentant sur un court trajet au sol en l'aidant à résister au recul ; conserve murs et dangers. | **Ruade de retour** : revient vers son propriétaire et repousse le poursuivant qui lui coupe l'accès. | Escorte les trajets accidentés, de jour comme de nuit ; attend sans bouger au lieu convenu. |
| 65 · Zombie-villageois (`zombie_villager`) | **Secouriste exposé.** Reste derrière le duo, repousse une menace au contact et rejoint un compagnon allié blessé sur ordre. | **Veille** : consomme une nourriture fournie et canalise un soin lent sur un compagnon allié ; les dégâts interrompent. | **Relève** : aide un compagnon K.-O. à récupérer plus vite lors d'un vrai repos hors combat, avec une ration ; aucun retour immédiat en plein combat. | Accompagne une guérison native engagée avec ses ingrédients ; reste assis à côté du convalescent. |
| 66 · Piglin zombifié (`zombified_piglin`) | **Vengeur protecteur.** Garde un allié et riposte au contact contre son dernier agresseur, sans appeler de mobs sauvages. | **Désignation** : marque cet agresseur pour le groupe et se place entre lui et le bénéficiaire. | **Riposte commune** : attend un coup reçu par l'allié puis frappe une fois si l'agresseur est à portée ; pas de multiplication des dégâts alliés. | Alerte d'une colère proche observée ; se calme et baisse son arme au retour du joueur. |
| 67 · Vagabond (`stray`) | **Archer de poursuite.** Tire des flèches fournies et cherche un angle pour gêner les ennemis qui s'éloignent. | **Flèche froide** : une flèche préparée ralentit brièvement une cible, sans immobilisation en chaîne. | **Ligne de givre** : frappe avec une munition un petit passage au sol, dont le givre visuel temporaire gêne les traversées ennemies. | Indique les appuis glissants proches ; laisse un souffle froid discret en attendant. |
| 68 · Vindicateur (`vindicator`) | **Frappeur d'ouverture.** Attaque à la hache au contact, avec une préparation plus lisible qu'un loup. | **Fendre** : une frappe lourde balaie un petit arc et atteint plusieurs ennemis serrés. | **Brise-garde** : vise une garde frontale pour en réduire la capacité, avec un long geste esquivable. | Travaille une coupe de bois désignée avec le vrai outil et les droits du joueur ; plante symboliquement sa hache au repos. |
| 69 · Zoglin (`zoglin`) | **Percuteur de groupe.** Enchaîne de courtes frappes devant lui et peine à tourner vite. | **Charge continue** : traverse un court groupe d'ennemis ordinaires en ligne droite, puis reste essoufflé. | **Retournement** : pivote lourdement et balaie les ennemis proches qui l'ont entouré. | Pousse un lot encombrant au sol sur ordre ; tourne sur place avant de s'allonger. |
### Extraordinaires — 16
| Nº · Familier | Rôle et initiative autonome | G · Signature | Variante à apprendre | Vie commune : service et petit geste |
| --- | --- | --- | --- | --- |
| 70 · Creaking (`creaking`) | **Gardien de regard.** Se déplace et frappe quand sa cible regarde ailleurs ; observé, il s'immobilise et durcit sa garde limitée. | **Enracinement** : même observé, projette des racines temporaires autour de lui qui retiennent brièvement les monstres ordinaires. | **Sentinelle** : reste au point choisi et signale les passages ; reprend la garde de proximité lorsqu'un ennemi arrive. | Veille près d'une entrée et signale une intrusion observable ; incline lentement sa tête vers son propriétaire. |
| 71 · Grand gardien (`elder_guardian`) | **Ancre de groupe.** Tient sa position et lance de lentes impulsions défensives sur les ennemis proches. | **Sanctuaire** : maintient autour de lui une zone de garde partagée, de capacité finie, pendant que les alliés y restent. | **Onde de recul** : libère une impulsion large qui éloigne les petits ennemis ; abandonne sa garde pour l'émettre. | Sert de poste de rassemblement sous l'eau ; replie ses pointes lorsque tous sont revenus. |
| 72 · Enderman (`enderman`) | **Duelliste de placement.** Frappe au contact puis change brièvement d'angle entre des arrivées libres autorisées. | **Extraction** : rejoint un allié consentant et le ramène vers le point de repli préparé, à portée locale. | **Passage** : maintient un court passage entre deux appuis autorisés pour un nombre limité d'alliés consentants. | Pose un bloc fourni à portée de travail et selon les droits acquis ; présente parfois son bloc au joueur. |
| 73 · Évocateur (`evoker`) | **Mage de sol.** Fait surgir un croc faible et annoncé sous une cible proche, en restant derrière le duo. | **Mâchoires** : une ligne de crocs parcourt le sol jusqu'à un obstacle ; forte préparation, dégâts plafonnés par cible. | **Cercle de crocs** : prépare un cercle autour de sa position pour couvrir un allié encerclé, puis reste vulnérable. | Actionne un mécanisme de sol explicitement désigné et compatible, à portée normale ; referme les mains à la fin du rituel. |
| 74 · Ghast (`ghast`) | **Bombardier lent.** Cherche une ligne aérienne dégagée et lance des projectiles lents, annoncés et renvoyables. | **Boule explosive** : prépare un projectile de zone puissant ; la cible a le temps de l'éviter ou de le renvoyer. | **Tir de barrage** : répartit quelques impacts plus faibles dans une zone annoncée pour en chasser les occupants. | Une démolition distante pourrait être un ordre de travail distinct avec droits et coût ; descend près du joueur pour recevoir une caresse. |
| 75 · Ghast joyeux (`happy_ghast`) | **Protecteur aérien.** Se place au-dessus d'un allié et intercepte une quantité limitée d'attaques plongeantes ou de projectiles. | **Hissage** : soulève brièvement un allié consentant vers un appui proche, en restant exposé pendant le transport. | **Palier** : reste sur un point et offre un bref appui suspendu partagé, de capacité finie. | Aide à une mise en place en hauteur ; s'abaisse spontanément lors d'une pause pour se laisser approcher. |
| 76 · Golem de fer (`iron_golem`) | **Défenseur de première ligne.** S'interpose contre une menace proche et frappe lentement au contact. | **Interposition** : traverse quelques pas pour encaisser avec sa vie une attaque destinée à l'allié choisi. | **Uppercut** : prépare une frappe qui soulève une cible ordinaire et la sépare brièvement du groupe. | Aide à organiser un point de garde ou de collecte ; offre une fleur visuelle après une action protectrice. |
| 77 · Piglin barbare (`piglin_brute`) | **Duelliste de parade.** Reste face à sa cible et alterne garde courte et frappe lourde. | **Parade-riposte** : attend un impact frontal dans une fenêtre brève puis répond s'il l'a réellement bloqué. | **Défi** : attire l'attention d'un monstre ordinaire proche et le combat sur place ; les autres ennemis peuvent le contourner. | Garde un coffre ou une entrée sans contrôler les droits d'accès ; s'assoit à côté du joueur en gardant son arme près de lui. |
| 78 · Ravageur (`ravager`) | **Briseur de formation.** Avance lentement et frappe en arc court, avec des préparations très lisibles. | **Bélier** : charge jusqu'au premier obstacle ou ennemi lourd, puis délivre un choc frontal ; récupération longue. | **Piétinement** : reste sur place et produit une onde courte qui écarte les petits ennemis autour de lui. | Dégage une zone d'objets tombés vers un point de travail, sans piétiner les cultures ; souffle doucement au repos. |
| 79 · Shulker (`shulker`) | **Tourelle repliable.** Se fixe sur une surface autorisée, s'ouvre pour un petit tir et referme sa coque entre les attaques. | **Balle ascendante** : tire un projectile guidé destructible qui provoque une Lévitation brève, avec résistance aux contrôles successifs. | **Coque** : renonce au tir pour former une garde fixe de capacité limitée autour de son point d'ancrage. | Marque un appui de chantier et montre son orientation ; ouvre à peine sa coque pour saluer le joueur. |
| 80 · Cheval-squelette (`skeleton_horse`) | **Escorte amphibie.** Frappe puis se déplace avec aisance entre rive et eau peu profonde. | **Traversée spectrale** : guide un allié consentant sur une courte surface d'eau vers une rive, sans permettre l'arrêt au milieu. | **Relais de rive** : attend à un appui accessible et aide à extraire un allié proche de l'eau ou d'une mêlée sur terre. | Accompagne les itinéraires mêlant berges et eau ; fait résonner brièvement ses sabots au retour. |
| 81 · Renifleur (`sniffer`) | **Lecteur du terrain.** Signale les traces et déplacements proches au sol ; repousse du museau une cible qui l'approche. | **Labour défensif** : projette terre et racines visuelles sur un arc court, freinant les approches sans modifier le terrain sauvegardé. | **Flair** : localise brièvement une menace proche grâce à des traces récentes ; distingue position attestée et dernière piste. | Recherche les plantes et sites d'archéologie déjà connus ; se roule dans la végétation après une découverte. |
| 82 · Vex (`vex`) | **Assaillant de traversée.** Effectue de courts passages au contact ; sa traversée autorisée des parois exige une récupération avant de recommencer. | **Percée spectrale** : traverse une mince paroi autorisée et frappe une cible déjà désignée, puis doit ressortir dans un espace libre. | **Retour-éclair** : abandonne l'engagement et revient vers le joueur en frappant une seule cible qui coupe sa trajectoire. | Exécute un geste de construction ou de minage avec les outils, ressources et droits acquis ; tourne autour de la main qui le caresse. |
| 83 · Sorcière (`witch`) | **Alchimiste de terrain.** Reste à couvert et distribue ou lance les potions explicitement préparées, en évitant les alliés. | **Lancer précis** : utilise une vraie potion jetable sur la cible ou le point choisi ; son contenu réel détermine l'effet. | **Brume** : transforme une dose réelle compatible en petite brume mobile, avec quantité finie et attribution conservée. | Prépare une distribution de potions déjà fabriquées ; fait tinter doucement ses flacons au repos. |
| 84 · Wither squelette (`wither_skeleton`) | **Duelliste d'attrition.** Frappe lentement à l'épée et tient sa portée, sans Wither permanent sur chaque coup de base. | **Entaille funèbre** : une attaque annoncée applique une dose limitée de Wither à sa cible. | **Garde funèbre** : renonce à avancer pour couvrir un allié et préparer une riposte contre le premier assaillant à portée. | Aide une tâche de coupe désignée avec le vrai outil ; abaisse son arme et incline la tête après un retour. |
| 85 · Nautile-zombie (`zombie_nautilus`) | **Extracteur ancré.** Reste proche d'un allié et résiste aux courants ; donne un choc de coquille au poursuivant. | **Remontée** : accompagne un allié consentant vers une eau libre plus haute et proche, en restant exposé au trajet. | **Amarre** : forme entre lui et un allié consentant un lien court qui aide à résister aux poussées ; se rompt si l'un quitte sa portée. | Stabilise une récupération d'objets sous l'eau ; s'immobilise contre son propriétaire après un sauvetage. |
### Légendaires — 3
| Nº · Familier | Rôle et initiative autonome | G · Signature | Variante à apprendre | Vie commune : service et petit geste |
| --- | --- | --- | --- | --- |
| 86 · Ender Dragon (`ender_dragon`) | **Contrôle aérien de zone.** Effectue de larges passages avec une frappe de contact mesurée ; tourne difficilement dans un lieu étroit. | **Souffle draconique** : prépare un souffle au sol qui crée une zone dangereuse annoncée, dont les occupants peuvent sortir. | **Ailes protectrices** : descend devant un groupe et souffle pour écarter les petites menaces et certaines brumes ; s'expose en couvrant la retraite. | Observe un trajet déjà reconnu depuis les airs, sans découverte distante gratuite ; vient poser sa tête près du joueur au repos. |
| 87 · Warden (`warden`) | **Sentinelle des vibrations.** Localise les mouvements proches puis frappe lourdement ; une cible immobile peut lui faire perdre sa piste. | **Onde sonique** : charge une attaque dirigée vers une position récemment localisée ; avertissement clair, portée locale et interruption possible. | **Écoute profonde** : s'immobilise et partage les vibrations locales pour préparer une interception, au prix de son offensive. | Signale les pas proches et certains dangers vibrants ; se calme en reconnaissant les déplacements de son propriétaire. |
| 88 · Wither (`wither`) | **Pression répartie.** Ses têtes surveillent plusieurs angles ; ses petits tirs se partagent un seul budget offensif total. | **Trois crânes** : prépare une salve répartie entre plusieurs cibles ou concentrée sur une seule, avec dégâts et Wither bornés. | **Moisson** : canalise un tir unique ; une part des dégâts réellement infligés restaure sa propre vie dans une limite stricte. | Aide à une démolition explicitement préparée, si cette fonction est retenue avec ses droits et coûts ; les trois têtes se tournent vers le joueur à son retour. |
## 4. Distinguer les voisins
| Famille proche | Différence de jeu recherchée |
| --- | --- |
| Chat / loup / renard / ocelot | Le chat défend la proximité ; le loup intervient sur une menace ; le renard récupère et attire ; l'ocelot exploite un angle et se retire. |
| Âne / mule / Allay | L'âne ravitaille un point ; la mule assure des échanges au sol et se défend ; l'Allay livre un petit lot par les airs mais reste fragile. |
| Cheval / dromadaire / cheval-zombie / cheval-squelette | Le cheval perce une ligne ; le dromadaire franchit un obstacle ; le cheval-zombie résiste aux poussées pendant une escorte ; le cheval-squelette relie les rives. |
| Dromadaire / dromadaire momifié | Le premier franchit et couvre à l'arrêt ; le second ouvre une traversée par la poussière et l'extraction. |
| Squelette / embourbé / desséché / vagabond / pillard | Précision sur une cible / usure par poison / réduction temporaire de sa force / gêne de poursuite / tirs successifs sur un passage. Leurs flèches et recharges sont des coûts réels. |
| Slime / cube de magma / cube de soufre | Repositionner et rebondir / occuper un appui par la chaleur / interdire temporairement un petit espace par l'acide. |
| Mouton / tatou / tortue / golem de fer | Amortir un impact / intercepter ponctuellement un projectile / couvrir un angle en avançant / encaisser personnellement pour un allié. |
| Hoglin / zoglin / ravageur | Soulever une cible / traverser un petit groupe / provoquer un choc frontal large au prix d'une longue préparation. |
| Gardien / grand gardien / Warden | Rayon visuel sur une cible / protection de position partagée / lecture des vibrations et onde annoncée. |
| Morue / têtard / nautile / nautile-zombie | Secours d'air individuel / recherche d'issue et petite garde / pause respiratoire de groupe / extraction et ancrage. |
| Saumon / dauphin | Le saumon impose une direction par un jet ; le dauphin escorte un bénéficiaire et revient le chercher. |
| Calmar / poulpe luisant / poisson tropical | Masquer une retraite / conserver une marque sur une cible / coordonner plusieurs cibles visibles ou fournir un reflet-leurre. |
| Vache / champimeuh / villageois / zombie-villageois / sorcière | Retirer des états par du lait / distribuer les soupes / organiser un ravitaillement abrité / soigner lentement un compagnon / employer l'alchimie préparée. |
| Araignée / araignée venimeuse / poisson d'argent / Vex | Utiliser la hauteur / maintenir un contact venimeux / exploiter les interstices au sol / traverser ponctuellement une paroi autorisée. |
| Piglin / piglin zombifié / piglin barbare / vindicateur | Adapter son arme et feinter / répondre à une agression / parer en duel / ouvrir une garde ou un groupe. |
| Lama / lama de marchand | Le premier interrompt une cible par ses crachats ; le second organise la défense mobile d'un convoi. |
| Creeper / Ghast / Wither | Risquer une approche pour une détonation / annoncer un bombardement distant renvoyable / répartir une pression entre plusieurs angles. |
Les légendaires ajoutent une échelle ou une préparation particulière. Ils doivent
perdre des occasions que les petits compagnons saisissent facilement : tourner
dans un passage, rejoindre vite un allié, intervenir sans longue charge. Le même
budget de performance doit garder un commun désirable à progression comparable.
## 5. Exemples de combats à deux ou plusieurs
Les combinaisons viennent des propriétés des actions et des objets. Elles
fonctionnent aussi avec les outils du joueur ; aucun bonus secret n'exige une
paire d'espèces nommée dans le code.
- **Loup et bouclier du joueur** : le joueur tient l'ennemi de face, le loup
intercepte son attaque puis le joueur profite de l'ouverture.
- **Renard et Creeper de deux joueurs** : le renard attire un petit groupe vers
un point choisi ; le second joueur ordonne la détonation au bon moment.
- **Tortue et squelette** : la garde protège une approche frontale ; l'archer
change d'angle pour ne pas tirer dans la garde et utilise ses vraies flèches.
- **Breeze et sorcière** : une rafale déplace une brume préparée en conservant
sa dose, ses bénéficiaires déjà servis et sa durée restante.
- **Grenouille et magma** : la langue déplace un petit ennemi vers un appui
chaud déjà préparé ; sa résistance empêche de répéter indéfiniment l'entrave.
- **Allay et joueur alchimiste** : l'Allay apporte la potion préparée pendant
que le joueur garde son arme en main ; le joueur choisit le moment de la boire.
- **Nautile et dauphin** : le nautile prépare une pause respiratoire ; le dauphin
accompagne l'allié consentant jusqu'à ce point en restant attaquable.
- **Araignée et arc du joueur** : l'araignée ferme une issue par son fil ; le
joueur vise le trajet encore libre. L'ennemi peut détruire ou contourner le fil.
- **Golem de cuivre et installation** : le joueur attire une cible dans un
couloir ; le golem rejoint le bouton autorisé et déclenche le piège préparé.
- **Mouton et construction** : le mouton prépare une réception avec une laine ;
le joueur choisit alors un saut de travail plus engagé.
## 6. Premier prototype et critères de réussite
### FAM-COMBAT-01 — Loup, Slime, tortue
Résultat attendu : une petite rencontre PvE jouable avec engagement, protection,
G, rappel, dégâts sur le compagnon et K.-O. Une technique par espèce suffit
d'abord ; les variantes attendent que le trio soit agréable à diriger.
Scénarios : une route dégagée, un passage étroit, un archer en hauteur et un
duo de monstres. Essais solo puis deux joueurs, à capacités et équipement égaux.
Les personnages Sanctuary débutants à trois cœurs font partie des essais.
À vérifier en partie :
1. Le joueur comprend où est son compagnon, qui il vise et quand il faut le
rappeler. Un ordre impossible explique son refus sans bloquer le compagnon.
2. Le loup crée une interception, le Slime déplace une cible, la tortue couvre
effectivement une retraite. Le changement de compagnon change les décisions.
3. Le joueur doit encore se déplacer, viser et se défendre. Laisser tourner le
compagnon seul ne devient pas la manière optimale de combattre ou de produire.
4. Il existe une occasion identifiable de sauver son compagnon et une occasion
où le compagnon aide le joueur. Le K.-O. laisse une suite jouable à la sortie.
5. Un rappel, un changement d'œuf ou une reconnexion ne restaure pas la santé,
ne réarme pas un pouvoir et ne duplique aucun compagnon ni objet.
6. Les protections et déplacements respectent leurs angles, leur capacité et
les collisions. L'ennemi peut agir entre deux entraves successives.
7. Un combat à deux reste lisible et évite les collisions frustrantes entre alliés.
### FAM-COMBAT-02 — Vérifier les familles difficiles
Ajouter ensuite **squelette, Allay, morue, Creeper et sorcière** pour éprouver
les munitions réelles, livraisons, aquatiques à terre, explosions et consommables.
Tester aussi les 22 communs du Hello World : chaque choix doit offrir une aide
perceptible dans les premières rencontres, sans dépendre d'une ressource avancée.
### FAM-BOND-01 — Apprentissage et mémoire
Après le premier trio : variante de technique, tempérament et quelques souvenirs
attestés. Les noms et tailles acquis continuent d'appartenir au même individu.
Tester les parcours de soin, repos, reconnexion et prestige avant généralisation.
### FAM-CATALOG-07 — Généraliser aux 88
Implémenter par familles de comportements, puis vérifier chaque espèce dans au
moins une situation favorable et une situation défavorable. Inclure les arènes
aquatiques, le relief, les lieux étroits, le jour et la nuit. Mesurer ensuite les
rencontres à plusieurs joueurs et les cas de foule avant de conclure à l'équilibre.
## 7. Décisions restant à chiffrer ou à contractualiser
- Vie, cadence des initiatives, dégâts, garde, portées, durée des entraves,
récupération des signatures et prix des soins. Commencer par des profils de
rôle comparables, puis ajuster les espèces à partir des essais.
- Conditions exactes d'entrée et sortie de combat, récupération après K.-O.,
rappel sous pression et traitement d'un compagnon tombant dans le vide.
Un retour automatique de confort ne doit pas donner de soin ni d'invulnérabilité.
- Obtention des œufs après le familier de départ, apprentissage des variantes,
lien avec les aptitudes achetées et droit de transférer un compagnon.
- Place des anciens passifs utilitaires : une partie devient des gestes du
compagnon ; chaque suppression ou conservation devra être explicitement recensée.
- Différences entre PvE, duel volontaire et autres règles PvP ; attribution des
éliminations et du butin, prévention du farm autonome, charge serveur mesurée.
- Sort exact des explosions et des allumages en mode travail, avec coûts, droits,
aperçu et limites. Le comportement beta.044 reste inchangé en attendant ce contrat.
- **Contrat de migration indispensable avant du code de persistance** : identité
de l'individu, santé, K.-O., techniques, souvenirs, échange de l'œuf, mort,
déconnexion, prestige et données inconnues. Préserver noms, tailles, achats et
identifiants existants ; aucune réécriture d'un monde n'est demandée ici.
## 8. Vérification du document
La livraison de ce ticket est documentaire : catalogue proposé, règles communes,
différences entre espèces et parcours de prototype.
Contrôle local effectué le 15 septembre 2026 par lecture du registre Java et du
Markdown : **88 identifiants uniques, 88/88 conformes, numéros 01–88 continus** ;
les groupes contiennent respectivement **22, 22, 25, 16 et 3** espèces, toutes
dans leur rareté actuelle. Chaque fiche a son initiative, sa signature, sa
variante et sa vie commune. Les liens locaux du document sont valides.
Les versions binaires, le manifeste packwiz et les installations de jeu ne sont
pas modifiés par ce ticket. Les commandes Gradle et les essais de gameplay
concernent les futurs tickets de code ; ils ne valident pas une proposition écrite.
+46
View File
@@ -0,0 +1,46 @@
# beta.029 — réaction des familiers aux coups
## Contrat
Un clic gauche sur un familier provoque son animation de blessure, son cri natif
et un recul à l’opposé de l’attaquant. Le recul utilise la physique Minecraft
(force 0,4), avec une petite impulsion vers le haut lorsqu’il est au sol.
Le suivi et les déplacements autonomes cèdent la place pendant 8 ticks (0,4 s),
puis reprennent. Le mouvement respecte les blocs ; le familier garde son retour
automatique près du propriétaire s’il s’éloigne ou se retrouve bloqué.
La voix vient du mob associé à l’œuf, avec son volume, sa catégorie sonore et
la hauteur de sa voix bébé lorsqu’il dispose d’un bébé. Le gardien utilise son
cri terrestre ou aquatique selon l’état du familier. Les espèces silencieuses
et le drapeau natif Silent restent silencieux. Le son est envoyé par le serveur
aux joueurs proches. Le modèle utilisé pour lire la voix n’est jamais ajouté
au monde et ne reçoit aucun tick ni comportement autonome.
Le délai de l’animation existante (10 ticks) évite de cumuler les impulsions et
les cris à chaque clic. Aucun dégât, usure, enchantement offensif, butin, XP ou
cible hostile n’est créé par ce geste. Les protections entre membres d’une même
pile restent applicables, y compris au familier porté. La caresse reste au clic
droit, avec ses cœurs. Aucune modification de sauvegarde ni migration.
## Vérifications
**38 tests serveur natifs réussis**, dont 6 nouveaux scénarios : paquets sonores
des 88 types d’œufs, voix de bébé, variantes du
gardien, Silent, recul dans les quatre directions, délai anti-cumul, mouvement
réel au sol/en vol/du poisson, collisions avec les murs, reprise du suivi,
invulnérabilité, arme intacte et protections du portage.
`./gradlew check build assemblePack -PsanctuaryFocusedTests=carry,familiar,movement,familiarhit`
réussit en 3 min 42 s. Les paquets sonores réels sont capturés sur une connexion
Minecraft de test ; le mouvement passe par les ticks communs et physiques natifs.
Les suites familiers, mouvements et piles de joueurs passent ensemble.
L’écoute et l’observation graphique restent à confirmer : session Mac verrouillée.
Export local : [Sanctuary-beta.029.mrpack](../build/Sanctuary-beta.029.mrpack).
Client et serveur beta.029 ensemble. Versions, ZIP, 1 256 classes compilées et
JAR imbriqués vérifiés. Seuls FamiliarEntity et les accès aux propriétés vocales
natives changent ; la carte, le portage, le plongeon et JEI conservent leur code.
L’export beta.028 reste intact. Aucun déploiement effectué.
SHA-256 MRpack : `b545dac3970b971f96cd56e6539451edfc265ec93c206029a97571b304c2d885`.
Reçu : `build/familiar029-artifact.json` ; vérificateur : `build/verify-familiar029.py`.
+128
View File
@@ -0,0 +1,128 @@
# beta.020 — interactions, lecture des œufs et plongeon
Ticket du 13 septembre 2026, branche `codex/familiar-interactions-beta020`.
**Livraison locale beta.020 vérifiée — 13 septembre 2026.**
## Demande retenue
- Maj + clic droit sur un joueur : monter sur sa tête. Sur un animal : le porter,
puis refaire le geste pour le déposer. Le porteur est ralenti et les coups entre
porteur et passager sont interdits. Une seule place, sans empilement dans beta.020 ; les piles sont ajoutées par
[beta.027](player-stacks-beta027.md).
- Caresser le familier ne produit que des cœurs. Le clic gauche provoque une
réaction visuelle de coup sans retirer de vie. Préférer son modèle bébé natif.
[beta.029](familiar-hit-feedback-beta029.md) ajoute le cri de l’espèce et le recul.
- Nommer l’œuf à l’enclume ou utiliser une étiquette sur son propre familier.
Le nom appartient à l’œuf ; déséquiper l’œuf fait disparaître le compagnon.
- Nom de l’œuf coloré par rareté : blanc, jaune, vert, bleu, violet.
L’infobulle présente les noms cryptiques du passif et de l’actif. L’aptitude
**Étude des familiers**, à quatre niveaux, révèle les explications.
- Retirer l’écran Familier des aptitudes et le bouton d’activation du pouvoir.
Les réglages et le carnet rejoignent Habitant. Les aides alliées sont acceptées
par défaut ; leur réglage reste personnel.
- Saut en sprint, puis touche S’allonger en vol : plongeon vers l’avant, une
impulsion par saut. L’arrivée au sol ou dans l’eau termine cette posture.
[beta.028](dive-until-collision-beta028.md) retire ensuite la limite de durée
et ajoute explicitement les collisions au plafond.
- Taille aléatoire propre à chaque œuf, avec des familiers minuscules ou géants.
## Contrat de données
Les pièces jointes existantes, leurs schémas et les identifiants des œufs restent
stables. Un nouveau reçu indépendant `sanctuary:companion_study`, schéma 1,
conserve l’achat de l’aptitude après mort et prestige. Absent : aptitude verrouillée.
Invalide ou version inconnue : reçu conservé, achat et révélation refusés.
Les choix d’aide déjà enregistrés sont conservés ; l’absence d’état utilise
le nouveau défaut accepté. Les noms utilisent le composant natif `CUSTOM_NAME`.
Le portage et le plongeon sont temporaires. Aucun animal n’est converti en objet,
dupliqué ou remplacé : son UUID, ses équipements et ses données restent ceux de
l’entité native. Les animaux portés sont sauvegardés comme entités indépendantes,
sans enregistrer le portage dans les données d’un joueur. Une déconnexion, mort
ou transition de dimension termine le portage. Aucun monde personnel n’est
modifié par les outils de développement.
Client et serveur beta.020 doivent être installés ensemble. Cette livraison
conserve les prix et recharges des 88 pouvoirs et les règles d’obtention des œufs.
Le premier équipement d’un œuf sans taille ajoute au composant natif
`minecraft:custom_data` une entrée `sanctuary:familiar_size`, composée de
`schema: 1` et `per_mille: 120..6000`. Les autres données de l’objet restent
intactes. Les anciens œufs reçoivent ce trait lorsqu’ils sont équipés, sans
parcours des mondes ni conversion des inventaires existants. Un œuf équipé
occupe une case unique ; les œufs d’une pile sont individualisés lors de leur
équipement. Une copie de l’œuf déjà individualisé garde sa taille.
Le trait voyage avec l’objet lors d’un don, d’un renommage, d’une mort ou d’un
prestige, et survit à la sauvegarde/reconnexion. Une entrée inconnue ou invalide
est conservée telle quelle ; le rendu utilise alors la taille ordinaire.
## Pouvoirs de perception et téléportations
Les détections de blocs connus, le sonar, les circuits et les marques restent
visibles derrière les parois. Les téléportations Endermite / Enderman peuvent
traverser les murs ; le point d’arrivée reste libre et soutenu, dans la portée
et les zones autorisées. Le freinage d’une chute efface sa distance accumulée :
un atterrissage après le ralentissement ne réapplique pas les dégâts antérieurs.
Une nouvelle chute après la fin du pouvoir accumule à nouveau sa propre distance.
## Gestes dans le jeu
Maj + clic droit prend un animal ou monte sur un joueur. Un nouveau Maj + clic
droit dépose le passager même avec la main vide, sans devoir viser au-dessus de
sa propre tête. Le joueur porté relâche Maj puis appuie de nouveau pour descendre.
Le porteur se déplace 25 % moins vite ; la réduction disparaît dès qu’il est libre.
Les chats, loups et perroquets utilisent une pose assise ; les autres animaux
reposent au-dessus de la tête. L’espace occupé est vérifié avant de les porter.
Les noms utilisent l’œuf et l’étiquette natifs. Les modèles bébés sont choisis
lorsqu’un modèle bébé existe dans Minecraft ; aucune intelligence hostile n’est
appliquée au familier. La caresse garde uniquement les cœurs. Le coup léger est
une animation, sans dégâts, enchantement offensif ni usure de l’arme.
L’infobulle native affiche la rareté et deux noms d’effets. **Progression → Étude
des familiers** coûte 4 niveaux et ajoute les explications aux infobulles. Aucun
mod Item Description supplémentaire n’est nécessaire pour cet affichage.
**Habitant** contient le choix d’aide alliée et le carnet. **G** reste la touche
reconfigurable du pouvoir ; aucun bouton d’activation dans ces menus.
## Tailles des familiers
La taille est tirée par le serveur une seule fois, indépendamment de l’espèce et
de la rareté. Elle multiplie le modèle réduit du familier, bébé lorsque possible :
| Fréquence | Multiplicateur visuel |
| --- | --- |
| 90 % | ×0,65 à ×1,50 |
| 5 % | ×0,12 à ×0,35 |
| 5 % | ×2,50 à ×6,00 |
L’infobulle indique Minuscule, Petit, Ordinaire, Grand ou Colossal après le
premier équipement. Le nom affiché suit la hauteur du modèle et les volants
géants s’estompent en fonction de leur encombrement visuel. Les pouvoirs,
la vitesse et le corps utilisé pour la navigation restent identiques : la
taille visuelle ne bloque pas le compagnon dans une porte et ne modifie pas
l’équilibrage de son œuf. La zone d’interaction reste celle du familier mobile.
## Vérifications de livraison
- `./gradlew check build assemblePack -PsanctuaryFocusedTests=familiar,companions,accessories,movement,progression,cycle,mining,building,inventory,inventoryflow,sorting,tutorial` : contrôles purs et **104 tests serveur réussis**.
- Portage joueur/animal, position sur la tête, coups interdits, ralentissement, sauvegarde native sans duplication ni véhicule-joueur enregistré, dépose et conflit avec double-Maj.
- Achat de l’Étude facturé une fois, sauvegarde/rechargement, mort et prestige réel ; données invalides conservées et refus historique des aides maintenu.
- Taille tirée une fois, distribution bornée, données étrangères conservées, sauvegarde et transfert de l’œuf à un autre habitant sans changement de taille.
- Plongeon autorisé après départ en sprint, sans deuxième impulsion en vol ; sortie dans l’eau sans déverrouiller Nage. Poule freinant une chute déjà accumulée, nouvelle chute native ; sonar derrière un mur et téléportation au travers vers un espace libre.
- Deux parcours client natifs dans de nouveaux mondes de développement, graine 42 : achat et infobulles, Habitant aux échelles 2/3/4, Maj + clic droit réel pour porter/déposer, chat bébé assis, plongeon avec une touche reconfigurée et rendu horizontal, synchronisation de taille et captures des extrêmes.
- Les 88 modèles sont extraits à deux instants, puis aux multiplicateurs ×0,12 et ×6. Éclairage, fondu du corps et des yeux des volants, activation réelle avec G, recharge commune et échange de villageois restent validés.
- Le MRpack et les JAR sont contrôlés : CRC, versions exactes, identité du mod embarqué et de Demeure imbriqué, FR/EN, 88 passifs/actifs et leurs noms cryptiques, absence de code de test, sources identiques à celles du build. Les anciens PNG et l’export beta.019 restent inchangés.
Ces essais ne remplacent pas un équilibrage collectif des 88 paires de pouvoirs.
Le rendu et les gestes de portage ont été observés sur un client intégré ; les
interactions entre deux joueurs sont couvertes côté serveur, sans essai visuel
à deux clients. L’obtention des œufs, les rangs I–III et Anomaly restent à définir.
Aucune installation personnelle ni aucun canal de mise à jour n’a été modifié.
Export : [Sanctuary-beta.020.mrpack](../build/Sanctuary-beta.020.mrpack).
Reçu : `build/familiar020-artifact.json` ; captures : `build/familiar020-evidence/`.
SHA-256 MRpack : `98d1cdb8aa5b7b5249a4e23eabea963aff394cb416d8d78f7bc1bf49450c9e78`.
SHA-256 JAR : `3ec020eb381653f4cc53dad719338db9ec534c83f1c1a8552f0c77d42d3e739b`.
+66
View File
@@ -0,0 +1,66 @@
# beta.039 — connaissance alimentaire, panoramas et têtes numérotées
Contrat établi avant modification. Branche `codex/food-knowledge-beta039`.
Minecraft 26.3-pre-2 ; les autres travaux présents dans le dépôt sont conservés.
## Connaissance alimentaire
L’aptitude « Connaissance alimentaire » coûte quatre niveaux d’XP. Elle révèle
les apports avant dégustation. Sans elle, finir de consommer un aliment apprend
ses valeurs ; le tenir, le fabriquer, le planter, le donner à un animal ou
interrompre la consommation ne suffit pas. Les infobulles et les aperçus du HUD
suivent la même règle. Les réserves actuelles de faim et saturation restent
visibles. Les recettes et le droit de manger restent libres.
Un attachement serveur additif `sanctuary:food_knowledge`, schéma 1, mémorise
les identifiants goûtés et le reçu d’achat. Il se sauvegarde avec l’XP, se copie
à la mort et reste au New Game+. Aucun changement du schéma de progression ni
des anciens achats. À la première lecture, les critères réussis de l’advancement
Minecraft « Une alimentation équilibrée » peuvent attester une consommation,
uniquement si leur prédicat correspond à un seul type d’aliment. Une donnée
invalide est conservée et bloque l’écriture. Aucune sauvegarde personnelle
n’est modifiée pendant les travaux.
## Captures de panorama
Une option de capture permet d’utiliser la touche de screenshot pour produire
les six faces `panorama_0.png` à `panorama_5.png`, à 90° selon l’ordre Minecraft.
Chaque capture utilise un nouveau dossier, sans écraser d’images. Le mode normal
reste celui par défaut. Export complémentaire demandé : profondeur et masque de
brume reconstitué, avec paramètres de projection/fog pour rendre le calcul
explicite. Le moteur ne possède pas de texture de fog indépendante.
## Têtes numérotées et skin
Une nouvelle tête porte le pseudo suivi du numéro de mort, depuis le compteur
Minecraft `deaths` : première mort « Poupoutain 1 ». L’indice est figé au décès,
conservé au transport et au vidage. Les morts antérieures comptent ; le prestige
ne remet pas ce compteur à zéro. Les anciennes têtes sans indice affichent leur
nom sans inventer de numéro rétroactif. Le champ `death_number` est additif au
marqueur de tombe schéma 1. Les informations de mort et le retrait seul restent.
Le rendu cosmétique utilise le renderer natif des têtes, son cache de skins et
le profil stocké sur la tête.
## Validation
`./gradlew check build assemblePack assembleTestPack` passe, avec **68 tests
serveur** ciblant l’accueil, la connaissance alimentaire, les tombes, la
progression, les inventaires, les accessoires, le cycle, les recettes et le temps
réel. Les 14 784 comparaisons entre aperçu alimentaire et consommation native
restent valides.
Le parcours client natif vérifie les infobulles cachées/apprises, un véritable
achat à quatre niveaux, le renderer de tête lié au cache du propriétaire,
l’ouverture des options et deux captures successives de six faces à 256×256.
Chaque face fournit couleur PNG, profondeur PNG 16 bits, profondeur brute
float32 little-endian (`depth_N.f32`) et brume PNG 16 bits. `capture.json` décrit
l’ordre des faces, les matrices, la convention de profondeur inversée et les
paramètres du brouillard. Le test vérifie la profondeur des surfaces, la
projection, la restauration de la caméra/fenêtre/FOV et le screenshot normal.
Résolutions proposées : 256, 512, 1 024 (défaut), 2 048 pixels par face.
Le masque reconstruit la brume du terrain à partir de sa profondeur : transparence,
nuages, particules et shaders externes peuvent différer du rendu final. Il ne
constitue pas un buffer de fog natif séparé. Les six vues conservent la brume
visible. Captures et exports vérifiés dans `build/food039-evidence/release/`.
Pas de déploiement dans une installation personnelle.
+80
View File
@@ -0,0 +1,80 @@
# beta.043 — blocs portés fonctionnels
Branche `codex/functional-head-blocks-beta043`.
## Contrat demandé
Un bloc utilisable porté dans le slot cosmétique reprend ses interactions
Minecraft. Clic droit par un autre habitant ; clic droit sur le slot pour le
porteur. Les inventaires sont publics. Les recettes, combustibles, distances,
permissions et conditions environnementales restent celles du serveur.
Retirer un bloc ordinaire ferme ses menus et rend son contenu, comme sa casse,
sans supprimer les objets. Une Shulker conserve son contenu ; le coffre de
l'End ouvre le stockage personnel du visiteur. Les contenus ne doivent jamais
être copiés à la fois dans l'objet retiré et dans les objets rendus.
Les formes cosmétiques restent sans collision. Aucun bloc temporaire ne doit
être placé dans le terrain ni remplacer un bloc du monde.
## Contrat de données additif
Les trois accessoires gardent `sanctuary:accessories`, schéma 1. Un champ voisin
`sanctuary:head_block` contient l'état natif du bloc pendant son équipement,
avec un schéma et l'identifiant du bloc. Il n'appartient pas à l'item ordinaire :
copier celui-ci ne copie pas un stockage. Le retrait détruit cette session
après restitution. Les anciennes sauvegardes sans ce champ ouvrent un bloc vide.
Les données Shulker restent dans les composants natifs de l'item.
Ce ticket ne migre aucun chunk, aucune génération ni aucun identifiant existant.
Les changements de dimension ferment les visiteurs ; les traitements reprennent
près du porteur. Déconnexion et sauvegarde gardent le bloc équipé.
## Périmètre livré
Les interactions natives sont dispatchées pour 117 familles de blocs : menus de
travail et de stockage, cuissons, infusion, livres, disques, pots, chaudrons,
leviers, boutons, portes, lits et interfaces techniques. Les signes, bougies,
gâteaux avec bougie et statues gardent leurs gestes Sanctuary existants.
Le son du jukebox suit le porteur. Les éditeurs de blocs techniques restent
réservés au mode opérateur et nécessitent de rester dans la même case pendant
l'édition. Le coffre de l'End demeure personnel à chaque visiteur.
Les lits portés sont utilisables par un autre habitant ; pour dormir dans son
propre lit, il faut le poser. Le lit conserve les conditions natives et le point
de réapparition à sa position lors de l'utilisation : déplacer le porteur ne
transforme pas ce point en destination mobile.
Cette adaptation ne simule pas un chunk autour de la tête : les pistons ne
poussent pas le terrain depuis le cosmétique, les cultures ne reçoivent pas de
random ticks et un bloc suspendu ne remplace pas les fondations d'une balise,
un réseau de redstone ou un portail. Les conditions natives restent requises.
## Icône officielle
Le fichier fourni `sanctuary_icon-export.png` est repris sans modification dans
`assets/sanctuary/icon.png` et `packwiz/icon.png`. SHA-256 :
`6214b44ad058b2ec43d46e8d3d8c33ae0862ae616a7373d7a1b0edd5c415f8b5`.
L'icône est déclarée dans Fabric, incluse dans les overrides du MRpack et dans
le modèle Prism sous la clé stable `sanctuary-beta`. L'import local de Prism
recherche l'icône du pack dans ces overrides
([code officiel](https://github.com/PrismLauncher/PrismLauncher/blob/develop/launcher/InstanceImportTask.cpp)).
Aucune instance personnelle n'est modifiée par l'assemblage.
## Vérifications
`check build assemblePack assembleTestPack` et **41 tests serveur** passent.
22 menus natifs, 117 familles avec usage main vide, stockage public partagé,
shift-click, retrait, mort/tombe, cuissons, sauvegarde, bouton temporisé après
rechargement, Shulker et coffre de l’End ont été vérifiés.
Complément de validation sous beta.044 : le parcours client natif passe après
désactivation de VSync dans les seuls réglages du client de développement.
Le coffre porté affiche ses trois rangées et les six rangées du joueur ;
le shift-click est attesté côté serveur, le retrait ferme le menu, puis le
four et l'éditeur opérateur natifs s'ouvrent. Log : build/egg044-client1.log.
La capture du coffre a été relue. L'artefact beta.043 reste immuable.
Aucun EULA accepté, aucun serveur réseau dédié démarré et aucune installation
personnelle déployée.
+105
View File
@@ -0,0 +1,105 @@
# Alpha.23.1 — île naturelle, secrets et continents
Contrat du ticket **WG-27**, branche `codex/natural-secrets-alpha23`.
Cette livraison réunit le Blocodex alpha.23 et la génération `sanctuary:island_v23`.
Les résultats des essais sont consignés dans [le rapport](testing-alpha23.1.md).
## Sanctuary Island
Le point de départ reste naturel. Les quartiers Lost City et les infrastructures
ordinaires Sanctuary ne sont plus demandés sur l’île initiale. Leur code et les
anciennes générations sont conservés ; les expansions Lost City restent possibles.
Les structures vanilla ne sont pas supprimées : leur admission dépend du biome,
du relief, des appuis et des volumes déjà occupés.
La sélection des lieux Sanctuary conserve l’observatoire, un atelier caché,
la grande traversée et la salle d’expansion indépendante. La piscine attenante
est retirée ; les égouts et leurs ouvertures restent possibles. Les anciennes voies
ferrées peuvent exister sans gare ni bâtiment au bout : leur remise en service
reste une construction des joueurs.
Le **sanctuaire minéral** est une grande cavité géologique explorable, dominante
pierre et cobblestone, avec voûtes, piliers, corniches et filons minables. Il peut
affleurer sur les flancs ou sous l’île avec des attaches rocheuses. L’enveloppe
maximale est 79 × 73 × 27 ; ce volume ne désigne pas une façade rectangulaire.
Il ne comporte ni briques, mobilier, machines, ni éclairage manufacturé.
Le mot laboratoire reste réservé à la future structure des Mooblooms.
Le gardien et le portail des Cavernes ne sont pas activés ici. L’intention de
progression demeure : vaincre le gardien stabilisera l’accès aux Cavernes pour
tout le serveur, puis chacun pourra construire son portail. Le Deep Dark et les
cités anciennes appartiendront à ces Cavernes. Le lieu des raids appartient aux
expansions et n’est pas construit dans cette livraison.
## Structures natives et garantie d’expansion
Le catalogue s’appuie sur les 52 identifiants de structures présents dans le JAR
Minecraft 26.3-pre-2 : 47 de l’Overworld, dont la cité ancienne réservée aux Cavernes,
et cinq propres au Nether ou à l’End. Les petits donjons `monster_room` sont des
features et font l’objet d’un suivi séparé. Les modèles, identifiants, coffres,
spawners et comportements natifs sont conservés.
Les placements distinguent surface, sous-sol et milieu aquatique. Les hauteurs
souterraines vanilla ne sont pas recopiées sous Y=0 : elles sont adaptées à la
roche de l’île. Les monuments conservent aussi leur hauteur lors du rechargement.
L’adaptation ne remplace pas les définitions `minecraft:*` du registre.
Les ruines océaniques et les trésors enterrés conservent leur ajustement fin
vanilla au fond réel pendant la pose des blocs : leur hauteur peut encore se
préciser après l’acceptation du départ.
**Correction approuvée après le plan initial : chaque nouvelle expansion 23 avec
les structures activées doit disposer d’au moins une structure adaptée avant sa
réservation.** Les familles absentes restent préférées, sans rendre obligatoire
une famille incompatible. Une recherche infructueuse ne publie pas une île vide
de structures et ne contourne pas les exigences d’appui. Aucune structure n’est
ajoutée rétroactivement aux îles déjà enregistrées.
Les yeux de l’Ender, cartes d’exploration et `/locate` recherchent les vrais
départs dans les îles ouvertes. Une recherche n’active jamais d’expansion.
Le compteur natif de références cartographiques n’indique pas une visite réelle.
## Océans
Le relief `ocean` est réservé aux expansions 23 de 512 ou 1024 blocs. Les grandes
expansions rapides sans relief explicite peuvent le choisir dans un tirage
déterministe d’environ un tiers. Le climat et la taille restent ceux du descripteur.
Le champ océanique commun au terrain, à l’eau et aux biomes produit une mer
intérieure irrégulière, des hauts-fonds, des côtes et une zone profonde, en
conservant une majorité de terres. Cible : 30–45 % de surface aquatique nominale,
profondeurs maximales 32–56 blocs. Une coque rocheuse continue retient l’eau ;
le reste du vide conserve l’air. Le niveau d’eau est local à l’expansion.
Ce niveau accompagne aussi les décorations natives, notamment les icebergs ;
il est rétabli après chaque passe pour ne pas affecter les autres îles.
Les températures utilisent les biomes natifs océan, océan froid, gelé, tiède et
chaud, avec les variantes profondes disponibles. Il n’existe pas de
`deep_warm_ocean` natif. Les monuments exigent un océan profond réellement adapté.
Aucun océan ni Deep Dark n’est ajouté à Sanctuary Island.
## Mémoire serveur et sauvegardes
Le registre des structures est persistant et distinct du census des seuls chunks
chargés. Il distingue départ accepté, bâtiment partiellement ou complètement
généré, région encore inconnue et absence confirmée dans une région vérifiée.
Une démolition ne supprime pas le fait historique de génération. Une erreur de
lecture ne transforme pas le registre en liste vide.
`/sanctuary census structures` expose les relevés aux opérateurs ; l’option
`island <id>` précise la région et `dimension <id>` distingue les dimensions natives.
L’île propriétaire se déduit des descripteurs immuables du journal d’expansion.
Le suivi automatique ne charge pas la carte et
ne révèle pas les secrets dans le Blocodex personnel.
Le champ optionnel plat `structure_priorities` d’une nouvelle expansion 23
contient les familles bonifiées. Il est capturé une fois avant l’inspection,
figé dans le journal et lié au certificat de réutilisation du vide. Bonus initial
de sélection : × 4. Une reprise réutilise ce profil même si le registre a évolué.
Les générations historiques restent neutres, sans champ ajouté à leurs écritures.
Les mondes existants gardent leur codec et leur terrain. Les nouvelles règles
nécessitent un nouveau monde ; aucune conversion ou régénération n’est effectuée.
Petit 512, Moyen 724 par défaut et Grand 1024 restent dans Personnaliser. L’option
expérimentale commande les secrets optionnels et les rails ; le hall et la
traversée restent dans le socle. Les structures vanilla en sont indépendantes.
La désactivation générale des structures reste prioritaire.
+90
View File
@@ -0,0 +1,90 @@
# Alpha.24 — les lieux suspendus de Sanctuary
## Contrat
Le nouveau codec `sanctuary:island_v24` ajoute cinq lieux au monde initial :
une montgolfière, deux bateaux de fret et deux îlots minéraux. Ils sont planifiés
à la création et construits seulement lorsque leurs chunks sont générés.
La génération de terrain reste celle de l’alpha.23.1 : mêmes trois tailles
512 / 724 / 1 024, Moyen par défaut, bouton Minecraft **Personnaliser**,
secrets minéraux, voies abandonnées, structures vanilla, océans d’expansion,
registre et admission d’au moins une structure adaptée par expansion acceptée.
Les cinq sites cherchent la périphérie, hors de l’emprise du terrain initial.
Chaque site possède un point de rivage vérifié, à moins de 512 blocs, et un
segment de vue dégagé dans le relief et hors des volumes des secrets déjà
planifiés. Les distances de rendu du client et du
serveur déterminent sa visibilité en jeu ; les arbres ultérieurs peuvent
masquer une partie de cette vue. Le relief n’est pas prolongé vers les sites.
Aucun pont, quai, pilier jusqu’au sol ou accès automatique n’est fourni.
## Formes et ressources
La montgolfière possède une enveloppe arrondie de laine claire, un accent,
une nacelle en chêne et des suspentes attachées. Elle reste sous Y350.
Les deux navires ont une coque biseautée, des voiles, un pont protégé,
une cabine et une cale. Le navire de vivres accueille un fermier adulte ;
celui de matériel, un outilleur adulte. Leurs postes de travail sont vanilla.
Il faut construire pour atteindre les lieux et ramener les villageois.
Les îlots ont une roche irrégulière, une base effilée et des filons connectés.
Leur surface reçoit une couverture de terre et d’herbe majoritaire, des fleurs,
des herbes et quelques petits chênes ou bouleaux. Le volume réservé comprend
les couronnes ; l’épaisseur rocheuse reste de 20 à 35 blocs.
Leur profondeur relative détermine les minerais : charbon, fer et cuivre
abondants ; poches d’or, lapis, redstone, diamant et émeraude. Ces réserves
sont finies. Le recensement existant compte les blocs dans les chunks
observés, sans charger toute la région ni lire le butin encore fermé.
Exactement un îlot possède une source d’eau qui s’écoule suivant les règles
Minecraft et peut tomber dans le vide.
Chaque lieu contient exactement un coffre dédié. Ceux des îlots sont enterrés
sous une couverture stable, à l’écart de la cascade. Les tables de butin
utilisent exclusivement des objets vanilla, sans récompense future ni Anomaly.
Ni le butin, ni les habitants, ni les blocs détruits ne se renouvellent au
rechargement d’un chunk déjà généré.
## Persistance et expansions
La recherche est déterministe, limitée à 64 candidats par site et 8 192
colonnes de terrain mises en cache pour l’ensemble du plan. Les plans des
secrets racine sont calculés auparavant, puis réutilisés au démarrage ; une
voûte ou une galerie ne peut ainsi recouvrir le point côtier certifié. Cette
planification ne demande aucun chunk. Un échec interrompt explicitement la création du plan plutôt que
de livrer un monde avec un satellite silencieusement manquant.
Le manifeste immuable est écrit dans `data/sanctuary-aerial-v24/` avant le
premier journal `data/sanctuary-world-v24/`. Son SHA-256 est lié au journal24.
Un rechargement relit le plan stocké ; il ne le recalcule pas. Un manifeste
manquant, altéré ou incompatible bloque la reprise avant toute expansion.
Ce contrat ne s’applique qu’aux nouveaux mondes24 ; les anciens journaux,
codecs, profils et terrains restent lisibles sans migration.
Les réservations couvrent exactement les chunks des cinq structures et un
petit masque local autour de la sortie d’eau, sans marge sur tout le pourtour
des sites. Elles ne deviennent pas des propriétaires de terrain :
les biomes du vide et le bruit de génération restent inchangés. L’admission
d’expansion, le journal et la reprise de vide vérifient ces emprises même si
aucun joueur n’a encore exploré le site. Les passages entre elles restent libres.
Les départs et pièces sont natifs, enregistrés sous `aerial_balloon`,
`aerial_merchant_ship` et `aerial_mineral_islet`. Les écritures sont limitées
au site et au chunk courant. Le registre distingue les sites planifiés,
les départs acceptés et la génération observée. Les scopes aériens ne servent
pas à conclure qu’une famille de structures vanilla manque au serveur.
`/locate structure` et `/sanctuary census structures aerial [site]` les
référencent sans ouvrir d’expansion ni transformer une consultation en visite.
Les options **Structures expérimentales** et **Générer les structures**
contrôlent les satellites. Leur désactivation produit un plan vide, sans
réservations aériennes. Les options sont sauvegardées avec le monde.
## Limites de cette livraison
Minecraft reste en 26.3-pre-2. Les nuages et la hauteur du monde sont inchangés.
Aucun véhicule pilotable, bateau-poule, temple, commerce Sanctuary, boss,
portail des Cavernes ou raid n’est ajouté. Deep Dark et cités anciennes
restent réservés aux futures Cavernes.
Les vérifications réellement exécutées, les témoins et l’état de distribution
figurent dans [testing-alpha24.md](testing-alpha24.md).
+64
View File
@@ -0,0 +1,64 @@
# Alpha.27 — reprendre la 24 et regarder le résultat
Le retour du 12 septembre 2026 rejette l'alpha.25 : cônes creux, enveloppes
rocheuses trop minces, cavités génériques et île trop perforée. Les tests
fonctionnels passaient mais ne démontraient pas un rendu naturel. La branche
`codex/reprise-sanctuary-alpha27` repart directement de `e7d1f29`, la base 24
publiée ; elle ne désactive pas simplement quelques options de la 25.
## Cette première passe
- Retrouver le relief, les cavités et l'hydrologie de la 24. Aucun ajout de
montagne, volume de cavité, lac ou plateforme pour faire tenir un biome.
- Retirer la montgolfière, son placement et ses réservations ; conserver les
deux navires marchands et les deux îlots minéraux, dont un seul à cascade.
- Reprendre directement `minecraft:shipwreck/rightsideup_full`, une épave
vanilla complète déjà à l’endroit, puis restaurer les trous, les mâts et
l’accès. Conserver ses blocs, dalles, escaliers et sa cabine, au lieu de
dessiner une nouvelle coque approximative. Garder les marchands et un
coffre de cargaison par navire.
- Répartir des secteurs de marais en trois dimensions dans les souterrains
existants, remplaçant localement les autres biomes de grottes. Le sol et les
végétaux changent, pas la densité rocheuse. Chêne et végétation humide plutôt
que bosquets de chêne noir dans ces secteurs.
Minecraft reste en **26.3-pre-2**. Les tailles restent **512 / 724 / 1 024**, Moyen
par défaut, avec le bouton natif Personnaliser. Les options existantes des
structures gardent leur rôle. Les marais sont naturels, indépendants de ces
options. Le Deep Dark n'est pas ajouté.
Le prototype alpha.27 conserve le codec `sanctuary:island_v24` et ses ressources
de terrain. Le créateur teste des mondes jetables et a levé l'objectif de
compatibilité ; on ne convertit ni ne régénère ses sauvegardes. **Nouveau monde
nécessaire.** Les archives de la 25 restent sur `codex/terrain-sanctuary-alpha25`,
commit de livraison `df51e17` et documentation `1bf3a3b`.
## Ce qui reste à travailler après l'essai
Les plateaux étagés, l'érosion, les galeries proches des bruits de grottes
vanilla et les sorties d'eau libres ne sont pas réintroduits en bloc. Ils
seront examinés séparément, à partir de ce que l'on voit en jeu. Des points
d'eau peuvent retomber sur l'île ou dans le vide ; leur intérêt ne dépend pas
d'une arrivée dans un bassin calculé.
Mangroves, grenouilles, slimes et lucioles restent les références de l'écologie
des marais. La liste réellement présente et les restrictions natives sont
consignées dans [les vérifications](testing-alpha27.md), sans promettre une
population observée à partir d'une simple entrée dans un biome.
Les fonctions propres à la 25 — nouveau village souterrain, cabane du mineur,
cadre du sanctuaire et garantie spécifique du monument — sont écartées avec
sa base. La 24 conserve ses structures et expansions ; leur présence n'est
pas présentée comme une reprise de tous les contrats de la 25.
## Méthode retenue
Une passe limitée, un pack jouable, puis un retour sur son apparence. Vérifier
le build et les nouveaux points de comportement ne remplace pas ce retour.
Pas de matrice exhaustive ni de benchmark supplémentaire avant cet essai.
Les prochaines optimisations devront conserver les formes jugées bonnes,
au lieu de fabriquer des espaces faciles à certifier.
Le benchmark archivé de la 25 mesurait 169,816 s contre 60,932 s pour un parcours
de 369 chunks (générations 24/25 dans les mêmes sources 25). Il documente un coût
sur ce témoin Mac ; il ne sauve pas le rendu refusé et ne mesure pas cette 27.
+61
View File
@@ -0,0 +1,61 @@
# Alpha.28 — roche à explorer
La 27 est la base validée par le créateur. Cette passe garde son île, les
secrets minéraux et les réseaux, puis ajoute du creusement dans la roche.
Les nouvelles cavités ne sont pas des salles de structure aux volumes prescrits.
## Terrain
Le champ commun compose les fonctions de bruit de Minecraft 26.3-pre-2 :
cheese et cave_layer, entrées/spaghetti 3D, spaghetti 2D et roughness, piliers
et noodle. Leur altitude est déplacée pour la masse flottante. Les coupes
restent soustractives et s’atténuent vers les limites verticales ; il ne
s’agit pas de recopier toute la génération Overworld ou ses aquifères.
Les carvers historiques restent désactivés pour ne pas ajouter une seconde
passe étrangère aux colonnes de certification.
Le relief supérieur déforme le volume rocheux dans les trois axes avec les
bruits ridge/erosion natifs échantillonnés en 3D. Les déplacements sont signés :
soulèvements, affaissements et cisaillements varient aussi avec la profondeur.
Le déplacement est borné à ±16 blocs horizontalement et ±40 verticalement,
avec une transition progressive de Y180 à Y228. L’enveloppe de l’île reste
évaluée aux coordonnées réelles ; seul le champ rocheux interne est déplacé.
Ce n’est pas une simulation physique de plaques tectoniques. Aucun cône ni
salle géométrique ne sert de forme à ajouter au terrain.
L’arrivée et les côtes gardent leur place. Les anciennes failles deviennent
obliques, interrompues et limitées en hauteur, avec de la roche au-dessus et
en dessous. Les expansions utilisent la même source de terrain ; leur climat
et leur déformation propre s’appliquent ensuite.
Le seuil du champ de marais passe de 0,04 à 0,25 : les anciens secteurs se
réduisent au profit des biomes de grottes précédents, dont les champignons.
La hauteur du monde, les nuages et les trois diamètres sont conservés.
## Exploration et ressources
Les bateaux vanilla restaurés recherchent désormais les vraies berges proches.
Les deux îlots sont au-dessus de Sanctuary, avec un espace libre sous leur
roche et un seul exutoire d’eau. Leurs corps et leurs chutes d’eau ont des
emprises distinctes ; rien ne réserve toute la colonne sous un îlot sec.
Les mines emploient les pièces vanilla, leurs supports, rails, coffres et
spawners. Une partie exposée peut passer si l’ensemble reste ancré. Les huttes
cherchent aussi des berges souterraines de marais : sol local, couverture de
la cavité et quatre pilotis natifs. Les salles à spawner sont de vraies
MonsterRoomFeature, posées sur des candidats réels et soumises aux refus
natifs. Leur présence n’est pas garantie sur chaque île.
Une passe de filons native complète les distributions existantes dans les
chunks de l’île et des expansions. Charbon, fer, cuivre, or, lapis, redstone,
diamant et émeraude utilisent les formes OreFeature vanilla. La profondeur
se mesure dans l’enveloppe rocheuse entière de la colonne, sans recommencer
le calcul à chaque plafond de grotte. Les stocks restent finis. Les minerais
du Nether restent dans le Nether ; le Deep Dark n’est pas ajouté à l’île.
## Livraison de test
Mod et pack `0.1.0-alpha.28`, Minecraft `26.3-pre-2`, codec de prototype
`sanctuary:island_v24` conservé. Créer un nouveau monde. Aucune migration,
aucune régénération ni intervention dans les sauvegardes personnelles.
L’alpha.27 et ses artefacts restent disponibles. Les vérifications réelles
et leurs limites sont dans [le compte rendu](testing-alpha28.md).
+56
View File
@@ -0,0 +1,56 @@
# Alpha.29 — corniches fines et traversées présentes
La 28 a été validée visuellement par le créateur sur Windows, avec un chargement
correct. Cette livraison conserve cette base et traite trois observations :
la grande traversée absente en Grand, le relief un peu trop lissé et les mines
vanilla difficiles à rencontrer.
## Témoin signalé
Grand **1 024**, graine **-7228211907433324401**. La reproduction avec le code
28 confirme un plan de transit vide : 419 alignements examinés, 13 000 colonnes,
75,114 secondes de recherche et aucun couple de portiques naturels accepté.
Dans les douze premiers candidats natifs examinés, aucune mine n’est admise.
Le résultat ne prétend pas inventorier les parties inconnues de toute l’île.
## Relief
La déformation 3D de la 28 reste en place. Une modulation fine du Y échantillonné
forme de petites corniches avec des ruptures plus franches. Période locale de
6 à 9 blocs et phase variables avec les bruits 3D existants, décalage supplémentaire
borné à ±2,5 blocs. Aucune grille de plateaux horizontaux commune à toute l’île.
Le raccord commence à Y214 et atteint sa pleine amplitude à Y244, à l’écart
de l’arrivée et du contour. Les densités sous Y214 sont exactement celles de
la 28 ; les grottes, failles, minerais, marais et lieux aériens sont conservés.
Le même champ sert aux colonnes, chunks, biomes et certifications.
## Infrastructures et mines
Le correctif de traversée conserve le génie civil et les galeries industrielles
existants. Les accès doivent s’adapter au relief sans transformer la surface en
une grande fondation. Deux accès relient une chaussée et ses trottoirs ; la
branche vers une salle conserve une paroi pleine du côté fermé de sa jonction.
Les modules déjà certifiés ne sont plus refiltrés par un
biome souterrain incompatible avec leur ancien tag de structure.
Pour les mines, les protections sont vérifiées autour des vraies pièces et de
leurs appuis, et non dans tout le rectangle vide entre leurs branches. Le
graphe, les pièces, les rails, coffres, toiles et spawners restent vanilla.
Un sol rocheux portant déjà la galerie est reconnu comme appui natif ; il ne
nécessite pas un second pilier ou une chaîne. Les galeries exposées gardent les
ancrages bornés du vanilla et les réservations protègent aussi leurs appuis.
Les trois essais d’altitude sont choisis dans les couches rocheuses réellement
présentes autour des pièces, après un sondage de 32 colonnes au maximum. Les
croisements utilisent le contrat de leur plancher vanilla : une voûte rocheuse
proche n’est pas nécessaire à un pont de planches portant sur un corridor ancré.
Les marches creusées et les salles gardent leurs contrôles de couverture.
Les mines restent conditionnelles : le correctif n’impose pas une mine à chaque
graine et ne modifie pas la politique des autres familles de structures.
## Distribution
Mod et pack **0.1.0-alpha.29**, Minecraft **26.3-pre-2**, codec de prototype
`sanctuary:island_v24`, mêmes tailles et bouton Personnaliser. Les options de
structures gardent leur autorité. Créer un nouveau monde ; aucune modification
ou régénération d’une sauvegarde personnelle. Les artefacts28 restent accessibles.
Les constats mesurés et les limites sont consignés dans [les essais](testing-alpha29.md).
+46
View File
@@ -0,0 +1,46 @@
# Alpha.30.1 — retour aux rivières courbes et au relief global
Correctif demandé après l’essai de la 30 : les nouvelles rivières angulaires
évoquaient des canaux construits, et la limitation du relief à trois secteurs
rendait trop de surface plate.
## Changements
- Suppression du générateur de rivière sur grille ajouté en 30 et de son plan
global. L’hydrologie retrouve exclusivement les rivières courbes, bassins,
terrasses et sources déjà présents dans `PopulationHydrology`.
- Retour de la déformation 3D signée de la 28 sur l’ensemble du terrain, sauf
une bande étroite de plateaux naturels vers Z = −rayon/4. Elle suit un axe
d’implantation possible des accès de traversée. La transition est progressive ;
le champ antérieur y est retrouvé sans dalle ajoutée ni remplissage des grottes.
Les tests synthétiques gardent le poids global exact sur plus de 85 % de
l’emprise circulaire, et un cœur de plateau sur moins de 8 %.
- Brèches recherchées dans les **berges des anciens cours d’eau**, avec priorité
aux rivières, puis aux lacs et petits bassins. Les berges sèches déjà garnies
de sédiments ne bloquent plus cette recherche, contrairement à la 30.
- Chaque brèche est longue de cinq blocs maximum et large de trois blocs.
Son fond descend légèrement pour laisser l’écoulement vanilla atteindre la
lèvre. Elle ne crée ni nouvelle source, ni rivière supplémentaire, ni
fondation sous la chute. Aucune vérification d’un bassin de réception :
l’eau peut descendre sur l’île ou dans le vide.
- Jusqu’à six brèches espacées par région, uniquement lorsqu’une rive est
assez proche d’un espace ouvert. Un bassin situé loin du bord reste fermé.
Les tracés courbes ne sont pas redessinés par la passe de brèche. Le retour du
relief global peut toutefois changer leur implantation d’une version à l’autre,
puisqu’ils recherchent leur place dans la roche disponible.
Les corrections de traversées, le sanctuaire minéral, les mines vanilla,
les navires restaurés et les deux îlots restent présents. La 30.1 conserve
Minecraft **26.3-pre-2**, les tailles **512 / 724 / 1 024**, Moyen par défaut,
et le bouton natif Personnaliser. Aucune nouvelle interface à traduire.
## Essai et distribution
Version mod et pack : **0.1.0-alpha.30.1**, branche
`codex/curved-rivers-alpha30-1`. **Créer un nouveau monde** : le prototype
conserve `sanctuary:island_v24` ; aucune migration ou régénération de sauvegarde
personnelle n’est effectuée. Les structures conservent leurs options existantes.
Résultats effectivement vérifiés et coordonnées dans
[les essais](testing-alpha30.1.md). La distribution suit [packwiz](packwiz.md).
+50
View File
@@ -0,0 +1,50 @@
# Alpha.30.2 — corniches irrégulières et petits fragments
Retour visuel du 12 septembre 2026 : conserver les grandes masses et les arches
acceptées, mais réduire leurs contours trop réguliers et les longues pentes
en marches répétées. Le rendu des captures sert de contre-exemple ; il ne
s’agit pas de remplacer les massifs par de nouvelles formes prédéfinies.
## Passe locale
Le relief global de la 28/30.1 reste actif, ainsi que sa zone limitée de plateau.
Une adaptation locale du point d’échantillonnage vertical crée de courtes
corniches : leur phase et leur espacement suivent un bruit 3D existant, à
l’échelle de quelques dizaines de blocs. Les couches ne partagent pas un même
niveau horizontal à travers toute l’île. Le déplacement supplémentaire du
point d’échantillonnage reste borné à **2,25 blocs**.
La passe s’atténue sous Y188 et disparaît sous Y140, près de l’arrivée, dans le
cœur de la bande de plateau, à l’extrémité du contour et au-dessus du terrain.
Les volumes profonds et les paramètres des grottes natives ne sont pas changés.
Les rivières courbes, sorties de berge et leurs écoulements gardent leur
algorithme. Comme pour toute modification de densité, la recherche d’un lieu
compatible peut aboutir à des coordonnées différentes sur une même graine.
## Petits blocs flottants
Une recherche de connexion dans le **champ naturel avant décoration** retire
les composants détachés de **32 blocs au maximum** dans la zone retouchée.
Elle s’arrête dès qu’elle rejoint 33 blocs connectés ou la roche conservée hors
retouche. Les six faces servent de voisinage ; les diagonales ne suffisent pas.
Les coordonnées sont globales : les bords de chunks ne coupent pas une attache.
Ce contrôle ne remplit aucun trou, ne rajoute aucun pilier, ne visite aucune
sauvegarde personnelle et ne retire pas les îlots aériens. Il précède la pose
ultérieure des arbres, structures et fluides. Il ne constitue pas une promesse
qu’aucun élément flottant de quelque origine que ce soit ne puisse exister.
Le cache est borné, propre au thread et invalidé selon le sampler et son contexte,
avec des références faibles aux identités de monde.
## Livraison
Version mod et pack **0.1.0-alpha.30.2**, branche
`codex/irregular-relief-alpha30-2`. Nouveau champ de codec optionnel
`surface_302`, faux lorsqu’il est absent. Activé dans les trois profils actuels
512 / 724 / 1 024 ; Moyen reste le choix par défaut. Le prototype garde
`sanctuary:island_v24`, Minecraft 26.3-pre-2 et le bouton natif Personnaliser.
**Créer un nouveau monde pour essayer le rendu** ; aucune régénération des
sauvegardes personnelles. Pas de nouvelle interface nécessitant une traduction.
Les vérifications et limites sont dans [les essais](testing-alpha30.2.md).
La publication et la synchronisation suivent [packwiz](packwiz.md).
+59
View File
@@ -0,0 +1,59 @@
# Alpha.30.3 — plateaux et grands reliefs
## Choix retenu
Le créateur a rejeté la 30.2 après essai : la retouche fine produisait un aspect
rongé et trop bruité. Son nombre réduit de longues marches ne garantissait pas
un meilleur paysage. Cette version désactive `surface_302` et `terraces_29`.
La roche reste le champ volumétrique Minecraft de la base alpha.24, accompagné
des grottes et fractures adaptées en 28. Un bruit de grande longueur d’onde
sélectionne des provinces montagneuses ; il ne dessine ni cônes ni salles.
Les provinces sont échantillonnées dans un repère proportionnel au rayon :
Petit 512, Moyen 724 et Grand 1 024 conservent une distribution comparable,
avec des masses physiquement plus vastes lorsque l’île grandit.
Le seuil médian du champ intérieur conserve une grande part des plateaux ;
la transition vers les provinces hautes est continue. La bande de plateau
utile aux infrastructures reste protégée, ainsi que les 48 blocs autour du
centre. Aucun pavage périodique ou bruit supplémentaire à l’échelle du bloc.
Dans les provinces hautes, le domaine vertical s’étend progressivement
au-dessus de Y170, avec les déplacements signés sur trois axes de la 28.
Cela relève la roche existante et conserve sa structure volumétrique, ses
surplombs et ses vides. Une extinction douce sous Y360 laisse de la place
sous le plafond de construction Y384. La hauteur atteinte dépend du terrain
et de la graine ; aucun sommet n’est forcé à une altitude identique.
Le filtre de connexité travaille sur le champ rocheux avant décoration :
composants de 32 blocs au plus, connexions par faces, coordonnées globales
même à cheval sur plusieurs chunks. Il ne crée aucun pilier ni roche de
remplissage. Les grandes masses flottantes naturelles et les îlots aériens
ne sont pas supprimés.
Les grottes sous Y170 conservent exactement leur densité précédente. Les
anciens cours d’eau courbes et leurs brèches de débordement, la traversée,
le sanctuaire minéral, les secrets et les quatre lieux aériens sont conservés.
Leurs recherches utilisent le terrain courant ; leurs emplacements peuvent
changer. Pas de retour de la montgolfière ou des rivières angulaires.
Le biome `sanctuary:swamp27_caves` rejoint les biomes autorisés des réseaux
secrets : un sanctuaire minéral déjà certifié ne doit plus être annulé au
stade du départ natif simplement parce qu’il se trouve dans ce marais.
La recherche des îlots refuse immédiatement les volumes trop hauts, dès le
premier obstacle incompatible, et filtre grossièrement les emprises au-dessus
de trop grands trous avant leur certification bloc par bloc. Après le secteur initial, les candidats parcourent tout le tour de l’île.
La recherche reste bornée à 64 candidats par site et 16 384 colonnes au total ;
la certification détaillée des sites acceptés est conservée.
## Essai
Minecraft 26.3-pre-2, mêmes dépendances et bouton natif Personnaliser.
Créer un **nouveau monde Sanctuary**. Le codec reste `sanctuary:island_v24`,
conformément au workflow de mondes de test jetables demandé par le créateur.
Les ressources des trois profils sont mises à jour : ne pas prolonger une
ancienne sauvegarde pour comparer des raccords. Cette livraison n’ouvre et
ne régénère aucune sauvegarde personnelle.
Les prévisualisations de densité servent à examiner les silhouettes ; elles
ne remplacent pas l’essai visuel du paysage décoré dans le client Minecraft.
Voir [les validations réalisées](testing-alpha30.3.md).
+54
View File
@@ -0,0 +1,54 @@
# Alpha.30.4 — massifs, hauts plateaux et ciel constructible
Le retour sur la 30.3 valide les plateaux bas et les intérieurs des montagnes,
mais rejette leurs grandes pentes étirées. Cette passe conserve un seul relief,
sans nouveau réglage de personnalisation. Petit 512, Moyen 724 par défaut et
Grand 1 024 restent disponibles dans le bouton natif Personnaliser.
## Terrain
Les provinces larges continuent de sélectionner les secteurs montagneux. La
base naturelle issue de la 24 garde sa place ; le champ rocheux relevé se
raccorde à cette base par union des volumes. Les abords des massifs s'étendent
sur 64 à 96 blocs selon la taille de l'île. L'élévation suit cette transition,
sans seuil latéral qui sectionnerait la densité en une paroi artificielle.
L'arrivée et le plateau de traversée restent préservés.
Les falaises franches sont voulues. Le retour du créateur vise les petites
marches répétitives et les lambeaux, pas toutes les parois raides. Aucun
microbruit ni gradin périodique n'est ajouté pour masquer les surfaces ; le
champ 3D conserve ses arches. Le relief inférieur à Y170 reste identique.
Le rendu des raccords reste à apprécier en jeu, particulièrement entre les
surfaces végétales et les parois rocheuses.
Les sommets suffisamment massifs portent des replats vers Y354–359, avec
une altitude légèrement variable et des vides issus du champ 3D. Les sommets
ne sont pas tous forcés à cette hauteur. Le filtre des petits composants
rocheux détachés reste actif. La végétation peut maintenant s’établir sur ces
replats, avec les mêmes contrôles d’appui et d’espace pour les arbres.
L’hydrologie cherche un cours d’eau supplémentaire sur les hauts plateaux,
puis conserve la recherche d’une rivière sur les plateaux bas. Même tracé
courbe, mêmes lits et sédiments ; le parcours supérieur peut être plus court
pour tenir dans un massif. Sa présence dépend du terrain. Les brèches de
berges et les sources déclenchent toujours les écoulements vanilla.
## Hauteur et périmètre
Le preset actuel utilise le nouveau type `sanctuary:sanctuary_640` :
**Y0 à Y639 constructibles**, limite supérieure exclusive Y640.
Le générateur et ses trois délégués de terrain exposent la même hauteur.
Le terrain reste sous Y360 ; le nouvel espace aérien reste libre. Les nuages
restent à Y352,33. Les dimensions vanilla Nether et End ne changent pas.
Les deux navires, deux îlots, secrets, rails, traversée et expansions restent
présents. Leurs emplacements dépendent du terrain. L’arène du destin est
uniquement une idée pour un futur défi en altitude : aucune plateforme,
panneau ni arène n’est généré dans cette livraison.
Créer un **nouveau monde**. Conformément au workflow de tests jetables demandé,
les profils courants évoluent avec le codec `sanctuary:island_v24`. Aucun monde
personnel n’est ouvert, migré ou régénéré. Ne pas prolonger une ancienne
sauvegarde pour juger les raccords de cette version.
Voir [les essais et leurs limites](testing-alpha30.4.md).
+54
View File
@@ -0,0 +1,54 @@
# Alpha.30.5 — plateaux et relief natif modéré
## Décision
La 30.4 est rejetée après essai : ses masses hautes étirent aussi les vides du
terrain, avec des coques entrecroisées peu praticables. Cette passe reprend les
plateaux de la base 24/27, les grottes et failles introduites en 28, et module
la déformation 3D native dans de grandes régions de l’île. Aucun nouveau bruit
fin de surface, cône, chambre artificielle ou quantification en étages n’est ajouté.
Le déplacement dans les trois axes demeure celui de `CavesRelief28`, avec une
intensité maximale de 80 % et une répartition large calculée à l’échelle de
chaque taille. Certains secteurs gardent le plateau original. L’arrivée et la
bande prévue pour la traversée conservent leur protection. Les profondeurs
jusqu’à Y170 restent identiques au champ 30.1.
Le remappage vertical vers Y360 et l’union entre terrain étiré et terrain bas
sont retirés du profil courant. Les sommets retrouvent la hauteur produite par
le champ natif ; **Y360 n’est plus un objectif imposé**. Le plafond de construction
reste Y640, avec les mêmes nuages et tailles 512 / 724 / 1 024.
## Eau et exploration
La recherche des rivières revient au parcours courbe sur les surfaces
naturelles disponibles, sans priorité artificielle aux replats au-dessus de
Y330. Les brèches courtes dans les berges demeurent, avec écoulement vanilla.
Les cavités, marais, champignons, filons, secrets, rails, traversées souterraines,
navires restaurés et îlots restent dans le périmètre existant. La montgolfière
retirée depuis la 27 ne revient pas.
Le filtre borné des petits composants rocheux détachés reste actif. Il ne
prétend pas supprimer chaque fragment de chaque monde, ni les marches
inévitables de la représentation en blocs.
## Nouvelle méthode de travail
L’[atlas natif](terrain-atlas.md) compare quatre champs avant décoration :
base 27 issue du retour à la 24, bruit global 30.1, étirement 30.4 et profil
30.5. Les coupes, cartes d’altitude et épaisseurs sont archivées avec les données
brutes. Elles servent à examiner la géométrie avant d’évaluer le paysage en jeu.
Une métrique favorable seule ne valide pas son esthétique.
L’ancienne déformation 30.4 reste disponible uniquement comme chemin de
comparaison scientifique dans le code. Le champ courant utilise toujours les
identifiants existants (`balanced_303` désigne le profil expérimental courant,
comme lors de la 30.4). Aucune migration n’est réalisée : **créer un nouveau
monde**. Cette révision des profils d’essai n’offre pas de continuité du terrain
pour les chunks futurs d’une ancienne sauvegarde.
Les îles supérieures, expansions choisies à partir de la graine et histoires
d’expédition seront définies plus tard. Aucun récit, événement ou continent
supplémentaire n’est injecté dans cette livraison.
Résultats et limites : [vérifications alpha.30.5](testing-alpha30.5.md).
+97
View File
@@ -0,0 +1,97 @@
# Alpha.30.6 — village souterrain et voies ramifiées
Cette passe prolonge le terrain 30.5 validé en jeu. Elle ne reprend ni
l’étirement vertical 30.4 ni les grandes cavités artificielles de la 25.
Créer un **nouveau monde** : le profil de prototype `sanctuary:island_v24`
évolue avec l’accord du créateur pour ses mondes de test. Plafond Y640,
Minecraft 26.3-pre-2, Petit 512 / Moyen 724 par défaut / Grand 1 024 inchangés.
## Relief
L’amplitude de la déformation 3D supérieure passe de 0,80 à 0,95 dans les
mêmes grandes provinces. Leur répartition, les plateaux, les grottes basses,
les rivières courbes et le filtrage des petits fragments restent en place.
Il n’y a ni sommet imposé ni ajout de bruit de détail. L’atlas compare les
champs 24/27, 30.1, 30.5 et 30.6 aux mêmes coordonnées.
Deux morceaux de terrain naturel sur Petit/Moyen, trois sur Grand, sont
recherchés entre Y300 et Y400 au-dessus de l’île. Ce sont des volumes rocheux
pleins érodés par un bruit 3D large, indépendants des deux îlots minéraux à
coffre. Ils ne reçoivent aucun butin ni construction. Leurs positions sont
séparées et recherchées en 24 essais au plus par masse ; le champ de terrain
existant est sondé pour conserver un espace d’air dessous. Le filtrage des
petits fragments s’applique également à ces hauteurs. La surface projetée
reste minoritaire ; aucun semis de blocs flottants n’est ajouté.
L’idée d’un lieu exceptionnel vers **Y600** est conservée pour plus tard.
Aucune structure, plateforme ou arène n’y est générée dans cette version.
## Village abandonné
Un village vanilla abandonné est recherché dans la roche de l’île initiale.
**La cavité est aménagée spécialement pour lui**, à la demande du créateur :
sol commun praticable, chambres qui se recouvrent autour du graphe complet,
voûte irrégulière et accès vers les grottes voisines. Ce creusement reste
local ; aucun nouveau champ de cavités ne s’étend à l’île entière.
- Identifiant : `sanctuary:underground_abandoned_village`.
- Assemblage Jigsaw natif des plaines abandonnées, taille 6 et distance 80 ;
ces paramètres ne fixent pas un nombre de maisons. Aucun pool Minecraft
global n’est remplacé, aucun graphe n’est réduit pour le faire tenir.
- Au moins six maisons pour accepter un graphe. Les templates natifs gardent
leurs lits, coffres, toiles et zombie-villageois persistants et guérissables.
- Les rues utilisent le même sol pendant la planification **et** la pose,
sans être projetées sur le toit de l’île.
- Au plus 60 positions × six altitudes possibles, au plus 32 000 colonnes mises en
cache ; aucun chargement de chunks pour rechercher l’emplacement.
- Le sous-sol doit offrir une majorité d’appuis et de couverture. Le plan
local évite les fluides détectés, les secrets et les infrastructures ; les
raccords sont contrôlés avec leur emprise complète. Les refus sont journalisés.
- Les pièces enregistrent la cavité avec les maisons ; le locator et le
registre observent le véritable départ. Le village ne se reconstitue pas
dans un chunk déjà généré.
Le creusement laisse des fenêtres naturelles possibles. Ce n’est pas une
nouvelle ville de surface, un laboratoire ou une restauration des Lost Cities.
Les options expérimentales et générales de structures doivent être actives.
## Mines et donjons
Avant les premiers chunks, le générateur réserve des mines Minecraft complètes :
objectif **une sur Petit/Moyen, deux sur Grand**. Il cherche dans au plus 192
candidats natifs, avec les contrôles d’appuis et d’altitude existants. Le plan
accepté est celui effectivement placé et localisé. Un échec reste explicite
au journal ; les graines testées ne prouvent pas l’ensemble des graines possibles.
Les mines restent indépendantes du commutateur expérimental ; l’option générale
« Générer les structures » fait autorité.
Les salles à spawner restent la feature vanilla `monster_room`, avec ses
contrôles, butins et mobs. Les tentatives explorent neuf colonnes par chunk
au lieu de quatre, dans chaque chunk éligible, avec au plus 32 tentatives.
Les pièces protégées et les fluides restent exclus. Les plantes dont le support
est retiré par la pose tardive d’un donjon sont nettoyées dans son volume, sans
modifier les plantes valides ni produire de drops. Cela s’applique aussi
aux expansions du générateur courant ; aucune expansion n’est ouverte par
la recherche de structures.
## Voies de surface
Les voies se développent en longues portions suivant les pentes admissibles,
avec des bifurcations au milieu des parcours et des prolongements. Le ballast
reste continu sur les portions retenues ; certains rails et aiguillages sont
manquants et réparables. Aucune gare n’est nécessaire pour conserver une voie.
L’arrivée naturelle reste protégée sur 48 blocs autour de l’origine.
Les **6–8 % évoqués sont un repère visuel, pas un quota imposé**. L’atlas des
structures mesure les colonnes aménagées et les superpose au relief. Les voies
s’arrêtent lorsqu’un terrain ou un raccord ne convient pas ; elles ne terrassent
pas une autoroute à travers les montagnes ou le vide pour atteindre un quota.
## Registre et vérification
Une erreur d’arrêt révélée par les essais est corrigée : Minecraft peut exécuter
une tâche immédiatement sur un worker lorsque le serveur s’arrête. Le registre
ne tente plus de modifier son état depuis ce worker. Les chunks trop tardifs
restent inconnus jusqu’à leur prochain chargement, sans inventer une absence.
Voir [les essais et limites](testing-alpha30.6.md) et [la méthode d’atlas](terrain-atlas.md).
+66
View File
@@ -0,0 +1,66 @@
# Alpha.30.7 — dernières installations de la génération
Cette passe conserve le relief et les morceaux de terrain naturel de l’alpha.30.6.
Les fonctions de densité, cavités, rivières, biomes et tailles ne changent pas.
Minecraft reste en 26.3-pre-2 ; plafond à Y640, Moyen 724 par défaut.
Créer un nouveau monde pour voir la nouvelle répartition des installations.
## Trésors dans le terrain aérien
Les deux anciens îlots minéraux construits comme des structures ne sont plus
planifiés dans les nouveaux mondes. Les deux morceaux naturels de Petit et Moyen,
ou les trois de Grand, portent désormais chacun un coffre enterré et des filons.
Le coffre utilise la table de richesses aériennes existante, uniquement vanilla.
Aucun objet de quête n’est ajouté.
L’enrichissement remplace seulement la roche existante entre Y300 et Y399 :
charbon, cuivre et fer dans les couches supérieures ; or, lapis, redstone, diamant
et émeraude plus à l’intérieur. La profondeur est mesurée dans chaque colonne de
l’îlot. Les réserves sont finies, sans renouvellement après minage ou pillage.
Le profil est volontairement très riche ; les comptages par minerai figurent
dans les rapports aériens de l’atlas. La forme, le sol et la végétation de ces morceaux naturels restent ceux de 30.6.
L’ancienne cascade artificielle disparaît avec son ancien îlot.
Les deux navires restaurés restent près de leurs côtes. Les nouveaux trésors
possèdent des départs natifs, des pièces sauvegardées et des réservations limitées
à leurs emprises. Ils utilisent l’identifiant de localisation
`sanctuary:aerial_mineral_islet`. Le terrain aérien naturel existe également quand
les structures sont désactivées ; ses coffres et son enrichissement expérimental
suivent les options de structures.
## Rails et traversées
Chaque prolongement ferroviaire garde son axe. Un terrain incompatible termine
le parcours au lieu de provoquer une succession de virages. Les embranchements
partent des longues lignes principales ; les extensions successives ne produisent
plus de branches tournantes récursives. Une séparation évite les lignes presque
parallèles autour d’une même voie. Cela peut réduire la longueur totale du réseau :
les 6–8 % anciennement évoqués ne constituent pas un quota.
Après la première traversée souterraine, une seconde recherche est effectuée dans
l’espace restant. Elle respecte les mêmes règles de sol, couverture et accès,
avec une séparation de 24 blocs autour des modules de la première. Si elle ne
tient pas dans le terrain et le budget de recherche, la première reste conservée.
Chaque traversée possède ses deux accès ; aucun croisement aveugle n’est creusé
pour forcer la seconde.
## Ruines d’un ancien fond marin
`sanctuary:drained_ocean_ruin` place quelques petits templates vanilla de ruines
océaniques chaudes dans les cavités sèches existantes entre Y60 et Y174. Trois
emplacements sont recherchés, quatre en Grand, sans garantie de quantité. Les
refus de sol, dégagement ou réservation sont journalisés. Aucun nouveau grand
volume souterrain n’est creusé pour les accueillir.
Les modèles vanilla habités (`warm_2`, `warm_3`, `warm_4`, `warm_5`, `warm_8`),
leur dégradation et leurs tables de butin sont conservés.
Les marqueurs d’habitants placent des zombies vanilla persistants ; des coraux
morts complètent les vestiges et sont posés avec `waterlogged=false`. Les blocs
gorgés d’eau sont asséchés. La protection contre la décoration ultérieure reste
limitée à la petite emprise de chaque ruine. Les pièces
sauvegardées conservent leur altitude souterraine au lieu de recalculer un fond
océanique lors du rechargement. Ces ruines Sanctuary ont leur propre identifiant ;
elles ne remplacent pas les ruines aquatiques des expansions océaniques.
Voir [les vérifications](testing-alpha30.7.md). La structure envisagée à Y600 reste
une idée ; cette livraison n’ajoute rien à cette hauteur.
+80
View File
@@ -0,0 +1,80 @@
# Alpha.30 — plateaux, rivières et traversées
Dernière passe de génération alpha demandée par le créateur. Branche
`codex/terrain-finale-alpha30`, depuis le point de reprise local alpha.29
`8c90c61` ; cette dernière n’a pas été publiée. Minecraft **26.3-pre-2**,
Fabric Loader **0.19.5**, Fabric API **0.160.0+26.3** conservés.
## Relief
La déformation signée par les bruits Minecraft de la 28 agit dans trois zones
étendues, orientées par la graine. Entre elles, son poids devient nul et le
champ de plateaux naturel précédent reprend sa place. Il s’agit de déplacer
et d’affaisser la roche existante, pas d’ajouter trois cônes. Le petit
terracement systématique essayé en 29 est désactivé.
Les cavités et failles bornées de la 28 restent actives. Aucun nouveau
creusement ellipsoïdal, plafond du monde ou changement des nuages. La variation
de relief est nulle sous Y180. Les tailles 512 / 724 / 1 024 et le bouton natif
Personnaliser sont conservés, avec Moyen par défaut.
Ce changement vise des étendues plus calmes séparées par du relief marqué.
Il ne garantit pas que toute surface ait exactement deux niveaux, ni que toute
petite pointe rocheuse ait disparu. Le rendu est à juger dans un nouveau monde.
## Hydrologie
Une recherche sur la principale masse connectée cherche une rivière longue,
évitant les fortes pentes quand un passage plus bas existe. Elle suit le terrain
réel avec un lit de cinq blocs environ, des niveaux locaux, du gravier et de
l’argile. Les petits bassins et réseaux précédents restent présents.
Quand une berge est séparée d’un espace ouvert par **cinq blocs au maximum**,
une brèche de trois blocs de largeur ouvre le passage. Le plan cherche jusqu’à
six sorties espacées pour la grande rivière et une sortie supplémentaire par
réseau régional. Il n’impose pas deux cascades terminales, ni de bassin de
réception : l’eau peut descendre sur l’île ou dans le vide. La brèche ne pose
ni fondation ni colonne d’eau artificielle ; les ticks vanilla propagent l’eau
depuis les sources voisines. Les emprises de chute restent réservées aux
expansions. L’arrivée naturelle reste à l’écart du tracé.
La recherche travaille sur une grille puis vérifie les blocs du lit. Les
passages trop creux peuvent interrompre ce lit et laisser fuir l’eau. Ce n’est
pas une simulation de bassin versant avec débit conservé ou pente monotone.
Ces ajouts concernent l’île initiale ; les profils des continents d’expansion
ne sont pas remplacés par cette rivière.
## Traversée et sanctuaire minéral
La recherche des deux entrées répartit plus tôt ses essais entre plusieurs
alignements au lieu d’épuiser une seule bande. Les appuis et la protection
des secrets gardent leur autorité. La seconde passe peut omettre un pied
optionnel protégé seulement si les autres appuis restent valides. Les modules
industriels, escaliers, trottoirs et parois existants sont conservés.
Le sanctuaire garde ses 79 × 73 × 27 blocs et sa palette minérale. Après les
48 candidats intérieurs, une seconde recherche de 48 candidats sur les flancs
accepte davantage d’exposition, avec des attaches rocheuses et le plancher
praticable. Un échec complet reste diagnostiqué ; la structure ne peut pas être
posée dans un volume intégralement vide ou en écrasant un autre secret.
Aucun boss, machine, portail actif ou dimension ajouté.
Les corrections de mines de la 29 sont intégrées : hauteur choisie dans la
roche disponible, admission des pièces et appuis réels, croisements en bois
acceptés lorsqu’ils sont portés. Les pièces, spawners, rails et butins restent
vanilla. Leur présence reste conditionnelle aux candidats et au terrain.
## Satellites et sauvegardes
Deux navires restaurés près des rivages et deux îlots au-dessus de Sanctuary,
dont un à cascade : modèles et règles de proximité conservés. Les points de
vue doivent désormais éviter les sommets que l’hydrologie va creuser en bassin
ou en brèche ; aucun bloc artificiel n’est ajouté pour soutenir un témoin.
Le prototype conserve `sanctuary:island_v24` et ses profils courants, conformément
au choix de travailler sur des mondes de test jetables. **Créer un nouveau monde.**
Il n’y a ni migration ni régénération d’une sauvegarde personnelle. Les réglages
Générer les structures et Structures expérimentales gardent leur rôle ; la
rivière et le relief sont des phénomènes naturels indépendants de ces options.
Les résultats effectivement mesurés sont dans [les vérifications](testing-alpha30.md).
+87
View File
@@ -0,0 +1,87 @@
# Synchronisation Git jusqu’à beta.060
Ticket du 15 septembre 2026, branche `codex/git-sync-beta060`.
## Résultat attendu
Enregistrer les sources, ressources et documents accumulés depuis
`1490fb2` (alpha.30.7) jusqu’à la dernière livraison locale vérifiée,
**beta.060**, puis avancer `main` sans réécrire l’historique.
La tâche beta.061 travaille simultanément dans le dossier principal. Cette
synchronisation utilise un worktree isolé et la copie des sources beta.060
conservée avant cette tâche dans `build/arrival-mount061-intake/`. Les sources
du mod, ses tests, sa configuration Gradle, les versions et les documents
modifiés par beta.061 sont repris depuis cette copie. Les autres sources et
documents proviennent du dossier principal. Les changements beta.061 restent
dans le dossier principal.
Ce rattrapage Git ne crée pas une nouvelle livraison binaire : le compteur
reste `beta.060`. Les anciennes bêta ne reçoivent pas de tags rétrospectifs,
car leurs états source complets n’ont pas été enregistrés dans Git.
## Périmètre
- Code Sanctuary, module Demeure, port JEI reproductible et profil de test.
- Ressources, traductions FR/EN, manifestes packwiz, scripts et documentation.
- Versions courantes du README corrigées ; historique des livraisons conservé.
- Exports ZIP des resource packs ignorés ; sources décompressées versionnées.
Les mondes, caches, builds, dépendances téléchargées et JAR générés restent
ignorés. Les artefacts bêta restent locaux. Cette opération ne publie pas de
release binaire, n’avance pas le canal packwiz et ne synchronise pas Prism.
## Vérifications
Les SHA-256 des archives locales beta.060 correspondent au reçu de livraison
`build/mob-head060-artifact.json` :
- Pack normal : `7489ea0b5012f799baa929eebf37fed7abc588b913a0107c30f49ddcdfff6e01`.
- Monde plat : `7782ba69542ad7b922a1f4777763fc04dfcf0b92b5a1ea926c69c2235072d7af`.
La compilation isolée retrouve **1 620 classes Sanctuary, 14 classes Demeure
et 1 101 classes JEI strictement identiques** aux classes des JAR de la
livraison beta.060. Aucune classe n’est ajoutée ou retirée. Les 680 ressources
de jeu sont identiques ; les métadonnées Fabric concordent avant l’ajout
normal de la liste des JAR imbriqués par Gradle.
Reçus locaux : `build/git-sync-beta060-class-comparison.json` et
`build/git-sync-beta060-resource-comparison.json`.
La commande complète `./gradlew check build assemblePack assembleTestPack`
échoue après **9 min 33 s** sur `:sanctuary:runGameTest` : **235 tests serveur
réussissent sur 246**, dans un monde de développement neuf, graine `0`.
Les échecs constatés sur les sources beta.060 sont :
| Test | Assertion en échec |
| --- | --- |
| `GravesFood038GameTests.familiarSaturationPreviewUsesActualServerPassive` | Passif réel du familier disponible |
| `UnifiedWorldGameTests.retainedHydrologySurvivesNativeDecoration` | Support naturel du sédiment en `x=-141, z=-86, bedY=238` |
| `UnifiedWorldGameTests.populationTerrainAndNaturalSpawnRemainPresent` | Hauteur totale du monde |
| `Progression003GameTests.serverCustomNameConfiguration` | Anciennes commandes réservées aux opérateurs |
| `Accessory018GameTests.familiarIsHarmlessAndEscapesWalls` | Familier insensible aux dégâts |
| `Companion019GameTests.switchingEggRemovesPassiveAndActive` | Passif de chute du chat |
| `Companion019GameTests.poisonDurationAndMilkUseNativeHooks` | Durée du poison |
| `Companion019GameTests.furnaceBonusConsumesFuelAndKeepsOneOutput` | Bonus de cuisson et combustible |
| `Companion019GameTests.aquaticPetFlopsAndThenSwims` | Poisson sur terrain sec |
| `Companion019GameTests.cropCyclesStopAfterOwnerLeaves` | Cycle de culture du propriétaire d’abeille |
| `Companion032GameTests.axolotlFoodDurationAndGolemKnockbackUseNativeHooks` | Durée de consommation sur terre |
Les deux assertions de génération sont déjà consignées dans
[le ticket de transition beta.001](versioning.md#validation-et-distribution).
Les autres échecs restent à trier ; cette synchronisation ne les corrige pas
et ne modifie aucune assertion. Elle ne constitue pas une validation complète
de tous les comportements des 60 incréments.
Journal et reçu locaux : `build/git-sync-beta060-check.log` et
`build/git-sync-beta060-tests.json`.
La construction des artefacts est ensuite exécutée avec
`./gradlew build assemblePack assembleTestPack -x :sanctuary:runGameTest`.
L’exclusion évite de répéter la suite serveur déjà exécutée ; elle ne transforme
pas le contrôle complet en réussite. Cette construction réussit en **2 min 25 s**,
avec **122 tâches** ; les deux packs sont assemblés et leurs manifestes
vérifiés. Journal : `build/git-sync-beta060-assemble.log`.
Les vérifications natives de la livraison initiale et leurs limites sont
décrites dans [le ticket beta.060](mob-head-blocks-beta060.md).
+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 s’est 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 l’historique.
Le numéro reste celui de la livraison existante. Aucun changement de gameplay
n’est ajouté par cette synchronisation. Les références courantes du README
et de l’exemple d’export 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 n’est modifiée.
+43
View File
@@ -0,0 +1,43 @@
# beta.039 — inventaires côte à côte à la mort
Contrat demandé le 14 septembre 2026, avant modification du stockage des nouvelles
têtes. À gauche : les cases du défunt, équipement et accessoires compris, avec
les rangées visibles, le nombre de rangées débloquées et la hotbar au décès.
Toutes ces cases restent grisées et interdisent tout dépôt. À droite : les cases
du joueur qui récupère le contenu, avec **son écran d’inventaire habituel**, son
personnage, ses cases, sa fabrication et ses équipements. Les textures existantes
`inventory_1.png` à `inventory_6.png` et la hotbar native sont réutilisées des deux
côtés ; aucune nouvelle texture. Les deux panneaux s’adaptent ensemble aux petites
échelles de GUI. La fabrication au décès garde ses quatre emplacements ; le
curseur est récupérable à la place du résultat dans le panneau de gauche.
Migration additive : seuls les nouveaux décès écrivent `layout: 1`,
`inventory_rows`, `visible_rows`, `hotbar_row` dans `sanctuary:grave` schéma 1.
Le composant natif `minecraft:container` garde ses 108 adresses, mais les nouvelles
têtes réservent 0–53 au stockage physique, 54–57 à l’armure, 58–61 au cosmétique,
à la cape, au familier et à la main gauche, 62–65 à la fabrication et 66 au curseur.
Les éventuels objets supplémentaires restent récupérables à partir de 67.
Les cases vides restent vides : aucun compactage lors du retrait.
Les anciennes têtes, sans disposition sauvegardée, gardent le coffre de récupération
à deux pages. Leurs données ne sont pas réinterprétées ni réécrites. Le pillage,
l’XP, la malédiction de disparition et `keepInventory` ne changent pas.
Aucun monde personnel n’est utilisé pour les essais.
## Validation
Quatre tests serveur couvrent le décès natif avec six rangées, une hotbar déplacée,
l’armure, les trois accessoires, la fabrication et le curseur ; le retrait partiel
sans compactage ; deux joueurs pillant le même contenu ; les dépôts refusés et
le shift-clic qui équipe armure/cape/familier sans équiper le cosmétique.
La fabrication personnelle utilise les recettes natives, le shift-clic, le clic
ordinaire, les touches de hotbar et leurs compteurs de fabrication, puis restitue
les ingrédients à la fermeture. Les icônes d’armure vides et le statut spécial
de la case de résultat restent ceux des emplacements natifs. Anciennes têtes et rangées occupées
après prestige gardent leur comportement.
Le parcours client natif ouvre un décès à six rangées à côté d’un joueur à une
rangée, récupère réellement les objets et équipements par paquets de clic, puis
vérifie les échelles de GUI 1 et 2 et les libellés français. Les **173 PNG du mod**
sont identiques à ceux du début du ticket. Captures dans
`build/food039-evidence/release/`.
+140
View File
@@ -0,0 +1,140 @@
# beta.038 — têtes-tombes, informations alimentaires et fondation des factions
Livraison beta.038 vérifiée. Cible exacte : Minecraft 26.3-pre-2.
## Contrat de mort et migration
La mort dans une partie Sanctuary place les objets normalement perdus dans une
`minecraft:player_head` portant le profil du défunt. Tout le monde peut la piller.
L’XP conserve sa règle actuelle (70 % en orbes). `keepInventory`, le mode
spectateur et la malédiction de disparition restent respectés.
Les anciennes sauvegardes d’inventaire ne changent pas. Seules les nouvelles
morts produisent des tombes. Les têtes ordinaires restent ordinaires. La tombe
utilise les composants natifs `minecraft:profile`, `minecraft:container` et
`minecraft:custom_data` (marqueur `sanctuary:grave`, schéma 1). Son contenu suit
la tête lorsqu’elle est cassée ou transportée. La tête vide conserve l’identité.
Aucun registre mondial supplémentaire, aucune réécriture de chunks ni migration
26.2. Retirer Sanctuary conserve les composants, mais supprime l’interface et
les protections spécifiques : vider les tombes avant de retirer le mod.
L’interface est un double coffre paginé pour accueillir les six rangées,
l’équipement, les accessoires et les objets en cours de manipulation. La tombe
est un coffre de récupération, sans dépôt de nouveaux objets. Toutes ses cases
sont grisées, y compris les cases vides ; les objets restent lumineux et retirables. Les fenêtres
partagent le même contenu côté serveur et deviennent invalides si leur support
disparaît. Le placement cherche un sol sûr proche dans les chunks chargés ; il
n’écrase aucun bloc. Les cas de lave et de vide ont un repli protégé.
## Informations alimentaires
AppleSkin officiel propose 3.0.10 pour 26.2, aucune version déclarée pour
26.3-pre-2 (API Modrinth et branches amont vérifiées le 14 septembre 2026).
Sanctuary reprend les indications dans son propre HUD : icônes de nourriture
et de saturation en infobulle, saturation actuelle, épuisement et aperçu de la
nourriture tenue. Le serveur fournit la saturation et l’épuisement réels ; les
aperçus respectent la capacité Hunger actuelle, dès trois icônes.
Cela ne change ni la valeur des aliments ni la vitesse de consommation ou de
régénération. Pas de nouvelle aptitude requise. Les préférences d’affichage
restent locales. Les sprites de faim vanilla restent la référence remplaçable
par le resource pack ; les contours AppleSkin sont un asset distinct crédité.
Aucune texture de respiration ne change.
## Utilisation et limites
Clic droit sur la tête posée : ouvrir. Le bouton `1 / 2` ou `2 / 2` change de
page quand le curseur est vide. Shift-clic extrait vers les rangées débloquées.
Le coffre permet la récupération, pas le dépôt de nouveaux objets. Casser la
tête, y compris en créatif, conserve les objets dans une tête transportable.
Clic droit dans le vide avec cette tête en main : ouvrir ; Maj + clic droit sur
un bloc : reposer. Aucun contenu n’est publié dans les mises à jour de chunks ;
seul le marqueur d’identité accompagne le rendu de la tête.
Le placement cherche à 12 blocs horizontalement et verticalement, sans charger
de chunks. Si cette zone est inutilisable, il essaie le dernier sol sûr observé
dans la même dimension pendant cette connexion. Sans sol utilisable, la tête
flotte près de la mort, au-dessus de la limite basse du monde ; le message donne
ses coordonnées. Cette tête ne disparaît pas au bout de cinq minutes et résiste
aux dégâts. Aucun terrain ni île n’est généré pour la récupérer.
AppleSkin est une intégration Sanctuary, pas un JAR 26.2 supposé compatible.
Les valeurs sont envoyées seulement au joueur concerné, au maximum quatre fois
par seconde lorsqu’elles changent. Un aperçu peut donc suivre la consommation
avec un retard maximal d’environ un quart de seconde à 20 TPS. Les infobulles
montrent deux rangées d’icônes, sans points chiffrés : nourriture native et
contours dorés de saturation. La part non absorbée maintenant reste assombrie
avec une légende. Les demi-icônes et fractions de saturation restent visibles.
Les bonus de saturation du cochon et de la mooshroom viennent des passifs
réellement actifs côté serveur. Les effets de potion et la régénération ne sont
pas prédits. Les textures et les crédits sont documentés dans [FOOD.md](../ressources-pack/sanctuary/FOOD.md).
## Vérifications
`./gradlew check build assemblePack assembleTestPack` passe en **4 min 30 s**,
avec **55 tests serveur** et les contrôles purs du dépôt. Le lot couvre les
inventaires complets, deux pages et deux pilleurs, les refus de dépôt (clic,
shift-clic, touche numérique et glisser), les protections lave/vide, le placement,
la casse créative et la sérialisation du contenu et de la mémoire du décès.
Les aperçus alimentaires sont comparés à la consommation Minecraft sur
**14 784 cas**, puis 18 consommations avec les passifs réels cochon/mooshroom.
La fondation est testée à zéro prestige : refus sans XP, coût exact de dix niveaux,
propriété et place unique, invitations refusées avant extension, charges de
prestige, reprise du paiement avant/après sauvegarde, mort et restauration
partielle refusée. Le contrôle pur relit un vrai journal schéma 1 sans changer
ses anciennes places/dépenses, puis vérifie sa mutation en schéma 2 et la
conversion unique de la configuration.
Le parcours graphique final passe en **45 s**, sur un monde plat de développement :
HUD à trois puis dix icônes, bonus serveur du familier, infobulles illustrées,
préférences FR/EN, ouverture réelle d’une tête par paquet, extraction sur les deux
pages, transport, informations de mort, GUI 1/2, puis création d’une faction par
les vrais boutons à prestige zéro. Treize captures sont conservées dans
`build/graves038-evidence/`, les logs dans `build/graves038-check-release.log` et
`build/graves038-client-ready.log`.
Les deux MRpacks ont été exportés et vérifiés : 1 381 classes Sanctuary,
dépendances et ressources embarquées identiques aux builds, trois classes du
module Test. Le profil plat ajoute uniquement ce module ; les MRpacks beta.037
restent inchangés. Reçu : `build/graves038-artifact.json`.
- [Pack normal](../build/Sanctuary-beta.038.mrpack).
- [Pack de test plat rapide](../build/Sanctuary-Test-beta.038.mrpack).
Ces tests ne constituent pas un essai prolongé sur un serveur public. Les seules
sauvegardes utilisées sont celles des dossiers de développement ignorés ; aucun
canal public, serveur personnel ni instance Prism n’a été mis à jour.
## Fondation des factions — contrat beta.038
La fondation devient accessible dès l’arrivée, sans prestige : **10 niveaux
entiers d’XP**, une seule place occupée par le fondateur, qui en est responsable.
Chaque place supplémentaire garde le prix en charges personnelles issu du
prestige (une charge par défaut). Les invités n’ont pas besoin de prestige.
Le départ et la dissolution ne remboursent pas la fondation.
Ce contrat autorise une lecture additive des journaux de cycles schéma 1 vers
schéma 2 : les anciens événements restent datés et valorisés en charges, sans
remboursement ni réduction des factions existantes. Les événements nouveaux
précisent leur monnaie (`charges` ou `levels`) ; l’identifiant
`sanctuary:faction_create` reste stable. La configuration schéma 1 est convertie
au chargement vers schéma 2 : `creationCost` est remplacé par
`creationLevels: 10`, `initialCapacity` devient 1. Les autres paramètres sont
conservés. Une configuration schéma 2 conserve son prix configuré.
Le serveur vérifie les niveaux avant d’écrire la fondation. Un reçu persistant
`sanctuary:faction_xp_paid`, sauvegardé avec l’XP du joueur et conservé à la mort,
empêche de payer deux fois après reconnexion. Si le journal a été écrit juste
avant un arrêt mais pas le joueur, le débit restant est repris avant toute autre
opération, puis avant un éventuel reset New Game+. Un reçu en avance sur le
journal est refusé comme restauration partielle. Aucune sauvegarde personnelle
n’est modifiée pendant le développement ; les anciens binaires ne doivent pas
relire un monde passé au schéma 2. Restaurer ensemble joueur et journal.
Les têtes enregistrent aussi l’identité, la date et l’heure civiles dans le
fuseau du serveur (celui de la machine en solo), le message natif de mort,
la dimension et les coordonnées du décès, distinctes du lieu sûr de dépôt.
Ces champs additifs du marqueur schéma 1 et le lore natif restent après vidage.
Le client et le serveur doivent tous deux être en beta.038 : le marqueur réseau
additif `sanctuary:faction_founding_levels_v1` vérifie la nouvelle politique.
+85
View File
@@ -0,0 +1,85 @@
# beta.050 — bateaux compacts et blocs portés
Branche `codex/head-blocks-beta050`.
## Contrat
Deux formats supplémentaires, largeur × longueur : **1 × 2 et 2 × 1**,
dans les onze bois natifs. Deux bateaux ordinaires identiques, disposés selon
la forme souhaitée dans l'établi, donnent le bateau collectif correspondant.
Les noms restent « bois + dimensions ». Les modèles répètent les fonds natifs,
avec bordures extérieures et deux rames. Chaque format accueille quatre
passagers : les deux places principales, puis les deux secondaires.
Les moteurs animaux, commandes partagées, piles et règles de poids sont conservés.
Les 22 variantes rejoignent la collection Bateaux et radeaux, soit 88 variantes.
## Blocs portés
- Les bibliothèques sculptées acceptent les livres enchantés avec leurs données
intactes. Le clic est converti vers la face et la case du modèle porté.
Depuis l'inventaire, un clic avec un livre remplit la première case libre ;
à vide, il récupère le premier livre présent. La même règle s'applique aux
trois cases des étagères. Depuis le slot cosmétique, les objets récupérés
reviennent au curseur.
- Les étagères transmettent leurs trois objets visibles au rendu natif. Les
coffres et fours continuent de conserver leur contenu hors de l'apparence.
- Le pupitre affiche le livre inséré et son interface s'ouvre à main vide.
- Le lit porté comporte ses deux moitiés. Il est purement décoratif : aucun
joueur ne peut y dormir ou y fixer son point de réapparition. Les lits posés
conservent leur fonctionnement natif.
- Les pots acceptent les fleurs admises par Minecraft, avec consommation d'un
exemplaire et récupération à main vide, y compris depuis le slot cosmétique.
- Boutons et leviers reposent à plat sur le dessus de la tête, légèrement
relevés pour rester visibles avec la couche extérieure du skin. Le clic droit
d'un autre joueur, ou le clic dans le slot cosmétique, les actionne.
## Redstone mobile
Une torche de redstone portée est une source continue ; le levier allumé est
une source maintenue ; le bouton suit sa temporisation native. Ces trois sources
émettent une puissance 15 autour de la cellule occupée par la tête et peuvent
alimenter les circuits réels adjacents. La torche portée n'a pas de bloc support
et ne s'inverse donc pas selon un support fictif. Les blocs posés restent natifs.
Le serveur tient un index des cellules alimentées. Il notifie les voisins
seulement lors d'un changement d'état ou de cellule, puis laisse la redstone
native propager le signal. Déplacement, retrait, mort et déconnexion retirent
l'ancienne source ; plusieurs porteurs dans une cellule se cumulent sans que
le retrait de l'un annule les autres. Aucun bloc source n'est placé dans le
terrain et aucun chunk n'est régénéré. Les circuits peuvent naturellement
activer leurs récepteurs, y compris pistons et distributeurs placés.
Le signal local déclenché par un coup de beta.049 reste distinct de ces sources
mobiles. Les cosmétiques ne forment pas un réseau de plusieurs blocs sur une
seule tête. Aucun changement de format de sauvegarde ni de génération.
## Vérification
- `./gradlew check build :sanctuary:runGameTest assemblePack assembleTestPack`
avec `-PsanctuaryFocusedTests=head050,poultry,headblocks,boatshead,cosmetics`
et `-PsanctuaryQuickTests=true` : **40 tests natifs réussis**.
- Le parcours client FR/EN valide les 88 modèles par tuiles et leurs libellés,
les objets réellement synchronisés dans les étagères, le livre du pupitre,
les deux moitiés du lit, les boutons et leviers sur la couronne, le pot fleuri,
le livre enchanté et le vol des deux formats depuis les commandes natives.
- Après le léger relèvement visuel des commandes, nouveau `check build`,
`runClientGameTest` et assemblage, avec les propriétés
`sanctuaryClientTests`, `sanctuaryHead050ClientTests`, `sanctuaryClientNoVsync`
et `sanctuaryQuickTests` à `true`. `-x :sanctuary:runGameTest` évite de répéter
les 40 tests serveur pour cet ajustement limité au rendu. Parcours client réussi.
- `python3 scripts/compile_collections.py` : Markdown, données et traductions
concordants ; 22 nouveaux plans de bateaux ajoutés à la collection.
- Les deux exports packwiz sont vérifiés contre les classes et ressources du
build : **1 533 classes**. Icône officielle, PNG existants, JEI et données de
génération préservés ; archives beta.049 inchangées.
Journaux : `build/head050-delivery.log`, `build/head050-client-final.log`.
Reçu : `build/head050-artifact.json` ; captures : `build/head050-evidence/`.
[Pack normal](../build/Sanctuary-beta.050.mrpack) ·
[Monde plat rapide](../build/Sanctuary-Test-beta.050.mrpack).
Validation effectuée sur les serveurs natifs de test et un client intégré local.
Une session avec plusieurs clients distants reste à confirmer en partie.
Aucun déploiement dans l'instance personnelle, changement du canal public ou
acceptation d'EULA de serveur dédié.
+109
View File
@@ -0,0 +1,109 @@
# beta.023 — cosmétiques de tête interactifs
Ticket commencé en beta.021 le 13 septembre 2026, branche
`codex/head-cosmetics-beta021`. Finalisation en beta.023 après le correctif
de chargement beta.022 préparé dans un autre espace de travail.
## Contrat avant implémentation
Le slot tête reste un objet réel, sans protection, collision, redstone ou effet
de bloc. Les œufs sur la tête gardent leur rendu d’objet. Les autres accessoires,
familiers et pouvoirs ne changent pas.
Les bannières utilisent leurs couleurs et motifs natifs, y compris la bannière
menaçante. Lits et portes ont leurs deux moitiés. Les minecarts utilisent leur
modèle d’entité sans créer d’entité dans le monde. Feuilles, verre et toile
d’araignée enveloppent la tête. Les panneaux utilisent leur texte natif.
Clic droit sur un autre porteur : écrire sur son panneau, ajouter une bougie
au gâteau avec une bougie en main, allumer avec briquet ou boule de feu,
éteindre à main vide, changer la pose d’une statue de golem à main vide.
Une bougie éteinte sur un gâteau peut être retirée à main vide et est rendue.
L’ajout consomme une bougie hors créatif ; allumer use le briquet ou consomme
la boule de feu. Aucun feu ni lumière de bloc n’est créé dans le monde.
Maj garde le geste de portage. Les trois interactions bougie/gâteau/statue sont
aussi accessibles par clic droit sur la case cosmétique dans l’inventaire,
avec l’objet au curseur. Un curseur vide éteint, retire la bougie ou change la
pose ; la bougie retirée revient au curseur. Clic gauche retire normalement
le cosmétique et Maj-clic conserve le transfert natif. Aucun bouton supplémentaire.
Le porteur ne peut jamais écrire sur son propre panneau, même opérateur.
Les huit emplacements d’équipement ont une infobulle de rôle : tête, buste,
jambes, pieds, main secondaire, familier, cape et cosmétique. Elle reste présente
avec un objet équipé, à côté des informations natives de cet objet.
## TNT : exception de gameplay demandée
Un coup infligeant des dégâts amorce la TNT équipée. L’objet est consommé,
remplacé par une vraie TNT native avec une mèche de 80 ticks (4 secondes à
20 TPS), qui suit la tête. Retirer ou remplacer le cosmétique n’annule rien.
La mort, la déconnexion ou le changement de dimension la détachent au dernier
endroit, où elle poursuit sa mèche. Son explosion native endommage les entités
et les blocs selon les règles du serveur, avec l’attaquant comme responsable
lorsque possible. Une seule TNT peut être amorcée sur un même porteur à la fois.
Aucune immunité nouvelle n’est accordée au porteur. La TNT utilise sa sauvegarde
native (position et mèche) ; après redémarrage elle reste au dernier lieu sauvé.
## Stockage et réseau
Le schéma 1 des accessoires reste inchangé. Les composants natifs de la pile
portent `sign_text_front`, `sign_text_back`, `banner_patterns` et `block_state`.
Le gâteau reçoit uniquement une clé additive `sanctuary:head_candle` dans
`custom_data`, contenant l’identifiant de sa bougie. L’absence de cette clé
signifie un gâteau ordinaire. Elle ne transforme pas la pose native du gâteau
en bloc : retirer sa bougie avant de le poser permet de la récupérer.
Toutes les autres données de l’objet sont préservées. Les piles existantes
sont lues sans migration ni réécriture de monde.
Le serveur valide proximité, visibilité, objets, coût et état courant. L’éditeur
natif de panneau est relié à un paquet dédié, jamais au paquet d’édition d’un
bloc du monde. Une session temporaire et un instantané de l’objet empêchent
d’écrire sur un panneau remplacé ou à distance. Le texte accepté est constitué
de quatre lignes sans commandes, avec le filtrage de texte natif du serveur.
Le client et le serveur de cette livraison utilisent `head_cosmetics_v2`.
La version 2 distingue l’interaction avec l’objet au curseur de l’ancien bouton
utilisant la main principale ; un ancien client est refusé à la connexion
pour éviter de donner deux sens différents au même geste. Client et serveur
doivent être mis à jour ensemble.
## Validation
Livraison locale **beta.023**, client et serveur de même version.
- `./gradlew check build assemblePack :sanctuary:runClientGameTest` réussi,
avec les suites cosmétiques, accessoires, familiers, progression, mouvement,
inventaire, transferts, rangement, cycle, minage, construction, premiers pas
et optimisation : **117 tests serveur**, puis parcours client natif.
- Actions au curseur : bougie consommée une seule fois, briquet usé ou cassé,
extinction puis restitution au curseur, main principale conservée. Un menu
de coffre ouvert refuse le paquet réservé à l’inventaire personnel.
- Clic gauche retire le cosmétique ; le clic droit d’un panneau personnel
garde le transfert natif et n’ouvre pas l’éditeur. Le mixin ignore Maj.
- Autre joueur : vrais clics sur panneaux classiques/suspendus, éditeur natif,
texte réseau puis rendu. Motifs menaçants et seize couleurs de bannières,
deux moitiés de portes/lits, six minecarts, verre/feuilles/toile et œuf inchangé.
- TNT : dégâts réels, coup fatal avant les drops, quatre secondes de mèche,
suivi et explosion native malgré le retrait du cosmétique.
- Optimisation beta.022 intégrée : **588 288 comparaisons bit à bit** réussies
et classes de densité identiques à celles du précédent pack vérifié.
- ZIP, versions, dépendances exactes, JAR embarqué et Demeure imbriqué vérifiés.
Exports beta.020/beta.022 immuables ; PNG existants conservés ; aucun test
ni monde distribué. Sources figées pendant la construction finale.
Commande de vérification :
```sh
./gradlew check build assemblePack :sanctuary:runClientGameTest \
-PsanctuaryClientTests=true -PsanctuaryHeadCosmeticsClientTests=true \
-PsanctuaryFocusedTests=cosmetics,accessories,familiar,companions,progression,movement,inventory,inventoryflow,sorting,cycle,mining,building,tutorial,startup
```
Export : [Sanctuary-beta.023.mrpack](../build/Sanctuary-beta.023.mrpack).
SHA-256 : `2140d477f2e105884ffdfe8d3d7a1199a1fdf3d298ad97dc7880c89918eb22c4`.
Preuves ignorées : `build/cosmetics023-artifact.json`,
`build/cosmetics023-check-build.log`, captures du client et diagnostics serveur.
Les essais graphiques ont lieu sur Mac M1, dans un monde de développement
neuf, avec un second avatar serveur de test ; aucune session distante réelle,
ni validation Windows, ni installation Prism n’est revendiquée. Le portage
JEI est le [ticket suivant](recipes-jei-beta022.md), pas une fonction de ce pack.
+46
View File
@@ -0,0 +1,46 @@
# beta.051 — visée du distributeur porté
Branche `codex/head-dispenser-aim-beta051`.
Le distributeur équipé dans le slot cosmétique lance ses projectiles selon le
regard du porteur au moment du tir, horizontalement et verticalement, y compris
pendant une rotation entre le déclenchement et le tir différé. L'origine du tir
suit la tête réelle du joueur, pas le centre arrondi d'une cellule du monde.
Les treize munitions natives utilisent le même correctif : flèches normales,
spectrales et à effet, trois couleurs d'œufs, boule de neige, fiole d'expérience,
potions jetables et persistantes, fusée, boule de feu et charge de vent.
Le lancement natif conserve vitesse, dispersion, trajectoire ultérieure,
effets et consommation d'une munition. Le porteur devient le propriétaire du
projectile, ce qui évite de le toucher immédiatement lors d'un tir vers le bas
et attribue les impacts au joueur. Les comportements habituels des projectiles
appartenant à un joueur restent applicables.
Les distributeurs posés, droppers et objets non projectiles conservent leur
fonctionnement. Aucun changement des sauvegardes, de la génération ou des textures.
## Vérification
`./gradlew check build assemblePack assembleTestPack
-PsanctuaryFocusedTests=dispenser051,head050,headblocks,boatshead,cosmetics
-PsanctuaryQuickTests=true` : succès, **34 tests serveur** sur Minecraft
26.3-pre-2. Les quatre nouveaux tests couvrent :
- 104 lancements natifs : treize munitions dans huit directions, dont les
verticales ; origine précise, vitesse, propriétaire et consommation vérifiés.
- Changement de regard et de position entre l'impulsion et le tir différé.
- Distributeur posé conservant son orientation, même pendant l'exécution
d'un autre bloc porté.
- Dropper conservant son éjection d'objet et flèche vers le bas sans impact
immédiat sur le porteur.
Journal : `build/dispenser051-delivery.log`. Reçu :
`build/dispenser051-artifact.json`. Les 1 534 classes et ressources emballées
correspondent au build ; seule la classe du nouveau mixin s'ajoute depuis
beta.050, avec son enregistrement. Archives beta.050, textures et données de
génération préservées.
[Pack normal](../build/Sanctuary-beta.051.mrpack) ·
[Monde plat rapide](../build/Sanctuary-Test-beta.051.mrpack).
Validation en partie avec plusieurs clients distants restant à confirmer.
Aucun déploiement sur le canal public ou l'instance personnelle.
+44
View File
@@ -0,0 +1,44 @@
# beta.039 — Hello World et familier de départ
Contrat demandé le 14 septembre 2026, avant modification. Le serveur enregistre
une proposition de trois espèces différentes dès le début du Hello World. Le
tirage prend trois communs sans remise ; avec 10 % de chance, une place aléatoire
est remplacée par un peu commun. Les raretés et espèces activées proviennent de
la configuration serveur des familiers au moment du tirage. Aucun rare ni au-delà.
La création reste sur **un seul écran Hello World** : identité, palette de
couleurs, puis **trois cases d’œufs centrées** sur la ligne suivante. Le libellé
« Familier de départ » reste aligné à gauche avec les autres champs. Le survol montre le
nom, la rareté et une courte description ; un cadre natif marque le choix actif.
Les 44 espèces communes/peu communes du catalogue possèdent une description FR/EN.
Entrer exige une couleur et un familier. Les cases réutilisent les sprites natifs,
sans créer de textures. L’écran séparé de choix n’est pas conservé.
Quitter ne relance aucun tirage. La validation enregistre l’identité et le choix
avant l’introduction. Une coupure après validation reprend l’intro. Si l’écriture
est interrompue entre identité et sélection, le même formulaire reprend avec
l’identité enregistrée verrouillée et les trois œufs d’origine. Le choix confirmé
est définitif. L’œuf est équipé à la première arrivée.
Migration additive : nouveau fichier du monde `data/sanctuary-starters.json`,
schéma 1, contenant UUID, trois choix et sélection. Les registres d’habitants
existants ne changent pas. Les habitants déjà enregistrés avant cette version
continuent leur parcours sans recevoir rétroactivement un œuf. Nouveau reçu
joueur `sanctuary:starter_companion` sauvegardé avec l’équipement, copié à la mort
et conservé au prestige ; aucune remise d’œuf après perte, transfert ou mort.
Les anciennes données invalides sont préservées et bloquent l’accueil.
La synchronisation utilise des messages de configuration distincts, sans modifier
les anciens messages Hello World. Les clients doivent connaître ce nouvel écran.
Les essais restent dans les mondes de développement.
## Validation
Quatre tests serveur passent : 10 000 tirages et catalogue configuré, reprise du
fichier avant/après sélection, refus des choix étrangers et du changement final,
œuf/reçu sauvegardés ensemble, mort et véritable prestige, absence de cadeau
rétroactif et préservation des fichiers invalides. Le parcours client natif
vérifie le choix en phase de configuration sans joueur/monde client, un paquet
falsifié refusé, l’œuf choisi équipé, puis sauvegarde et reconnexion sans remise.
Capture : `build/food039-evidence/hello-starter.png`.
Le profil plat de test garde cette sélection ; seule la cinématique est passée.
-507
View File
@@ -1,507 +0,0 @@
# La mémoire de Steve et la naissance de Galactium
Sanctuary peut raconter l’histoire d’une civilisation qui a grandi avec les
possibilités de Minecraft. Les mises à jour fournissent l’ordre des découvertes,
les personnages fournissent des regards différents sur ces découvertes, et les
ruines permettent aux joueurs d’en retrouver les conséquences.
La chronologie documentaire et le récit ont deux statuts distincts. Les dates
et contenus sont établis dans les dossiers sourcés ci-dessous. La biographie,
les relations entre les anciens et l’explication mathémagique sont une
**proposition de mythologie Sanctuary**, pas un récit officiel de Mojang.
## Corpus historique et périmètre
Le dossier suit Java Edition, des premières versions de 2009 aux contenus
documentés en 2026. Il couvre les mises à jour de contenu et les premières
apparitions importantes dans les versions de développement. Les correctifs
strictement techniques ne reçoivent pas chacun un épisode mythologique. Les
différences de disponibilité des personnages entre Java, Launcher et Bedrock
sont signalées dans leur dossier.
| Dossier | Contenu |
| --- | --- |
| [Minecraft de 2009 à 2014](recherche-minecraft-2009-2014.md) | Premières phases, Alpha, Beta et versions 1.0 à 1.8 ; fondations du monde, des machines et des déplacements. |
| [Minecraft de 2015 à 2026](recherche-minecraft-2015-2026.md) | Mises à jour de contenu modernes et snapshots déterminants ; statut des versions récentes. |
| [Apparition des personnages](recherche-minecraft-personnages.md) | Steve, Alex et les sept nouveaux skins, dates et limites de ce que les sources établissent. |
| [Chronologie Sanctuary et temps réel](chronologie-sanctuary.md) | Articulation avec Minecraft, repères de création et calendrier partagé. |
| [Archives historiques Sanctuary](recherche-archives-sanctuary.md) | Recoupement des souvenirs de l’auteur avec les dépôts, annonces et anciens packs. |
Le Minecraft Wiki actuel est communautaire. L’ancien statut officiel a pris fin
en 2021 ; les annonces Mojang servent de sources primaires complémentaires.
L’accès direct à certaines pages anglaises du wiki étant indisponible, les
dossiers distinguent les éléments recoupés et les limites des extraits indexés.
La recherche est arrêtée au 11 septembre 2026 ; une préversion observée ne vaut
pas confirmation de sa sortie stable. [S1](#sources-de-cadrage)
Les films, romans, Minecraft Dungeons, Legends et Story Mode ne définissent pas
ici la biographie des neuf. Leurs continuités ne sont pas fusionnées avec celle
du jeu Java. L’apparition d’une mécanique dans une mise à jour indique quand elle
devient disponible dans le jeu ; elle ne prouve pas que Steve l’a inventée ni
que ses habitants viennent de naître.
## Ordre des anciens
Le récit respecte trois arrivées documentaires : **Steve, puis Alex, puis Ari,
Efe, Kai, Makena, Noor, Sunny et Zuri comme une même génération d’apparition**.
La liste des sept n’est pas un ordre d’ancienneté. Leur annonce commune a lieu
en 2022 ; aucune arrivée successive propre à chacun n’est établie par cette
annonce. L’orthographe retenue pour Sanctuary est désormais **Efe**.
[S2](#sources-de-cadrage) [S3](#sources-de-cadrage)
Cela suggère un récit avec un premier témoin, une deuxième mémoire indépendante,
puis un groupe capable de transformer les expériences en infrastructure.
Steve n’a pas besoin d’être le premier être vivant ni l’auteur de tous les
vestiges. Son importance vient de la durée de son expérience. Alex ne vient pas
simplement l’assister : Alex apporte une autre manière d’habiter et de raconter
le monde. Les sept nouveaux personnages ont ensuite leurs propres recherches,
leurs installations et leurs désaccords.
## Le fil mythologique proposé
### 1. Le monde que Steve peut encore compter
Les phases initiales donnent un vocabulaire limité de blocs et de constructions.
Indev propose notamment des types de mondes insulaires et flottants, avant
l’évolution vers Infdev. Ce précédent fournit à Sanctuary une parenté historique
avec une forme ancienne de Minecraft. [S4](#sources-de-cadrage)
Dans le récit, Steve commence par mesurer ce qui l’entoure. Un mur a une
épaisseur, une réserve un nombre de cases, un trajet une distance parcourable.
Steve construit pour dormir, ranger, cultiver, éclairer. Le premier savoir est
de rendre un petit endroit habitable et de pouvoir le retrouver.
La trace de cette époque serait modeste : une cabane agrandie plusieurs fois,
des matériaux simples, un ancien niveau de sol encore visible sous une extension.
Le cube originel pourrait être le repère à partir duquel Steve avait commencé
à compter. Cela n’établit pas encore qui a créé ce cube.
### 2. L’horizon cesse de donner une limite
Infdev et l’évolution de la génération permettent de prendre comme tournant
l’élargissement du monde. Dans la fiction, Steve découvre que marcher plus loin
ne rapproche plus nécessairement d’un bord. L’abondance existe, mais elle se
trouve ailleurs. Les besoins deviennent des problèmes de trajet, de retour et
de transport.
Le Nether offre ensuite un autre rapport aux distances. L’enchantement et les
premières rencontres avec l’End ouvrent la possibilité que les lieux obéissent
à des relations que la simple marche ne révèle pas. Ces apparitions restent
dans leur ordre historique, détaillé dans le dossier ancien.
Steve commence à conserver des signes. Certains se répètent autour d’objets
ou de passages. La compréhension vient de plusieurs observations concordantes,
pas d’un livre donnant immédiatement les règles de l’univers. Les glyphes des
enchantements sont un point de départ visuel ; leur sens opératoire appartient
à la fiction de Sanctuary.
### 3. Une installation continue après le départ de sa main
La redstone, les pistons, les systèmes de stockage et les hoppers marquent des
étapes différentes de l’histoire réelle. Le récit peut faire grandir les
constructions en respectant leur ordre, sans placer un dispositif tardif dans
une ruine primitive dépourvue de réparations.
Steve résout d’abord un travail répétitif. L’eau arrive au bon endroit ; une
porte attend une condition ; les ressources se rassemblent. Le progrès lui
donne du temps pour partir. Les premières infrastructures sont des solutions
utiles à des besoins ordinaires, dont on peut encore comprendre le fonctionnement.
Un ancien poste de pompage doit montrer ce qu’il alimentait. Un tunnel doit
permettre de deviner ce qu’il rapprochait. Les premières traces de Galactium
peuvent ainsi se cacher dans un dispositif utile, avant d’être identifiées comme
une théorie générale.
### 4. Alex conserve ce que Steve laisse fonctionner
L’arrivée d’Alex appartient à la période 1.8, en 2014. Elle constitue un repère
documentaire ; le rôle suivant est une proposition de personnage.
[S3](#sources-de-cadrage)
Alex compare les lieux. Une carte, une coupe de terrain et la mémoire d’un
trajet montrent que deux descriptions du même endroit peuvent diverger.
Alex conserve les anciennes versions des plans au lieu de les remplacer.
Des pages corrigées et plusieurs entrées d’un même bâtiment permettent de
comprendre sa transformation.
Le désaccord fondateur pourrait être simple : Steve veut qu’une installation
continue de servir ; Alex veut que quelqu’un puisse encore expliquer pourquoi
elle existe et où elle mène. Ces deux ambitions sont utiles. Leur tension devient
plus difficile à résoudre à mesure que les installations se multiplient.
### 5. Ils apprennent à donner une adresse à autre chose qu’un chemin
Les développements de l’End, des océans, des villages et des ressources donnent
des années d’exploration et de construction au duo. Les développements ultérieurs
des boussoles liées à la magnétite et des ancres de réapparition fournissent des
motifs particulièrement adaptés à Galactium : un objet peut conserver une
relation avec un lieu, et un retour peut demander une condition matérielle.
[S5](#sources-de-cadrage) [S6](#sources-de-cadrage)
Dans le récit, Steve et Alex n’inventent pas tous ces phénomènes. Ils comparent
les choses que le monde permet déjà. Leur découverte consiste à reconnaître
une grammaire commune derrière plusieurs pratiques.
Un programme peut alors décrire une opération ; une construction en réunit les
conditions. La formule devient opérante quand la matière, la forme et les accès
s’accordent. C’est le début proposé de la mathémagie, plutôt qu’une permission
arbitraire donnée à un personnage omnipotent.
### 6. Les profondeurs possèdent déjà leur histoire
Les nouvelles profondeurs, puis les cités anciennes, apportent un avertissement
qui n’est pas nécessairement une menace. La présentation officielle du Deep Dark
conserve elle-même une architecture et un passé énigmatiques. Elle ne permet pas
d’attribuer toutes les cités aux neuf disparus. [S7](#sources-de-cadrage)
Dans Sanctuary, les deux personnages peuvent découvrir des installations dont
la logique leur ressemble, sans reconnaître leur époque ni leurs auteurs.
Certaines solutions ont peut-être été trouvées plusieurs fois. Ce soupçon donne
une profondeur au monde sans obliger à révéler sa première civilisation.
Une boussole de récupération fournit aussi un motif réel : une information peut
encore désigner une ancienne position après une mort. Le passage de cette idée à
la recherche des espaces orphelins demeure notre invention. [S8](#sources-de-cadrage)
### 7. Sept personnes rendent la découverte habitable
À partir de leur apparition documentaire commune en 2022, les sept nouveaux
personnages peuvent rejoindre le récit. Ils héritent des premières découvertes
mais ne partagent pas tous la même idée de leur usage. L’archéologie, les moyens
de conserver des livres et les développements de la fabrication automatique
peuvent ensuite accompagner leurs travaux. [S9](#sources-de-cadrage)
[S10](#sources-de-cadrage)
Galactium devient une infrastructure parce que le groupe résout de vrais
problèmes : nourrir, transporter, construire à plusieurs, produire, retrouver
les objets et agrandir les espaces devenus trop petits. La ville peut naître
de ces besoins. Ses cuisines, bassins, ateliers et corridors précèdent leurs
versions abandonnées.
Le succès produit la difficulté. Chaque dispositif rend un autre dispositif
plus facile à construire. Les personnes qui comprennent toutes les dépendances
deviennent moins nombreuses que les installations en service.
### 8. Le monde conserve les résultats, même quand leur usage se perd
Le lien proposé entre les systèmes est le suivant : un Indoor est un espace
délimité dont on conserve la référence ; une Backroom garde une forme et de la
matière lorsque leur contexte devient introuvable. Une expansion ajoute un
territoire accessible. Les échanges et opérations peuvent laisser du ballast,
dont les modalités économiques restent à concevoir.
Les noyaux rendent des expansions possibles. Leur casse les fait disparaître
et libère une charge commune ; le serveur répond en galactique. Le noyau, la
charge et le ballast ont des rôles distincts. Aucun passage du récit ne fixe
une conversion quantitative entre eux ni ne remet le noyau dans un inventaire.
La grande question des anciens devient : comment cesser de faire fonctionner
une installation sans retirer à quelqu’un son accès, son logement, son trajet
ou son moyen de subsistance ? L’arrêt de chaque machine semble possible pris
isolément. L’arrêt de l’ensemble ne possède plus de solution qu’ils sachent
exécuter en préservant tous ces usages.
### 9. La séparation
**Proposition de dénouement à valider.** Les anciens entreprennent de réduire
leur dépendance au système. Ils séparent les fonctions, déplacent des accès,
isolent des volumes et cherchent à conserver une région habitable autour du
repère initial. Des chantiers interrompus et des raccords provisoires témoignent
de ce travail de maintenance.
Les territoires demeurent, mais leurs relations ne forment plus un monde que
les anciens savent parcourir entièrement. Certaines destinations deviennent
inaccessibles depuis les points de départ connus. Les neuf disparaissent des
lieux que les joueurs explorent ; leur mort, leur transformation ou leur
destination ne sont pas établies.
Sanctuary Island serait la région dont le repère commun tient encore. Les
nouveaux joueurs y apparaissent dans la nature et retrouvent progressivement
les installations. Une première expansion prouve qu’il est à nouveau possible
d’établir une relation stable avec un autre territoire. Elle ne prouve pas que
chaque nouveau continent existait déjà dans l’ancienne partie.
Le canon donné conserve son sens : ils ont construit quelque chose qu’ils ne
savaient plus refermer. Le récit ne désigne pas un coupable unique. Les traces
montrent des problèmes réellement résolus, puis des tentatives de préserver
les bénéfices de ces solutions.
## Les neuf voix proposées
Ces rôles sont des personnages de Sanctuary à discuter. Ils ne découlent ni de
la couleur des skins, ni de leur nom, ni d’une biographie officielle. Les sept
personnages apparus en 2022 ne sont pas rétroactivement les auteurs des inventions
antérieures ; ils peuvent les apprendre, les adapter et les critiquer.
**Précisions retenues le 11 septembre 2026 : Kai est le cuisinier fixe**, choisi
par un tirage unique parmi les sept personnages ajoutés après Steve et Alex.
Le livre de recettes lui est attribué. **Alex porte le domaine de la nature et
des biomes ; Steve reste absent.** Les rôles d’**Ari pour le build**, de **Makena
pour la redstone** et de **Zuri pour les étoiles et le temps** sont également
retenus. Les questions personnelles et détails biographiques ci-dessous restent
des propositions, distinctes de ces domaines désormais choisis.
| Personnage | Question personnelle | Contribution et trace à retrouver |
| --- | --- | --- |
| **Steve** | Comment faire durer ce que l’on a construit ? | Premiers montages, réparations successives, programmes simples toujours exécutés. Sa force est la continuité ; son angle mort serait de prendre un fonctionnement durable pour une compréhension durable. |
| **Alex** | Comment connaître et habiter les milieux de Sanctuary ? | Domaine nature et biomes retenu ; plantes, observations et connaissance des lieux donnent des pistes d’activités. Cela ne réintroduit pas une recherche automatique de biomes. |
| **Ari** | Quelle forme suffit pour qu’un intérieur tienne ? | Volumes d’essai, portes à différentes échelles, plans d’Indoors. Ari recherche la précision sans réduire l’habitat à un volume abstrait. |
| **Efe** | D’où vient la matière, et que devient-elle après usage ? | Relevés, stations de prospection, réserves et premiers indices de ballast. Efe cherche à rendre visibles les conséquences de la production. |
| **Kai** | Comment transformer une récolte en un repas réussi ? | Cuisinier fixe, livre de recettes à reconstituer, préparation et cuisson, concours et jugement des plats. Les règles de qualité restent à définir ; l’ancienne piste de liaisons spatiales est retirée de ce rôle. |
| **Makena** | Comment une installation peut-elle servir plusieurs personnes ? | Ateliers, circulation des ressources, interfaces d’usage et programmes de Régie. Makena transforme une expérience en équipement collectif. |
| **Noor** | Que reste-t-il quand une adresse ne répond plus ? | Journaux d’opérations, signaux sans destination et balises de recherche. Noor distingue une trace d’une preuve, y compris lorsque les autres veulent conclure. |
| **Sunny** | Qu’est-ce qu’un espace habitable pour autre chose qu’une machine ? | Jardins, serres et chemins vivants restent des pistes à distinguer du domaine d’Alex. Le rôle de cuisinier et son livre sont attribués à Kai. |
| **Zuri** | Comment savoir que deux événements appartiennent à la même histoire ? | Observatoire, relevés du ciel et correspondances avec les événements collectifs. Zuri cherche des repères de temps quand les espaces cessent d’en fournir. |
Leurs relations peuvent traverser leurs spécialités. Une archive de Noor peut
contredire une carte d’Alex ; Sunny peut réutiliser une expérience d’Ari ; un
montage de Steve peut être compris grâce aux mesures d’Efe. Aucun personnage
ne devient le propriétaire exclusif d’un programme nécessaire aux joueurs.
### Identités, apparences et transformations
**Direction culturelle retenue : une mythologie implicitement queer.** Sanctuary
accueille la possibilité de se transformer et de se définir sans que l’apparence
détermine l’identité ou le rôle. La formule « on est tous trans » exprime ici
une métaphore de la transformation commune ; elle n’assigne pas une identité
trans à chaque personne. Cette lecture appartient à Sanctuary, sans prétendre
définir le canon de Mojang ni les identités de personnes réelles.
Dans cette conception, skins et modèles aux bras larges ou fins ne constituent
pas des catégories de genre donnant des capacités, des métiers ou des destins
différents. L’absence de genre mécanique ne signifie pas l’absence de genre
vécu : chaque joueur reste libre de se définir. Une apparence ne suffit pas à
déduire cette identité.
**Pistes de mise en scène, encore proposées :** les visiteurs transmettent des
pratiques choisies, sans métiers assignés selon le genre ; les changements
d’apparence sont ordinaires et n’exigent pas de justification dans le récit.
Des traces de plusieurs avatars pourraient appartenir à un même auteur de
construction ou de programme. Ce serait une possibilité à explorer dans les
ruines, pas une nouvelle identité confirmée des anciens ni une explication
acquise de leur disparition.
### Entrer dans la mythologie — accueil avant la première apparition
**Déroulement demandé : fiche personnage, courte cinématique d’initialisation,
puis arrivée naturelle.** La fiche présente d’abord le skin, le pseudo et une
bio que le joueur peut écrire. La séquence en alphabet galactique apparaît
ensuite, dans la cinématique, avec l’initialisation du personnage et une
représentation graphique de recherche d’un emplacement sûr, comme un ordinateur
qui démarre. L’ancien scénario avant le profil est retiré. Sanctuary comme
archive qui semble se mettre à jour seule reste une piste narrative sous-jacente,
dont l’accueil n’explique ni le fonctionnement ni l’origine.
La lecture queer reste implicite, sans demander de se déclarer trans ni de
partager cette lecture. La mise en scène précise reste en discussion.
Le [cahier d’accueil et des profils](accueil-et-profils.md) détaille ce parcours
et le système d’amitiés natif demandé ; aucun écran ni cinématique n’est livré.
Le personnage entre dans une histoire commencée avant lui, avec la possibilité
d’y laisser ses propres traces. Le lien aux anciens tient à cette qualité
d’habitant et d’auteur de constructions, de programmes et de souvenirs. Il
n’impose ni descendance, ni réincarnation d’un ancien, ni rôle d’élu au joueur.
**Ordre retenu ; gestes et représentation encore à dessiner :**
1. Montrer le skin actuel et le nom de jeu, puis proposer une bio et son
réglage de visibilité. Elle peut rester vide, parler de goûts Minecraft
ou présenter un personnage fictif ; aucune classe n’est imposée.
2. Après la fiche, jouer une courte séquence d’initialisation avec l’alphabet
galactique et une recherche d’emplacement représentée graphiquement.
Les motifs, animations et liens aux données réelles restent à concevoir ;
aucun jeu de paramètres fictifs de sécurité n’est arrêté. Le serveur choisit
et vérifie l’emplacement réel d’arrivée.
3. Donner la main au joueur dans un endroit naturel. Les vestiges, machines
et secrets se découvrent ensuite par l’exploration.
La première apparition effective sur le serveur, après cette initialisation,
publie une seule fois **« helloworld {pseudo} »**. Les connexions suivantes
gardent **« {pseudo} joins the game »** ; le suivi repose sur l’UUID, avec le
pseudo actuel à l’affichage.
La proposition privilégie la première arrivée dans un monde. La bio peut être
complétée plus tard ; durée de la cinématique, possibilité de la passer et
traitement des connexions suivantes restent à préciser. Un changement de skin
actualise l’apparence présentée et conserve
la continuité de l’histoire du joueur. Il n’exige ni nouveau départ, ni annonce
publique, ni justification narrative de cette transformation.
La scène n’infère aucun genre depuis le skin, le modèle de bras ou le pseudo.
Aucune déclaration de genre, de transidentité ou de passé personnel n’est requise
pour entrer. La bio facultative laisse la place à l’identité vécue
du joueur ; elle ne décrète pas que son genre n’existe pas. Des formulations
comme « Bienvenue » et « Entrer » permettent de s’adresser à tout le monde.
**Piste visuelle ultérieure :** représenter les joueurs avec le même soin que
les anciens dans les portraits, cartes ou archives où leur présence a du sens.
Ce parallèle peut se découvrir plus tard ; l’accueil ne dévoile pas d’emblée
les neuf personnages ni leurs destins. Les archives d’apparences successives
ne sont pas requises par cette proposition.
L’alphabet galactique appartient à la mise en scène d’initialisation, après le
profil. Il ne constitue ni une explication de Galactium ni une nouvelle prise
de parole du système. Les conseils, diagnostics, fragments biographiques ou
appels automatiques déjà écartés ne sont pas réintroduits. La bio est écrite
par le joueur ; la cinématique ne la complète pas ni ne révèle sa version
réservée aux amis.
« Avant la connexion » désigne ici l’expérience **avant la première apparition
jouable**. Le raccord à la connexion, aux données du monde et au chargement
sera choisi dans le ticket d’interface ; aucune dimension d’attente ni nouvelle
scène de spawn n’est introduite par ce document.
**Décision retenue : la présence dans la mythologie, l’histoire et la progression
du personnage sont liées à l’UUID du compte du joueur**, dans le monde concerné.
Le pseudo et le skin servent à présenter ce personnage et peuvent évoluer.
La proposition de fonder cette continuité sur le nom est remplacée par ce choix.
Pour la future réalisation, le rattachement au compte authentifié utilise
son **UUID**, tandis que l’accueil affiche le pseudo et le skin actuels.
Changer de nom ou de skin ne doit pas créer un autre
personnage, effacer sa progression ou réattribuer ses actes à quelqu’un qui
reprendrait son ancien nom. L’écran n’affiche pas cet identifiant technique
et n’exige pas de conserver publiquement la liste des anciens pseudos.
Le contrat d’identité et son raccord au journal serveur restent à implémenter ;
aucune migration de données n’est effectuée ici.
### Présences de passage
L’auteur souhaite que des personnages **visitent Sanctuary pendant une journée**,
se promènent et proposent au clic droit un menu de discussion, des quêtes ou
des échanges spécialisés. Kai peut organiser des concours de cuisine ; le
personnage du build peut demander des constructions et incarner l’accès au
catalogue galactique. Un marchand de décoration est une piste, sans identité
fixée. L’invocation évoquée auparavant reste en réserve.
La nature de ces présences reste à écrire ; leur visite n’explique pas encore
la disparition des anciens ni leur état actuel. Steve demeure absent ; des
**flashs d’Herobrine** sont souhaités, sans identifier Herobrine à Steve ou en
faire automatiquement un boss. Les rendez-vous de visiteurs se rattachent au
temps réel et ne remplacent pas les communications restreintes de Galactium.
Voir les [visiteurs et leurs pratiques](progression-et-integrations.md#visiteurs-et-pratiques-des-anciens).
## Mathémagie commune
**Direction retenue : Galactium est le vide qui structure ce qui l’entoure.**
L’auteur souhaite une approche de science-fiction, dans un esprit d’exploration
et d’ingénierie évoquant Star Trek, avec une ampleur qui peut sembler divine.
Cette cosmologie appartient à Sanctuary. Galactium désigne désormais aussi le
fondement du système d’expansion qui porte déjà ce nom.
Formulation proposée pour le récit :
> La matière donne une forme aux choses. Le Galactium leur permet de tenir ensemble.
Ce vide serait présent entre les îles comme dans les relations entre blocs,
lieux et dimensions. Les anciens découvrent progressivement des effets
reproductibles : maintenir un volume, conserver une adresse, relier deux lieux.
Ils construisent des instruments, comparent leurs résultats et transmettent des
programmes. Leur maîtrise pratique peut progresser plus vite que leur compréhension
de ce qu’ils utilisent. Cette piste prolonge l’histoire des solutions devenues
une infrastructure dont ils ne savent plus organiser l’arrêt.
La comparaison avec Dieu exprime sa portée cosmologique. Sa conscience, sa
volonté et l’existence d’une intention restent ouvertes. La réponse galactique
du serveur lors de la casse d’un noyau pourrait être comprise comme un signal
ou une présence : ces lectures sont des propositions. Les ruines
peuvent conserver des mesures, des essais et des dispositifs de secours ; leurs
auteurs ont appris à agir sur le monde avec une connaissance incomplète.
Galactium peut ainsi se manifester comme une présence qui habite le serveur.
Ses secrets retenus sont des coordonnées, des morceaux de programmes et des
rendez-vous préécrits. Leur présentation passe par des [afficheurs diégétiques](langage-et-machines.md#afficheurs-diégétiques-textes-dynamiques-et-statistiques)
qui peuvent afficher du texte dynamique et des statistiques. Les messages
d’histoire, conseils, diagnostics et demandes mystérieuses proposés puis rejetés
ne font pas partie de cette sélection.
L’omniprésence de Galactium ne donne pas un usage illimité de ses effets. Les
programmes en assembleur pilotent les opérations d’installations construites ;
les charges collectives, ressources et conditions de réalisation gardent leurs
rôles. L’origine des Endermen et la cause précise de la disparition des anciens
ne sont pas résolues par cette définition.
Une notation de conception peut guider l’écriture :
**Lieu = matière + forme + adresse + relations maintenues.**
C’est une règle de fiction, à transformer plus tard en contrats de jeu. Elle
ne prétend pas être une loi physique ni une égalité de quantités de blocs.
Les programmes permettent de mesurer, délimiter, transformer, relier et suivre
des opérations. Les installations apportent les moyens matériels et les
conditions d’exécution.
Le cube possède six orientations, autour d’un point de référence. Les sept
boules pourraient se rattacher à cette image d’un repère complet. Leurs épreuves
déjà envisagées — fortune, cauchemar, Notch et cristal du nécromancien — gardent
leurs intentions. Les fonctions restantes et la signification finale restent
à définir ; neuf personnages ne doivent pas être artificiellement ramenés à
sept postes fixes.
Les Cavernes restent un monde de minage dont le donjon débloque les portails
collectivement. Le Nether et l’End gardent leurs accès propres. Les fonctions
thématiques proposées dans le [cahier des machines](langage-et-machines.md#programmes-à-thème-et-fonctions-des-lieux)
peuvent enrichir cette histoire sans imposer une campagne à étapes obligatoires.
Le monde Alpha peut conserver une expérience primitive, avec ses formes et ses
textures ; sa relation à Notch demeure un choix de fiction Sanctuary distinct
de l’histoire réelle de son développeur.
## Rendre cette histoire visible dans les structures
Une ruine doit pouvoir être comprise avant d’être lue. Elle possède une
ressource d’entrée, une transformation ou une circulation, un résultat et des
personnes auxquelles elle servait. Son abandon révèle des usages interrompus.
| Trace | Lecture possible en jeu |
| --- | --- |
| Deux générations de matériaux et un ancien seuil conservé | Le bâtiment a été agrandi ; sa date de fondation et sa dernière intervention diffèrent. |
| Une conduite encore raccordée à un bassin, avec une commande manquante | L’installation fournissait de l’eau ; le défaut est compréhensible et réparable. |
| Un programme sur disquette, ses variantes et un montage d’essai | Les anciens comparaient des solutions ; le code devient un outil transmissible. |
| Une salle d’expansion déséquipée, avec plans et raccords | La fonction peut être reconstruite ailleurs ; l’endroit conserve sa valeur de découverte. |
| Un journal de transfert et une destination qui ne répond plus | La perte est un lien à examiner, pas la preuve immédiate d’une mort. |
| Des palettes de Backrooms associées à différentes activités anciennes | L’histoire économique laisse des couches que les joueurs peuvent interpréter. |
La sélection actuelle reste un départ naturel, l’observatoire, la salle
d’expansion, un atelier caché, la traversée souterraine et le donjon majeur.
Les Lost Cities sont principalement destinées aux continents d’expansion ;
les autres bâtiments restent en réserve sur l’île initiale. Les salles secrètes
y transmettent des solutions utilisables et reproductibles par leurs montages,
avec terminaux, contrôleurs, afficheurs, disquettes et blocs vanilla. La grande
salle ancienne reste essentielle, sans dépendre d’une ville au-dessus. Écrire ce
passé et ces usages ne les active pas automatiquement dans la génération actuelle.
## Décisions à valider et limites
Le respect de l’ordre des mises à jour, l’orthographe Efe et la distinction entre
faits et fiction sont établis pour ce dossier. Le récit de la séparation,
les relations personnelles, la fonction précise du cube et les sept épreuves
restent des propositions. La cause finale de la disparition des neuf doit être
choisie consciemment, avec ce que les joueurs peuvent réellement en découvrir.
Le calendrier souhaité suit le temps réel et prend Minecraft comme chronologie
principale. Les repères Sanctuary donnés de mémoire — 16 mars, 24 mai, 17 août
et 8 septembre 2026 — font l’objet d’un audit avant d’être figés. Leur sens
fictionnel, l’âge biologique des personnages et la date de leur disparition
restent à choisir. Une snapshot peut inspirer un prototype abandonné ; une fonctionnalité
retirée ne devient pas pour autant un pouvoir disponible dans le mod.
Ce dossier n’implémente aucune dimension, machine, quête ou altération de monde.
Les espaces orphelins demeurent une fiction correctement sauvegardée ; la
recherche des objets perdus doit conserver leur unicité. La mythologie prépare
les futurs tickets jouables et leurs critères de vérification.
## Sources de cadrage
Les dossiers historiques contiennent les références détaillées par mise à jour.
Les sources suivantes soutiennent les rapprochements factuels employés ici ;
elles ne valident pas les biographies et la cosmologie proposées.
- **S1. Minecraft Wiki**, [Community portal — Microsoft status update](https://minecraft.wiki/w/Minecraft_Wiki:Community_portal/Microsoft_status_update), avis sur la fin du statut officiel, 2021.
- **S2. Mojang, Sofia Dankis**, [Introducing New Default Minecraft Skins](https://www.minecraft.net/en-us/article/introducing-new-default-skins), 20 octobre 2022 ; [Minecraft Live 2022: The Recap](https://www.minecraft.net/en-us/article/minecraft-live-2022-the-recap), annonce commune.
- **S3. Minecraft Wiki**, [Alex](https://minecraft.wiki/w/Alex), historique Java 1.8-pre1 ; voir les dates et leurs recoupements dans le dossier personnages.
- **S4. Minecraft Wiki**, [Seed (world generation)](https://minecraft.wiki/w/Seed_%28world_generation%29), historique Indev des types flottants ; [World type, édition japonaise](https://ja.minecraft.wiki/w/ワールドタイプ), évolution des types de mondes.
- **S5. Mojang, Duncan Geere**, [Block of the Week: Lodestone](https://www.minecraft.net/nb-no/article/block-week--lodestone), 20 août 2020.
- **S6. Mojang, Adrian Östergård**, [Minecraft Snapshot 20w12a](https://www.minecraft.net/da-dk/article/minecraft-snapshot-20w12a), 18 mars 2020, ancre de réapparition.
- **S7. Mojang**, [Around the Block: Deep Dark](https://www.minecraft.net/en-us/article/around-block--deep-dark), présentation du biome et commentaire de conception de Mariana Salimena.
- **S8. Mojang, Duncan Geere**, [Taking Inventory: Recovery Compass](https://www.minecraft.net/de-de/article/taking-inventory--recovery-compass), 19 janvier 2023.
- **S9. Mojang, Sofia Dankis**, [The Trails & Tales Update is Here](https://www.minecraft.net/en-us/article/trails-tales-update-here), 7 juin 2023.
- **S10. Mojang, Duncan Geere**, [Crafting with the Crafter](https://www.minecraft.net/fr-ca/article/crafting-crafter), 6 juin 2024.
+98
View File
@@ -0,0 +1,98 @@
# STARTUP-01 — raccourcir la création de monde
Branche : `codex/initial-loading`. Minecraft **26.3-pre-2**, Fabric Loader
**0.19.5**, Fabric API **0.160.0+26.3**. Correctif local **beta.022**, préparé à partir du
chantier beta.021 ; publication et instance Prism distinctes.
## Problème observé
Les plans d’eau, de traversées et de structures sont calculés avant l’arrivée.
Le profil JFR du serveur de développement situe le coût surtout dans les bruits
Perlin du champ `PopulationIslandDensity`. Le message Minecraft `Time elapsed`
arrive après la planification : il sous-estime donc la création totale.
## Correctif
Les bruits restent identiques, mais leur évaluation devient conditionnelle :
- À l’intérieur de `radius - 128`, le facteur d’érosion du bord est exactement
nul. Le bruit du bord n’est pas nécessaire.
- À partir de Y140, le facteur d’érosion inférieur est exactement nul, même
avec les bruits à leurs bornes maximales. Le bruit du dessous est inutile.
- Lorsque ces deux conditions sont réunies, les bruits de sculpture et de
détail ne contribuent plus au champ, sauf dans l’ancienne variante à terrasses.
- À partir de Y320, avec le repère vertical normal, l’érosion haute vaut au
moins 2 pour un terrain borné à 1 : la densité de base vaut exactement -1.
Les corps flottants sont toujours ajoutés ensuite par `FloatingTerrain306`.
La variante historique 30.4, qui déplace le repère vertical, garde son calcul.
Aucun plan n’est supprimé ou différé, aucun cache disque n’est ajouté. Les codecs,
identifiants, graines et formats de sauvegarde restent inchangés. La suppression
de calculs doit conserver exactement les mêmes valeurs, pas une approximation
visuelle. Les essais utilisent uniquement des mondes de développement neufs.
## Mesures
Mac Apple M1, 8 Gio, Java Temurin 25.0.3, tas JVM 2 Gio. Profil de départ Moyen
724, graine 0, structures actives, nouveau dossier de monde à chaque essai.
| Mesure | Résultat |
| --- | --- |
| CPU de 441 colonnes, référence beta.021 | médiane 706,874 ms |
| CPU des mêmes colonnes, correctif | médiane 567,929 ms |
| Réduction de CPU sur ce travail | **19,66 %** |
| Création serveur finale, du lancement du serveur de test à sa disponibilité | **89 s** |
| Préparation finale du spawn seule, incluse dans ces 89 s | 4,578 s |
Le benchmark CPU utilise la graine 42, 183 456 densités par passage, un
échauffement puis trois paires alternées dans la même JVM. Les six empreintes
sont identiques : `d47c98ab8f10169c`. Il mesure du calcul de terrain, pas un gain
universel de 20 % sur la durée totale du lancement.
Le premier serveur profilé demandait 171 s, puis la première optimisation 132 s.
D’autres constructions et tests tournaient pendant ces essais. Le dernier essai
sans JFR atteint 89 s : ces trois temps ne prouvent pas à eux seuls une division
par deux du chargement. Ils excluent le lancement du client, l’interface de
création, le réseau et le rendu graphique. La planification restante prend
encore du temps ; ce correctif ne rend pas la création instantanée.
## Vérifications réussies
- Référence beta.021 figée dans `StartupDensityReference` : **588 288 comparaisons
bit à bit réussies**, champs actuels et legacy27, capacités 5/10/20/100 et
graines 0, 42, -7228211907433324401. Colonnes traversant les seuils et
coordonnées positives/négatives, modes scalaire et volume.
- Mesure CPU alternée dans une même JVM, sur les mêmes 441 colonnes complètes,
pour distinguer le gain de calcul des variations de charge de la machine.
- `./gradlew check build assemblePack` réussit en **7 min 17 s**, avec les
sélecteurs ci-dessous : tous les contrôles purs et **10 tests serveur** réussis.
Couverture native : équivalence, mesure CPU, anciennes expéditions, plans
aériens, traversées, village et ruines asséchées.
- Le correctif testé dans `build/startup-lab` est intégré aux sources principales
après contrôle des empreintes avant modification. Les travaux préexistants
restent conservés. `build assemblePack -x :sanctuary:check` y réussit en 18 s :
cette seconde commande assemble l’intégration et ne remplace pas le `check`
réussi dans l’espace isolé. Les classes optimisées du JAR intégré sont
identiques octet par octet à celles du serveur testé.
- Pas d’essai graphique ni de validation Windows pour ce correctif.
Commande de validation complète utilisée :
```sh
./gradlew check build assemblePack \
-PsanctuaryFocusedTests=startup,expeditions,aerial,transit,village,drained \
-PsanctuaryAerial24Tests=true -PsanctuaryTransit29Tests=true
```
Les preuves restent ignorées dans `build/startup-evidence/`,
`build/startup-check-build.log` et `build/startup-integrated-build.log`.
Le profil initial reste dans `build/startup-baseline-preserved.jfr`.
Le mod et le pack prennent ensemble la version beta.022. Aucun tag,
canal public ou installation Prism n’est modifié.
Export local : [Sanctuary-beta.022.mrpack](../build/Sanctuary-beta.022.mrpack).
Intégrité ZIP, dépendances exactes, absence de tests et identité du JAR embarqué
vérifiées. Reçu : `build/startup-evidence/artifact.json`.
SHA-256 JAR : `53203075916e1f494e5cb73b6a28959170c7f9df26b6edd4746b3531d404f3d1`.
SHA-256 MRpack : `97545339b9f7c2465a8248e7fad018e694190ba5acf46aa38c3b40774aa55b56`.
+117
View File
@@ -0,0 +1,117 @@
# INTRO-01 — apparition galactique, beta.031
Branche `codex/introduction-beta031`. Première proposition jouable demandée le
14 septembre 2026 : entre **Entrer dans Sanctuary** et le spawn / message
`helloworld`, l'identité du joueur apparaît dans le vide.
## Séquence proposée
Durée **29,5 secondes**, indépendante du nombre d'images par seconde.
La direction demandée s'inspire de la tension et du mystère de l'introduction
de **Super Metroid**, avec une composition propre à Sanctuary.
- 0–2 s : noir profond, grondement lointain et premières traces de profondeur.
- 2–22,2 s : **un glyphe après l'autre**, au centre. Chaque signe s'approche,
persiste brièvement, puis traverse le regard avec des rémanences. Les premiers
durent près de 1,4 s ; les derniers s'enchaînent en environ un quart de seconde.
Leur lumière augmente, du bleu gris presque noir au blanc froid. Des
rémanences spectrales cyan et violettes accompagnent les premiers signes.
- 22,2–28,6 s : les glyphes partent des bords de l'écran et descendent vers le
centre en tournant. Leurs traces forment les marches d'un escalier en colimaçon
**vu du dessus**, avec une spirale circulaire continue. Un portail carré grandit au centre
jusqu’à dépasser les bords : la caméra semble entrer à l’intérieur.
Sa surface utilise la texture animée native du portail Minecraft.
- 28,6–29,5 s : la spirale entre dans un **flash blanc**. Le blanc couvre la
transition réseau et le chargement des chunks, puis s'efface en 1,2 s sur le
monde prêt : l'ouverture révèle le spawn, sans retour au panorama du menu.
Les grands glyphes de la première partie et leurs rémanences adaptent leur
cadrage à la taille de la fenêtre.
L'UUID exact fourni par le serveur conserve ses 128 bits : chaque chiffre
hexadécimal `0..f` devient une lettre `a..p`, rendue avec la police Minecraft
`minecraft:alt` (SGA). Tous les signes passent dans leur ordre UUID. Ils ne
s'accumulent jamais sur une ligne : seul le signe courant et la courte
rémanence du précédent coexistent avant la spirale. Chacun atteint le centre
avant le blanc final. Quelques points froids suggèrent la profondeur du vide.
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 l’ouverture du portail de l’End. 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**. 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 d’erreur ;
les menus ne sont pas masqués.
**Échap** passe la séquence après la première seconde. Une indication FR/EN
apparaît en bas après trois secondes. Le flash blanc est unique et progressif,
sans clignotement répété.
**`/sanctuary intro`** permet de la revoir à volonté, avec son UUID courant.
La commande d'aperçu laisse le monde tourner, pour conserver le même mixage
sonore que l'introduction. Elle se teste depuis un endroit tranquille.
## Admission et sauvegardes
La bio et la couleur sont validées avant le démarrage. Le serveur garde sa tâche
de configuration ouverte jusqu'à l'accusé de fin : aucune entité joueur, chute,
attaque ou annonce `helloworld` pendant l'introduction. Un paquet de fin avant
la création est ignoré, comme une deuxième soumission pendant la cinématique.
L'identité utilise le schéma existant, dont `arrived=false` désigne déjà une
création qui n'a pas encore rejoint le monde. Après une déconnexion pendant
l'introduction, la fiche et sa couleur restent acquises, puis l'apparition
reprend à la connexion suivante. `arrived=true` est toujours écrit à l'arrivée
effective. Les habitants déjà arrivés ne rejouent pas l'introduction.
Deux nouveaux payloads de configuration, `sanctuary:intro_v1` et
`sanctuary:intro_finished_v1`, accompagnent le contrat existant. Un client ancien
qui reste compatible avec les autres fonctionnalités peut conserver l'ancien
parcours ; il ne reçoit pas une cinématique qu'il ne sait pas rendre. Pour tester
cette proposition, utiliser le client et le serveur beta.031 ensemble.
Aucun schéma, paramètre de génération ou chunk n'est modifié. La commande
d'aperçu n'écrit aucun état de progression.
## Vérifications et livraison
Les contrôles purs valident les 128 bits de l'UUID, l'ordre et l'accélération,
la présence d'au plus deux signes dans la première partie, les trajectoires
circulaires toujours convergentes, l'arrivée des 32 signes au centre avant
le flash, et la conservation d'une identité interrompue avant son arrivée.
Le parcours client natif complet réussit sur un monde Sanctuary neuf, graine
`42` : validation de fiche, UUID serveur, absence de joueur pendant l'animation,
paquets prématurés et doublons ignorés, arrivée sous le blanc, effacement sur
le monde prêt, reconnexion sans répétition, puis relecture par la commande
réellement saisie dans le chat. La fin est unique et une fermeture inattendue
n'envoie pas d'accusé de fin. Le serveur conserve son annonce unique.
Les dernières retouches de rendu (rémanences, courbe circulaire et portail qui
remplit l'écran) passent ensuite le parcours graphique court, en français et
en anglais, avec redimensionnement. Elles ne modifient pas l'admission ni le
raccord du flash déjà testé. Les captures sont inspectées dans
`build/intro031-evidence/`. Logs : `build/intro031-spiral-client.log` et
`build/intro031-final-visual.log`.
`./gradlew check build assemblePack -PsanctuaryFocusedTests=progression,lights`
réussit sur le code final : **9 tests serveur**, contrôles purs du projet,
construction et vérification des manifestes passent.
Export local : [Sanctuary-beta.031.mrpack](../build/Sanctuary-beta.031.mrpack),
**4 810 444 octets**. Les **1 278 classes** du JAR embarqué sont
identiques au build ; aucune classe de test n'est distribuée. La comparaison
avec beta.030 borne les changements à l'introduction et à son admission.
Les instructions des anciens payloads Action/Names/Snapshot restent identiques
(seules leurs lignes de debug se déplacent). Les classes Demeure/JEI et
l'archive beta.030 sont préservées.
SHA-256 MRpack : `c7161e024d84ff9709ccaea8f940b79d5f8adba743ecf5f7759c273424297717`.
Reçu : `build/intro031-artifact.json` ; build : `build/intro031-check.log`.
Le canal publié et l'instance Prism personnelle ne sont pas modifiés par cet
export d'essai.
L'introduction reste une proposition à affiner à l'écoute et en partie réelle.
Aucun essai Windows ni connexion à un serveur distant n'est revendiqué.
Aucune sauvegarde personnelle n'a servi aux essais.
+127
View File
@@ -0,0 +1,127 @@
# beta.010 — Inventaire, contrat préalable de migration
Ticket PROG-02C, branche `codex/progression-inventory`. Portage demandé le
13 septembre 2026 depuis `../26.2/sanctuary`, consulté en lecture seule.
## Capacité et adoption
Une rangée contient neuf cases. La barre rapide compte dans les six rangées :
le départ est de neuf cases et le plafond de 54, hors armure et seconde main.
Inventaire possède cinq achats, aux cinq premiers coûts de compétences
(1, 2, 4, 8 et 16 niveaux par défaut). Les cinq autres compétences gardent
leurs sept achats. Les opérateurs en survie suivent les mêmes capacités.
La progression passe du schéma 4 au schéma 5 par ajout de `inventory: 0`.
Les schémas 1–3 passent d'abord par leurs migrations existantes. Dates,
coûts, rangs acquis, aptitudes et révision restent inchangés. Le nouveau
plafond de l'historique est de 42 achats. Aucune migration du terrain.
Les 36 cases vanilla gardent leurs indices et leurs objets. Une case déjà
occupée dans une rangée non acquise reste visible et permet de retirer son
contenu ; elle refuse tout ajout. La rangée disparaît de la présentation
après fermeture du menu si elle est vide et toujours verrouillée. Aucune
capacité n'est offerte et aucun objet n'est effacé pour adopter la progression.
Cette règle prépare une réduction future ; aucun New Game+ n'est activé ici.
Les 18 cases supplémentaires sont enregistrées avec les données du joueur,
dans un champ Sanctuary distinct et versionné, lors du même enregistrement
que l'inventaire vanilla. Les composants des objets sont conservés. Le format
26.2 de stockage global n'est pas importé automatiquement : ce ticket porte
le fonctionnement et les ressources, pas les anciennes sauvegardes 26.2.
Sans `keepInventory`, les objets supplémentaires suivent la mort native et
sont retirés de l'ancien inventaire une seule fois. Avec `keepInventory`,
ils sont repris par le nouveau joueur. Les achats persistent dans les deux cas.
## Interfaces et protocole
Le serveur exige la capacité réseau `sanctuary:inventory_layout_v1` avant
la création du joueur. Un client ancien est refusé avant le spawn ; un client
beta.010 refuse également un serveur envoyant une progression antérieure au
schéma 5. Les migrations sur disque restent possibles côté serveur. Client
et serveur doivent être mis à jour ensemble pour ce nouveau protocole.
Les emplacements supplémentaires sont ajoutés après tous les emplacements
natifs des menus, afin de garder les indices des machines, de la fabrication,
des armures et de la seconde main. Les règles d'insertion sont contrôlées sur
le serveur, y compris pour les transferts rapides et les clics envoyés par un
client. Les objets récupérables des anciennes rangées ne deviennent pas une
réserve dans laquelle on peut déposer à nouveau.
Les six fonds d'inventaire et les variantes des conteneurs proviennent de
26.2. Les emplacements de cape et d'œuf de compagnon ne font pas partie de
ce ticket. La fabrication manuelle et les restrictions natives des machines
restent applicables. Les interfaces et les transferts sont vérifiés sur la
cible exacte 26.3-pre-2 avant livraison.
## Portage des interfaces
Les ressources copiées sans retouche comprennent six fonds personnels et une
barre rapide, 132 panneaux (22 familles × six hauteurs), 21 fonds supérieurs
natifs et le cadre de sélection. Les fonds de machines sont redirigés vers le
namespace Sanctuary uniquement pendant une partie avec progression active.
Le livre de recettes est conservé et déplacé dans la zone de fabrication.
La hauteur visible s'adapte aux conteneurs. Si toutes les rangées ne tiennent
pas dans un petit GUI, la molette au-dessus du panneau fait défiler les rangées
de stockage ; la barre rapide reste fixe. Le titre indique les rangées acquises,
un astérisque signale la récupération d'anciennes cases, et `↕` indique la plage
visible. Le catalogue créatif garde son protocole de 46 emplacements et propose
un bouton Inventaire pour ouvrir la vue personnelle, avec les capacités acquises.
Les indices internes 36–42 restent réservés à l'équipement Minecraft. L'API
Inventory adresse les 18 cases supplémentaires par 43–60 ; les indices de menus
sont distincts et restent ajoutés après les cases natives de chaque conteneur.
La collecte, le clic de sélection, les ticks d'objets, les recettes et `/clear`
prennent ces cases en compte. Une recette vérifie la place nécessaire avant de
restituer sa grille ; les cases verrouillées ne sont pas de la place libre.
## Vérifications
Contrat écrit avant la modification des données. La commande de livraison est :
```sh
JAVA_HOME=/Users/koka/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home \
./gradlew :sanctuary:compileGametestJava check build assemblePack \
-PsanctuaryFocusedTests=progression,map,demeure,mining,building,inventory
```
**Livraison finale : `check build assemblePack` réussit en 3 min 55 s,
avec 38 tests natifs réussis**, dont dix scénarios Inventaire. Le journal est
`build/inventory010-delivery-complete.log`. Les scénarios couvrent les cinq
achats, la récupération d’anciennes cases, les 54 cases réelles, les outils
endommagés, les indices de tous les menus enregistrés, les montures, les
transferts de machines/coffres, les clics et glisser-déposer verrouillés, la
fabrication manuelle et par recettes, le clic de sélection, `/clear`, la mort,
`keepInventory` et la relecture des composants depuis la sauvegarde. Les tests purs couvrent aussi les migrations 1–4 → 5, les
achats et le plafond. La suite native générale de génération n'est pas relancée
par cette sélection ; ses limites historiques restent documentées séparément.
Les sources des tests client compilent avec `-PsanctuaryClientTests=true`.
Le lancement opt-in `:sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryInventoryClientTests=true` transforme correctement les classes et
mixins d'inventaire sur le client natif. Le démarrage graphique reste bloqué dans
`SDL_GL_SwapWindow` au moment de cet essai : le Mac est verrouillé. Le processus
de développement a été arrêté après capture des traces. **Aucune capture de
l'interface ni parcours graphique n'est déclaré validé.** Le scénario client
préparé ouvre les six capacités et les menus natifs sur plusieurs échelles GUI.
Le contrôle de l'archive vérifie les versions internes, les JAR embarqués,
les textures originales, les libellés FR/EN, les hashes packwiz/Fabric API et
l'immutabilité des MRpack beta.003–009. Export local uniquement ; aucune
publication du canal et aucune modification d'instance personnelle.
## Revue suivante
Vérifier ensemble le rendu, la lecture des rangées et la molette en petit GUI.
La validation de la progression (PROG-03), le contrat des capacités de faction
et FACTION-01 restent les étapes suivantes. Ce lot ne crée ni faction, ni
claim, ni recommencement ; les règles de prestige/charges doivent encore être
précisées dans CYCLE-01.
## Artefact local vérifié
- `build/Sanctuary-beta.010.mrpack` — 2,429,141 octets.
- SHA-256 : `0d9977227a7204381cebc89b28fa544c64659651bfa0bd400e62dedea1266431`.
- Reçu de vérification : `build/inventory010-artifact.json`.
- Les archives beta.003–009 restent strictement identiques.
+121
View File
@@ -0,0 +1,121 @@
# beta.012 — transferts, barres rapides et progression
Ticket sur `codex/inventory-flow-progression`, demandé le 13 septembre 2026.
Contrat préalable à l'implémentation et à la migration des données.
## Comportement attendu
Les rangées de stockage suivent leur ordre naturel de haut en bas ; la barre
rapide active reste en bas. Tab fait tourner les contenus des rangées acquises,
Maj+Tab inverse le sens. La touche est configurable ; E prend la priorité sur
la fermeture de l'inventaire si elle est choisie, Échap ferme toujours le menu.
Une rotation complète restitue l'ordre initial. Les anciennes cases verrouillées,
l'équipement et les objets du conteneur ouvert ne participent pas à la rotation.
Le serveur valide le menu, sa révision et la capacité ; aucune rotation avec un
objet porté par le curseur. Il envoie ensuite les objets actualisés au client.
Maj-clic regroupe les piles compatibles dans toutes les rangées autorisées avant
d'occuper une case vide. Les priorités des machines restent celles de Minecraft.
Un coffre plein refuse le transfert sans déplacer l'objet dans l'inventaire du
joueur. Les rangées verrouillées restent utilisables uniquement en récupération.
Les fonds des coffres et machines partagent la même origine que leurs cases.
Les six compétences affichent une jauge textuelle et leur valeur/plafond. Le
bouton + apparaît lorsque l'achat est possible. Le bouton − exige la permission
opérateur réelle du serveur ; il retire un rang de compétence et rembourse le
prix du dernier achat encore acquis pour cette compétence, enregistré au moment
de l'achat. Les aptitudes ne sont pas retirables. Chaque retrait est historisé.
## Migration et protocole
La progression passe du schéma 6 au schéma 7. Les migrations 1–5 restent suivies.
Tous les achats, dates, coûts, compétences, aptitudes et cycles restent conservés.
Un compteur `revision` explicite est initialisé avec l'ancienne valeur
`cycle * 64 + history.size()`, puis augmente à chaque achat, retrait et New Game+.
Le passage de cycle conserve aussi le plancher historique `nouveauCycle * 64`
pour reprendre les anciens journaux. Une révision déjà utilisée ne redevient jamais valide après un remboursement.
L'historique enregistre aussi les événements `remove_<compétence>`, avec le coût
exact remboursé. La relecture vérifie les achats encore acquis, leurs plafonds et
chaque remboursement. Le journal est limité à 1 024 événements par cycle ; arrivé
à cette limite, les ajustements sont refusés explicitement. Les retraits
réservent toujours assez de place pour terminer les six compétences et acheter
les aptitudes restantes. Le New Game+ archive
l'ancien historique par le journal de cycle existant et conserve les aptitudes.
Les anciens événements de cycle restent lisibles par les migrations de progression.
Le format des objets `sanctuary:inventory` reste au schéma 1 : les rotations
modifient les emplacements existants, sans inventaire parallèle ni permutation
persistante. Les objets occupés restent récupérables après retrait d'un rang.
Mort ordinaire : progression et historique conservés, règles d'objets inchangées.
Aucun terrain, identité, carte, Demeure, faction ou charge n'est modifié.
Client et serveur beta.012 exigent la capacité `sanctuary:inventory_controls_v1`.
Le snapshot de progression ajoute le droit opérateur et agrandit la borne de son
historique. Les identifiants existants restent stables. Un ancien client est
refusé avant le spawn ; mise à jour des deux côtés requise. Export local MRpack
pour essai, sans publication ni installation personnelle.
## Vérification
La passe graphique `:sanctuary:runClientGameTest -PsanctuaryClientTests=true
-PsanctuaryInventoryClientTests=true` réussit en 1 min 29 s. Elle crée uniquement
un monde de développement neuf, de graine 42. Le journal est
`build/inventory012-client-final.log`.
Elle ouvre les six capacités à deux échelles GUI, puis 24 types de menus natifs.
Une sonde de test contrôle les coordonnées des vrais appels de dessin du fond,
comparées à celles des cases. Les coffres sont remplis de blé et de charbon pour
vérifier leur alignement. Les rangées visibles restent dans l'écran ; les grands
coffres permettent de faire défiler le stockage en conservant la barre rapide.
Les essais client couvrent aussi le déplacement Tab, son inverse, le remplacement
par E, la fermeture par Échap, les + masqués sans XP, l'affichage opérateur, l'achat
d'un cœur puis son remboursement par −. L'XP passe de 30 à 29 puis revient à 30,
et le serveur enregistre `remove_vitality`. Les contrôles du protocole opèrent
uniquement sur un serveur Sanctuary ; les serveurs sans Sanctuary restent accessibles.
Captures conservées dans `build/inventory012-evidence/`, notamment le coffre
`0014_sanctuary-beta012-generic_9x3-minimum.png` et la progression opérateur
`0039_sanctuary-beta012-progression-operator.png`.
La validation finale serveur et la vérification de l'artefact sont consignées
ci-dessous. Les tests ne simulent pas 30 clients simultanés.
Les autres mods communautaires ne sont pas inclus dans cet essai des menus natifs.
### Livraison vérifiée
`check build assemblePack` réussit en **4 min 19 s**, avec **49 tests natifs
réussis** et les tests purs. Commande :
```sh
JAVA_HOME=/Users/koka/Library/Java/JavaVirtualMachines/temurin-25.jdk/Contents/Home \
./gradlew check build assemblePack \
-PsanctuaryFocusedTests=progression,map,demeure,mining,building,inventory,cycle,inventoryflow
```
Journal : `build/inventory012-delivery-final.log`. Les quatre nouveaux scénarios
vérifient les regroupements à chacune des six capacités, les coffres pleins,
les priorités et restes natifs de 24 types de menus sur huit types d'objets,
les rotations inverses et complètes avec composants et anciennes cases occupées,
les refus de requêtes périmées, l'autorité opérateur et le remboursement exact.
Le coût remboursé et l'historique sont relus depuis la sauvegarde native du joueur.
Les tests de cycle vérifient également l'archivage des retraits au passage de
prestige ; les tests de progression atteignent le budget maximal d'historique
sans empêcher de terminer les six compétences. Les assertions historiques qui
exigeaient de déplacer tout le charbon dans toutes les machines sont remplacées
par la comparaison avec leurs règles natives ; les montures sont conservées
avec un conteneur de test aux dimensions exactes de 26.3-pre-2.
La suite serveur de génération générale n'est pas relancée par la sélection
ci-dessus ; les tests purs de génération inclus dans `check` passent. Aucun
serveur de 30 habitants n'est simulé.
- Export : `build/Sanctuary-beta.012.mrpack`, **2,496,778 octets**.
- SHA-256 : `5d7fa635adb7ea5bf32ef361be95f242090912d52d6209398abeac32ea06f87d`.
- Reçu : `build/inventory012-artifact.json`.
- Archives beta.003–011 inchangées ; versions internes, JAR imbriqué Demeure,
ressources d'origine, traductions et index packwiz vérifiés.
- Distribution locale pour essai, sans publication du canal ni installation
dans une instance personnelle.
+170
View File
@@ -0,0 +1,170 @@
# beta.014 — rangement, hotbar mobile et préfixe de faction
Ticket demandé le 13 septembre 2026, branche `codex/inventory-sorting-aptitude`.
Contrat écrit avant l'implémentation et les migrations.
## Comportement
Une aptitude permanente **Rangement** s'achète dans le panneau Aptitudes du
Blocodex, pour 4 niveaux par défaut (prix configurable côté serveur).
Elle ne conditionne pas le prestige.
Dans un menu d'inventaire ou de conteneur natif, le clic molette range la zone
personnelle visée. La touche souris ou clavier se règle dans les contrôles.
Viser une case de stockage regroupe les piles compatibles puis trie toutes les
rangées débloquées, y compris celles qui sont masquées par le défilement.
La hotbar reste en place ; viser une de ses cases trie uniquement ses neuf cases.
L'ordre est déterministe par identifiant de type d'objet, puis par groupe de
composants dans l'ordre rencontré ; les piles pleines précèdent les restes.
Deux objets dont les composants diffèrent ne sont jamais fusionnés.
Les cases de récupération verrouillées, l'équipement, la main secondaire, la
fabrication et le contenu du conteneur ouvert ne participent pas au rangement.
Aucun tri avec un objet porté par le curseur ou pendant un glisser-déposer.
Le catalogue créatif garde ses commandes natives ; la vue d'inventaire personnel
Sanctuary permet le rangement avec l'aptitude. Le clic de sélection en jeu et le
défilement de la molette conservent leurs fonctions.
Le serveur vérifie l'aptitude, le menu, son état, la révision de progression,
la capacité et le numéro de requête. Le client envoie une zone, jamais des objets.
Les contenus sont préparés sur des copies avant d'appliquer le résultat dans les
emplacements existants, puis synchronisés. Pas de nouvelle réserve d'objets.
## Migration
La progression passe du schéma 7 au schéma 8 : ajout de `sorting: false` pour
les habitants existants. Toutes les migrations 1–6 restent suivies. Les rangs,
achats, coûts, dates, révisions et prestiges sont conservés. Le nouvel achat
`sorting` rejoint l'historique des aptitudes et survit au changement de cycle.
Les journaux de cycle existants restent immuables et sont relus par cette
migration ; leur propre schéma ne change pas.
La configuration passe du schéma 3 au schéma 4, avec `sortingCost: 4` ajouté.
Les valeurs existantes restent identiques, y compris un prix final explicitement
fixé à 64 dans le schéma 3. La migration antérieure des schémas 1/2 conserve son
contrat. Le fichier est validé puis réécrit atomiquement une fois ; un fichier
invalide est refusé sans remplacement. Le schéma 4 n'est pas réécrit au chargement.
Nouvelle capacité réseau `sanctuary:inventory_sorting_v1`, requise avant le spawn
sur un serveur Sanctuary. Les identifiants existants restent stables. Client et
serveur doivent utiliser beta.014 ensemble. Le schéma des 18 cases supplémentaires
reste identique ; la métadonnée additive de hotbar est précisée ci-dessous.
Aucune modification de génération, de terrain ou d’expansion.
## Préfixe de faction — ajout demandé pendant le ticket
Le nom de faction précède le nom affiché : `Les Arpenteurs · Poupoutain I`.
Le préfixe prend la couleur de faction ; le pseudo et le prestige gardent la
couleur personnelle. Le rendu est commun à la fiche Habitant, au nom affiché
côté serveur (chat et messages), à la liste Tab et aux noms des joueurs en jeu.
Quitter une faction ou la dissoudre retire le préfixe ; le nom enregistré du
compte, son UUID et l'identité enregistrée restent identiques.
Le serveur projette les données du journal de faction dans les noms affichés et
les diffuse par le paquet natif de liste des joueurs. Pas de modification des
équipes de scoreboard, ni nouveau format de sauvegarde. La fiche suit aussi
les mises à jour de faction reçues pendant qu'elle est ouverte.
Les descriptions d'aptitudes ne répètent plus la conservation au New Game+ :
cette propriété est une règle globale, décrite dans le bilan du cycle.
## Hotbar mobile — correction du contrat beta.012/013
Tab déplace la sélection vers la rangée au-dessus (retour en bas au sommet),
Maj+Tab vers celle en dessous. La molette sur le stockage suit le même geste.
Les objets restent dans leurs cases visibles ; le cadre et la case sélectionnée
se déplacent. Les neuf objets de cette rangée deviennent utilisables en jeu.
La molette sur la rangée active choisit toujours une de ses neuf cases.
Le rangement préserve cette rangée, sauf si elle est directement visée.
Le serveur conserve les indices natifs des menus et de l'objet tenu. Une
permutation entre la rangée active et les neuf cases natives est compensée
par leur placement à l'écran ; les autres rangées gardent leur contenu et leur
position. Aucun réservoir d'objets supplémentaire n'est créé. Le tri du stockage
suit les positions visibles, de haut en bas, en excluant la rangée active.
Migration additive explicite : `sanctuary:hotbar_row`, entier de 0 à 5, est
enregistré dans le même instantané joueur que les objets. Absent dans beta.013
et avant, il vaut zéro (rangée de base en bas) et ne réordonne rien au chargement.
Il est conservé à la reconnexion et avec l'inventaire après la mort. Si la
capacité diminue sous la rangée active, celle-ci revient en bas et les objets
gardent leurs positions visibles, les autres rangées devenant de récupération.
Le schéma du stockage supplémentaire reste inchangé. Un nouvel état réseau
`sanctuary:hotbar_row` synchronise cette sélection après les cases natives.
La capacité beta.014 impose des clients et serveurs cohérents. Un stockage
supplémentaire illisible interdit le tri et les permutations de hotbar sans
remplacer les données originales.
## Vérifications
Les tests de contrat passent : reprise des progressions 1–7, conservation des
achats et prix, refus des aptitudes forgées, achat unique de Rangement, budget
d'historique, conservation après deux cycles et relecture de leur journal.
Un ancien journal contenant des progressions au schéma 7 se relit sans changer
ses octets. La configuration migre vers le schéma 4 en conservant les réglages,
puis un `sortingCost` personnalisé est relu sans réécrire le fichier.
Journal : `build/inventory014-contracts.log`.
Le test client natif passe avec Minecraft **26.3-pre-2**, Fabric Loader **0.19.5**,
Fabric API **0.160.0+26.3** et Java 25 :
```sh
./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true \
-PsanctuarySortingClientTests=true -PsanctuaryInventoryClientTests=true
```
Le parcours crée un monde Sanctuary de laboratoire, graine 42. Trois niveaux
ne permettent pas l'achat ; quatre activent le bouton de l'aptitude, en FR/EN.
L'achat depuis le Blocodex dépense exactement quatre niveaux. Le clic molette
réel fusionne et range le stockage, puis la hotbar séparément. Le raccourci
remplacé par E range le stockage dans un coffre ouvert, sans fermer le menu et
sans toucher au contenu du coffre ; Échap ferme le menu. L'état final est
contrôlé côté serveur. Les préférences du test sont restaurées à la fin.
Le parcours final fait ensuite un cycle complet des six rangées : les **54
couples coordonnées/contenus restent strictement identiques** à chaque appui
sur Tab. Le premier appui monte le cadre de 18 pixels, et l'objet tenu natif
correspond à la rangée choisie. La molette distingue rangée et case sélectionnée.
Le coffre conserve ses objets, les deux tailles de GUI sont vérifiées, puis
fermeture et réouverture conservent le cadre et toutes les positions d'objets.
Le New Game+ réel ramène le cadre en bas. La charge gagnée fonde une faction :
la fiche affiche son préfixe et le prestige I, puis perd le préfixe à la dissolution
sans être refermée. Le nom client suit le paquet natif. Les descriptions
individuelles FR/EN ne contiennent aucune mention du New Game+.
Journal final : `build/inventory014-client-final.log` (`BUILD SUCCESSFUL`, 1 min 15 s).
Dix captures : `build/inventory014-evidence/`. Les tests utilisent les menus
Minecraft natifs, sans mods communautaires supplémentaires ni serveur à trente
clients. Les mondes et classes de test restent dans les dossiers ignorés.
### Validation serveur et livraison locale
```sh
./gradlew check build assemblePack \
-PsanctuaryFocusedTests=progression,map,demeure,mining,building,inventory,cycle,inventoryflow,sorting
```
`build/inventory014-release-final.log` : **BUILD SUCCESSFUL**, 4 min 17 s ;
**56 tests natifs serveur réussis**, avec les tests de contrat du dépôt.
Ils vérifient les six capacités, les composants et limites de piles, les requêtes
périmées/refusées, les objets au curseur, le statut spectateur, le prix réel,
la mort et les sauvegardes. Le cadre mobile conserve les 54 cases à chaque étape,
le tri exclut la rangée active, la réduction de capacité garde la récupération,
et les données illisibles refusent les écritures. Le Maj-clic transfère la rangée
active vers le coffre puis conserve la destination native sur cette rangée.
Les appartenances de faction, les couleurs, les messages de liste des joueurs
et les identités immuables sont vérifiés côté serveur.
Le MRpack contient le JAR vérifié de Sanctuary et Demeure embarqué, ainsi que
la dépendance Fabric API épinglée. Les classes de test et mondes sont absents.
Les textures importées de 26.2 et les icônes sont identiques aux originaux.
Les exports beta.003–013 conservent leurs empreintes. Il s'agit d'un export
local de test ; aucun canal publié ni aucune instance personnelle n'est modifié.
- [Sanctuary-beta.014.mrpack](../build/Sanctuary-beta.014.mrpack)
- Vérification : `build/verify-beta014-pack.py` ; reçu : `build/inventory014-artifact.json`.
- Taille : 2,527,741 octets.
- SHA-256 MRpack : `9bc77d9fcdcc812d64f2c95d1270e00adc94b90bc08e055f3314e2950761ac49`.
- SHA-256 JAR : `3eb4ac92de0ad671592ae79ed65f00547184d771ad72603952edf7bd86e0352c`.
-105
View File
@@ -1,105 +0,0 @@
# Sanctuary — journal des transformations et progression du monde
**Conception en discussion, WG-26.** L’auteur demande un suivi profond des
joueurs, des entrées, des sorties et des transformations dans le temps. Ce
document prépare un futur journal ; il ne crée aucune collecte, génération,
récompense ou migration de sauvegarde.
## Intention
Le serveur doit pouvoir relier les découvertes et la production à leurs effets :
matériaux obtenus, procédés utilisés, programmes exécutés, objets échangés ou
perdus et étapes accomplies. Cette histoire nourrit les propositions de plans,
les Backrooms, les Indoors et les futurs donjons. L’objectif ressemble à un
suivi expérimental : savoir ce qui est entré dans une opération, ce qui en est
sorti et comment elle s’inscrit dans une suite d’actions.
## Ce qui existe et ce qui manque
Lecture du dépôt de développement le **11 septembre 2026** : le Blocodex possède
une mémoire personnelle des blocs ; les recensements de stocks sont partiels.
L’historique d’activité conserve cinq compteurs journaliers UTC pour l’ensemble
du serveur : blocs minés et posés, objets ramassés, jetés et fabriqués. Il ne
reconstitue pas les consommations ni les transformations des machines.
Références de cette lecture, dans le dépôt voisin `sanctuary-beta` :
`docs/blocodex.md`, `docs/cosmologie.md` et
`mods/sanctuary/src/main/java/fr/koka/sanctuary/knowledge/history/MaterialActivityHistory.java`.
Ces compteurs ne donnent pas l’auteur de chaque opération, les entrées d’une
recette, les destinations ou les pertes. Ils ne constituent pas le journal
transactionnel nécessaire aux récompenses ou aux restitutions. Les événements
antérieurs ou non observés restent inconnus ; ils ne sont pas reconstruits
artificiellement à partir d’un total.
## Décrire des opérations réellement terminées
Le format reste à définir. Les informations proposées sont : identifiant stable
d’opération, date UTC et ordre serveur, joueur ou machine à l’origine de l’action,
type d’opération, lieu et références utiles, entrées et sorties effectives, recette
ou programme concerné et version pertinente. Une opération automatique ne doit
pas être attribuée au joueur le plus proche : opérateur, propriétaire et
bénéficiaire peuvent être différents.
| Fait | Sens à préserver |
| --- | --- |
| Observation | Preuve personnelle qu’un bloc a été aperçu ; ne suffit pas au déclencheur de plan fondé sur des blocs obtenus. |
| Obtention | Possession attestée pouvant proposer un plan associé ; ne signifie pas qu’un stock suffisant est encore disponible. |
| Production | Produits réellement créés par une récolte, une extraction ou un procédé ; un compteur de blocs minés ne donne pas toujours les drops obtenus. |
| Transformation | Entrées consommées, sorties, restes et coproduits d’une même opération, avec sa recette ou son procédé. |
| Transfert | Déplacement entre inventaires, machine, sol ou joueur ; déplacer puis ramasser une stack ne la produit pas une seconde fois. |
| Consommation | Usage final, par exemple manger un aliment ; distinguer ce cas de son emploi comme ingrédient. |
| Perte confirmée | Destruction, combustion ou disparition dans le vide selon les règles à instrumenter. Mort, déconnexion et chunk déchargé ne prouvent pas une destruction. |
| Récompense ou restitution | Attribution distincte, référencée une seule fois. Une récupération en Backrooms doit se rattacher à la perte concernée sans laisser également l’original récupérable. |
Exemple proposé pour une future chaîne d’It’s Alive ! : récolte de blé, passage
au moulin pour obtenir de la farine, préparation et cuisson du pain, puis repas.
Les quantités, ingrédients supplémentaires, combustible et restes proviennent
des recettes effectivement exécutées. Chaque transfert au coffre reste un
transfert ; il ne gonfle pas la production. Cet exemple n’atteste pas une
recette actuellement livrée.
Une variation de stock seule n’explique pas sa cause. L’instrumentation doit
observer les opérations à leur aboutissement et signaler les zones non couvertes.
Pour les programmes, le suivi vise leurs actions sur les appareils et la matière ;
le journal d’économie n’a pas besoin de recopier chaque instruction CPU exécutée.
## Ce que l’histoire pourra produire
| Usage futur | Données et résultat à concevoir |
| --- | --- |
| Bibliothèque de plans | Associer les blocs obtenus et familles de matériaux à des architectures pertinentes. Distinguer proposition, déblocage et matériaux nécessaires à la construction. |
| Backrooms | Réutiliser des traces de l’activité pour composer des espaces et des distributions ; relier séparément les objets réellement perdus à leur éventuelle récupération. |
| Indoors procéduraux | Composer des espaces contrôlés et intéressants à partir de thèmes ou usages observés. Propriété, accès et génération gardent leur contrat propre. |
| Donjons et raids | Proposer des épreuves correspondant aux étapes atteintes, avec de nouvelles combinaisons de salles, ennemis, objectifs et coordination. La progression ne se résume pas à augmenter les points de vie. |
Le ballast conserve son rôle cosmologique de trace des opérations ; une unité
comptée ne devient pas automatiquement une unité de ballast ni un objet disponible
dans une Backroom. Les conversions, règles de composition et ressources restent
à définir. Les fonctions reproductibles des machines et l’autonomie d’It’s Alive !
sont conservées.
Chaque nouvelle génération doit pouvoir être reliée à une période d’observation,
sa couverture, la règle de sélection, la graine et la version du générateur.
Ces paramètres sont fixés pour la génération concernée : l’évolution du serveur
ne réécrit pas une installation déjà visitée et ne change pas une épreuve en cours.
Un raid peut être conçu pour un effectif donné puis conserver cette difficulté
pendant sa tentative. Les nouvelles versions de recettes ne réinterprètent pas
les anciennes transformations comme si leurs rendements avaient toujours été identiques.
## Continuité et coût du suivi
L’ambition de couverture doit être rendue mesurable : quelles opérations sont
instrumentées, depuis quand et avec quelles interruptions. Prévoir collecte
événementielle, budgets d’écriture, files bornées et regroupements exploitables
sans scanner le monde ni charger des chunks pour tenter de reconstruire le passé.
La durée de conservation des événements détaillés et celle des agrégats restent
à choisir ; un agrégat ne prétend pas conserver une causalité qu’il a perdue.
Le journal qui décide d’un achat, d’un quota de raid ou d’une restitution doit
définir sa reprise après incident. Un même événement ne doit pas attribuer deux
récompenses après reconnexion. Les agrégats actuels ne suffisent pas à garantir
ce comportement. Aucun format existant n’est modifié par cette conception ;
une implémentation demandera son propre contrat de sauvegarde et de migration.
Les applications et règles de raid sont précisées dans le
[cahier de progression](progression-et-integrations.md#raids-collectifs-instanciés).
+67
View File
@@ -0,0 +1,67 @@
# beta.042 — portage sur la tête et commandes LAN
Branche `codex/lan-carry-beta042`. Deux signalements : commandes inutilisables
pour l'hôte après activation tardive en LAN ; joueurs assis au-dessus de la tête.
## Portage
L'origine des pieds était placée sur la tête du porteur, puis le modèle gardait
son bassin environ 0,7 bloc plus haut. L'ancrage utilise désormais le bassin
de la pose assise native et le sommet de la tête du porteur. Il tient compte
de l'échelle des deux joueurs, de l'accroupissement du porteur et des piles.
Le passager conserve sa pose assise lorsqu'il maintient Maj au moment de monter.
La même géométrie est utilisée côté client et serveur, pour la position réelle
et les vérifications de place sous un plafond. Les animaux gardent leur ancrage
sur la tête ; les bébés restent exempts de ralentissement selon beta.041.
Pas de nouveau format de sauvegarde, pas de texture, pas de migration.
## Commandes LAN — diagnostic
Mise à jour beta.044 : la commande précise fournie ensuite est
/sanctuary time vanilla. L'erreur à la position 10 est reproduite dans le chat
natif : la commande locale d'introduction intercepte la racine Sanctuary.
Le correctif et les vérifications figurent dans
[le ticket beta.044](spawn-eggs-audit-beta044.md).
Le scénario natif sur le code beta.041 ouvre un monde plat de développement
avec les commandes désactivées, ouvre le LAN depuis World Options, puis active
Allow Commands et applique les changements. L'hôte est reconnu avec les droits
OWNERS, reçoit l'arbre des commandes et peut exécuter depuis son client
`experience set @s 17 levels`. Résultat : 17 niveaux attestés côté serveur.
Ce premier scénario ne reproduit donc pas le signalement.
Le message d'erreur et la commande précise ont été demandés à l'utilisateur.
Aucune règle d'autorisation n'est modifiée sans reproduction. Les invités ne
reçoivent pas de droits supplémentaires lors de cette vérification.
Il s'agit du serveur intégré d'un client de développement, sans serveur dédié
ni nouvelle acceptation d'EULA. Aucun monde personnel n'est ouvert.
## Vérifications
`./gradlew check build assemblePack assembleTestPack
-PsanctuaryFocusedTests=carry,familiar,movement,operator` passe avec **39 tests
serveur natifs** : ancrage du bassin, pile à plusieurs joueurs, échelles,
accroupissement, plafond, démontage, dégâts entre porteurs, poids des bébés,
familiers et règles opérateur existantes.
Le test de la beta.020 qui exigeait les pieds au-dessus de la tête a été mis à
jour : il vérifie maintenant le bassin. Le parcours graphique contrôle les
coordonnées des modèles Minecraft natifs, les jambes repliées et le contact
bassin/tête à chaque étage. Deux captures sont conservées dans
`build/lan-carry042-evidence/`.
Diagnostic initial : `build/lan-carry042-baseline3.log` ; validation serveur :
`build/lan-carry042-check.log`. Le parcours client et ses preuves figurent dans
`build/lan-carry042-client-first.log`.
Un essai supplémentaire de saisie au clavier dans le chat est resté bloqué
avant la création du monde, dans `SDL_GL_SwapWindow`, puis le processus a reçu
SIGTERM. Il ne constitue pas une validation supplémentaire ; sa trace reste
dans `build/lan-carry042-client.log` et `build/lan-carry042-client-threads.txt`.
Le parcours réussi valide déjà le paquet de commande émis par le client réel.
Exports vérifiés : [pack normal](../build/Sanctuary-beta.042.mrpack) et
[profil plat](../build/Sanctuary-Test-beta.042.mrpack).
Reçu : `build/lan-carry042-artifact.json`.
-788
View File
@@ -1,788 +0,0 @@
# Sanctuary — écriture galactique et machines programmables
**Conception en discussion, WG-26.** Ce cahier distingue la direction demandée
des rôles proposés. Aucun langage, bloc ou changement de progression n’est
implémenté par ce document.
## Direction retenue
Exploiter l’alphabet galactique de Minecraft comme écriture d’un langage secret
dans Sanctuary. Ce langage doit relier la redstone programmable, les expansions,
les waystones et l’End. **Le socle informatique retient trois blocs :
contrôleur, terminal et afficheur, avec les disquettes comme objets. Le bloc Assembleur
est retiré de la conception.** L’assemblage du code est une fonction du terminal.
**Précisions retenues : programmation directement en assembleur, six faces
d’entrée/sortie et une véritable RAM adressable pour les contrôleurs.** L’auteur
n’a pas de préférence arrêtée sur le terme « sérialisable ». La base de travail
proposée est de sauvegarder l’état complet du contrôleur ; une communication
en série plus riche reste une extension à étudier selon les besoins des montages.
Une première proposition détaillée définit maintenant le langage et
l’architecture ; elle reste à valider et à implémenter.
La [lecture du Redstone Computer historique](redstone-computer-reference.md)
retrouve déjà un assembleur, de la RAM, six faces, des bus, du tri d’items et un
réseau. Son CPU repart cependant au début à chaque tick. Le cahier de référence
distingue les capacités à reprendre d’une future machine réellement continue,
ainsi que les limites matérielles d’un objet très puissant utilisable en survie.
L’[audit redstone 26.3](audit-redstone-26.3.md) inventorie les capteurs,
comparateurs, actionneurs, transports et automatismes vanilla. Il situe ce
que les ordinateurs rendent plus compact et ce que les appareils Sanctuary
ajoutent réellement. Il sépare signal électrique, transfert physique d’objets
et échange de données avec un périphérique, notamment pour le particuleur.
Le [dossier Redstone Language V0.1](redstone-language-extensions.md) complète
ce cadrage avec les [instructions](redstone-language-instructions.md), les
[fiches des appareils](redstone-language-composants.md) et les
[composants de signal et de transport](redstone-language-signaux-et-transport.md).
**Le socle minimal n’est pas un plafond : un manque peut révéler un nouveau
bloc à créer.** Le condensateur et ses interactions sont désormais retenus.
Le convoyeur se pose comme un rail, à vitesse unique, avec arrêt sans redstone ;
la commande d’inversion reste à choisir. Lecteur de stock, aiguilleur, convertisseur, capteurs et
connexion adressée restent proposés. Transistor, atténuateur et impulseur
sont écartés ; une [exploration par objets et cristaux](redstone-language-objets-et-cristaux.md)
cherche d’autres gestes de machine. Les valeurs V0.1 restent un profil d’essai,
pas du code livré.
Le [cahier des machines multiblocs](machines-multiblocs.md) explore les appareils
que ces programmes pourront coordonner : grand four (nom proposé : Fourneau),
Fût, grand baril de fermentation, Trémie, Carillon, méga-pistons et autres
constructions. Les collections visibles et le Métablit y sont aussi étudiés.
Chaque appareil conserve ses gestes locaux, son contenu et ses
recettes ; la programmation n’est pas nécessaire à son premier usage manuel.
Nous étendons le lore à partir de motifs de Minecraft. Le lien opératoire entre
ces glyphes, les destinations et les machines est une création Sanctuary.
L’origine du langage, son rapport exact à l’End et ce que les neuf disparus ont
découvert restent à écrire.
Le cadrage cosmologique retient **Galactium comme le vide structurant qui permet
aux choses d’avoir une place et des relations**. Ce nom englobe le phénomène et
le système d’expansion développé pour en utiliser certains effets. L’approche
privilégie observation, expérimentation et ingénierie ; conscience ou volonté
éventuelles restent ouvertes. Voir la [mathémagie proposée](histoire-steve-galactium.md#mathémagie-commune).
Les programmes restent de l’assembleur exécuté par les contrôleurs : ils calculent
et pilotent les opérations des installations. Une opération spatiale exige
toujours ses conditions matérielles et collectives ; cette cosmologie n’ajoute
ni instruction universelle ni ressource infinie utilisable par un joueur.
Le jeu de référence 26.3-pre-2 emploie la police `minecraft:alt` pour les mots
tirés au hasard par `EnchantmentNames`, affichés dans `EnchantmentScreen`.
Cette lecture du code vanilla fournit une référence visuelle ; la grammaire
exécutable et ses effets sont à concevoir pour Sanctuary.
## Proposition : une écriture, des instructions et des usages
L’écriture donne les signes visibles sur les inscriptions et les appareils.
La grammaire définit les opérations que les joueurs peuvent composer. Les
installations donnent à ces opérations des effets dans le monde.
Un premier vocabulaire pourrait permettre de **lire, comparer, mémoriser,
écrire une sortie, attendre et répéter**. Des usages spatiaux pourraient ensuite
introduire des notions de **référence, liaison, destination et stabilité**.
Leurs noms, glyphes, syntaxe et conditions d’apprentissage ne sont pas arrêtés.
La lecture des ruines peut apprendre à reconnaître un programme par ce qu’il
faisait : pomper, temporiser une porte, aiguiller une voie, maintenir une liaison.
Des variantes annotées et des montages encore utilisables peuvent permettre
d’expérimenter. Le partage des programmes entre joueurs est retenu ; ses
modalités de copie et de vente restent à définir.
**Le mode de programmation retenu est l’assembleur direct.** Registres, adresses,
instructions et étiquettes doivent permettre d’écrire un vrai programme. Une
transcription saisissable au clavier et un affichage en glyphes peuvent présenter
le même code ; les mnémotechniques exacts restent à choisir. L’édition visuelle
n’est pas le mode retenu. Une aide à la lecture et au diagnostic est proposée ;
sa disponibilité et une éventuelle traduction progressive restent à décider.
Le Blocodex ne devient pas automatiquement un lexique de ce langage.
## Proposition de lien avec les Endermen
La téléportation des Endermen fournit un point d’appui observable dans Minecraft
([présentation officielle](https://www.minecraft.net/en-us/article/minecraft-mobs)).
Dans le lore proposé pour Sanctuary, certaines séquences galactiques pourraient
décrire les opérations de l’espace que les Endermen accomplissent.
Le joueur pourrait découvrir une même séquence dans des traces de téléportation,
sur une ancienne waystone et dans un programme d’atelier. Une répétition permet
d’associer les signes à un effet, puis une annotation laissée par les anciens
joueurs aide à comprendre son usage. Les noms galactiques des Endermen déjà
évoqués dans la vision peuvent prolonger cette présence de l’écriture.
Piste narrative : les anciens joueurs ont appris à reproduire dans leurs
machines certaines opérations observées chez les Endermen. Cette hypothèse
reste à valider ; elle ne fixe ni l’inventeur du langage, ni l’identité des
Endermen, ni la cause de la disparition des neuf personnages. Le déchiffrement
des lettres et l’apprentissage des opérations sont deux étapes de compréhension.
Les premières instructions redstone pourraient s’apprendre avec un montage
simple. Les notions de destination, liaison et stabilité se découvriraient par
les installations spatiales. Les conditions de ces découvertes et les traces
visuelles de téléportation sont des propositions, pas de nouveaux effets livrés.
## Ensemble minimal retenu
| Élément | Fonction | Précision proposée dans V0.1 |
| --- | --- | --- |
| Contrôleur — bloc | Exécuter le programme avec processeur, registres, RAM intégrée et six faces d’entrée/sortie. Fonctionner après retrait du terminal. | Profil d’essai : quatre registres 8 bits, RAM 1 Kio, 64 instructions/tick ; état complet conservé. |
| Terminal — bloc | Écrire, vérifier et assembler le code, lire/écrire les disquettes ; observer registres, RAM, ports et instruction exécutée, démarrer, arrêter et essayer pas à pas. | Connexion DEVICE adjacente ; document de travail dans le contrôleur. Pas-à-pas à préciser avant code. |
| Afficheur — bloc | Présenter dans le monde les textes, mesures et résultats des programmes sur une surface rectangulaire extensible. | Huit lignes/bloc retenues ; plafond 8 × 4 panneaux et 16 colonnes/bloc proposés. |
| Disquette — objet | Conserver, transporter et partager un programme ; le charger dans un contrôleur. | Source 16 Kio et 512 instructions proposées ; pas de copie de RAM, retrait possible après chargement. |
Le terminal sert à programmer et diagnostiquer ; il n’a pas besoin de rester
attaché à chaque contrôleur pour que celui-ci fonctionne. Processeur et RAM
sont intégrés au contrôleur. Aucun bloc supplémentaire d’assemblage, lecteur de
disquette ou module RAM n’est nécessaire au premier ensemble.
L’afficheur rend le fonctionnement visible ; ce socle de trois blocs ne signifie
pas que chaque circuit redstone doive obligatoirement les utiliser tous.
Pour l’expansion, l’auteur retient un **noyau dont la casse provoque la disparition
sans objet récupérable et libère une charge collective pour le serveur**. Les
météorites sont une voie de découverte demandée, avec d’autres voies à définir.
Le noyau n’est plus une pièce transportable à installer ou recharger dans la
machine. L’installation utilise les charges communes et les ressources apportées.
**Galactium nomme l’ensemble du système d’expansion**, pour lequel une interface
est demandée ; son accès par le terminal est proposé ci-dessous. Dépôt et ancrage
restent à concevoir sans imposer un nouveau bloc au premier automate redstone.
Un premier bus local adressé est désormais proposé dans le dossier V0.1 ;
réseaux entre contrôleurs, catalogues publics et appareils de construction
restent en réserve. Le terminal de stockage en titane reste une fonction distincte.
Pour le premier langage, proposer le nécessaire à un automate : lire et écrire
les ports, charger et stocker la RAM, calculer, comparer, faire un saut, attendre
et arrêter. Les mnémotechniques et détails sont proposés dans le
[jeu d’instructions](redstone-language-instructions.md). Un compteur
d’impulsions commandant une porte, conservé après rechargement, suffirait à
vérifier l’utilité du premier ensemble avec les blocs redstone ordinaires.
## Particuleur et commande des effets
Le particuleur est un **appareil complémentaire**, utilisable sans ordinateur.
Un objet inséré au clic droit choisit le type de particules ; le signal règle
le débit, avec 0 pour l’arrêt et une émission croissante de 1 à 15. L’insertion
par dropper est demandée, le hopper accolé est proposé. Le contrôleur peut
piloter l’intensité et l’alimentation ; un transfert direct d’échantillon exige
une fonction d’inventaire définie. Le [contrat du particuleur](audit-redstone-26.3.md#particuleur--contrat-clair-et-montages)
précise décisions, propositions et limites de l’ancien code. Son portage,
la table des effets et la consommation éventuelle restent à réaliser ou décider.
## Disquettes de langage redstone
**Support proposé par l’auteur : des disquettes de programmes redstone.** Les
disques musicaux fournissent le parallèle d’un contenu porté par un objet ; la
disquette donne une forme physique au code que l’on conserve et transmet.
Parcours proposé : fabriquer une disquette vierge, écrire le code au terminal,
le vérifier et l’assembler dans ce même terminal, l’enregistrer sur la disquette,
puis charger le programme dans un contrôleur. Le terminal pourrait relire et
modifier le code. Conserver la source avec le programme assemblé permettrait
d’étudier ce que l’on a trouvé ou reçu.
Une première version pourrait contenir un programme par disquette, avec un nom
et une étiquette. La copie demanderait un support vierge ; ses modalités et son
coût restent à définir. **Les programmes sont obtenables, partageables,
duplicables et revendables**, notamment pour les montages de farming. Les
disquettes peuvent en porter des copies, rangées dans des coffres ou exposées
dans des cadres. Leur capacité et leur recette ne sont
pas fixées.
Les ruines pourraient conserver des disquettes nommées d’après leur ancienne
fonction : pompage, aiguillage, porte de maintenance ou protocole spatial.
Leur code consultable et les effets du montage permettent d’étudier l’installation.
La direction actuelle des salles exclut les panneaux explicatifs ; les éventuelles
annotations du code ne constituent pas un cours obligatoire ni un guide affiché
dans la pièce. Ces contenus précis restent des propositions de butin.
La proposition V0.1 transporte le programme sans RAM ni état d’exécution et
conserve le programme dans le contrôleur après retrait de la disquette. Les
gestes, limites et copies sont détaillés dans la
[fiche disquette](redstone-language-composants.md#disquette--transporter-un-programme).
Les déblocages et droits d’une installation demeurent ceux du serveur, même
quand son programme est copié. Aucun support n’est implémenté ici.
## Architecture du contrôleur à définir
La vision conserve la piste d’un ordinateur 8 bits. Dans la proposition, les
valeurs internes peuvent aller de 0 à 255 ; les intensités redstone des faces
restent de 0 à 15. Le passage entre les deux doit être explicite et compréhensible.
Le contrôleur aurait un compteur d’instruction, des registres, des indicateurs
de comparaison et une RAM dont le programme peut lire et modifier les cases.
Le profil V0.1 propose 1 Kio de RAM, des adresses sur 16 bits, quatre registres
A/B/C/D et un programme séparé de la RAM. Ces choix ne sont pas encore validés
par un prototype. Un processeur 8 bits n’impose pas une RAM de 256 octets.
Les six faces sont les ports physiques. V0.1 propose OFF, IN, OUT ou DEVICE
par face, avec les directions du monde comme adresses. Une communication série
entre contrôleurs demanderait un protocole : signaux, rythme, transfert d’un
octet et comportement en cas d’interruption.
**Base de travail proposée : conserver l’état complet.** Programme, RAM,
registres, compteur d’instruction et état d’attente seraient enregistrés pour
retrouver la machine après un rechargement. Les six faces assureraient d’abord
les échanges redstone ordinaires ; le protocole série supplémentaire reste en
réserve. Il faudra distinguer sauvegarder un bloc en place, le déplacer,
copier son programme et cloner sa mémoire. La capacité de RAM et le comportement
lors d’une coupure d’alimentation éventuelle restent à définir.
## Premier usage redstone à dessiner
Exemple avec la **syntaxe proposée V0.1**, non implémentée :
```text
loop:
IN A, NORTH
ST 0x10, A
LD B, 0x10
OUT SOUTH, B
WAIT 1
JMP loop
```
Ce petit exercice lit le signal nord, l’enregistre à une adresse de RAM, le
relit et le reproduit au sud. Il illustre registres, mémoire, ports et boucle.
Un programme suivant pourrait comparer un seuil, compter des impulsions ou
temporiser une porte. Le nord doit être configuré IN et le sud OUT ; `WAIT 1`
reprend au prochain tick chargé. Les règles complètes sont dans la proposition
d’instructions, sans exécution réelle de ce programme dans le présent chantier.
La future exécution devra avoir un budget borné par tick et un comportement
défini à l’arrêt, à l’erreur, au déchargement et au redémarrage. Les programmes
agissent par les fonctions autorisées des appareils. Les opérations d’expansion
restent soumises aux ressources, destinations et validations du serveur.
## Liaisons avec la progression et les lieux
**Décision déjà acquise :** l’étape du donjon de Sanctuary Island débloque les
portails vers les Cavernes de façon collective et permanente. Tous les joueurs,
y compris les nouveaux arrivants, peuvent ensuite fabriquer leur portail.
Copier une inscription ne remplace pas cette étape ; sa validation initiale
et l’usage de l’objet de quête restent à définir.
Les waystones, expansions et accès à l’End peuvent partager une écriture et des
notions tout en conservant leurs propres appareils et règles. Aucune nouvelle
condition d’accès à l’End ni obligation de programmer chaque waystone n’est
fixée ici. Les joueurs doivent pouvoir profiter des installations communes ;
la programmation comme spécialité volontaire est une proposition à discuter.
**Direction retenue : apprendre par des installations concrètes dans les salles
secrètes de l’île.** Terminaux, contrôleurs, afficheurs et disquettes se combinent
à des coffres, hoppers et comparateurs. Le joueur découvre un système en action,
peut en suivre les raccords et comprendre comment le reproduire chez lui.
L’effet spectaculaire doit venir de ce que fait la construction. De grandes
salles peuvent présenter plusieurs systèmes de farming avec ordinateurs,
**sans panneaux explicatifs**. Les joueurs suivent les stocks, les transferts,
les signaux et les programmes pour comprendre. Les afficheurs montrent les
sorties utiles à l’installation, sans devenir un tutoriel. Les dialogues des
futurs visiteurs ne remplacent pas ce mode de découverte.
Le programme lui-même devient un bien échangeable : une copie peut être utilisée,
modifiée ou revendue, sans transmettre les ressources ni les droits de l’installation.
Sa vente devra respecter le contrat de transaction du serveur comme les autres
biens. L’ordinateur est un système central de Sanctuary, pas seulement le bouton
d’ouverture des continents.
Exemple proposé pour l’atelier : un coffre alimente une chaîne de hoppers ; un
comparateur transmet le remplissage, le contrôleur commande un arrêt au seuil
et l’afficheur en montre l’état. Le signal du comparateur ne fournit pas un
inventaire exact. Une disquette pourrait transmettre le programme du montage.
La grande salle d’expansion, évoquée aussi comme « salle de transformation »,
étend cette découverte à l’ouverture des continents. Son nom détaillé, son
équipement initial et ce qui doit être rééquipé restent à définir. Le donjon
garde le rôle de stabiliser l’accès collectif aux Cavernes. Ces exemples ne
livrent encore aucun appareil ni objet au butin.
Les connaissances, recensements et activités du Blocodex peuvent alimenter des
usages à définir. Une palette connue, un stock observé et une matière engagée
dans une opération restent des informations distinctes. Les relevés ne donnent
pas automatiquement un droit de prélèvement ou d’accès aux stocks d’autrui.
La nouvelle direction relie aussi les palettes du Blocodex aux advancements
Minecraft et Sanctuary pour ouvrir des achats au **Black Market, le shop du
serveur**. Cette éligibilité commerciale est une intégration future, distincte
de la mémoire personnelle des blocs actuellement livrée. Elle ne garantit ni
le stock ni le paiement, et ne débloque pas implicitement une recette. Les
conditions personnelles ou collectives restent à définir dans la
[conception des informations et de l’économie](vision.md#informations-à-découvrir).
Les cartes au trésor visent des coffres réels sur des îles déjà générées ; elles
ne consomment pas de charge ni n’ouvrent à elles seules de nouveau territoire.
La cosmologie des Indoors contrôlés et des Backrooms orphelines peut prolonger
ces expériences. Le ballast et la traduction des opérations en espaces restent
à concevoir ; une erreur de programmation ne provoque pas automatiquement une
Backroom ni une altération de sauvegarde.
### Programmes à thème et fonctions des lieux
**Proposition en discussion**, à la demande d’articuler Galactium avec Indoors,
Backrooms, Cavernes, Lost City, Nether et End. Chaque famille transmettrait une
opération caractéristique, réutilisable dans les constructions des joueurs.
Les noms ci-dessous sont des noms de travail lisibles, pas des instructions
d’assembleur définies ni des traductions galactiques officielles.
| Lieu ou espace associé | Programme proposé | Fonction distinctive et installation |
| --- | --- | --- |
| Lost City et ateliers anciens | **Régie — coordonner** | Piloter une séquence entre plusieurs circuits : pompage, portes, éclairage ou manutention. Un poste de contrôle et des raccords permettent de comprendre les dépendances d’une ancienne infrastructure. |
| Cavernes | **Sonde — mesurer** | Relever les couches et rechercher des indices de gisement dans un périmètre mesuré par une station de prospection construite. Le joueur choisit où sonder puis interprète le relevé ; portée, résolution et coût restent à concevoir. |
| Indoors | **Volume — délimiter** | Définir un intérieur borné, conserver sa référence et l’associer à un accès. Le programme équipe une installation qui crée ou gère cet espace ; il ne copie pas automatiquement son contenu. |
| Backrooms | **Trace — retrouver** | Lire une référence orpheline et poser des repères de retour depuis une station ou des balises. Le programme aide l’exploration ; la restauration d’un espace ou le rapatriement de son contenu ne sont pas des effets acquis. |
| Nether | **Conversion — transformer** | Conduire une transformation matérielle précise : ressources d’entrée, étapes de traitement et produit de sortie dans une installation thermique. La recette donnerait sa fonction particulière au montage ; aucun alliage, nouveau carburant ou rendement n’est encore choisi. |
| End | **Liaison — adresser** | Identifier deux extrémités et établir une relation entre elles. Une première application pourrait transmettre un signal entre deux ancres construites ; un passage ou un transfert demanderait ensuite son propre appareil et ses règles. |
Lost City reste une famille de vestiges, pas une nouvelle dimension. Les villes
sont principalement destinées aux expansions ; Sanctuary Island conserve ses
lieux secrets et ses passages souterrains. Un atelier isolé pourrait déjà
contenir un exemple de Régie. Les Cavernes restent destinées au minage, sans
ajouter de mineshaft ni de parking à leur génération : la station de prospection
serait construite par les joueurs. Son relevé local se distingue du Blocodex,
qui conserve des connaissances et des recensements avec une couverture donnée ;
ce nouveau capteur n’est pas implémenté par les mesures existantes.
Le lien Volume/Trace reprend la cosmologie définie : un Indoor possède une
référence et un usage contrôlés ; une Backroom conserve des espaces et de la
matière dont le contexte a disparu. Trace pourrait en éclairer des indices sans
expliquer automatiquement leur origine. Le ballast reste une trace à concevoir
des opérations économiques ; il n’est pas assimilé aux charges d’expansion.
Les objets d’accès des Indoors liés à la mailbox, l’entrée des Backrooms par le
lit et la récupération des objets perdus gardent leurs contrats à définir.
Les pool rooms physiques de l’île ne deviennent pas des Backrooms par cette
seule association.
Les disquettes portent de vrais programmes modifiables qui combinent des
opérations offertes par les installations. Copier un programme transmet le
savoir-faire ; l’appareil, les ressources et les déblocages du serveur déterminent
ses effets possibles. Les exemples peuvent être utilisés puis étudiés sans
imposer à chaque joueur d’écrire tous les programmes. Les lieux de découverte
et les conditions d’apprentissage restent à choisir ; les six familles ne
forment pas une campagne obligatoire dans un ordre fixé.
Exemple de combinaison ultérieure : Sonde fournit un relevé pour préparer une
expédition ; Conversion prépare une ressource définie par la recette du montage ;
Régie coordonne son alimentation et sa demande d’expansion. Après ouverture, une
installation de Liaison pourrait relier des équipements des deux territoires.
Cette combinaison serait une possibilité avancée, pas un prérequis aux premières
expansions. Les autres fonctions gardent des usages autonomes.
Le donjon de Sanctuary débloque toujours les portails des Cavernes collectivement
et définitivement ; Sonde n’est pas nécessaire pour gagner cet accès. Aucun
nouveau verrou sur les portails du Nether ou de l’End n’est adopté. Une charge
de noyau sert pour l’instant à une expansion : coût d’un Indoor, d’une liaison ou
d’une exploration des Backrooms à décider séparément. La reprise, les pertes et
la récupération d’objets exigeraient leurs propres règles avant implémentation.
## Programmer les fonctions du jeu et construire une expansion
**Proposition en réponse à la demande de programmer le jeu lui-même.** Le
programme doit pouvoir composer des comportements ayant des effets réels :
enchaîner des actions, conserver des états, réagir aux entrées et piloter les
fonctions offertes par son installation. La redstone forme le premier usage ;
les capacités spatiales pourraient être une extension du même ordinateur.
Techniquement, cela demande de relier la machine virtuelle à des opérations du
moteur Sanctuary. L’assembleur reste le langage de calcul. Les périphériques
offrent les actions possibles et des résultats consultables : disponibilité,
état, demande acceptée ou refusée, progression, fin. Le programme peut choisir
et composer ces opérations au lieu de simplement déclencher un menu prédéfini.
Deux niveaux sont à distinguer dans la conception : piloter le générateur de
continents existant avec des paramètres calculés par le programme, puis, dans
un éventuel chantier ultérieur, permettre de programmer des règles de forme ou
de composition du terrain. Le second niveau demanderait son propre contrat de
génération déterministe et bornée ; il n’est pas fourni par l’API actuelle.
### Une construction qui donne une capacité au contrôleur
Proposer une **installation multibloc** composée de blocs ordinaires autour du
contrôleur. Sa forme serait reconnue par Sanctuary et lui donnerait accès aux
opérations d’expansion, en utilisant une charge de la réserve collective.
Le contrôleur exécute, le terminal permet de programmer et l’afficheur présente
les résultats ; cette installation spatiale ajoute une capacité particulière
à ce socle. Sa reconnaissance et ses effets
constituent une mécanique proposée, non un comportement vanilla.
| Partie de l’installation — proposition | Rôle concret à donner à sa construction |
| --- | --- |
| Socle et cadre orienté | Définir le point de référence et les directions desservies. |
| Éléments conducteurs ou de stabilisation | Définir une capacité de l’installation, éventuellement la taille maximale d’expansion ; matériaux, forme et relation à la capacité à choisir. |
| Coffres et acheminement par hoppers | Apporter les ressources effectivement engagées dans l’opération ; quantités et consommation à définir. |
| Contrôleur, terminal et disquette | Calculer la demande, exécuter la procédure et consulter son état. |
| Leviers, lampes et sorties redstone | Commander le démarrage et rendre visibles attente, manque de ressources et achèvement. |
Le dépôt pourrait utiliser les coffres de la construction ; son orientation et
son ancrage restent à définir. Aucun noyau intact n’est nécessaire dans le montage.
Un premier appareil compact pourrait être agrandi ou relié à d’autres équipements
selon des règles à concevoir.
L’habillage architectural resterait libre autour des pièces fonctionnelles :
la salle ancienne sert de modèle rééquipable, et la machine est reproductible
ailleurs. Le plan exact, les matériaux et les dimensions restent des décisions
ouvertes ; aucune grande forme rituelle obligatoire n’est validée ici.
### Bloc graine et météorites
**Direction retenue : casser le noyau le fait disparaître sans bloc ni fragment
à ramasser. Une charge d’expansion devient disponible pour tout le serveur.**
Le serveur émet un message en écriture galactique ; texte, traduction, son et
répétition de cette réaction restent à choisir. La phrase poétique proposée au
départ est abandonnée. Aucun sens canonique n’est attribué au message.
Cette direction remplace les propositions de noyau récupérable, de pièce à
enfermer dans une installation et de recharge du même objet. La charge persiste
indépendamment du découvreur et de toute machine, même après déconnexion ou
redémarrage. Elle ne devient pas un objet à ranger ou à échanger. L’intention
est de rendre son usage collectif ; les moyens d’accès aux noyaux encore intacts
et le choix de qui peut engager une charge restent à définir.
« Bloc graine » reste une description de travail. Le nom du bloc reste ouvert ;
KOR n’est qu’une proposition. **Galactium est le nom retenu par l’auteur pour
tout le système d’expansion**, qui comprend la réserve de charges, les programmes,
les installations et leurs opérations. Ce nom ne désigne pas une monnaie ou une
quantité dans un inventaire. Les noms inventés pour Sanctuary ne sont pas des
traductions officielles de Minecraft.
| Voie de découverte | Statut et intérêt proposé |
| --- | --- |
| Noyau de météorite | Piste demandée. Trouver un bloc étrange dans une enveloppe rocheuse ; anciens impacts et chutes observables sont deux formes possibles à choisir. |
| Installation ancienne | Proposition. Découvrir un noyau dormant sur place et le briser pour libérer sa charge ; la construction explique son ancien usage. |
| Reconstitution sur place | Piste ultérieure non validée. Les éventuels ingrédients doivent avoir leur propre provenance, puisque la casse d’un noyau ne donne aucun fragment. |
Le rapprochement avec le cube originel reste une hypothèse de lore. Rareté,
disponibilité renouvelable, fréquence et effets des météorites restent ouverts.
La charge ne remplace pas l’objet de quête débloquant collectivement les portails
de minage ; elle n’accorde pas automatiquement une recette de noyau. Aucun bloc,
message galactique ou événement météorique n’est implémenté ici.
### Afficheurs diégétiques, textes dynamiques et statistiques
**Direction retenue : afficher les textes sur des afficheurs diégétiques, intégrés
au monde.** Ils peuvent transmettre les communications de Galactium et présenter
des statistiques actualisées. Le support retenu est un **panneau afficheur
extensible** : plusieurs panneaux posés côte à côte forment un grand écran.
La recette et l’apparence précise restent à choisir.
#### Panneaux extensibles et surface rectangulaire
**Un bloc afficheur offre huit lignes de texte.** Les panneaux se raccordent
dans un même plan, avec la même orientation, par leurs côtés. La surface commune
est un **carré ou un rectangle plein** : chaque emplacement de son emprise doit
être occupé. Une diagonale seule, un angle de mur, une forme en L ou en T et un
rectangle troué ne constituent pas un écran unique.
Le raccord visuel de type **CTM** conserve les coins et la bordure extérieure,
en effaçant les bordures internes. Le texte traverse les raccords comme sur une
seule surface ; chaque bloc n’affiche pas une copie indépendante du contenu.
CTM décrit ici le résultat visuel souhaité ; le choix technique du rendu reste
à faire lors de l’implémentation.
Pour un écran de largeur W et de hauteur H, mesurées en blocs, la capacité est
de **8 × H lignes**, chacune utilisant la largeur W. Ajouter en largeur allonge
les lignes ; ajouter en hauteur augmente leur nombre. La taille des caractères
reste constante. Le nombre de caractères par bloc en largeur reste à calibrer
avec les polices lisible et galactique.
| Largeur × hauteur | Lignes | Largeur de chaque ligne |
| --- | ---: | --- |
| 1 × 1 | 8 | 1 bloc |
| 2 × 1 | 8 | 2 blocs |
| 2 × 2 | 16 | 2 blocs |
| 3 × 2 | 16 | 3 blocs |
| 4 × 3 | 24 | 4 blocs |
**Proposition pour construire bloc par bloc :** un panneau isolé forme un écran
1 × 1. Un panneau ajouté contre un écran devient une extension de cet écran ;
il reste en attente tant que l’ensemble ne forme pas un rectangle plein.
L’écran existant conserve sa surface active et son contenu. Dès que le rectangle
est complété, l’affichage s’étend. Ainsi, pour passer de 2 × 1 à 2 × 2, le premier
panneau de la deuxième rangée attend le second ; la forme en L intermédiaire
n’est jamais utilisée comme surface commune d’affichage.
La taille maximale, le débordement du texte, l’édition, les connexions au
contrôleur, la casse d’un panneau et la rencontre de deux écrans déjà configurés
restent à préciser. Agrandir ou reconfigurer l’écran doit préserver son contenu ;
une fusion ne doit pas écraser silencieusement le programme ou les données
d’un autre écran. Les rendez-vous, statistiques et textes utilisent la même
surface d’affichage.
#### Connexions aux fonctions de Minecraft — proposition
**Direction retenue : l’afficheur programmable est un écran à usage général.**
Le programme du contrôleur décide de ce qu’il affiche et de son évolution à
partir des données et entrées disponibles. Les joueurs peuvent écrire, modifier,
enregistrer sur disquette et partager leurs propres applications. La liste des
usages est ouverte.
**Premiers usages retenus par l’auteur : chronomètre, calendrier, jauge de
coffre et progression.** Ils deviennent des programmes de départ utilisables et
modifiables. Leurs sources et raccordements restent à construire. Les autres
exemples ci-dessous illustrent des applications possibles de ce même écran.
| Usage retenu | Première application proposée | Point restant à préciser |
| --- | --- | --- |
| Chronomètre | Deux entrées de départ et d’arrivée, durée de la session affichée. | Source de temps, arrêt/reprise et attribution éventuelle d’un record. |
| Calendrier | Heure et date du serveur, âge de la partie et rendez-vous préécrits. | Convention de calendrier, fuseau et mise en page. |
| Jauge de coffre | Comparateur raccordé à une jauge de remplissage. | Configuration et rendu des seize niveaux du signal. |
| Progression | Avancement d’un objectif mesurable, par exemple ressources réunies pour un projet collectif. | Définition de l’objectif, source du relevé et valeur à atteindre. |
Deux usages complémentaires sont proposés, avant de choisir le premier ticket :
un panneau autonome pour des contenus simples, et une sortie du contrôleur pour
les mises en page programmées.
**Panneau autonome.** Il conserve un texte préparé et peut lire une entrée
redstone. Le signal peut piloter un nombre, une jauge ou un choix parmi des
textes configurés par le joueur. L’édition, le côté d’entrée et les conflits
avec une connexion au contrôleur restent à définir. Une première application
serait un coffre, son comparateur et une jauge sur l’afficheur.
Le comparateur vanilla donne une intensité de remplissage entre 0 et 15. Cette
mesure ne suffit pas à compter exactement les objets ni à identifier leur type.
La jauge doit conserver cette précision limitée. Une quantité exacte demanderait
une lecture d’inventaire distincte, encore à concevoir.
[Référence Mojang sur le comparateur](https://www.minecraft.net/nb-no/article/taking-inventory--redstone-comparator).
**Écran du contrôleur.** Proposition minimale : relier directement une face du
contrôleur à l’arrière d’un panneau appartenant à l’écran. Ce raccord adresse
toute la surface rectangulaire. Le terminal sert à écrire et charger le programme,
le contrôleur conserve les calculs et la RAM, l’afficheur présente le résultat.
Des opérations d’écriture de texte à une ligne/colonne, de nombres, d’effacement
et de changement de page seraient à définir dans le langage. Aucun nom
d’instruction n’est fixé ici.
La capacité actuellement définie est une grille de texte adressable de huit
lignes par bloc en hauteur, sur toute la largeur du rectangle. Le programme
compose librement ses libellés, nombres et glyphes, puis modifie leur position
ou leur contenu. Couleurs, graphismes, interaction directe avec la surface et
caractéristiques typographiques supplémentaires restent à concevoir.
Un même matériel peut ainsi accueillir un compteur, un tableau économique,
une interface de boutique, un puzzle ou un petit jeu utilisant cette grille.
Le contrôleur exécute les calculs avec sa RAM ; le terminal édite le programme ;
l’afficheur présente le résultat. Les entrées redstone permettent déjà de
concevoir des interactions par boutons et leviers, sans décider d’un écran tactile.
Le programme compose les données et opérations que Minecraft et Sanctuary lui
exposent par les raccordements définis. Lire un stock, acheter un lot ou demander
une expansion exige toujours la source ou le service correspondant. Le texte
affiché ne remplace pas l’état autoritaire du serveur. Ces contrats donnent aux
programmes des capacités combinables, dont les applications ne sont pas limitées
à celles prévues par les auteurs du mod.
Cette liaison de données est distincte de l’intensité redstone : les caractères
et tableaux ne sont pas transmis implicitement par une simple poudre alimentée.
Le même contrôleur pourrait utiliser ses autres faces pour des entrées et
sorties ordinaires. Les câbles de données, écrans distants et connexions de
plusieurs écrans restent des extensions à étudier.
| Construction proposée | Entrées et usage de l’écran |
| --- | --- |
| Réserve ou silo | Comparateur vers jauge de remplissage ; mesure analogique limitée aux niveaux disponibles. |
| Voie de fret | Détection redstone d’un passage vers indication d’occupation ou comptage des impulsions ; la destination affichée est configurée. |
| Stand de tir | Signal du bloc cible vers jauge de précision ; le contrôleur peut mémoriser les scores d’une session. |
| Parcours chronométré | Deux entrées pour départ et arrivée ; le contrôleur mesure une session et conserve un record. Temps réel ou ticks doivent être explicitement choisis. |
| Salle d’énigmes construite par les joueurs | Boutons et leviers vers programme, symboles et résultat d’une combinaison ; les textes sont préparés par le constructeur. |
| Affichage de livre | Piste de lecture d’un livre fourni au montage, pour afficher une page ou un texte sur le grand écran ; raccordement et accès au livre restent à concevoir. |
| Place ou atelier collectif | Données du calendrier, statistiques ou progression d’un projet vers tableau local ; chaque donnée demande sa source serveur définie. |
La cible vanilla produit une intensité liée à la proximité du centre de l’impact.
Sa valeur peut fournir l’entrée du stand de tir proposé.
[Référence Mojang sur la cible](https://www.minecraft.net/tr-tr/article/block-week--target).
Un signal ne fournit pas automatiquement l’identité d’un participant : les
compteurs et chronomètres peuvent d’abord décrire une session ou une installation.
L’attribution personnelle d’un record demanderait une règle et une source
d’identification supplémentaires. Les capteurs d’inventaire, lectures de livres,
statistiques et données Sanctuary sont des connexions futures à spécifier ;
l’afficheur ne découvre pas automatiquement toutes les données du monde.
Les textes composés par les joueurs pour leurs installations sont distincts de
la sélection des communications de Galactium décrite ci-dessous. Ces usages
et modes de connexion sont des propositions, sans nouvelle fonction implémentée.
La conception s’étend aussi à des [boutiques construites avec des blocs
vanilla](vision.md#boutiques-construites-avec-des-blocs-vanilla). Un afficheur y
présenterait une offre, son prix et les lots réellement disponibles. Ces valeurs
demandent un contrat de commerce dédié ; la jauge analogique de coffre ne suffit
pas à établir une offre ou à encaisser un achat.
#### Combinaisons émergentes
**Direction retenue : permettre aux joueurs de composer de nouveaux usages
avec les mêmes blocs et programmes.** Une mesure de remplissage, un temps,
un objectif ou une opération de commerce doit pouvoir être utilisé par le
programme pour afficher, comparer, mémoriser puis commander une action.
Les quatre applications de départ fournissent des exemples à réutiliser.
Le contrôleur garde l’état nécessaire à ces enchaînements : une session en
cours, un seuil atteint, une demande déjà traitée. Le partage d’une disquette
permet de reprendre un programme et d’adapter ses paramètres à une autre
construction. Les protocoles et capacités concrètes restent à définir.
| Combinaison proposée | Construction obtenue |
| --- | --- |
| Jauge de coffre + deux seuils + sortie redstone | **Réserve régulée** : demander le réapprovisionnement au seuil bas et arrêter au seuil haut. Deux seuils distincts évitent les bascules continuelles autour d’une seule valeur. |
| Progression + dépôt collectif + afficheur | **Chantier commun** : montrer les apports validés et ce qui manque pour l’objectif choisi, puis indiquer qu’il est atteint. L’affichage ne construit pas automatiquement le bâtiment. |
| Calendrier + chronomètre + entrées de départ/arrivée | **Parcours à sessions** : horaires préparés, compte à rebours, durée de la session et réouverture suivante. Les records personnels demanderaient toujours une identification supplémentaire. |
| Chronomètre + compteur en mémoire + boutons | **Atelier partagé** : distribuer des numéros de passage, afficher le tour courant et la durée d’usage, puis libérer la place. Le numéro désigne un tour, sans attribuer automatiquement une identité au joueur. |
| Boutique + stock enregistré + calendrier | **Marché à horaires** : une offre financée par le stock du vendeur devient accessible aux horaires préparés. Un changement d’heure ne crée aucune marchandise. |
| Boutique + objectif de ressources + budget du propriétaire | **Comptoir d’approvisionnement** : proposition de commande d’achat rémunérant les apports acceptés jusqu’à l’objectif ou l’épuisement du budget. Ce sens d’échange demande une extension du contrat de commerce. |
| Mesure locale + minuterie + sorties redstone | **Poste de fret** : programmer un départ quand le chargement atteint un seuil ou qu’une durée s’est écoulée. L’occupation de la voie doit provenir d’une entrée définie. |
Parcours d’expérimentation proposé : construire une jauge, lui ajouter une
commande à seuil, puis afficher l’objectif de réapprovisionnement. Le joueur
peut ensuite employer ce montage pour son atelier ou pour alimenter un magasin.
La fonction vient de la composition du programme, des raccordements et de
la construction.
Ces exemples ne sont pas de nouveaux modes imposés à l’afficheur. Les données
riches de dépôt, de commerce et de calendrier exigent leurs sources serveur ;
un signal analogique ne suffit pas à déterminer les apports exacts d’un joueur.
Les transactions conservent leurs vérifications et une opération déjà traitée
ne doit pas être répétée au simple rechargement du programme. Les horaires de
rendez-vous restent préparés ; cette composition ne réintroduit aucune catégorie
de message Galactium rejetée.
Pour une première démonstration, réserve régulée, chantier commun et parcours
à sessions sont des candidats proposés, à choisir une fois leurs sources et
connexions définies. Aucun de ces montages n’est livré par ce cahier.
#### Contenus des afficheurs
La sélection des secrets de Galactium se limite à :
- Coordonnées et indices de localisation.
- Morceaux de programmes galactiques.
- Rendez-vous liés au calendrier ou au ciel, **écrits à l’avance**.
Les rendez-vous ont un texte, un horaire et des conditions de déclenchement
préparés. L’affichage peut actualiser des champs issus du jeu : emplacement,
date, heure ou temps restant, selon le message. Leur schéma exact reste à définir.
Le caractère dynamique concerne ces données et leur présentation ; le rendez-vous
et son texte sont conçus en amont.
**Les statistiques sont également demandées.** Exemples d’usages proposés : âge
de la partie, quantité de ressources d’un stock consultable, avancement d’un
projet ou nombre d’expansions ouvertes. Chaque affichage doit désigner la mesure
et son périmètre réel. Le serveur fournit les valeurs ; les relevés partiels du
Blocodex ne deviennent pas un total de toute l’île. Le choix des statistiques,
leurs sources et la liaison éventuelle avec les programmes restent à concevoir.
La sélection exclut les astuces, fragments d’histoire des anciens, diagnostics
de machines, appels de lieux inaccessibles, réactions aux constructions et
demandes mystérieuses précédemment proposés comme messages de Galactium. Les
exemples de phrases rejetés sont abandonnés. Le terminal conserve ses fonctions
d’édition et de diagnostic technique décrites ailleurs dans ce cahier.
L’emplacement des afficheurs, leurs conditions d’accès et de lecture, la fréquence
d’actualisation et la présentation galactique restent à définir. Ce cadrage
documentaire n’ajoute encore aucun affichage ou événement au jeu.
### Réserve collective et interface Galactium
**Demande retenue : une interface pour Galactium, l’ensemble du système
d’expansion.** Elle doit relier programmation, installation, préparation et
usage des charges collectives. L’accès proposé est une vue du terminal existant,
relié à une installation. Il n’ajoute pas de bloc ni de menu personnel obligatoire.
La base de travail est **un noyau brisé → une charge commune → une expansion**.
Les ressources apportées à la machine restent un coût distinct, croissant selon
la taille du projet ; recettes et quantités sont à équilibrer. Le noyau ne se
recharge pas. Briser un noyau alimente la réserve sans lancer de génération.
| Zone proposée du terminal | Informations et actions |
| --- | --- |
| Réserve du serveur | Charges disponibles et charges engagées dans les opérations en cours, partagées par toutes les installations. |
| Projet de l’installation | Île de départ, direction, climat, relief, taille et emplacement candidat ; un schéma de recherche, pas une carte exacte promise avant génération. |
| Préparation | État du montage, programme chargé, ressources présentes et manquantes, conditions restantes pour démarrer. |
| Opération | Lancement quand les conditions sont satisfaites, état de préparation, progression et résultat ; l’opération peut être retrouvée après réouverture. |
Le terminal présenterait une **vue d’utilisation** de l’installation et garderait
son **éditeur assembleur**. Le programme fournit la demande et pilote la machine ;
la vue affiche cette même demande et son suivi. Une action à l’écran doit passer
par le même contrat que le programme. L’interface ne remplace pas la construction,
les ressources ou le contrôleur par un simple bouton de création de continent.
Ouvrir le terminal, consulter un projet ou enregistrer une disquette ne réserve
aucune charge. La charge est engagée une seule fois lorsque le serveur accepte
effectivement le lancement avec les ressources. Une demande refusée ne la dépense
pas. Deux installations sollicitant la dernière charge ne peuvent pas toutes
deux l’obtenir. Une opération acceptée conserve son identité et son engagement
après déconnexion, fermeture ou casse du terminal ; la reprise ne paie pas à
nouveau. Le traitement d’un échec après acceptation devra être défini avec le
contrat de sauvegarde et de reprise, sans remboursement ni nouvelle génération
automatiques supposés.
Les inscriptions et la réaction du serveur gardent l’écriture galactique.
Compteurs, actions et conditions de fonctionnement doivent rester compréhensibles,
avec libellés FR/EN ; la place de la transcription et du déchiffrement reste à
dessiner. Des témoins redstone visibles sur la machine sont proposés en complément
de l’écran. La visibilité de la réserve depuis les autres lieux et les règles
collectives de dépense sont ouvertes : aucun vote ou droit exclusif du propriétaire
du terminal n’est décidé ici.
### Parcours proposé dans le monde
1. Libérer une charge en brisant un noyau, ou utiliser une charge déjà disponible
pour le serveur. Retrouver un programme et les raccords de l’installation
ancienne, ou utiliser un programme partagé ; construire les éléments nécessaires.
2. Préparer au terminal une demande : parent, direction, climat, relief et taille
dans les capacités et déblocages disponibles.
3. Chercher un emplacement et afficher un projet ainsi que son coût. Un schéma
de recherche ne doit pas être présenté comme une carte exacte déjà générée.
4. Apporter les matériaux et donner le départ. Le serveur valide ensemble la
construction, l’accès, la destination et l’engagement d’une charge commune
avec les ressources. Consulter un projet ne dépense rien.
5. Le contrôleur conserve l’identifiant de l’opération et suit sa préparation.
Les lampes et le terminal rendent le travail lisible ; un programme repris
suit la même opération.
6. Une fois le continent prêt, sa cartographie et son relevé réel de ressources
pourraient devenir des résultats consultables. Leur production reste à réaliser.
Ces échanges pourraient passer par des registres de périphérique, décrits en
assembleur et affichés en galactique. Un descripteur ou des valeurs sur plusieurs
octets devront représenter les coordonnées, tailles et quantités qui dépassent
255 ; un signal redstone ordinaire reste compris entre 0 et 15.
### Ce que le moteur fournit déjà et ce qui manque
Lecture du code d’expansion de l’alpha.23 locale : `ExpansionRuntime.Session`
expose recherche de candidat, sondage, création, progression et reprise. Les
diamètres admis vont de 64 à 1 024 selon les profils disponibles. Une création
réserve durablement son emprise avant la préparation progressive des chunks.
Ces fonctions sont actuellement utilisées par des commandes opérateur.
Le candidat proposé n’effectue pas à lui seul toute l’admission. Celle-ci peut
attendre jusqu’à 30 secondes dans le chemin actuel ; elle devra être adaptée
avant tout appel depuis un programme. La préparation des chunks est déjà suivie
par une file. La réutilisation de certains vides certifiés demande actuellement
un rechargement du monde. Ce parcours technique ne constitue pas encore une
machine utilisable en survie.
Le raccord futur devra introduire une demande asynchrone avec identité persistante,
plutôt qu’appeler la création à chaque tour de boucle. Il reste à définir le
contrat entre charge collective, ressources engagées, réservation du terrain,
interruption et reprise. La réserve collective et l’interface Galactium n’existent
pas encore dans ce moteur. Les règles de sauvegarde et les constructions
existantes sont conservées ;
une opération enregistrée n’est pas annulée par simple retrait de la disquette.
Le Blocodex peut fournir des connaissances et des observations ; les stocks
réservés dans l’installation relèvent du contrat de consommation à construire.
Le relevé de la nouvelle région intervient après génération, avec sa couverture.
Le programme ne relance pas des graines pour garantir un quota de minerai.
L’éventuelle trace de ballast appartient au futur contrat économique.
Le déblocage collectif des portails de minage reste une décision distincte.
Ce multibloc ne fixe pas les conditions de la première expansion, ni la forme
des waystones ou des portails vers les autres dimensions.
## Prochaines décisions
1. Apprentissage des glyphes et des instructions ; lien exact avec les Endermen.
2. Connexion du terminal au contrôleur et chargement du programme depuis la disquette.
3. Taille de RAM, premier montage, rythme d’exécution et règles de reprise.
4. Capacité, recette, copie, lecture et chargement des disquettes ; contenus découverts dans les ruines.
5. Construction d’expansion : pièces fonctionnelles, forme, capacité, ressources et opérations programmables ; confirmer ou ajuster la proposition multibloc.
6. Galactium : nom du noyau et voies de découverte, message galactique et forme des météorites ; disponibilité des charges et règles de dépense collective.
7. Interface : accès depuis le terminal, disposition, lisibilité FR/EN et lien avec l’éditeur assembleur ; valider la proposition avant implémentation.
Le [cahier des lieux](structures-conception.md) conserve les décisions générales
et le [document de vision](vision.md) le périmètre du projet.
-674
View File
@@ -1,674 +0,0 @@
# Sanctuary — machines que l’on construit
**Exploration WG-26 ; aucun nouveau bloc, recette ou format de sauvegarde livré.**
Le principe précisé par l’auteur est **l’assemblage de blocs identiques en une
version agrandie de leur fonction** : 27 fours en cube plein deviennent un
grand appareil de cuisson ; 27 barils deviennent un **Fût**. La précédente
proposition de four creux entouré de briques est remplacée. **Fourneau** est
le nom proposé ici pour les 27 fours, encore à valider avec l’auteur.
Le **grand baril de fermentation** est le nom retenu pour traiter plusieurs
stacks d’une même recette. Le kitchen oven d'It's Alive ! est regroupé dans le
Fourneau, dont les recettes et la chaleur restent à concevoir. **Métablit** est
le nom proposé par l’auteur ; sa fonction d’établi collectif reste en discussion.
Les collections deviennent visibles sur des présentoirs : **9 objets par face
de bloc, 81 par façade 3 × 3 et 324 objets distincts sur quatre façades**. Les
méga-pistons sont eux aussi retenus en conception : **9 pistons en façade 3 × 3,
course de 3 blocs**, avec variante collante. Les autres assemblages décrits plus
bas distinguent désormais la **Trémie retenue : 9 hoppers à plat et 45 cases**,
et le **Carillon retenu pour ses accords et courtes séquences, formé par un
assemblage adjacent choisi**. Les appareils supplémentaires restent proposés ; aucun n’est livré.
La **clé à molette dorée** est retenue pour **orienter, assembler volontairement
et désassembler**. Les blocs restent indépendants à la pose ; le joueur choisit
de les réunir avec la clé. L’auteur confirme ce choix pour les hoppers :
un montage de neuf hoppers doit pouvoir conserver ses neuf circuits au lieu
de devenir une Trémie. Ses gestes et sa fabrication sont à concevoir.
Le coffre 3 × 3 × 3 évoqué sert ici de référence au principe de construction.
Aucun coffre de ce type n’a été identifié dans le code courant ni les documents
consultés. Le stockage en titane reliant 128 coffres est une autre fonction ;
ce cahier ne présente donc pas ce coffre comme déjà implémenté.
## Clé à molette dorée — assembler, désassembler et orienter
**Retenu par l’auteur :** un objet spécial, la **clé à molette dorée**, permet
d’assembler volontairement des blocs compatibles, de dissocier un multibloc,
d’intervenir sur les pistons et de tourner des blocs comme les escaliers et
les barils. Nom anglais proposé :
**Golden Wrench**. Recette, obtention, durabilité et vitesse de récupération
restent à définir ; la couleur dorée ne fixe pas un coût ni un enchantement.
### Retrouver les blocs indépendants
Pour répondre à l’exemple des 27 fours, « casser le multibloc » est interprété
ici comme **dissocier la machine sur place**. Les 27 fours restent posés et
retrouvent un fonctionnement individuel. Le même principe s’applique aux neuf
bases du méga-piston, y compris sa variante collante. Récupérer un bloc dans
l’inventaire est une autre action ; la clé ne compacte pas les 27 composants
en un objet machine transportable.
**Exigence : la dissociation persiste.** Une forme compatible n’est pas forcément
un assemblage actif. Les blocs séparés doivent rester indépendants après une
mise à jour voisine, un déchargement ou une réouverture, même si le cube de
fours est toujours complet. Le joueur peut les réunir à nouveau avec la même
clé : cette fonction est validée. Le geste exact de réassemblage reste à choisir.
**Règle commune retenue : poser ne suffit pas à assembler.** Les blocs
nouvellement posés gardent leur usage individuel ; le joueur les réunit
volontairement avec la clé. Fours, hoppers et pistons peuvent ainsi rester
des composants indépendants. Proposition de retour visuel : une forme compatible
est mise en évidence avec l’outil avant de modifier les circuits.
Le démontage conserve **l’état actuel** des matériaux et du travail. Il ne
restaure pas les anciens inventaires d’avant assemblage : du combustible a
pu être consommé et des recettes terminées depuis. Les contenus encore
présents sont redistribués ou restitués une seule fois ; les matières d’un
résultat terminé ne reviennent pas en plus de ce résultat. La répartition
dans les cases des fours/barils individuels et le traitement d’un surplus
restent à définir. Si une séparation ne peut pas conserver le contenu, elle
doit attendre une récupération du stock, sans supprimer les objets.
Pour le méga-piston, le démontage concerne **l’ensemble réel de la mécanique**,
avec ses bases, sa tête et sa tige. Une tête déployée ne devient pas un piston
supplémentaire à récolter. Proposition de premier comportement : intervenir
une fois le piston rétracté et immobile ; une demande pendant le mouvement
ne déplace pas instantanément sa charge. La récupération d’un piston ordinaire
avec la clé est également à prévoir, avec sa durée et son usure propres.
### Gestes proposés
| Situation | Geste à essayer | Résultat attendu |
| --- | --- | --- |
| Blocs indépendants compatibles | Sélection puis validation avec la clé ; combinaison de touches à définir | Former volontairement une machine commune à partir des blocs choisis. |
| Bloc indépendant orientable | Clic droit avec la clé | Passer à l’orientation admissible suivante, avec un aperçu du sens obtenu. |
| Multibloc actif | Sneak + clic droit avec la clé | Mettre en évidence tout le groupe visé et le dissocier sur place, selon son état de fonctionnement. |
| Bloc à récupérer | Minage avec la clé | Récupérer le bloc admissible ; durée, outils compatibles et cas des pistons à préciser. |
| Composant d’un multibloc actif, demande de rotation | Clic droit avec la clé | Montrer l’assemblage concerné ; dissocier avant de tourner un seul composant, afin de ne pas désorganiser silencieusement la machine. |
Les trois fonctions sont retenues ; ces gestes précis restent proposés. La clé tenue distingue l’intention
de réglage des clics usuels : ouvrir un baril, accorder un bloc musical,
configurer un contrôleur ou insérer un objet dans le particuleur.
Le **Carillon** emploie aussi la clé pour réunir volontairement les blocs
adjacents choisis. La séquence de sélection et de validation reste à dessiner ;
elle respecte le choix d’un assemblage adjacent volontaire.
Le geste d’assemblage doit se distinguer de la rotation d’un bloc indépendant.
### Orientations et autres usages à explorer
| Cible | Fonction retenue ou piste |
| --- | --- |
| **Escalier — demandé** | Tourner sa direction en conservant le matériau ; le raccord aux voisins est recalculé. Retourner haut/bas est une possibilité supplémentaire à choisir séparément. |
| **Baril — demandé** | Réorienter son ouverture en conservant son contenu et son identité. Les 27 barils d’un Fût doivent d’abord être dissociés pour être réglés individuellement. |
| **Piston — piste de réglage** | Changer la direction une fois rétracté, sans déplacer les blocs devant lui ni modifier sa variante normale/collante. |
| **Hopper — piste** | Tourner le bec vers une sortie admissible, pour raccorder notamment le hopper situé sous la Trémie. Cela ne choisit pas une destination distante. |
| **Bûche ou pilier — piste** | Changer l’axe en place, avec les états permis par le bloc. |
| **Répéteur, comparateur, distributeur — pistes** | Corriger la direction en conservant les réglages ou objets. La nouvelle connexion suit la construction obtenue. |
L’admissibilité dépend du bloc : support, raccords, pièces liées et état de
fonctionnement. La liste n’accorde pas automatiquement une rotation à tous
les blocs ou multiblocs du pack. Pour les appareils à entrée/sortie relative,
une rotation réévalue les connexions et retire les anciens signaux des faces
abandonnées.
**Contrôleur :** une éventuelle rotation à la clé garde les adresses cardinales
du programme et la configuration de ses faces ; tourner sa façade ne remappe
pas `NORTH` vers `EAST`. CPU et RAM sont conservés. Cette extension demanderait
un contrôleur arrêté ou en pause et une vérification des connexions avant
reprise. Elle complète les [fiches des composants](redstone-language-composants.md),
sans changer le langage ni les commandes main vide.
Les opérations restent des modifications de construction validées côté
serveur, avec les mêmes droits de modification du lieu. La clé ne termine
pas une recette et ne relance pas un programme pour effectuer une rotation.
## Fourneau — 27 fours et une chauffe commune
L’intérêt est de **traiter une charge de matériaux dans un même appareil chauffé**.
Le joueur assemble les 27 fours, apporte le combustible et choisit la charge.
Le contrôleur peut ensuite organiser les cycles, mais le four doit être utilisable
à la main et avec une commande redstone simple.
### Forme retenue et aspect proposé
**27 blocs de four ordinaires forment un cube plein de 3 × 3 × 3**, y compris
le bloc central. Ni cavité laissée vide, ni briques de remplacement, ni foyer
supplémentaire à fabriquer. Proposition : la forme complète est reconnue
comme compatible avec un seul appareil, doté d’une grande façade et d’une
interface commune. Une disposition dissociée à la clé reste indépendante
jusqu’à un réassemblage volontaire.
Le choix de sa façade, la règle d’orientation des blocs et son raccord visuel
restent à éprouver.
Trois couches identiques, `F` représentant un vrai bloc de four :
```text
Base Milieu Dessus
FFF FFF FFF
FFF FFF FFF
FFF FFF FFF
```
La grille de matériaux est un inventaire de l’appareil ; elle ne nécessite pas
neuf cellules vides à l’intérieur de ce cube. Les 27 fours construits donnent
la forme et le coût de l’ensemble, pas automatiquement 27 fois la vitesse ou
le rendement. Le regroupement doit conserver les objets, combustibles et états
présents avant formation, sans continuer simultanément 27 cuissons indépendantes.
Le contrat de formation/démontage sera défini avant toute conversion en jeu.
**Nom proposé : Fourneau.** « Méga-four » reste descriptif pendant la discussion.
Le nom ne désigne pas un assemblage de hauts fourneaux : le matériau demandé
est bien le four ordinaire. Aucun registre existant n’est renommé dans ce cahier.
### Deux usages à comparer dans le même appareil
| Usage proposé | Charge et résultat |
| --- | --- |
| **Cuire une fournée / Batch smelting** | Les neuf cases accueillent des matières à cuire selon les recettes admises. Plusieurs pièces partagent un cycle de chauffe ; les résultats restent ceux des recettes. Aucun mélange accidentel ne devient automatiquement un alliage. |
| **Recette à chaud / Heat crafting** | La grille 3 × 3 forme une seule recette composée : ingrédients, positions ou proportions définis par la recette, durée et résultat. Les matériaux sont traités ensemble. C’est la piste pour les alliages et de nouvelles transformations. |
Le mode serait choisi explicitement à la façade, avant de lancer la charge.
Cela rend compréhensible la différence entre deux minerais cuits séparément
et deux matériaux destinés à une transformation commune. Un livre de recettes
ou un programme peut aider à préparer le plateau ; ni l’un ni l’autre n’est
requis pour les premières utilisations manuelles.
**Capacité d’essai proposée :** neuf cases d’entrée et un bac de résultats
acceptant plusieurs types d’objets. Neuf cases ne signifient pas que neuf stacks
complètes doivent fondre instantanément. Pour un premier cycle de cuisson,
prélever une unité par case occupée admissible ; pour une recette composée,
prélever les quantités définies par cette recette. Les réserves restantes
peuvent alimenter les cycles suivants.
Une recette à chaud ressemble ainsi à un craft qui demande aussi une cuisson :
**disposer → chauffer → récupérer**. Le premier essai n’a pas besoin de degrés
réels, de pression, de gaz ou d’une interface de simulation industrielle.
Des familles de chauffe pourront apparaître si certaines recettes le justifient.
### Source de chaleur et intérêt du volume
Une seule source de chaleur alimente l’appareil entier. La proposition de
départ est **un foyer et une réserve de combustible communs**. Le foyer peut
consommer plusieurs unités au fil de la fournée ; « une source » désigne son
emplacement, pas une unité de combustible valable indéfiniment.
La durée et le combustible consommé doivent dépendre du travail demandé. Le
gain du grand four peut venir de la chauffe partagée et du traitement par lots,
avec un rendement à comparer à une installation de fours ordinaires. Aucun
multiplicateur de vitesse, de combustible ou de minerais n’est arrêté ici.
Un contact avec une source extérieure, un foyer permanent ou le
[siphon thermique proposé](redstone-language-objets-et-cristaux.md#siphon-thermique)
sont d’autres pistes. Ils demanderaient leurs propres règles ; ils ne donnent
pas implicitement une production illimitée gratuite au premier four.
### Cycle proposé
1. Compléter le cube de 27 fours et former volontairement l’installation avec
la clé, selon le geste à choisir. Un cube dissocié reste indépendant tant
que le joueur n’a pas choisi de le réunir à nouveau.
2. Charger le plateau, choisir le mode et alimenter le foyer.
3. Prévisualiser les ingrédients utilisés et les résultats, puis lancer. Le
serveur vérifie la recette, le combustible et la place nécessaire au résultat.
4. Isoler la charge en cours ; les apports ultérieurs attendent le cycle suivant.
Le foyer chauffe pendant la durée de travail, avec une animation et un état
lisibles en façade.
5. Déposer le résultat une seule fois dans le bac, prêt au retrait. Un cycle
n’éjecte pas son contenu dans le vide parce que le bac voisin est plein.
Pour ce prototype proposé, les ingrédients engagés sont gardés dans la charge
en cours jusqu’à la transformation. Une structure cassée arrête le traitement ;
avant transformation, les matériaux de la charge restent récupérables et le
combustible déjà brûlé reste dépensé. Après transformation, seul le résultat
correspondant existe. Une reprise ne doit pas refaire le même lot.
La politique de refroidissement après coupure ou rupture est à éprouver. Pour
les matières industrielles, aucune destruction, explosion ou surveillance
constante n’est ajoutée par défaut. Les recettes culinaires conservent au
contraire les fenêtres de cuisson et de récupération prévues par It's Alive ! :
le méga-four ne garantit pas automatiquement la meilleure qualité d’un plat.
### Redstone, convoyeurs et programmes
La proposition distingue **autoriser les cycles** et **fournir la chaleur**.
Un levier peut permettre les fournées automatiques ; le combustible reste requis.
Une coupure empêche les nouveaux engagements et met le traitement en pause selon
la règle thermique choisie. Le fonctionnement manuel ne dépend pas d’un CPU.
Un comparateur pourrait donner le remplissage du bac de résultats. Les états
« prêt », « chauffe », « manque de matière » et l’avancement exact pourraient
passer par une interface de données vers un contrôleur et un afficheur, sans
faire signifier plusieurs mesures différentes au même signal de comparateur.
L’automatisation demande des **points d’accès identifiés** : entrées du plateau,
combustible, sortie. Leur forme et leurs faces seront définies avec le dessin
retenu, en respectant les ingrédients des recettes positionnelles. Un convoyeur
amène des drops à un collecteur ; un coffre collé ne les aspire pas spontanément.
Les opérations se font dans un inventaire commun, sans recopier le contenu
dans chacun des 27 fours constitutifs.
Un programme pourrait remplir, vérifier, chauffer puis évacuer. Copier sa
disquette ne copie ni le four, ni le stock, ni les recettes débloquées. Le
programme thématique **Conversion**, déjà proposé pour le Nether, pourrait
montrer un savoir-faire de ce type ; il n’impose pas de verrou Nether au four.
## Recettes et place dans la progression
L’auteur souhaite ouvrir la possibilité des alliages. Leur composition et leurs
usages restent à concevoir ; la présence du silver et du titane dans la vision
ne les transforme pas automatiquement en alliages fabriquables. Les équipements
Anomaly restent infrabricables selon la règle retenue.
Pour éprouver le four, préparer deux familles de recettes : une cuisson par lot
qui conserve les rendements usuels des recettes choisies, puis **une recette à
plusieurs ingrédients dont le produit a un usage clair**. La première révèle le
confort de la chauffe commune ; la seconde justifie la nouvelle fonction du four.
Le choix du premier alliage doit venir avec la pièce, le bloc ou l'équipement
auquel il sert, sans ajouter plusieurs métaux seulement pour remplir une grille.
Le maçon ou un autre métier approprié pourrait travailler dans un atelier qui
emploie ce four, selon les futures tâches rémunérées des villageois. L’appareil
traite une charge ; le travailleur se déplace, approvisionne et organise une tâche
de métier.
### Une cuisson commune avec It's Alive !
**Direction retenue : le méga-four accueille les recettes de cuisson d'It's
Alive ! et reprend le rôle du kitchen oven.** Il n’y a pas besoin de maintenir
deux appareils qui font la même cuisson dans le pack. Les poêles, marmites,
moulins, séchoirs et autres procédés distincts gardent leurs rôles ; cette
décision ne transforme pas toute préparation culinaire en cuisson au four.
It's Alive ! reste autonome : ingrédients, recettes, pages, qualité et suivi
culinaire restent sous sa responsabilité. L’appareil de chauffe commun doit
donc pouvoir être fourni avec ce mod ou une dépendance partagée explicitement
déclarée, sans imposer le reste de Sanctuary pour jouer à sa cuisine. Le choix
du module qui porte le four appartient au ticket d’architecture, avant code.
Les recettes métallurgiques et culinaires utilisent le même service de charge
et de chauffe, avec leurs propres résultats et règles. Le regroupement ne crée
pas de contamination des aliments, de bonus d’alliage sur les plats ou de
nouvelle étape de nettoyage implicite. Le modèle mélangeant différentes durées
et fenêtres culinaires dans une même fournée devra être essayé ; un premier
cycle homogène peut servir de témoin avant de promettre toutes les combinaisons.
## Fût — 27 barils et un stockage paginé
**Nom retenu : Fût**, à la place de giga-baril. **27 barils ordinaires assemblés
en cube plein de 3 × 3 × 3** donnent un stockage commun parcouru par **pages
et/ou défilement**. L’intégration des cases à l’inventaire custom reste
explicitement ouverte à la demande de l’auteur.
Le matériau et le gabarit sont désormais définis. Le dessin du fût, son orientation,
la capacité, les tailles supplémentaires et la présentation des pages restent
à préciser. Proposition : les barils contenant déjà des objets conservent leurs
quantités lors du regroupement ; le nouvel inventaire ne les copie pas en plus
des anciens. Ce contrat doit aussi fonctionner au démontage.
- Le nombre de pages présente une capacité réelle et finie ; faire défiler
n’ajoute pas des emplacements sans limite.
- Deux joueurs ou deux ouvertures accèdent au même contenu autoritaire. Tourner
une page change la vue, pas l’identité ou le nombre des objets stockés.
- Les hoppers, s’ils sont raccordés, travaillent sur le stockage selon leurs
faces et filtres ; ils ne dépendent pas de la page affichée par un joueur.
- L’agrandissement ou la casse doit conserver une représentation unique des
matières. Réduire la capacité ne peut pas faire disparaître le contenu des
pages devenues invisibles. Le comportement concret est à définir avant code.
- Une page de conteneur n’est pas une rangée supplémentaire de l’inventaire
personnel ; la progression des cases du joueur garde son contrat.
Le Fût est un **lieu de stockage**. Le terminal en titane reste l’outil
de consultation d’un réseau de coffres ; les deux capacités ne sont pas confondues.
Le baril de fermentation décrit ci-dessous est une machine de transformation,
pas une autre page ou un mode caché du dépôt.
## Grand baril de fermentation — une recette, plusieurs stacks
**Nom retenu : grand baril de fermentation.** Il traite plusieurs stacks d’une **même recette de fermentation**
dans un grand baril. Une recette peut comporter plusieurs ingrédients ; « même
recette » ne signifie pas « un seul type d’objet ». Les proportions doivent
rester celles de la recette, multipliées par la taille du lot engagé.
La composition exacte du grand baril n’est pas déduite de celle du Fût de stockage.
Proposition : une cuve de fermentation construite, reconnaissable à sa bonde
et à son point de remplissage. Un premier gabarit 3 × 3 × 3 peut être étudié,
sans en faire la taille imposée de tous les procédés culinaires.
1. Choisir la recette et charger ses ingrédients jusqu’à la quantité souhaitée.
2. Fermer le lot : afficher la recette, les quantités utilisées et les résultats
attendus. Les ingrédients en excès restent hors du lot engagé.
3. Lancer une fermentation commune, avec une date de départ et les conditions
définies par It's Alive !.
4. Récupérer la production ou poursuivre un vieillissement si la recette le prévoit.
Pour le premier contrat proposé, ajouter des ingrédients après le départ ne
leur donne pas rétroactivement l’âge du lot. Ils attendent un nouveau cycle.
La fermentation de plusieurs stacks suit un même procédé ; rendement, durée,
volume utile et conditions ne sont pas fixés par le nombre de stacks seul.
Le vieillissement du vin et l’affinage déjà prévus gardent leurs règles. La bière
ne reçoit pas automatiquement le bonus de vieillissement du vin. Les pages
culinaires et l’apprentissage des recettes restent ceux d'It's Alive !.
La relation entre temps réel, arrêt du serveur et progression du lot est à
choisir explicitement : une date sauvegardée peut permettre une évolution
hors ligne, mais ce n’est pas déduit du calendrier de Sanctuary. Recharger une
cuve ne doit ni recommencer un lot ni produire deux fois ses résultats.
Le rôle de la redstone serait d’autoriser le lancement et les transferts, avec
un état lisible sur place. Couper un fil n’arrête pas automatiquement un procédé
biologique : les règles de conservation et d’interruption appartiennent à la
recette. Un afficheur peut montrer recette, durée et quantité sans rendre un
ordinateur obligatoire pour faire fermenter une charge.
## Métablit — proposition d’établi collectif
L’auteur propose le nom **Métablit**. La fonction explorée ici est un établi
construit où **un projet reste en place**, avec son plan et les matériaux que
plusieurs joueurs apportent. Un joueur doit aussi pouvoir l’utiliser seul.
La surface peut montrer les pièces déjà réunies et celles qui manquent. Fermer
l’interface ne rend pas tout au dernier visiteur ; le projet appartient à la
table et ses accès suivent les règles de l’installation. Une fabrication
réussie consomme ses matériaux et produit un seul résultat récupérable.
**Exemple de projet à éprouver :** rassembler les quatre bateaux nécessaires
au Booat, les voir dans le projet, puis réaliser la recette. Le Métablit ne
devient pas obligatoire pour cette recette déjà prévue, et n’en change pas
les ingrédients par défaut. D’autres assemblages peuvent révéler si cette
forme de travail apporte assez pour justifier le bloc.
Un plan utilise les connaissances et recettes effectivement accessibles.
La table ne débloque pas le catalogue mondial de schematics, ne remplace pas
les conditions galactiques du build et ne construit pas gratuitement l’ouvrage
ailleurs dans le monde. Taille de la surface, grille, gestes et distinction
avec crafter/table de craft restent à préciser : la seule augmentation de
taille d’un menu ne suffit pas à expliquer son intérêt.
## Présentoirs de collection — objets visibles sur les façades
L’auteur retient les archives modulaires et précise leur rôle de **collection
visible**, proche de celui des item frames. **Présentoir** est un nom proposé
pour le bloc à neuf emplacements ; ce nom et sa fabrication restent ouverts.
**Comptage confirmé avec l’auteur :**
| Disposition | Objets distincts exposables |
| --- | --- |
| Une face de bloc | 3 × 3 petits emplacements, soit **9 objets**. |
| Une façade de 3 × 3 blocs | Neuf faces de bloc, soit **81 objets visibles simultanément** en grille 9 × 9. |
| Quatre façades de 3 × 3 | **81 objets différents par face, soit 324 au total**. |
Une façade plate 3 × 3 suffit : la construction en volume n’est pas obligatoire.
Dans une disposition cubique avec quatre murs, les angles présentent deux
faces distinctes. Leurs objets ne sont pas des copies vus depuis deux côtés :
chaque face possède ses propres neuf emplacements. Le nombre de blocs supports
ne suffit donc pas à déterminer la capacité. Dessus et dessous n’ajoutent pas
implicitement d’autres emplacements aux 324 confirmés.
Ce sont des objets visibles dans le monde, **sans pagination des 81 objets de
la façade**. Le Fût conserve sa pagination de stockage ; l’afficheur programmable
conserve ses huit lignes de texte par bloc. Ces trois appareils ont des fonctions
et des rendus distincts.
### Contenus à exposer
| Demandé par l’auteur | Présentation à concevoir |
| --- | --- |
| Cartes, plans et recettes | Montrer leur support, avec la carte miniature ou une couverture lisible. Une consultation peut ouvrir le contenu déjà accessible. |
| Photos | Conserver la carte ou le support photographique réel et afficher l’image correspondante ; ne pas fabriquer neuf copies de la carte. |
| Disquettes | Icône, nom du programme ou étiquette. L’exposition ne charge pas le programme dans un contrôleur. |
| Disques blancs, disques musicaux/CD | Pochette ou disque visible, selon le modèle retenu. Le présentoir n’est pas automatiquement un jukebox. |
| Spawn eggs | Œufs visibles par catégorie ou couleur, sans apparition d’entité ni activation de pouvoir de familier. |
**Proposition de généralisation :** accepter aussi outils, armes, armures,
gemmes, fleurs, trophées et autres items représentables dans une case. Un
premier principe simple serait **un objet physique par emplacement**, pas une
stack cachée derrière chaque icône. Les cas de modèles volumineux ou de contenus
moddés devront être éprouvés ; aucune liste universelle n’est déjà implémentée.
Le joueur viserait un des neuf emplacements pour insérer ou retirer son objet.
Les gestes exacts et la consultation restent à dessiner avec l’inventaire custom.
Exposer une recette ou un plan ne débloque pas automatiquement ses droits pour
tout le serveur. Casser un support doit rendre les objets concernés une seule
fois, y compris ses deux faces s’il appartient à un angle.
**Constructions possibles :** mur des expéditions en cartes et photos, bibliothèque
publique de programmes, collection de disques, galerie d’œufs rares. Le rendu
de 324 items, notamment des cartes, devra rester lisible et raisonnable à distance ;
les niveaux de détail pourront réduire le coût sans réduire le nombre d’objets
réels ou transformer les façades en pages invisibles.
## Méga-pistons — une façade mobile sur trois blocs
**Retenu et confirmé :** neuf pistons assemblés en façade **3 × 3** donnent
une tête commune **3 × 3**, dont la **course est de trois blocs**. La variante
collante est également demandée. Ce n’est pas seulement neuf pistons qui
avancent chacun d’un bloc.
Proposition de formation : neuf pistons ordinaires de même orientation donnent
le méga-piston ; neuf pistons collants de même orientation donnent sa variante
collante. Les mélanges ne constituent pas un troisième comportement par défaut.
La profondeur des bases et l’aspect de la tige déployée restent à dessiner.
La clé à molette dorée permet de dissocier les neuf bases pour retrouver des
pistons indépendants. Le cas rétracté est proposé pour le premier essai ;
l’outil ne sépare pas neuf mouvements pendant une course commune.
- La redstone commande **un mouvement d’ensemble**. Alimenter plusieurs blocs
constitutifs ne multiplie pas les poussées ni la distance parcourue.
- La tête doit contrôler son trajet complet, pas seulement la destination à
trois blocs : elle ne traverse pas un obstacle intermédiaire.
- Proposition : si une partie bloque le mouvement admissible, l’ensemble
refuse de démarrer. Les neuf cases ne se désolidarisent pas pour avancer
indépendamment et arracher un morceau de la construction.
- La version collante doit ramener la charge admissible avec sa tête lors de
la rétraction. Limites, blocs adhérents et collisions restent à définir ;
le mot « collant » ne promet pas de déplacer tous les conteneurs ou machines.
- Les **27 cellules balayées** par la tête pendant sa course ne sont pas une
limite validée de 27 blocs transportés. Masse poussable, nombre de blocs en
profondeur, durée et interactions slime/miel sont des réglages distincts.
L’interruption en cours de déplacement, le déchargement et la casse demandent
un état de mouvement commun, sauvegardé une seule fois. Aucun de ces détails
ne doit être remplacé par une copie des neuf mouvements de pistons indépendants.
**Constructions possibles :** grande porte rétractable de trois blocs, plateforme
élévatrice sur une course de trois blocs, mur mobile ou poste d’amenée d’une
section de construction. Le trajet réel doit être animé et perceptible ; le
moteur ne téléporte pas la charge à travers des blocs.
## Trémie — neuf hoppers et une grande surface de collecte
**Retenu par l’auteur :** neuf hoppers à plat, en carré **3 × 3**, recueillent
les drops sur leur surface et réunissent **neuf fois l’inventaire d’un hopper**.
Le hopper Java de la cible possède cinq emplacements : la Trémie dispose donc
de **45 cases communes**, avec les limites d’empilement propres aux objets.
Ce gain de capacité ne fixe pas un débit de sortie neuf fois supérieur.
**Choix explicitement demandé : la Trémie est facultative.** Les joueurs
peuvent conserver neuf hoppers côte à côte pour construire un autre circuit.
Chaque hopper indépendant garde ses cinq cases, son bec, ses connexions et
sa commande redstone. La réserve de 45 cases communes et la sortie unique
appartiennent seulement à l’assemblage actif.
Règle retenue : les hoppers se posent indépendamment et la clé
à molette dorée permet de choisir leur réunion en Trémie. Les poser en 3 × 3,
compléter un coin manquant ou approcher un autre hopper ne doit donc pas
convertir un montage par simple voisinage. Désassembler à la clé rend les
neuf blocs indépendants, sans les réunir à nouveau après rechargement.
### Sortie proposée : sous le centre
La sortie reste à choisir. La proposition la plus lisible est **un seul bec
sous le bloc central**, visible dans le modèle raccordé. Les huit autres
hoppers constituent les bords du collecteur ; leurs anciennes orientations
ne deviennent pas huit sorties supplémentaires une fois l’ensemble formé.
```text
Vue de dessus Coupe par le centre
H H H H H H
H C H ↓
H H H sortie
C : hopper central ; sortie sous C
```
Le joueur peut mettre le conteneur destinataire sous ce bec. Pour partir sur
un côté, il place **un hopper ordinaire dessous, orienté vers la suite de son
circuit** ; si nécessaire, une chaîne rejoint le bord du plateau. Ce hopper
supplémentaire est un raccord indépendant avec ses cinq cases, pas une dixième
partie obligatoire de la Trémie. La sortie n’est ni distante ni choisie dans
le menu d’un ordinateur.
Autre piste : un bec latéral choisi lors de l’assemblage. Elle économise de la
hauteur, mais demande de montrer quel bord évacue les objets et comment le
joueur le choisit. Elle n’est pas cumulée d’office avec la sortie centrale.
### Fonctionnement à éprouver
- Le stock est commun aux neuf surfaces. Les neuf inventaires d’origine ne
continuent pas à se transférer les mêmes objets en parallèle.
- Dans la proposition à bec central, les extractions automatiques passent
par ce raccord identifié ; mettre un hopper sous un angle n’ajoute pas une
deuxième sortie cachée. Les interfaces d’insertion restent à préciser.
- Destination pleine ou absente : les objets restent dans les 45 cases ; une
réserve pleine laisse les nouveaux drops dans le monde, sans les effacer.
- La collecte concerne la surface construite, pas un rayon d’aspiration
élargi autour de l’appareil. La collecte et le débit d’évacuation seront
réglés séparément.
- Proposition de commande : alimenter le bloc central verrouille l’ensemble,
selon le rôle d’arrêt du hopper. La portée électrique, le comparateur et
les faces de commande doivent être rendus lisibles avant de fixer le contrat.
- La formation volontaire à la clé est retenue ; une
nappe de hoppers indépendants conserve ses circuits et ne devient pas
obligatoirement une Trémie du fait de sa forme.
Au démontage à la clé, le stock actuel est conservé une seule fois et les
orientations indépendantes sont rétablies ; l’ancien stock d’avant formation
n’est pas restauré en plus du contenu courant. La dissociation persiste.
**Usages :** réception sous une récolte, convergence de plusieurs convoyeurs,
grand bac de déchargement. Le terminal peut consulter le stock ; il n’est pas
requis pour décider où les objets ressortent.
## Carillon — des notes réunies en instrument
**Retenu par l’auteur :** réunir des blocs musicaux pour former des **accords
ou de courtes séquences**, avec un **assemblage adjacent choisi**. Le joueur
choisit les blocs qui appartiennent à son instrument. Ni rangée obligatoire,
ni carré 3 × 3, ni nombre de neuf notes imposé. Le simple voisinage ne forme
pas automatiquement un groupe. Ce choix remplace la préférence précédente
pour une rangée ; les contraintes rectangulaires de l’afficheur ne s’appliquent
pas au Carillon.
### Sélection de l’instrument et ordre de lecture
Proposition de gestes et de lecture, encore à éprouver :
1. Entrer volontairement en assemblage sur un premier bloc musical ; il sert
de point de commande identifiable pour le groupe.
2. Ajouter les blocs souhaités, chacun étant adjacent par une face à au moins
un bloc déjà sélectionné. Une diagonale seule ne suffit pas dans cette
proposition. Un voisin non sélectionné reste indépendant.
3. **Utiliser l’ordre de sélection comme ordre initial de la séquence.** Le
nouveau bloc n’a pas besoin de toucher la dernière note sélectionnée : il
touche le groupe. Les branches restent possibles sans demander au moteur
de deviner quel chemin musical suivre.
4. Montrer cet ordre par de petits numéros ou repères pendant le réglage,
écouter un aperçu, puis valider. Une commande de réordonnancement reste
à dessiner pour changer la mélodie sans reconstruire l’instrument.
Le nombre maximal de notes, les gestes exacts et l’éventuelle construction
en volume restent à définir. La clé à molette dorée est retenue pour réunir
le groupe choisi et pour le désassembler.
Des blocs musicaux non réunis gardent leur fonctionnement individuel ; deux
carillons peuvent être voisins sans fusionner. La casse suspend le groupe
concerné jusqu’à réparation ou redéfinition, selon un contrat à préciser,
plutôt que de renuméroter la mélodie silencieusement.
Un raccord visuel discret ferait apparaître un cadre commun, en gardant chaque
bloc accessible pour l’accorder et chaque position lisible pendant le jeu.
Ni coque cubique ni neuf blocs supplémentaires d’habillage ne sont nécessaires
dans cette proposition.
### Notes, instruments et tempo
Chaque bloc garde sa note et son instrument. Pour les instruments usuels,
le support sous **chaque bloc** continue à déterminer le timbre : le groupe
ne remplace pas tous les supports par celui du premier bloc. Les exceptions
vanilla utilisant un instrument au-dessus doivent aussi être conservées.
Un habillage commun ne doit pas obturer l’espace nécessaire au jeu des notes.
Ces règles sont vérifiées dans `NoteBlock` pour la cible Java 26.3-pre-2.
Deux modes proposés, sélectionnables sur l’instrument avec un repère visible :
- **Accord :** une impulsion joue ensemble les notes du groupe.
- **Séquence :** une impulsion joue la prochaine note, puis avance d’une case.
Une horloge redstone donne le tempo ; sans nouvelle impulsion, la lecture
attend. Après la dernière note, le prochain déclenchement revient au début.
Ainsi, un bouton permet de jouer à la main et un circuit peut commander un
motif. Une commande locale de retour au début est à prévoir. Les clics usuels
d’accordage et d’écoute doivent rester disponibles ; changer une note pendant
l’édition ne déclenche pas toute la séquence involontairement.
Le lancement d’une phrase entière par une seule impulsion est une **variante
à comparer**, avec un tempo interne à régler. Il ne se cumule pas implicitement
avec le mode où chaque impulsion donne une note. Silences, répétitions d’une
note et durées individuelles sont des pistes ultérieures, pas un séquenceur
complet déjà décidé. Les programmes peuvent ensuite composer avec les mêmes
commandes physiques, sans être nécessaires pour jouer un accord.
**Usages :** sonnerie de gare, horloge qui joue une courte mélodie, alarme
reconnaissable ou instrument que plusieurs joueurs accompagnent. Le Carillon
ne lit pas automatiquement les disques exposés dans un présentoir.
## Autres assemblages de blocs identiques à explorer
La recherche suit désormais le principe de regroupement précisé par l’auteur :
une grande surface ou un volume donne une fonction commune aux blocs posés.
Les gabarits et les noms ci-dessous sont proposés, pas retenus.
| Assemblage proposé | Fonction agrandie | Exemples d’usage |
| --- | --- | --- |
| **Veilleur : 9 observateurs en façade, 3 × 3** | Surveiller les neuf positions juste devant la façade ; montrer où un changement a eu lieu et permettre d’en récupérer l’information. | Surveillance d’une surface cultivée ; porte à combinaison de blocs. Aucune lecture à travers toute l’île ni détection de maturité s’il n’y a pas de donnée définie. |
| **Batterie de distribution : 9 distributeurs en façade, 3 × 3** | Choisir une bouche ou enchaîner les neuf dans une séquence, avec leurs vrais objets et comportements de distribution admis. | Arrosage de positions définies avec des seaux ; spectacle de feux d’artifice. Pas de gain gratuit de projectiles par objet consommé. |
Le Veilleur et la batterie de distribution demandent une interface de sélection claire pour ne pas seulement
regrouper les menus des neuf blocs.
La **presse à moule est retirée de la sélection** : l’auteur juge la fabrication
déjà couverte par le crafter qu’il évoque. Le terme retranscrit « gel crafter »
n’a pas permis d’identifier un autre composant dans les sources consultées ;
aucun comportement d’un nouveau crafter n’est supposé ici. Le Métablit reste
en réflexion, sans réintroduire la presse sous un autre nom.
Les anciennes pistes de bassin de traitement, serre climatique, écluse et
alambic restent en réserve comme installations construites. Elles n’appartiennent
pas automatiquement à la nouvelle famille de blocs identiques assemblés.
Les recettes culinaires éventuelles d’un bassin ou alambic restent de la
responsabilité d'It's Alive !.
## Règles communes à prévoir pour les multiblocs
- La construction reconnaît sa forme, ses blocs constitutifs et ses pièces utiles. Un décor voisin
ne fait pas gagner silencieusement une capacité ou un rendement.
- La clé à molette dorée permet une dissociation durable en blocs indépendants.
Reconnaître une forme compatible ne la réactive pas contre le choix du joueur.
- Règle commune retenue : la formation elle-même est volontaire, avec la clé.
Les circuits de hoppers et les groupes de fours ordinaires restent utilisables
dès la pose, sans devoir obtenir un outil pour empêcher leur regroupement.
- Une installation possède un seul état de référence. Deux façades ne dupliquent
pas les stocks ; deux machines ne revendiquent pas les mêmes blocs constitutifs.
- Décharger un morceau suspend le fonctionnement concerné sans charger le monde
à distance ni rejouer des cycles écoulés hors ligne.
- Casser ou modifier l’assemblage a un effet explicite sur le travail et les
matières ; déplacement et récupération ne copient pas une charge en cours.
- Les constructions fonctionnent avec leurs gestes locaux ; le terminal, le
contrôleur et l’afficheur permettent ensuite d’en coordonner plusieurs.
Ces règles sont des exigences pour les futurs tickets, pas un format de sauvegarde
déjà adopté. La première validation proposée reste **un four construit à la main,
une fournée ordinaire et une recette composée**, avec arrêt/reprise et retrait
des résultats. Aucun monde existant n’est modifié pour ce cahier.
+75
View File
@@ -0,0 +1,75 @@
# UI-033 — menu pause, Discovery et catalogue
Branche `codex/menus-discovery-beta033`, à partir du binaire beta.032.
Le ticket regroupe les corrections demandées sur la flamme du gâteau porté,
les libellés et l'accès à la configuration JEI, puis la navigation et les droits
de Discovery. Les parcours client normal et monde plat sont validés.
## Contrat
Le menu pause conserve ses entrées natives de retour, advancements, statistiques,
options, options du monde et déconnexion. Discovery, Progression, World et
Inhabitant remplacent Blocodex ; Factions et History disposent d'entrées directes,
côte à côte, avec History à droite.
World ouvre la carte. Les pages consacrent leur en-tête à leur titre et gardent
Done, sans répéter les quatre onglets. Prestige remplace le libellé technique
Cycle et son compteur dans Progression. L'historique reste accessible.
Discovery s'ouvre sur Owned. Les entrées inconnues et les outils de maintenance
ne doivent pas être exposés à un habitant. L'élargissement du filtre utilise
l'aptitude Catalogue existante, achetée pour 4 niveaux. Le créateur a confirmé
que « All Blocks » ne montre que les blocs déjà découverts, jamais les inconnus.
Les snapshots serveur limitent aussi ce qui est transmis, indépendamment du GUI.
Les autorisations serveur restent la référence pour les opérations administratives.
Aucun changement de sauvegarde, de génération ou de stock d'objets.
Les données de découvertes déjà conservées et les achats existants restent valides.
Le fork JEI garde son attribution et sa licence MIT ; seuls les accès et libellés
visibles dans le jeu changent. Distribution locale de test, aucun déploiement.
## Parcours client vérifiés
Les essais utilisent les vrais menus, les échanges réseau et le rendu de
Minecraft 26.3-pre-2. Le menu pause tient aux échelles GUI 1, 2, 3 et 4 ;
World ouvre directement la carte et Factions son panneau. Les pages conservent
Done et l’historique reste accessible depuis Habitant et la carte.
Un joueur en survie sans commandes ne dispose ni de l’inspection opérateur ni
du filtre All Blocks avant achat. Une requête opérateur directe est refusée
par le serveur. L’achat réel débite quatre niveaux puis rend disponibles les
blocs vus mais jamais possédés ; aucune entrée inconnue n’est transmise.
Les libellés favoris/historique passent le contrôle en français et en anglais,
et le bouton de configuration du catalogue n’est ni dessiné ni interactif.
La capture du gâteau porté montre la flamme au bout de sa bougie bleue.
Journaux : `build/menus033-client2.log` et
`build/menus033-quick-client-final.log`. Captures : `build/menus033-evidence/`.
Ces essais ne remplacent pas les tests d’équilibrage des familiers en partie.
## Build et contrôles serveur
`./gradlew check build assemblePack assembleTestPack` avec la sélection
`-PsanctuaryFocusedTests=menus,recipes,progression,cycle,cosmetics` réussit :
**34/34 tests serveur** et les contrôles purs du dépôt passent. Les trois nouveaux
scénarios vérifient le filtre serveur avant/après achat, l’indépendance entre
recettes et découvertes, ainsi que la reprise d’anciens achats et le refus d’un
reçu malformé sans réécriture des données.
L’ajout final du bouton **History / Historique**, à droite de Factions, est
vérifié par le parcours natif sur monde plat aux quatre échelles GUI. Le clic
ouvre directement le journal et Done ramène au menu pause. Ce changement
concerne le client et les traductions ; les contrôles serveur déjà réussis n’ont
pas été répétés. Les binaires sont reconstruits avec
`./gradlew build assemblePack assembleTestPack -x check` après ce parcours.
Journaux : `build/menus033-check-final.log`,
`build/menus033-quick-client-history.log`, `build/menus033-assemble-history.log`.
## Livraison locale
[Sanctuary-beta.033.mrpack](../build/Sanctuary-beta.033.mrpack) contient les
corrections finales, dont History à droite de Factions. Les archives, les
1 304 classes compilées Sanctuary et les JAR imbriqués Demeure/JEI ont été
comparés aux builds ; les classes de familiers, génération et éclairage dynamique
restent identiques à beta.032. Reçu : `build/menus033-artifact.json`.
Le [pack de test plat](../build/Sanctuary-Test-beta.033.mrpack) contient exactement
le même mod avec le module de test supplémentaire. Aucun déploiement effectué.
+129
View File
@@ -0,0 +1,129 @@
# PROG-02A — Minage et vein mining — beta.008
Branche : `codex/progression-vein-mining`. Ticket implémenté et export local
vérifié le 13 septembre 2026. Cible inchangée : Minecraft 26.3-pre-2 / Fabric.
## Contrat préalable de données
La progression personnelle passe au schéma 3 en ajoutant `mining`, entier
de 0 à 7. Les schémas 1 (beta.003/004) et 2 (beta.005–007) sont lus selon
leurs champs stricts, puis reçoivent `mining: 0`. Le schéma 1 reçoit aussi
`atlas: false` selon son contrat antérieur. Aucun rang existant, achat, date
ou coût historique n'est modifié. La migration ne crée pas d'achat fictif.
L'historique accepte sept achats `mining` supplémentaires, soit 30 événements
au maximum. Chaque rang doit toujours correspondre à son nombre exact d'achats.
À la restauration du joueur, la représentation canonique est réattachée au
même champ persistant `sanctuary:progression` et enregistrée avec sa prochaine
sauvegarde Minecraft. La migration est idempotente. Une donnée invalide refuse
la restauration au lieu de réinitialiser la progression.
Les profils d'habitants, couleurs, Atlas, Demeure, XP non dépensée et fichiers
de configuration existants sont conservés. `statCosts` finance aussi Minage :
par défaut 1, 2, 4, 8, 16, 32 puis 64 niveaux. La configuration reste au schéma 2.
Le paquet de progression conserve son identifiant et transporte le nouveau
JSON ; le client et le serveur doivent utiliser beta.008 ensemble. Les anciennes
versions ne lisent pas le schéma 3 : un retour arrière exige une sauvegarde
antérieure des données de joueur. Aucun monde personnel n'est ouvert ici.
La mort ordinaire et la reconnexion conservent Minage comme les autres rangs.
Aucun New Game+ ou reset n'est activé dans ce ticket. La génération, les chunks,
les expansions et les identifiants existants restent inchangés.
## Fonctionnement implémenté
- Rangs 0–7, plafonds de 1 / 4 / 8 / 16 / 32 / 64 / 128 / 256 blocs.
Le rang 0 garde le geste de minage individuel.
- Courbe d'essai : vitesse Minecraft au départ, puis 115, 130, 145, 160, 175,
187,5 et 200 %. Le modificateur natif `BLOCK_BREAK_SPEED` compose avec les
outils, enchantements, effets et autres mods ; leurs modificateurs restent
présents. La courbe historique 25–100 % n'est pas appliquée par défaut.
- Blocs identiques reliés par les faces, dans une limite de sept blocs sur
chaque axe autour de la cible. Coffres et autres blocs à entité, blocs
indestructibles et chunks absents sont exclus. Aucun chunk n'est chargé
pour trouver une veine.
- Touche configurable maintenue et clic gauche ; aperçu avant de commencer,
taille ajustable dans les rangs achetés. B reste le Blocodex.
- Par défaut **R maintenu** affiche la veine ; **R + clic gauche maintenus**
la minent. **R + molette** choisit un palier inférieur parmi les rangs acquis
sans changer de case de barre rapide. Le prochain rang se voit dans l'infobulle
de la compétence ; la touche affichée suit son réglage dans les contrôles.
- Le serveur recalcule la sélection, vérifie l'origine visée, les permissions,
l'outil, les états de blocs et la durée. Relâcher, changer d'outil, s'éloigner,
mourir ou se déconnecter interrompt l'action.
- La destruction passe par Minecraft pour les objets, l'XP, la durabilité,
la faim, les enchantements, les statistiques et les événements de mods.
L'aperçu et les actions refusées ne créditent aucune activité.
La durée de chaque bloc est cumulée avant la casse du groupe, puis les blocs
sont détruits par lots d'au plus 16 par tick. Les états et permissions sont
revérifiés ; une modification concurrente annule les travaux devenus obsolètes.
Un outil remplacé, même par un exemplaire identique, ne reprend pas une charge.
La rupture de l'outil arrête les blocs restants. Chaque geste a un identifiant
éphémère et des maintiens espacés de cinq ticks ; sans maintien pendant plus de
12 ticks, il expire. Un geste terminé ou refusé ne redémarre pas sur son maintien.
Le passage au geste groupé annule aussi le minage individuel différé de Minecraft.
Les sons et particules de casse du groupe remplacent uniquement l'événement
audiovisuel natif de ces blocs, pour ne pas jouer 256 sons simultanés. Les
événements de jeu, callbacks de protection, statistiques, objets et XP suivent
toujours la destruction Minecraft. Le créatif garde ses règles natives sans loot
ni usure ; être opérateur en survie n'accorde aucune de ces exemptions.
Références GPL-3.0-or-later en lecture seule : `../26.2/sanctuary`, sélection
`SanctuaryVeinSelection`, session `SanctuaryMiningSession`, limites communes
et aperçu `SanctuarySelectionPreviewRenderer`. Le port est compilé et testé sur
les API exactes de 26.3-pre-2 : attribut natif de vitesse synchronisé, nouvelle
signature d'animation d'attaque, paquet de geste et rendu des contours par Gizmos.
## Vérifications
- Compilation et contrôles de contrat `progression003Smoke` / `atlas005Smoke`
réussis. Les anciennes données, leurs achats et configurations sont relus,
et la migration Minage est contrôlée avec ses rangs, son plafond et ses refus.
- Parcours client natif :
`./gradlew :sanctuary:runClientGameTest -PsanctuaryClientTests=true -PsanctuaryProgressionClientTests=true`,
réussi en **2 min 15 s**. Deux achats par clic réel, aperçu de huit puis quatre
blocs, molette native sans changement d'outil, annulation, second geste avec
huit casses et huit usages d'outil, reconfiguration de R vers G, interruption
par B, mort et reprise des cinq achats sont vérifiés. La matrice de GUI et
le parcours Atlas précédents restent inclus. Captures inspectées et conservées
dans `build/beta008-preview/` ; journal `build/beta008-client-retry.log`.
- Un premier client a été arrêté avant le lancement des tests, bloqué dans
`SDL_GL_SwapWindow` pendant le chargement initial. Le nouvel essai a désactivé
la VSync dans les options de développement uniquement ; cette option a été
remise à sa valeur précédente après le succès. Aucun réglage de ce diagnostic
n'est distribué. Pile native : `build/beta008-client-threads.txt`.
- Le premier essai serveur a détecté deux erreurs de montage des tests : la
contribution Demeure devait être additionnée sur les chunks traversés, et
l'avance simulée d'un joueur faisait avancer les autres tests asynchrones.
La simulation est maintenant isolée par joueur ; le scénario à deux mineurs
les fait avancer alternativement. Le scénario créatif a aussi été corrigé :
le joueur simulé doit être créé dans ce mode, car le mock Minecraft conserve
le mode fourni à sa création malgré un appel ultérieur à `setGameMode`.
- `./gradlew check build assemblePack -PsanctuaryFocusedTests=progression,map,demeure,mining`
réussi en **4 min 4 s**, dont **18 tests serveur natifs obligatoires réussis**.
Les dix scénarios Minage couvrent les achats, limites, protections Fabric,
annulations, interruptions, deux mineurs concurrents, expiration du maintien,
blocs instantanés, créatif, usure, mauvais outil, Toucher de soie et Fortune.
Ils vérifient aussi les crédits Blocodex/Demeure, statistiques, faim et XP
issus des destructions natives. Les contrôles purs du dépôt sont inclus.
Journal : `build/beta008-delivery-final.log`.
Les deux assertions worldgen générales connues en beta.003/005 ne sont pas
revendiquées corrigées par ce ticket ; la sélection de tests serveur ci-dessus
reste ciblée sur progression, carte, Demeure et Minage.
## Artefact local
- [Sanctuary-beta.008.mrpack](../build/Sanctuary-beta.008.mrpack), **2 331 912 octets**.
- SHA-256 : `760176daa164fd28ece77008dc0442cfc5539c997f9a9696ea2cea6edf21bcf3`.
- Reçu : `build/mining008-artifact.json` ; somme séparée :
`build/Sanctuary-beta.008.mrpack.sha256`.
- Export packwiz vérifié : CRC, manifeste et versions internes, identité du JAR
construit et du JAR Demeure embarqué, classes et mixins Minage, traductions
FR/EN, six icônes originales, index et dépendance Fabric API exacts, absence
de classes de test. Les exports beta.003 à beta.007 sont restés identiques.
Cet export n'a pas été publié sur le canal packwiz ni installé dans une instance
personnelle. Les mondes utilisés pour les vérifications sont ceux du développement.
+100
View File
@@ -0,0 +1,100 @@
# beta.060 — objets et blocs sur les mobs
Ticket `codex/mob-head-blocks-beta060`.
## Contrat avant implémentation
Les mobs peuvent porter un exemplaire d'un objet dans un emplacement distinct
de leur équipement natif. L'IA continue de se déplacer et d'agir normalement.
Le geste confirmé est Maj + clic droit avec l'objet pour équiper, clic droit
pour utiliser, Maj + clic droit à main vide pour récupérer. La tête vide
retrouve le geste de portage existant. Aucun achat d'aptitude supplémentaire.
Les blocs réutilisent les interactions de tête existantes : stockage public,
établi, four, levier, bouton, torche de redstone, etc. Un seul emplacement,
aucun remplacement silencieux. Le retrait et la mort rendent l'objet et le
contenu ordinaire ; une Shulker garde son contenu une seule fois. Les mobs
hostiles gardent leur comportement et leur armure. Les familiers conservent
leur IA et leurs règles d'appartenance ; leur disparition restitue l'objet.
La source redstone est indexée dans la cellule de la tête, sans poser de bloc.
Une poule équipée d'une torche alimente les circuits voisins au fil de ses
déplacements. Un levier ou bouton peut être actionné par un joueur. Les coups
déclenchent les réactions déjà prévues des blocs portés. Les distances,
menus opérateur et contrôles du serveur restent applicables.
## Données et compatibilité
Ajout du champ `sanctuary:mob_head`, schéma 1, aux seules entités équipées.
Il contient l'exemplaire et l'état du bloc natif (même contrat de session que
les joueurs). Les anciennes entités sans champ restent sans objet. Les données
illisibles sont conservées et leur équipement est bloqué jusqu'à réparation.
Les formats des joueurs, inventaires, générations et chunks ne changent pas.
Déchargement : sauvegarde et fermeture des menus, suppression du signal local ;
rechargement : restauration sans duplication. Aucune migration de monde existant.
Un retour à une version antérieure ne doit pas être fait en sauvegardant les
mobs ainsi équipés : récupérer leurs objets avant ce retour.
## Vérifications
Le parcours `MobHead060ClientChecks` passe sur Minecraft 26.3-pre-2, dans un
monde plat de développement, graine 42. Les commandes sont désactivées après
la création pour vérifier l'accès d'un joueur normal.
- Maintien réel de la touche d'accroupissement et paquet natif d'interaction :
une seule torche transférée, aucune mise en portage, récupération à main vide,
puis portage de la poule redevenue disponible.
- Deux lampes déjà posées : allumage à proximité, extinction après déplacement
et signal présent dans la nouvelle cellule. Suppression immédiate de la
source lors d'un déchargement natif d'entité, puis restauration après lecture
de son NBT et rechargement.
- Vrai menu de coffre à trois rangées, sept diamants conservés par sauvegarde,
fermeture du visiteur et restitution exacte au retrait. Shulker rendue une
seule fois avec cinq émeraudes ; mort avec un baril et quatre lingots, sans
duplication lors d'un second nettoyage.
- Levier, bouton, pot fleuri, distributeur tirant une flèche après un vrai coup,
four fondant du fer avec du charbon et TNT consommée dans une seule entité
amorcée. Le coffre porté par le joueur reste fonctionnel.
- Extraction des modèles natifs adultes/bébés pour poule, vache, zombie,
abeille, slime, morue, Wither et Ender Dragon ; objet ordinaire affichable.
Libellés FR/EN et conservation d'un enregistrement invalide vérifiés.
- Captures de la poule avec sa torche, des lampes et du coffre ouvert inspectées
dans `build/mob-head060-evidence/`.
Commande native réussie en 1 min 10 s :
```sh
./gradlew :sanctuary:runClientGameTest -x :sanctuary:runGameTest \
-PsanctuaryClientTests=true -PsanctuaryMobHead060ClientTests=true \
-PsanctuaryQuickTests=true
```
Journal : `build/mob-head060-client.log`, marqueur `MOB_HEAD060_PASS`.
`./gradlew check build assemblePack assembleTestPack`, avec les mêmes propriétés
et l'exclusion du serveur dédié, réussit en 2 min 15 s (122 tâches).
Journal : `build/mob-head060-check.log`.
Les deux exports packwiz sont vérifiés par `build/verify-mob-head060.py` :
1 620 classes conformes au build, références compilées aux nouvelles signatures
contrôlées, ressources de jeu et JEI préservés, archives beta.059 intactes.
Reçu : `build/mob-head060-artifact.json`.
[Pack normal](../build/Sanctuary-beta.060.mrpack) ·
[Monde plat rapide](../build/Sanctuary-Test-beta.060.mrpack).
## Limites de cette livraison
Les blocs gardent les mêmes limites que sur les joueurs : lit décoratif,
piston local sans poussée de terrain, absence de random ticks pour les cultures
et conditions natives requises pour les structures multiblocs. Un objet porté
ne remplace pas l'IA : les déplacements restent ceux du mob. Les familiers
éphémères rendent leur objet au sol lorsqu'ils disparaissent ; l'objet ne se
stocke pas dans leur œuf.
Les modèles ordinaires suivent leur tête animée. Les rendus spécialisés sans
modèle de créature standard, notamment le dragon, ont un placement de repli
près de leur hauteur de regard, qui pourra demander un ajustement visuel.
Le test des variantes est une extraction native ; seules la poule et son
interface de coffre ont fait l'objet d'une inspection visuelle de capture.
Aucune session avec plusieurs clients humains ou mesure de FPS n'est revendiquée.
Aucune installation personnelle, publication de canal ou acceptation d'EULA
de serveur dédié.
+35
View File
@@ -0,0 +1,35 @@
# beta.040 — crash à l'arrivée en multijoueur
Le rapport transmis le 14 septembre 2026 concerne beta.039, Minecraft
26.3-pre-2 : `NullPointerException: Components not bound yet` dans
`StarterCompanions.egg`, appelé par le dessin d'une case du Hello World.
Un client qui rejoint directement un serveur peut afficher cette phase de
configuration avant que les composants des items soient liés. Créer un
`ItemStack` à ce moment échoue. Un essai après création d'un monde solo masque
le problème, puisque le serveur intégré a déjà initialisé les composants.
Les trois cases dessinent désormais directement les textures d'œufs natives,
déjà disponibles via le chargement des ressources client. Les 88 textures ont
été vérifiées dans les ressources de cette version exacte. Les noms, descriptions,
raretés, choix définitif et couleurs gardent leur comportement. Il ne s'agit
pas de capturer l'exception et cacher un œuf : aucun `ItemStack` n'est construit
pendant cet aperçu de configuration.
Les œufs réellement remis en jeu sont toujours créés par le serveur après
l'admission. Aucun registre, paquet, tirage de familier ni fichier de sauvegarde
n'est modifié pour ce correctif. Le Hello World reste avant l'apparition en jeu.
## Vérification
Le parcours démarre sur un client à froid, confirme que la construction d'un
œuf reproduit l'ancienne exception, puis affiche et utilise les cases du Hello
World pendant plusieurs images sans composants d'items. La suite vérifie
l'admission et la reconnexion en serveur intégré. La connexion réseau complète
à un serveur dédié n'a pas été vérifiée : l'EULA reste non acceptée, conformément
au choix de l'utilisateur. Aucun serveur personnel n'est contacté.
Parcours client réussi : `build/operator040-client-final.log`, témoin
`MULTIPLAYER040_CLIENT_PASS`. Capture :
`build/operator040-evidence/final/0000_sanctuary-beta040-cold-multiplayer-welcome.png`.
Reçu : `build/operator040-artifact.json`.
+103
View File
@@ -0,0 +1,103 @@
# HUD-034 — découvertes et suivi natif
Branche `codex/notifications-beta034`, base beta.033.
## Contrat retenu
Le créateur confirme un **style F3 visible pendant le jeu normal**, en bas à droite.
Les premières observations de blocs, possessions de blocs et découvertes d’objets
ou recettes produisent des messages courts qui s’empilent puis s’effacent.
Les lots de recettes se regroupent ; la file et le nombre de lignes sont bornés.
Les acquisitions répétées et la reconnexion ne rejouent pas l’historique.
Les petites barres utilisent les sprites natifs d’expérience. Elles décrivent les
collections réelles, sans attribuer d’XP supplémentaire. Le suivi des advancements
Minecraft affiche les objectifs visibles déjà commencés, avec leurs critères natifs.
Il utilise les données reçues du serveur, sans modifier les récompenses ni les toasts.
Options client persistantes : fil de découvertes, barres de collections, suivi des
advancements et durée de lecture. Les menus et F1 masquent le HUD ; les messages
attendent la fermeture du menu. Les inconnus ne sont pas révélés par ces messages.
Quêtes, bounties, rubis/saphirs et panneaux ne sont pas ajoutés dans ce ticket.
Le centre sépare messages temporaires et suivis persistants pour accueillir leurs
futurs événements confirmés par le serveur. Aucun faux objectif n’est affiché.
Les règles de progression, sauvegardes et générations existantes restent inchangées.
## Retours intégrés pendant le ticket
Les boutons Factions et History sont retirés du menu pause, à la demande du
créateur. Ils restent accessibles par Progression → Prestige.
La hotbar de l’inventaire personnel utilisait une texture de 182×22 comprimée
sur 164×22. Elle reprend le sprite natif du HUD en **182×22**, neuf cases espacées
de **20 pixels**, et des objets rendus en **18×18** au lieu de 16×16. La rangée
sélectionnée réserve sa hauteur lorsqu’elle se déplace ; les autres rangées,
l’équipement et les index de sauvegarde restent inchangés. Clics, Maj-clics,
balayage et tri utilisent les mêmes surfaces agrandies. Les interfaces de
conteneurs conservent leur grille compacte et leurs emplacements natifs.
Les objets au sol visibles à huit blocs maximum alimentent aussi la connaissance
des objets existante, avec occultation par les blocs et sans acquisition simulée.
## Utilisation
**Options → Notifications** permet de désactiver séparément les messages de
découverte, leurs trois barres de collection et le suivi des progrès Minecraft.
La durée se règle entre 3 et 15 secondes, avec 5 secondes par défaut. Les choix
restent dans `config/sanctuary-notifications.json`, propres à chaque installation.
Les barres de collection accompagnent le fil temporaire ; jusqu’à deux objectifs
Minecraft incomplets restent suivis après sa disparition. Les sous-titres activés
réservent une marge supplémentaire en bas de l’écran.
Les messages affichent au plus cinq entrées. Le serveur regroupe les nouveautés
toutes les dix ticks, à raison de 32 entrées maximum par envoi. Le compteur de
recettes disponibles vient du serveur : le registre des recettes complet n’est
pas exposé par le registre client de Minecraft 26.3-pre-2. Le titre d’une recette
déjà découverte utilise le catalogue chargé de JEI, avec un libellé de secours.
Les objectifs lisent les données natives une fois par seconde ; le dessin du HUD
ne relance aucun parcours du monde ou du catalogue de recettes.
Pour essayer : observer un nouveau bloc, ramasser un nouvel objet puis découvrir
une famille de recettes. Reprendre le même objet ne doit pas rejouer sa première
acquisition. Ouvrir l’inventaire met le fil en attente ; sa hotbar agrandie reste
cliquable jusqu’au bord de la neuvième case, et Tab la déplace toujours de rangée.
## Vérification graphique
Le parcours client natif sur monde plat valide les notifications, les lots de
recettes, leur expiration, les masquages F1/menu, le suivi d’un advancement
Minecraft partiellement accompli, les options persistantes en FR/EN et les
échelles GUI 1 à 4 de l’écran d’options. Il vérifie aussi l’absence de Factions et
History dans Échap, et leur accès par Progression → Prestige.
La hotbar est vérifiée à une et six rangées, puis après son déplacement. Les
clics et Maj-clics au bord agrandi de la neuvième case sont exercés en client
natif, ainsi que le défilement entre rangées, la sélection de case et les offres
du villageois. Les captures sont conservées dans `build/notifications034-evidence`.
## Livraison vérifiée
Minecraft **26.3-pre-2**, Fabric Loader **0.19.5**, Fabric API **0.160.0+26.3**.
`check build assemblePack assembleTestPack` réussit, avec la sélection native
`notifications,menus,recipes,progression,inventoryflow` : **22 tests serveur**,
dont première observation/possession, absence de répétition, isolation entre
joueurs, lots bornés et occultation des objets par les murs. Le test de file
exerce aussi une rafale de 10 000 événements, les priorités et l’expiration.
Le parcours client décrit ci-dessus réussit séparément.
- [Pack normal beta.034](../build/Sanctuary-beta.034.mrpack).
- [Pack test rapide beta.034](../build/Sanctuary-Test-beta.034.mrpack) : monde plat,
fiche d’habitant conservée et cinématique passée automatiquement.
Les ZIP, métadonnées, 1 320 classes Sanctuary, trois classes du module test,
ressources et dépendances imbriquées sont vérifiés. Le second pack ne diffère
du premier que par son nom et l’ajout du module facultatif de test. JEI reste
en `30.32.0-sanctuary.2`. Les anciennes archives beta.032 et beta.033 sont
inchangées ; aucun monde, canal packwiz ou instance Prism personnelle n’a été
modifié. Client et serveur doivent utiliser ensemble beta.034.
SHA-256 normal : `df0a0c2ab937ccec4361bd37a07a551a592b3d5819ade1f289fa9fb428c355e5`.
SHA-256 test : `cf41d20a118128afd044556e6dee44804852ea7232f2b13623020ec471c3b4fc`.
Reçu : `build/notifications034-artifact.json`. Journaux :
`build/notifications034-check-final.log` et `build/notifications034-client-final.log`.
+118
View File
@@ -0,0 +1,118 @@
# beta.040 — opérateur, habitant et ciel partagé
Branche `codex/operator-inhabitant-beta040`. Ticket issu des demandes du 14 septembre 2026.
## Contrat du mode opérateur
Dans une partie intégrée, **World Options → Allow Commands → Apply Changes**
active ou désactive le mode opérateur Sanctuary. Le réglage natif enregistré
fait autorité ; le mode créatif seul ne constitue pas une autorisation.
Il n'existe plus de second interrupteur opérateur propre à la carte ou aux
recettes. Sur serveur dédié, les droits sont ceux des opérateurs Minecraft :
un joueur distant ne peut pas s'attribuer ces droits depuis son interface.
Sans commandes, les contrôles réservés aux opérateurs sont invisibles et leurs
actions sont refusées côté serveur. Avec commandes, l'inspection de la carte,
le catalogue complet, les recettes complètes, les remboursements de compétences
et la remise à disposition du pouvoir du familier deviennent accessibles.
Le catalogue indique explicitement son mode opérateur. Couper les commandes
rétablit les filtres de découvertes et recettes, efface le terrain inspecté et
retire les contrôles, y compris lorsque le serveur intégré est en pause.
Les inspections n'accordent ni aptitude, ni découverte, ni recette persistante.
Les commandes d'administration Sanctuary utilisent la même règle. Les
outils de configuration native du monde réservés aux opérateurs sont masqués
hors de ce mode ; le réglage Allow Commands reste accessible à l'hôte selon
les conditions natives du jeu (notamment démo et hardcore).
## Fiche Habitant
La page reprend la sobriété de Hello World : personnage à gauche, familier à
droite et, entre les deux, les sections Nom, Biographie et Familier suivies de
leur contenu. Le nom conserve faction et prestige. Le nom personnalisé du
familier vient de son œuf équipé. Les textes d'aide sur le renommage, les
raccourcis et le consentement sont retirés de cette page ; restent le réglage
compact d'aide alliée et l'accès à l'historique.
Les aperçus ne font apparaître aucune entité de jeu et ne déclenchent pas d'IA.
Les modèles de bébé sont privilégiés, comme pour les familiers du monde.
Le cadrage du personnage tient compte de la largeur disponible : la hauteur
se réduit avant que les bras soient coupés. Le familier dispose de son propre
cadrage, adapté aussi aux grands modèles. Les textures existantes sont reprises.
Le HUD d’armure affiche uniquement les icônes pleines et les demi-icônes : les
emplacements vides sont supprimés, sans modifier les points de protection.
## Étoiles gagnées
Le ciel Sanctuary remplace les étoiles décoratives natives par un ciel partagé.
Avant tout événement, il est vide. Les événements enregistrés sont :
- première arrivée d'un habitant : une étoile, une seule fois pour son UUID ;
- advancement Minecraft accompli et normalement annonçable dans le chat : une
étoile pour une tâche, trois pour un objectif, cinq pour un défi. Les étoiles
supplémentaires restent proches de l'étoile principale ;
- prestige : une étoile pour chaque rang effectivement atteint ;
- faction atteignant deux membres, fondateur compris : une étoile.
Les critères partiels, recettes techniques, reconnexions, messages libres du
chat et créations de factions solitaires ne créent pas d'étoile. Couper les
annonces d'advancements dans les règles du monde ne coupe pas leur mémoire.
Un même advancement accompli par deux habitants donne deux groupes distincts ;
le retirer puis l'obtenir à nouveau avec le même habitant ne crée aucun doublon.
Une faction ne reçoit qu'une étoile à son premier duo. Le duo initial est
mémorisé indépendamment du nom et de l'identifiant de faction : dissoudre puis
recréer une faction avec ces deux mêmes personnes ne crée pas une autre étoile.
Un nouveau duo peut marquer une autre faction. Départs, exclusions et dissolution
ne retirent aucune étoile existante. Ce seuil remplace la proposition initiale
d'une étoile dès la fondation solitaire.
Les directions sont stables et communes aux clients du serveur. Le ciel
accomplit une rotation en sept jours réels, sur une référence UTC commune
synchronisée par le serveur. Le soleil et la lune conservent leur fonctionnement.
La visibilité nocturne et les effets de l'environnement restent natifs.
Le maillage graphique est conservé entre les images : il est reconstruit
seulement à l'arrivée de nouvelles étoiles ou lors du rechargement graphique.
Les deltas sont envoyés par lots ; les mouvements de caméra ne demandent aucun
calcul serveur et ne réattribuent pas les positions.
Le dessin passe par la méthode native de rendu des étoiles, pour conserver les
points d'intégration des moteurs de shaders. Un premier traitement Vanilla Light
est disponible dans les options ; voir [le contrat graphique](shaders-beta040.md)
pour son fonctionnement et l'état encore non validé des moteurs externes.
## Sauvegarde et reprise
Nouveau fichier additif `data/sanctuary-stars.json`, schéma 1, limité à
100 000 événements et 32 Mio. Chaque événement garde sa clé stable, son type,
l'habitant, son nom au moment de l'événement, sa source, sa date et son nombre
d'étoiles. L'écriture atomique vérifie le contenu précédent ; un fichier invalide
est préservé et suspend les ajouts, sans être remplacé par un ciel vide sauvegardé.
À la première ouverture avec ce système, les arrivées déjà attestées et le
journal des prestiges/factions sont repris. Les advancements déjà accomplis
sont repris à la connexion de leur habitant. Leur date d'étoile correspond à
cette reprise lorsque la date exacte n'est pas disponible. Les historiques
source, les sauvegardes personnelles et la génération des chunks ne sont pas
réécrits. Le journal stellaire ne dépend pas de l'inventaire ni du personnage
courant : mort et New Game+ conservent ses événements.
Le dessin de constellations, la sélection à la longue-vue et la consultation
Web ne sont pas inclus. Les événements structurés préparent ces usages sans
leur inventer d'interface dans cette livraison.
## Vérification
Les contrôles portent sur les autorisations et leur révocation, les tirages
stellaires déterministes, la sauvegarde/relecture, les vrais advancements,
le prestige, le seuil de deux membres et la conservation après dissolution.
Le parcours client utilise les boutons natifs de World Options, les aperçus
de plusieurs familiers et le rendu réel du ciel. `check build assemblePack
assembleTestPack` et 50 tests serveur passent, ainsi que le parcours client
natif avec les dernières modifications. Le test observe les appels de dessin
du HUD et le nombre d’indices de la passe stellaire native. Captures et reçu :
`build/operator040-evidence/final/`, `build/operator040-artifact.json`.
La connexion réseau dédiée n’a pas été testée ; le client à froid et le serveur
intégré ont été vérifiés.
+954 -3
View File
@@ -13,6 +13,956 @@ 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.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
Maj + clic droit, usage natif des blocs, source redstone mobile, sauvegarde
et restitution des contenus. Build et parcours natif réussis.
- [Pack normal](../build/Sanctuary-beta.060.mrpack), 5668807 octets.
SHA-256 : `7489ea0b5012f799baa929eebf37fed7abc588b913a0107c30f49ddcdfff6e01`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.060.mrpack), 5687740 octets.
SHA-256 : `7782ba69542ad7b922a1f4777763fc04dfcf0b92b5a1ea926c69c2235072d7af`.
Reçu `build/mob-head060-artifact.json` : 1 620 classes conformes au build,
JEI et archives beta.059 préservés. Aucun canal ou monde personnel modifié.
## beta.059 — bannières et cartes au trésor
[Contrat et vérifications](atlas-markers-beta059.md). Bannières nommées,
import par utilisation d'une carte physique, butin des îlots et inspection
opérateur. Inclut les altitudes et l'affichage simplifié de beta.058.
Build et parcours natif réussis.
- [Pack normal](../build/Sanctuary-beta.059.mrpack), 5648457 octets.
SHA-256 : `a530884f3d03111f71da6b39128e5fa14756c323ce320296ee8a2a1a5cdb1332`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.059.mrpack), 5667392 octets.
SHA-256 : `3362bf88c923550ed402ba9dc60e60963aeec217725fc26fb13f2ff04f673c91`.
Reçu `build/atlas059-artifact.json` : 1 607 classes conformes au build,
JEI et archives beta.058 préservés. Aucun canal ou monde personnel modifié.
## beta.058 — altitude et affichage de la carte
[Contrat et vérifications](atlas-altitude-beta058.md). Six plafonds, cadrage
stable, relevés persistants par couche. Chunks/Demeure désactivés par défaut,
cadre assombri supprimé, nord conservé. Build et parcours natif réussis.
- [Pack normal](../build/Sanctuary-beta.058.mrpack), 5627223 octets.
SHA-256 : `bc9af60be020fd32f99a173638e9006cab128cf942df666e34e03824bac6f892`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.058.mrpack), 5646157 octets.
SHA-256 : `010eb08df83117669d2f13d3c2e8641c965fac3ddec11fbab419f01a9cb94942`.
Reçu `build/atlas058-artifact.json`. Aucun canal ou monde personnel modifié.
## beta.057 — météo quotidienne et nouvelles ambiances
[Contrat et vérifications](daily-weather-beta057.md). Six profils quotidiens,
averses alternées, ciel gris et brouillard natifs. Modes Real Time et Vanilla
indépendants du soleil. Build, essais natifs, calendrier et archives vérifiés.
Inclut les étoiles dispersées et la saturation par défaut de beta.056.
- [Pack normal](../build/Sanctuary-beta.057.mrpack), 5623789 octets.
SHA-256 : `6f6cecc2dd5b6815a2c06545e32479b2f93d973abeffc86058fbac75e4cd6f62`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.057.mrpack), 5642723 octets.
SHA-256 : `3025bf5f1b0db68a2643ded8a7b25b6ae3ea7fc0e4ad463f064e3a2eca7ca713`.
Reçu `build/weather057-artifact.json` : 1 600 classes conformes au build.
Anciennes archives beta.056 et JEI préservés. Aucun canal public, monde
personnel ou installation de jeu modifié.
## beta.056 — étoiles dispersées et saturation
[Contrat et vérifications](sky-spacing-beta056.md). Répartition sur toute la
sphère et saturation par défaut à 142 %. Build, test natif et exports vérifiés.
- [Pack normal](../build/Sanctuary-beta.056.mrpack), 5599547 octets.
SHA-256 : `12847a09a6fa32a292fd3418197d504743692ffe7a5c9ea1606b5784e57eb62a`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.056.mrpack), 5618480 octets.
SHA-256 : `3d4202ef3780886acfc76675e2b217204dce0e2ed9fcd80eafcc7916fa708dd1`.
Reçu `build/sky056-artifact.json` ; archives beta.055 préservées.
Aucune publication ni installation personnelle.
## beta.055 — Force et portage de joueurs
[Contrat et vérifications](strength-carry-beta055.md). Force réduit la charge
ressentie des joueurs portés, avec recalcul à chaque changement d'effet.
Build, montures natives, expiration et synchronisation client vérifiés.
- [Pack normal](../build/Sanctuary-beta.055.mrpack), 5599276 octets.
SHA-256 : `75157abd37810d4bf50366c69d883c553682836d2c076a1d83c1c32eb9d3cc1c`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.055.mrpack), 5618210 octets.
SHA-256 : `80d70c68291391d50eefc50022c98c40ace3a2cc99b1eda670bf0b7741bbfdb4`.
Reçu `build/strength055-artifact.json` : 1588 classes conformes au build ;
seule `CarryService.class` change dans le code principal. Ressources et
archives beta.054 préservées. Aucune publication ni installation personnelle.
## beta.054 — duels, mises et niveaux des familiers
[Contrat, migration et vérifications](familiar-combat-beta054.md).
Duels consentis avec mises en objets ; stockage et retrait exacts d'XP dans
les œufs, puissance sans plafond de niveau et rareté croissante. Menus natifs
FR/EN, transactions interrompues, échange entre joueurs et reconnexion testés.
- [Pack normal](../build/Sanctuary-beta.054.mrpack), 5599061 octets.
SHA-256 : `4e8c0655c6a6fc9a277df8f984dd7fe1d682f46a6664828d81c64d6cbd3a347a`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.054.mrpack), 5617995 octets.
SHA-256 : `edeaeacded1ed596b5ef687addb9c4b3d3efff1ef91f2cfec25c6c0bd396a433`.
Reçu `build/combat054-artifact.json` : 1588 classes et ressources conformes
au build. Référence beta.053 extraite de son archive immuable ; textures,
shaders, JEI et données de génération préservés. Les variantes des 88 profils
ne sont pas toutes finalisées au niveau du catalogue de conception.
Aucun changement du canal public ni de l'instance personnelle.
## beta.053 — brume progressive et saturation
[Contrat et vérifications](progressive-fog-beta053.md). Brume progressive,
saturation réglable et œufs de Hello World alignés à gauche. Build et parcours
client natif FR/EN réussis.
- [Pack normal](../build/Sanctuary-beta.053.mrpack), 5412739 octets.
SHA-256 : `f66292ac5eda04e0bbf51bdd99393dc2b999c48d36fdf341b0573dec266db000`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.053.mrpack), 5431672 octets.
SHA-256 : `db2281a7ce6727c2689a1395ba0ff86f4977912b1b1e4cec0afa4ebef86f65cf`.
Reçu `build/fog053-artifact.json` : 1 537 classes et ressources conformes au
build. Archives beta.052, textures, JEI et données de génération préservés.
Aucun changement du canal public ni de l'instance personnelle.
## beta.052 — nom du familier de départ
[Contrat et migration du registre](starter-name-beta052.md). Champ de nom dans
Hello World, nom conservé sur l'œuf et le familier. Build, 8 tests serveur,
parcours client FR/EN et reconnexion réussis.
- [Pack normal](../build/Sanctuary-beta.052.mrpack), 5408629 octets.
SHA-256 : `9696473ca63314c17895f83d3869ada5795e72cf071958e5ef0587437309601a`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.052.mrpack), 5427562 octets.
SHA-256 : `e65dae7e0a1af4008cf279b21f309327ff7b5868639dc8715356e05eea8af921`.
Reçu `build/starter052-artifact.json` : 1 535 classes et ressources conformes au
build. Archives beta.051, textures, JEI et données de génération préservés.
Aucun changement du canal public ni de l'instance personnelle.
## beta.051 — visée du distributeur porté
[Contrat](head-dispenser-beta051.md). Le tir suit le regard horizontal et vertical
du porteur au moment du lancement. Build et 34 tests serveur réussis, dont
104 lancements avec les treize munitions natives.
- [Pack normal](../build/Sanctuary-beta.051.mrpack), 5404487 octets.
SHA-256 : `2b62dfce683e0fc1b6617d1b7ab9012ca98775358595d2939e5b29cdde9e6e0c`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.051.mrpack), 5423420 octets.
SHA-256 : `e8d165178a59a2771de6ffcc456559b5ce162913c4e5acaeb9acc8f06ee9a67c`.
Reçu `build/dispenser051-artifact.json` : 1 534 classes et ressources conformes
au build. Archives beta.050, PNG, JEI et données de génération préservés.
Validation multijoueur distante restant à confirmer ; aucun changement du canal
public ni de l'instance personnelle.
## beta.050 — bateaux compacts et redstone portée
[Contrat](head-blocks-beta050.md). Huit formes, 88 variantes ; nouveaux formats
1 × 2 et 2 × 1 à quatre places. Étagères et pupitres visibles, livres enchantés,
lits complets décoratifs, pots et sources redstone mobiles.
Build, 40 tests serveur et parcours client natif FR/EN réussis.
- [Pack normal](../build/Sanctuary-beta.050.mrpack), 5402725 octets.
SHA-256 : `b10cb1f21136597ec6bb0cccd8693004dbe24f3ad67ae1656086f389f2f32ef4`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.050.mrpack), 5421659 octets.
SHA-256 : `a9561477eb16e89863964c0c0652fc95ee91de280bbd762169b723a1db4f91f8`.
Reçu `build/head050-artifact.json` : 1 533 classes et ressources conformes au
build. Archives beta.049, PNG, JEI et données de génération préservés.
Aucun changement du canal public ni de l'instance personnelle.
## beta.049 — rectangles, doubles sièges et blocs portés
[Contrat](boats-head-beta049.md). Six formes, 66 variantes ; deux passagers par
module, places principales puis secondaires. Sons partagés, aliments et
ouvertures visibles, orientations corrigées et signal redstone à l'impact.
Build, 35 tests serveur et parcours client natif FR/EN réussis.
- [Pack normal](../build/Sanctuary-beta.049.mrpack), 5391461 octets.
SHA-256 : `59cd9ecceb5b81d64825fb9f8d056ed9f551a2918dc7095d2df9e2d91c1d64bb`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.049.mrpack), 5410395 octets.
SHA-256 : `0900dad1640200546a41f6a538504f56160a31bc2a14b5e6ed9a8249861a8e58`.
Reçu `build/boats049-artifact.json` : 1 529 classes et ressources conformes au
build. Archives beta.048, PNG, JEI et données du terrain préservés. Aucun
changement du canal public ni de l'instance personnelle.
## beta.048 — bateaux collectifs
[Contrat](poultry-aeronautics-beta048.md). Modèles par tuiles natives, sept moteurs,
commandes partagées et collisions par pile ; Happy Ghast à vitesse doublée.
Build, 33 tests serveur et parcours client natif FR/EN réussis.
- [Pack normal](../build/Sanctuary-beta.048.mrpack), 5376425 octets.
SHA-256 : `c5f25d1e390f5c7b8d6179b6fd3a2d6aa69d413f4766482bd9c6042841f00225`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.048.mrpack), 5395357 octets.
SHA-256 : `7f8a38407757850860ba72709d9d4db2aa29638051aae67d0c6c1199265a497b`.
Reçu `build/poultry048-artifact.json` : 1 527 classes et ressources conformes au
build ; 22 recettes supplémentaires et collection réconciliée. Archives beta.047,
PNG officiels, icônes d'aptitudes, JEI et données du terrain préservés.
Pas de modification du canal public ni de l'instance personnelle.
## beta.047 — inspection des étoiles et survol jaune
[Contrat](spyglass-stars-beta047.md). Build, 12 tests serveur, parcours natif
FR/EN et intégrité des archives vérifiés.
- [Pack normal](../build/Sanctuary-beta.047.mrpack), 5344001 octets.
SHA-256 : `f14f2493f6a13982b51632fea97492c601c40b22d9feacd6c18571c4e43bc55c`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.047.mrpack), 5362936 octets.
SHA-256 : `0c82e04d94d399ea547d16ec55983e7bf5b618215aa6030101dd42ac9419148c`.
Reçu `build/star047-artifact.json` : 1 514 classes et ressources conformes au
build. Archives beta.046, textures, données du terrain et JEI préservés.
Pas de modification du canal public ou de l'instance personnelle.
## beta.046 — constellations, vol, zoom et icônes
Deux places à la fondation, constellations tracées à la souris, bateau à poule,
zoom déblocable, dix icônes d’aptitudes et identité native Sanctuary.
[Contrat et résultats](sky-flight-zoom-beta046.md) · [Migration des factions](faction-two-slots-beta046.md).
Build, **20 tests serveur**, parcours client natif FR/EN et vérification visuelle réussis.
- [Pack normal](../build/Sanctuary-beta.046.mrpack), 5319418 octets.
SHA-256 : `16fdcb195451f5ee691dbd4ab33e38f51877724cdc0d8eeadd8105b503632142`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.046.mrpack), 5338352 octets.
SHA-256 : `af49f4ab84b430aab2b93c3bff45ce1f036f889ffeaef1c0c8d2dd3725fb36c1`.
Reçu : `build/beta046-artifact.json`. Les 1 503 classes, ressources et JAR
imbriqués correspondent au build. Les dix nouvelles icônes sont identiques
aux PNG fournis et aux sources du resource pack. Les anciennes textures,
données de génération, dépendances distantes et archives beta.045 sont inchangées.
Le test de présentation sans VSync est absent du JAR livré.
Le canal public et l’instance personnelle n’ont pas été modifiés.
## beta.045 — menu principal
Version en haut à gauche et Friends / Amis pleine largeur sous Multiplayer.
[Contrat et résultats](title-menu-beta045.md). Build, quatre tests serveur ciblés,
parcours client FR/EN et vérification visuelle réussis.
- [Pack normal](../build/Sanctuary-beta.045.mrpack), 5254098 octets.
SHA-256 : `e0dc2e66d0238f6e1c29b561bf85ab0da2b84f369ef4493f144719ab2971fa42`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.045.mrpack), 5273031 octets.
SHA-256 : `89807b8245944ff8c6d5841941ff3ed7d9969d3f2d270e179f4d64d25cf1eaf9`.
Reçu : `build/title045-artifact.json`. Les 1 471 classes, ressources et
JAR imbriqués correspondent au build. L'icône et les textures restent identiques.
Exports beta.044, canal public et instance personnelle inchangés.
## beta.044 — pouvoirs natifs, commandes LAN et icône finale
Build, **69 tests serveur**, **88 contextes positifs d'œufs**, deux parcours
client et exports vérifiés. [Contrat et résultats](spawn-eggs-audit-beta044.md).
- [Pack normal](../build/Sanctuary-beta.044.mrpack), 5250933 octets.
SHA-256 : `a76cabcadb85c3c0439961b8a175ee8be28fcf246970a3e57ca6475da0c169f0`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.044.mrpack), 5269868 octets.
SHA-256 : `06f4893e4e4d629a9c8791e59000678c768ad134e32f7346c103edd85e304ed2`.
Reçu : build/egg044-artifact.json. Dernière icône fournie (bleu en haut),
1 470 classes et ressources comparées au build, dépendances contrôlées.
Archives beta.043, canal public et instance personnelle inchangés.
## beta.043 — blocs portés et icône officielle
Build, 41 tests serveur et exports vérifiés ; interface graphique non validée.
[Contrat](functional-head-blocks-beta043.md).
- [Pack normal](../build/Sanctuary-beta.043.mrpack), 5242689 octets.
SHA-256 : `1c52b19d503b386452ecd3e8e1141061171ca2ec40946709d5b9dfdc6583a54d`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.043.mrpack), 5261624 octets.
SHA-256 : `dae7ed5433095c5fa1d55caa92b7f037a51c2202d29ec0b9e8c8477f77d0dcd2`.
Reçu : `build/head043-artifact.json`. Icône fournie intacte, 1 466 classes
comparées au build, dépendances imbriquées et ressources vérifiées.
Exports beta.042, canal public et instance personnelle inchangés.
## beta.042 — ancrage des joueurs portés
Portage corrigé avec 39 tests serveur et un parcours graphique natif réussis.
Le diagnostic LAN reste ouvert : activation tardive de l'hôte, commande d'XP
et révocation fonctionnent dans le scénario testé. Aucun correctif des droits
n'est revendiqué. [Ticket](lan-carry-beta042.md).
- [Pack normal](../build/Sanctuary-beta.042.mrpack), 5,191,398 octets.
SHA-256 : `de7d2368de6866d1408cd41f0c60148f5db7a467b00df2152e8821bde4c0ae6b`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.042.mrpack), 5,210,328 octets.
SHA-256 : `24f7add0c5f32f8d7cec596d624d6da5dd57a7ef920e3fa711b7f45345828443`.
Reçu : `build/lan-carry042-artifact.json`. Les 1 441 classes correspondent au
build ; seuls CarryService et CarryPose changent face à beta.041. Les 173 PNG
et les deux MRpacks beta.041 sont inchangés. Canal public et Prism inchangés.
## beta.041 — bébés portés sans ralentissement
Deux exports locaux vérifiés après `check build assemblePack assembleTestPack`
et **43 tests serveur** ciblant le portage, les familiers et les mouvements.
Le poids des bébés est nul, y compris dans les piles ; la croissance rétablit
la pénalité adulte au prochain tick. [Contrat](carry-babies-beta041.md).
- [Pack normal](../build/Sanctuary-beta.041.mrpack), 5 191 178 octets.
SHA-256 : `c2be0db5efc13a6e442f81cb1b2615143c1c5c1d102b0856b42cec37ccd8eaae`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.041.mrpack), 5 210 113 octets.
SHA-256 : `03556ad7920a51d9e5d54ca294ef2ee1a1ac84a3d948a0693e926a66eebd7864`.
- Reçu local : `build/carry041-artifact.json`.
Les 1 441 classes correspondent au build. Les ressources client, les 173 PNG
et les exports beta.039/beta.040 sont inchangés. Le correctif multijoueur de
beta.040 est inclus ; aucun nouveau test réseau dédié n'est revendiqué.
Le canal public, Prism et les serveurs personnels restent inchangés.
## beta.040 — accueil multijoueur, habitant, opérateur et ciel
Deux exports locaux vérifiés, après `check build assemblePack assembleTestPack`,
**50 tests serveur** et parcours client natif : ouverture du Hello World à froid
sans composants d'items, contrôles opérateur, portraits, armure, ciel gagné/vide,
shader natif et relecture d'un catalogue de recettes supérieur à 64 Ko.
La connexion à un serveur dédié n'a pas été testée ; l'EULA reste non acceptée.
Aucun moteur Iris compatible avec 26.3-pre-2 n'est embarqué.
- [Pack normal](../build/Sanctuary-beta.040.mrpack), 5,190,946 octets.
SHA-256 : `1973be1033d295b1f3a81fe96b6a0b072597922cd089b1fdae26281ea13530f5`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.040.mrpack), 5,209,881 octets.
SHA-256 : `320abd13c1e523e7a2d5b1177abb35dcebfe1fabdcc8340e2846b6e3a715ac49`.
- Reçu local : `build/operator040-artifact.json` ; captures dans
`build/operator040-evidence/final/`.
Les 1 441 classes compilées, ressources et dépendances imbriquées correspondent
aux sources contrôlées. Les 173 PNG existants et les deux exports beta.039 sont
inchangés. Le profil plat ajoute uniquement le module Sanctuary Test.
Canal public, instance Prism et serveurs personnels inchangés.
Contrats : [accueil](multiplayer-hello-beta040.md),
[opérateur/habitant/ciel](operator-inhabitant-stars-beta040.md),
[shaders](shaders-beta040.md), [reprise des recettes](recipe-storage-beta040.md).
## beta.039 — familier de départ, savoir alimentaire et inventaire de mort
Les deux distributions locales sont vérifiées : 68 tests serveur, parcours client
natif, 14 784 comparaisons alimentaires et 10 000 tirages de familiers. Les trois
cases du Hello World sont centrées sous la palette ; leur titre reste aligné à
gauche. Le tirage est conservé avant l'arrivée et le familier choisi est équipé
une seule fois. [Contrat du premier familier](hello-starter-beta039.md).
La livraison comprend le savoir alimentaire, les panoramas avec profondeur et
masque de brume reconstitué, les têtes numérotées et l'inventaire de mort grisé à
côté de l'inventaire actuel. Les 173 textures existantes sont conservées.
[Captures et alimentation](food-panorama-beta039.md) ;
[inventaire de mort](grave-inventory-beta039.md).
Les 1 419 classes Sanctuary, les ressources et les dépendances imbriquées ont
été comparées aux builds. Le profil plat ajoute uniquement Sanctuary Test.
Canal public et instance Prism personnelle inchangés ; beta.038 reste immuable.
- [Pack normal](../build/Sanctuary-beta.039.mrpack), 5 150 501 octets.
SHA-256 : `81bbc6770f9c44ba3e259cf8be2881b60d4146ada6a9c4d889afad96f5f0311a`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.039.mrpack), 5 169 436 octets.
SHA-256 : `c3649eec2d5a1ec67b08743c9b636157ce4bc692bff1a96c4334a6660363acd6`.
- Reçu local : `build/food039-artifact.json` ; captures et panoramas dans
`build/food039-evidence/release/`.
Pour essayer le choix initial, utiliser un nouvel habitant dans un nouveau
monde : les habitants déjà arrivés ne sont pas renvoyés au Hello World.
## beta.038 — nourriture, têtes-tombes et fondation des factions
Les deux distributions locales sont vérifiées : 55 tests serveur, parcours
client natif, 14 784 comparaisons alimentaires, 1 381 classes Sanctuary et les
ressources embarquées. Le profil plat ajoute uniquement le module Sanctuary Test.
La fondation coûte désormais dix niveaux et crée une place sans prestige ; les
anciennes factions sont conservées. [Contrat et reprise](graves-food-beta038.md).
Canal public et instance Prism personnelle inchangés ; beta.037 reste immuable.
- [Pack normal](../build/Sanctuary-beta.038.mrpack), 5,069,719 octets.
SHA-256 : `12b4b56480e3f58da58e312e109417c8834f0682c4bf889ae536e41c4f44de54`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.038.mrpack), 5,088,654 octets.
SHA-256 : `ed302d7ad9e921e1f97e9727fefa56b782db8c77820f99f31cf1611a06015076`.
- Reçu local : `build/graves038-artifact.json` ; treize captures dans
`build/graves038-evidence/`.
## beta.037 — temps réel et suivi commun
Les deux distributions locales sont vérifiées : 29 tests serveur, deux parcours
client, 1 353 classes Sanctuary, dépendances imbriquées et ressources. Le module
Sanctuary Test est le seul fichier supplémentaire du profil plat. Les artefacts
beta.036 restent immuables. [Contrat et configuration](realtime-beta037.md).
Canal public et instance Prism personnelle inchangés.
- [Pack normal](../build/Sanctuary-beta.037.mrpack), 5,014,547 octets.
SHA-256 : `e91d29dddf5ee26098a4de6fff85a5cfa5ce920304754c12aecd06cf8b6a9d2d`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.037.mrpack), 5,033,482 octets.
SHA-256 : `9b4e3c60e507e2ab9e3bf666615d833db8b0e4375454dc727aff7f5155c4b043`.
## beta.036 — suivi choisi et correctifs de jeu
Distribution locale normale et profil de test plat, versions synchronisées.
[Contrat](corrections-beta036.md) : notifications/F3, suivi depuis Advancements,
plané avec animal porté, discrétion au sol et sorties de recettes consultables
par le catalogue JEI. Les annonces, possessions et recettes restent distinctes.
Le canal public et l’instance Prism personnelle ne sont pas modifiés par ce ticket.
Build, 36 tests serveur et deux parcours client natifs réussis. Les 1 335 classes
Sanctuary, les dépendances imbriquées et la différence unique du profil de test
sont contrôlées ; beta.034 et beta.035 restent inchangées.
- [Pack normal](../build/Sanctuary-beta.036.mrpack), 4,968,783 octets.
SHA-256 : `dfa2602f7cd584f50d7a8d4a1faeb249a3473e9b4259a2c87cf7893a53d6836f`.
- [Monde plat rapide](../build/Sanctuary-Test-beta.036.mrpack), 4,987,716 octets.
SHA-256 : `118ec724517233319c922931d9186f54b9831e628e6661d0a32863d507dc37c9`.
- Reçu local : `build/corrections036-artifact.json` ; captures et logs cités
dans le contrat de livraison.
## beta.035 — collections Minecraft
Exports locaux : [pack normal](../build/Sanctuary-beta.035.mrpack) et
[profil plat rapide](../build/Sanctuary-Test-beta.035.mrpack).
[Contrat, reprise des carnets et validation](collections-beta035.md).
Build, 28 tests serveur, matrice des 126 advancements et parcours client natif
réussis. Les 67 définitions, 2 042 recettes primaires, 1 322 classes Sanctuary,
traductions et dépendances embarquées correspondent aux builds. Le profil rapide
ajoute seulement son module facultatif et son nom de pack.
SHA-256 normal : `dfcf5927eaef183fe582b95454480849a08353561cb66d83a514d8a0274b5c60`.
SHA-256 test : `f94f216b5b09c7ebeafea45a8d735978a4efc354aa245ffbfd993ee7e6db2b24`.
Reçu : `build/collections035-artifact.json`. Aucun canal, instance personnelle
ou monde existant n’a été modifié ; les archives précédentes sont conservées.
## beta.034 — découvertes et hotbar agrandie
Exports locaux : [pack normal](../build/Sanctuary-beta.034.mrpack) et
[pack test rapide](../build/Sanctuary-Test-beta.034.mrpack).
[Fonctionnement et vérifications](notifications-beta034.md).
Build, 22 tests serveur et parcours client natif réussis. Les 1 320 classes du
mod, ses dépendances imbriquées, les ressources FR/EN et les métadonnées ont
été comparées aux builds. Le profil rapide ajoute seulement le module test et
son nom de pack ; JEI reste identique à beta.033.
SHA-256 normal : `df0a0c2ab937ccec4361bd37a07a551a592b3d5819ade1f289fa9fb428c355e5`.
SHA-256 test : `cf41d20a118128afd044556e6dee44804852ea7232f2b13623020ec471c3b4fc`.
Reçu : `build/notifications034-artifact.json`. Les anciennes archives, le canal
packwiz et l’instance Prism personnelle n’ont pas été modifiés.
## beta.033 — menus et profil plat facultatif
Deux exports locaux vérifiés :
- [Sanctuary-beta.033.mrpack](../build/Sanctuary-beta.033.mrpack), pack normal.
- [Sanctuary-Test-beta.033.mrpack](../build/Sanctuary-Test-beta.033.mrpack), monde plat et intro passée.
Le second conserve le contenu du premier à l’octet près et ajoute seulement
`sanctuary-test-beta.033.jar` (21 504 octets), avec un nom de pack distinct.
[Utilisation du profil rapide](test-rapide-beta033.md) · [menus et validation](menus-discovery-beta033.md).
Les 1 304 classes Sanctuary, les trois classes du module test, les dépendances
imbriquées et les métadonnées exactes ont été comparées aux builds. Les exports
beta.031 et beta.032 sont inchangés. Build, 34 tests serveur et parcours client
réussis ; le bouton History final est vérifié dans le dernier parcours plat.
SHA-256 normal : `a302eee44a282a22a8b845f96c4260583995e0bbd7444e969cda823ee95e3a2f`.
SHA-256 test : `a703edb798d1981b63f6dd7d8e1980fc6c69ba6a9b0443bb10f5d0bbd6f61234`.
Reçus : `build/menus033-artifact.json` et `build/quick033-artifact.json`.
Le canal packwiz et l’instance Prism personnelle n’ont pas été modifiés.
## beta.032 — refonte des 88 familiers
Export d’essai [Sanctuary-beta.032.mrpack](../build/Sanctuary-beta.032.mrpack).
Client et serveur beta.032 ensemble ; la nouvelle capacité réseau vérifie cette
compatibilité. [Migration additive, utilisation et validation](spawn-eggs-v2-beta032.md).
Build, 85 tests serveur et parcours client natif réussis. Reçu d’intégrité :
`build/refonte032-artifact.json`. Export local ; aucun canal ni instance
personnelle n’a été mis à jour.
## beta.031 — apparition galactique
Export d'essai [Sanctuary-beta.031.mrpack](../build/Sanctuary-beta.031.mrpack).
Glyphes spectraux, spirale vers un portail qui remplit l'écran et flash blanc
sur le spawn. Client et serveur beta.031 ensemble ; `/sanctuary intro` rejoue
la proposition. L'éclairage de beta.030 est inclus.
Build, 9 tests serveur et parcours graphique natif validés. Archive, versions,
1 278 classes compilées, dépendances imbriquées et conservation de beta.030
vérifiées. [Contrat et reçu](introduction-beta031.md).
Export local ; canal packwiz et instance Prism personnelle non modifiés.
## beta.006 — brouillard, souris et Demeure
Export local [Sanctuary-beta.006.mrpack](../build/Sanctuary-beta.006.mrpack).
`check build assemblePack` avec la sélection native `progression,map,demeure`
réussit : 8/8 tests serveur, parcours client natif validé séparément.
Le JAR Sanctuary contient le mod autonome Demeure, sa licence et sa provenance.
L'assemblage vérifie que ce JAR imbriqué est identique au build du module.
SHA-256 MRpack : `ef8499de78461e7eab7bafe3d1ccf38a2d06ec3a0e0884e8e10ffe30fc63071f`.
Reçu : `build/demeure006-artifact.json` ; [migration et validation](demeure-beta006.md).
Les exports beta.003–005 restent identiques. Aucun canal ni instance personnelle
n'est modifié par cet export d'essai.
## beta.004 — cadre Blocodex et correction du sprint
Export local `build/Sanctuary-beta.004.mrpack`, JAR `sanctuary-beta.004.jar`,
version interne `beta.004`. `check build` avec la sélection native progression
réussit, ainsi que le parcours client et `assemblePack -x check` après les
contrôles. Les mondes beta.003 restent lisibles sans migration. Voir
[le ticket, les vérifications et les limites](blocodex-beta004.md).
Archive, version, classes, ressources, dépendance et JAR embarqué vérifiés.
Reçu : `build/blocodex004-artifact.json`.
SHA-256 MRpack : `aee4fdebd48d6719f85d2477fbefe90e12ae38313cc107615fa6105c0c57d475`.
SHA-256 JAR : `3a8c26105121340a41644c817533bff59f519d7f02837efe570511568eba98a6`.
Le MRpack beta.003 reste identique. Aucune publication ni synchronisation
d'installation personnelle effectuée.
## beta.003 — export d'essai de la progression
Version interne `beta.003`, JAR `sanctuary-beta.003.jar`, export local
`build/Sanctuary-beta.003.mrpack`. Le parcours HELLO_WORLD, achats, mort et
redémarrage est validé en client natif ; la suite serveur générale conserve
deux échecs worldgen préexistants. Voir [les résultats et limites](progression-beta003-release.md).
Après les contrôles, `./gradlew assemblePack -x check` assemble le JAR final
et vérifie les manifestes. Depuis `build/packwiz`, `packwiz modrinth export
-o ../Sanctuary-beta.003.mrpack` produit l'archive. Intégrité ZIP, versions,
JAR embarqué identique au build, ressources FR/EN et empreinte Fabric API
vérifiés ; reçu dans `build/progression003-artifact.json`.
SHA-256 MRpack : `2b31d67befb4838d0f6da307c3ac0d1dfe5ba41978e9d8b73d5c2983108b9db0`.
SHA-256 JAR : `44544793d318d2be8bf5cdc6ab4e80d752b886debcf383bedca04ed04da0ae1d`.
Le canal publié et l'instance Prism personnelle restent à leur état antérieur.
## beta.002 — export d’essai des climats et temples
Version interne `beta.002`, JAR `sanctuary-beta.002.jar` et MRpack
`Sanctuary-beta.002.mrpack`. Les corrections demandées après l’essai de beta.001
sont décrites dans [le contrat des expéditions](expeditions-beta002.md).
La distribution reste un export local ; aucun canal publié ou instance Prism
personnelle n’est modifié par cette préparation.
## beta.001 — transition préparée localement
Le mod et le pack suivent désormais [le compteur `beta.xxx`](versioning.md).
Le premier numéro est `001` ; les futurs tags reprennent la version exacte,
sans préfixe `v`. Le relief initial reste celui de l’alpha.30.7 ; les nouveaux
mondes ouvrent [quatre anciennes expéditions](expeditions-beta001.md). Cette préparation
ne publie pas de release, n’avance pas le canal et ne synchronise pas Prism.
La dernière livraison consignée reste l’alpha.30.7 ci-dessous.
## Alpha.30.7 publiée — 12 septembre 2026
La [release alpha.30.7](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.30.7)
est publiée depuis `9a65e960614d22f751018aec3698ec7d4abefb34`, branche
`codex/finishing-worldgen-alpha30-7`. Les anciens îlots artificiels sont remplacés
par les trésors et filons des corps naturels de 30.6. Rails directs, seconde
traversée conditionnelle et petites ruines océaniques asséchées dans les cavités.
**Nouveau monde requis.** Aucun lieu ajouté à Y600.
Les neuf relevés natifs de densité sont exactement identiques à ceux de 30.6.
`check build` et `assemblePack` réussissent. Les tests finaux ciblés vérifient
Moyen / 0 dans les vrais chunks : deux traversées, deux îlots enrichis, deux
navires avec habitants, le village, la mine et trois ruines sèches. Le Grand /
-7228211907433324401 possède trois îlots enrichis et une traversée conservée,
la seconde étant refusée faute d’accès ; ses quatre ruines sèches passent la
validation dédiée finale. Voir [la portée exacte des essais](testing-alpha30.7.md).
Artefacts publics vérifiés par empreintes :
- [MRpack alpha.30.7](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.7/Sanctuary-0.1.0-alpha.30.7.mrpack).
- [Atlas complet : cartes, coupes et données natives](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.7/Sanctuary-Atlas-0.1.0-alpha.30.7.zip).
- [Installations du Moyen](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.7/Sanctuary-0.1.0-alpha.30.7-Moyen-installations.png) et [du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.7/Sanctuary-0.1.0-alpha.30.7-Grand-installations.png).
- [Coupes du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.7/Sanctuary-0.1.0-alpha.30.7-Grand-coupes.png) et [cartes du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.7/Sanctuary-0.1.0-alpha.30.7-Grand-cartes.png).
Canal packwiz vérifié : `82a61692862fbd304891daeeee605240c5324525`.
Deux synchronisations isolées puis deux dans **la même instance Sanctuary Beta
sur Mac**, Minecraft fermé, réussissent. Les **925 fichiers personnels et
réglages** suivis conservent leurs empreintes ; aucun monde personnel n’a été
ouvert, converti ou régénéré. Le dossier demeure `Sanctuary-0.1.0-alpha.1`.
Sauvegarde ciblée : `sanctuary-backups/before-0.1.0-alpha.30.7/`.
Minecraft 26.3-pre-2, Loader 0.19.5, Fabric API 0.160.0+26.3 sont inchangés.
SHA-256 JAR : `9b8be381c2bbf894be813ca7c6473418e5110063d1e3ec8b1ba3bda568220e53`.
SHA-256 MRpack : `5912c33557c24bc67d85c7f5f0df291bbd3aa87a971db7b33017d340adc18f63`.
SHA-256 atlas : `997779ae13d4784551d3be4defe988c3f8991c9e0f6569926e16b77b4420f38d`.
Reçus ignorés : `build/alpha307-delivery-public.json`,
`build/alpha307-isolated-validation.json`, `build/alpha307-prism-validation.json`,
`build/alpha307-atlas-archive.json` et `build/alpha307-atlas-public.json`.
Aucun essai ni déploiement Windows natif n’est revendiqué.
## Alpha.30.6 publiée — 12 septembre 2026
La [release alpha.30.6](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.30.6)
est publiée depuis `fbd870a4e3522704e35f41606785f90b1b1eb764`, branche
`codex/underground-exploration-alpha30-6`. Village vanilla abandonné dans une
cavité locale, mines réservées, donjons natifs plus fréquents, voies ramifiées,
relief légèrement renforcé et quelques masses naturelles vers Y300–400.
Aucun lieu à Y600. **Nouveau monde requis.**
`check build` réussit avec **25/25 tests natifs sur Moyen 724 / graine 0**.
Le Grand de la graine `-7228211907433324401` a passé 25/25 tests avant
l’ultime sculpture aérienne, puis 2/2 tests de plans sur le code final ; village
et deux mines conservent leurs emprises. Neuf relevés natifs composent l’atlas.
L’assemblage est réussi avec le contrôle déjà exécuté exclu de sa répétition.
Voir [les résultats, commandes et limites](testing-alpha30.6.md).
Artefacts publics vérifiés :
- [MRpack alpha.30.6](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.6/Sanctuary-0.1.0-alpha.30.6.mrpack).
- [Atlas scientifique complet, PNG/PDF/JSON](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.6/Sanctuary-Atlas-0.1.0-alpha.30.6.zip).
- [Coupes du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.6/Sanctuary-0.1.0-alpha.30.6-Grand-coupes.png), [cartes du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.6/Sanctuary-0.1.0-alpha.30.6-Grand-cartes.png).
- [Masses aériennes du Moyen](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.6/Sanctuary-0.1.0-alpha.30.6-Moyen-terrains-aeriens.png), [coupes du village du Moyen](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.6/Sanctuary-0.1.0-alpha.30.6-Moyen-village.png).
Canal packwiz : `b4a3da5c0a4e713c97ec863bcbc470e0df505f90`.
Minecraft 26.3-pre-2, Loader 0.19.5 et Fabric API 0.160.0+26.3 restent inchangés.
Deux synchronisations isolées puis deux dans la même instance **Sanctuary Beta
sur Mac**, jeu fermé, réussissent. Les **925 fichiers personnels et réglages**
suivis conservent leurs empreintes. Le dossier reste `Sanctuary-0.1.0-alpha.1`.
Sauvegarde ciblée : `sanctuary-backups/before-0.1.0-alpha.30.6/`.
SHA-256 JAR : `107006ca40143fa0bd7495043a7af887420844fd1d584fe132f920aed3436271`.
SHA-256 MRpack : `15853900fc772ffc1fad35235085131176b5319d72948a5c67fabeedf1396322`.
SHA-256 atlas : `7ffc4cd6adea67b6e7e3e2ebfd9f5f60fec8dbe41ab080f689f3067b6ffe5522`.
Reçus : `build/alpha306-delivery-public.json`, `build/alpha306-isolated-validation.json`,
`build/alpha306-prism-validation.json` et `build/alpha306-atlas-archive.json`.
Aucun essai ni déploiement Windows natif n’est revendiqué.
## Alpha.30.5 publiée — 12 septembre 2026
La [release alpha.30.5](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.30.5)
est publiée depuis `7f81bf35a0cb3d71527e3795cdf22cff55b7c8e8`, branche
`codex/plateau-atlas-alpha30-5`. L’étirement vertical est retiré au profit des
plateaux et d’une déformation 3D modérée. Aucun sommet Y360 n’est imposé ;
le plafond constructible reste Y640. Nouveau monde requis.
`check build` et `assemblePack` réussissent. Grand 1 024, graine
`-7228211907433324401`, puis Moyen 724, graine 0 : **24/24 tests natifs chacun**.
Les neuf relevés de densité couvrent les trois tailles sur les graines 0, 42
et la graine du Grand. Voir [les résultats et limites](testing-alpha30.5.md).
Artefacts publics vérifiés :
- [MRpack alpha.30.5](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.5/Sanctuary-0.1.0-alpha.30.5.mrpack).
- [Atlas scientifique complet, PNG/PDF/JSON](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.5/Sanctuary-Atlas-0.1.0-alpha.30.5.zip).
- [Coupes du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.5/Sanctuary-0.1.0-alpha.30.5-Grand-coupes.png) et [cartes du Grand](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.5/Sanctuary-0.1.0-alpha.30.5-Grand-cartes.png).
Canal packwiz : `bdaf594f61601f5ea0b76b7e4e19b0cd3b35e04b`.
Minecraft 26.3-pre-2, Loader 0.19.5, Fabric API 0.160.0+26.3 inchangés.
Deux synchronisations isolées puis deux dans la même instance **Sanctuary Beta
sur Mac**, jeu fermé, réussissent. Les **925 fichiers personnels et réglages**
suivis conservent leurs empreintes. Le dossier reste `Sanctuary-0.1.0-alpha.1`.
Sauvegarde ciblée : `sanctuary-backups/before-0.1.0-alpha.30.5/`.
SHA-256 JAR : `0f26ef0940234a241bb4df3b4585ac15d04cfa858ca47db1ce3d4802f49a35a5`.
SHA-256 MRpack : `0f76c85f77f981951642449d5b51bf0818ed31f3a826e6f3c9deeec6f54868d4`.
SHA-256 atlas : `3da0d0b2422453689c403ca49d66cb54727948259fd0b791d54d233298a05ef2`.
Reçus : `build/alpha305-delivery-public.json`, `build/alpha305-isolated-validation.json`,
`build/alpha305-prism-validation.json` et `build/alpha305-atlas-archive.json`.
Aucun essai ni déploiement Windows natif n’est revendiqué.
## Alpha.30.4 publiée — 12 septembre 2026
La [release alpha.30.4](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.30.4)
est publiée depuis `2dc70fe9051ab29996f1047bee6f15b6048910bb`, branche
`codex/high-plateaus-alpha30-4`. Elle élargit les abords des massifs, conserve
les plateaux bas et cherche des rivières sur les replats supérieurs. Le monde
est constructible sur Y0..639 ; terrain sous Y360 et nuages inchangés.
Les falaises sont conservées. Certaines faces inclinées restent en marches :
leur disparition complète n'est pas revendiquée.
`check build` et `assemblePack` réussissent. Les mondes Moyen 0 et Grand
`-7228211907433324401` passent chacun 24 tests ; le Grand est rechargé dans
un second processus, 24/24, avec maintien du bloc à Y639 et des modifications
faites aux satellites. Le client natif valide les menus, le Blocodex et le ciel,
et fournit deux captures réelles. Voir [le terrain](generation-alpha30.4.md)
et [les preuves et limites](testing-alpha30.4.md).
Le [MRpack alpha.30.4](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.4/Sanctuary-0.1.0-alpha.30.4.mrpack),
le JAR et le ZIP d'amorçage sont vérifiés localement puis par téléchargement public.
Canal packwiz : `664b0c687647ef895c0ffd2b26fa28d7edf1bd34`.
Minecraft 26.3-pre-2, Loader 0.19.5 et Fabric API 0.160.0+26.3 restent inchangés.
Deux synchronisations isolées, puis deux dans la même instance **Sanctuary Beta
sur Mac**, jeu fermé, réussissent. Un seul JAR Sanctuary 30.4 est actif ; les
**925 fichiers personnels et réglages** suivis conservent leurs empreintes.
Le dossier reste `Sanctuary-0.1.0-alpha.1`. Sauvegarde ciblée :
`sanctuary-backups/before-0.1.0-alpha.30.4/`.
SHA-256 JAR : `9f03c1ac7c2adc085f2df1b54abb3903c8832b68df1d19ba530594ea97bf1a92`.
SHA-256 MRpack : `8342a4036360416b291b82ef01ec84b273673dfdf7899fdde9c2de7b84bffc79`.
Reçus : `build/alpha304-delivery-public.json`, `build/alpha304-isolated-validation.json`,
`build/alpha304-prism-validation.json`.
Créer un **nouveau monde**. Aucun essai ou déploiement Windows natif, ni
validation esthétique par le créateur, n'est revendiqué.
## Alpha.30.3 publiée — 12 septembre 2026
La [release alpha.30.3](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.30.3)
est publiée depuis `076c9a6c16e93e46db4a16ed0dd8d6a5a22c5a85`, branche
`codex/balanced-relief-alpha30-3`. Elle retire les microcorniches de la 30.2,
mélange plateaux naturels et grandes provinces montagneuses en 3D et conserve
le filtrage des petits fragments. Les recherches aériennes et le veto de biome
du sanctuaire dans les marais sont corrigés.
`check build` et `assemblePack` réussissent. Les trois profils sont comparés
sur les graines 0, 42 et `-7228211907433324401`. Trois mondes natifs ont terminé
à 24/24 tests ; Petit 42 et Grand signalé comprennent les correctifs finaux de
placement. Voir [le terrain](generation-alpha30.3.md) et [les preuves](testing-alpha30.3.md).
Le [MRpack alpha.30.3](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.3/Sanctuary-0.1.0-alpha.30.3.mrpack),
le JAR et le ZIP d’amorçage ont été vérifiés localement et par téléchargement public.
Canal packwiz : `a68fe0df2f82868100219799db603805f89c56c7`.
Minecraft 26.3-pre-2, Loader 0.19.5 et Fabric API 0.160.0+26.3 restent inchangés.
Deux installations isolées puis deux synchronisations de la même instance
**Sanctuary Beta sur Mac**, jeu fermé, ont réussi. Un seul JAR Sanctuary 30.3
est actif ; les 925 fichiers personnels et réglages suivis gardent leurs empreintes.
Le dossier d’instance reste `Sanctuary-0.1.0-alpha.1`. Sauvegarde ciblée :
`sanctuary-backups/before-0.1.0-alpha.30.3/`.
SHA-256 JAR : `6713622a4ad8034bb230ff11e1bad580d218932da31b3feeddee4c905fd11759`.
SHA-256 MRpack : `bb1172d14a8092d8155edeb61dba943c0a149874580ab4bd21abd8e87db54255`.
Reçus : `build/alpha303-delivery-public.json`, `build/alpha303-isolated-validation.json`,
`build/alpha303-prism-validation.json`.
Créer un **nouveau monde Sanctuary**. Aucun essai natif Windows, mise à jour
Windows ou validation esthétique par le créateur ne sont revendiqués.
## Alpha.30.2 publiée — 12 septembre 2026
La [release alpha.30.2](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.30.2)
est publiée depuis **`c5381b939ad548511455f5251b51443dba4bf8d5`**, branche
`codex/irregular-relief-alpha30-2`. Elle conserve les grandes masses et les
arches, ajoute des corniches locales irrégulières et filtre les petits
composants rocheux détachés dans la zone retouchée. Voir
[la génération](generation-alpha30.2.md) et [les vérifications](testing-alpha30.2.md).
`check build` et `assemblePack` réussissent sur Mac. Les **24 GameTests** du
Moyen 0 et les **24 GameTests** du Grand `-7228211907433324401` passent ; les
volumes natifs, l’ordre d’échantillonnage, les cascades et les traversées sont
contrôlés. Le rendu complet avec végétation reste à apprécier en jeu.
Le [MRpack alpha.30.2](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.2/Sanctuary-0.1.0-alpha.30.2.mrpack),
le JAR et le ZIP d’amorçage sont vérifiés localement puis par téléchargement
public. Le canal packwiz est au commit
**`b9eac60a25d207540efa5a9f2d2d2087b41c86f4`**.
Minecraft 26.3-pre-2, Fabric Loader 0.19.5 et Fabric API 0.160.0+26.3 sont conservés.
Deux synchronisations isolées, puis deux dans la même instance **Sanctuary Beta**
sur Mac, réussissent, jeu fermé. Un seul JAR Sanctuary alpha.30.2 est actif ;
les empreintes des **925 fichiers personnels et réglages suivis** sont conservées.
Sauvegarde ciblée : `sanctuary-backups/before-0.1.0-alpha.30.2/`.
SHA-256 JAR : `a11a47f08b052703892fd9a705636863f0c9313e9101641538c1b6f37ff2873a`.
SHA-256 MRpack : `f80cd65e10b66851a13e21fa878101c198bec3e115c26676981dc1275c735bfa`.
Reçus : `build/alpha302-delivery-public.json`,
`build/alpha302-isolated-validation.json`, `build/alpha302-prism-validation.json`.
Créer un **nouveau monde**. Témoin simple : **Moyen 724, graine 0**.
Aucun essai Windows natif ni mise à jour de l’instance Windows n’est revendiqué.
## Alpha.30.1 publiée — 12 septembre 2026
La [release alpha.30.1](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.30.1)
est publiée depuis **`cccb89150e7e7c7bb13713aeab579e9203ff0845`**, branche
`codex/curved-rivers-alpha30-1`. Elle retire les nouvelles rivières sur grille,
restaure le relief 3D global avec une bande de plateau, et ouvre de courtes
brèches dans les berges des anciens cours d’eau. Voir
[la génération](generation-alpha30.1.md) et [les preuves](testing-alpha30.1.md).
`check build` et `assemblePack` passent sur Mac. Les **24 GameTests** du témoin
Moyen 0, puis les **24 GameTests** du Grand `-7228211907433324401` après
rechargement, réussissent. L’écoulement des cascades est vérifié sous ticks
réels ; les contrôles ne remplacent pas l’appréciation visuelle en jeu.
Le [MRpack alpha.30.1](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30.1/Sanctuary-0.1.0-alpha.30.1.mrpack),
le JAR et le ZIP d’amorçage sont vérifiés localement puis par téléchargement
public. Le canal packwiz est au commit
**`3d1680f9f2722304ee0ad5950cc71fa61987d2f3`**. Minecraft 26.3-pre-2,
Fabric Loader 0.19.5 et Fabric API 0.160.0+26.3 restent inchangés.
Deux synchronisations isolées, puis deux dans l’instance existante
**Sanctuary Beta** sur Mac, réussissent, jeu fermé. Un seul JAR Sanctuary
alpha.30.1 est actif ; les empreintes des **925 fichiers personnels et réglages
suivis** sont conservées. Sauvegarde ciblée :
`sanctuary-backups/before-0.1.0-alpha.30.1/`.
SHA-256 JAR : `d719a2d7bb544299ecc4adba617ea524d898ec003df35cf3464877fb74a7d0dd`.
SHA-256 MRpack : `37c576d868071a078619b4fd53a1a1eff9cd99ff7dbb16c146bd7360bc4e9274`.
Reçus : `build/alpha301-delivery-public.json`,
`build/alpha301-isolated-validation.json`, `build/alpha301-prism-validation.json`.
Créer un **nouveau monde**. Essai conseillé : **Moyen 724, graine 0** ; sorties
de l’ancienne rivière vers **13 246 82** et **-105 246 -65**. Aucun essai Windows
natif de ce correctif ni modification de l’instance Windows n’est revendiqué.
## Alpha.30 publiée — 12 septembre 2026
La [release alpha.30](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.30)
est publiée depuis **`bf327b7`**, branche `codex/terrain-finale-alpha30`.
Le point de reprise local alpha.29 est inclus sans publication séparée.
Voir [la génération](generation-alpha30.md) et [les preuves](testing-alpha30.md).
`check build`, les 24 GameTests natifs du témoin Grand42, son redémarrage et
`assemblePack` passent sur Mac. Le JAR, le MRpack et le ZIP d’amorçage sont
vérifiés localement puis par téléchargement public. Le
[MRpack alpha.30](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.30/Sanctuary-0.1.0-alpha.30.mrpack)
est disponible ; Minecraft 26.3-pre-2 et les dépendances restent inchangés.
Le canal packwiz est au commit **`77bc330da65f93e08e52ea9c81b73bb42f1fdd2b`**.
Deux synchronisations isolées puis deux dans l’instance existante **Sanctuary Beta**
sur Mac réussissent, jeu fermé. Un seul JAR Sanctuary alpha.30 est actif ;
les empreintes des **925 fichiers personnels et réglages suivis** sont conservées.
Sauvegarde ciblée : `sanctuary-backups/before-0.1.0-alpha.30/`.
SHA-256 JAR : `ebd9e32a32a548985b0de95e1e850212a5bf03b50cfef59db143896312807d7a`.
SHA-256 MRpack : `f029912098c823bb5e0b7609388856d46c53e89b8172d295fd975269a0e43ce6`.
Reçus : `build/alpha30-delivery-public.json`,
`build/alpha30-isolated-validation.json`, `build/alpha30-prism-validation.json`.
Créer un **nouveau monde**. Les fichiers de l’instance Windows n’ont pas été
modifiés ; aucune validation Windows native de cette version n’est revendiquée.
La disposition des plateaux et les grandes cascades restent à apprécier en jeu.
## Alpha.28 publiée — 12 septembre 2026
La [release alpha.28](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.28)
est publiée depuis `79d3185`. Elle prolonge la 27 avec les cavités natives,
la déformation 3D signée du relief, des failles bornées, les mines/donjons et
les filons, moins de marais, deux bateaux près des berges et deux îlots au-dessus
de Sanctuary. Les huttes restent conditionnelles. Voir
[la génération](generation-alpha28.md) et [les résultats](testing-alpha28.md).
`check build` passe sur Mac : **21/21 GameTests natifs**. `assemblePack`,
JAR, MRpack et ZIP d’amorçage sont vérifiés localement puis par téléchargement
public. Minecraft 26.3-pre-2 et les dépendances restent inchangés.
Le [MRpack autonome](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.28/Sanctuary-0.1.0-alpha.28.mrpack)
est disponible. Le canal packwiz est au commit
`6ec1c10c710870a2ccc591b524cc26d125ca03a2`. Deux synchronisations isolées,
puis deux dans l’instance existante **Sanctuary Beta**, réussissent.
Un seul JAR Sanctuary alpha.28 est actif ; les **925 fichiers personnels
et réglages suivis** gardent leurs empreintes. Le jeu était fermé.
Sauvegarde ciblée : `sanctuary-backups/before-0.1.0-alpha.28/`.
SHA-256 JAR : `7f95e9ebd50063c7ebfc649fa325e75263649e42c02e7159244953e09e27d24e`.
SHA-256 MRpack : `12d4db8f06a13fb19feb08e61325361f7ab4d783d6f43b3d0c3582d316c54d0f`.
Reçus : `build/alpha28-delivery-public.json`,
`build/alpha28-isolated-validation.json`, `build/alpha28-prism-validation.json`.
Créer un **nouveau monde Sanctuary** ; témoin **Moyen 724, graine 0**.
Les tests natifs concernent Mac, pas Windows. Le rendu client et les surplombs
restent à juger en jeu. Aucun monde personnel n’a été régénéré.
## Alpha.27 publiée — 12 septembre 2026
La reprise repart directement de l’alpha.24 : relief et cavités conservés,
marais souterrains localisés, montgolfière retirée et navires fondés sur le
véritable template vanilla `minecraft:shipwreck/rightsideup_full`, restauré.
Voir [le périmètre](generation-alpha27.md) et [les essais](testing-alpha27.md).
Minecraft 26.3-pre-2 et les dépendances de la 24 sont conservés.
`check build` puis `assemblePack` passent sur Mac. Le JAR, le MRpack et le ZIP
d’amorçage sont vérifiés localement puis par téléchargement public.
La [release alpha.27](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.27)
est publiée depuis `392ade0`. Le canal packwiz est au commit
`9803b2279aa5242c9e3e7202b940bf47e1c3f404`. Le
[MRpack](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.27/Sanctuary-0.1.0-alpha.27.mrpack)
est disponible séparément.
Deux synchronisations isolées, puis deux synchronisations dans la même instance
Prism **Sanctuary Beta** réussissent. Un seul JAR Sanctuary alpha.27 est actif.
Les **925 fichiers personnels et réglages suivis** gardent leurs empreintes ;
le jeu était fermé. Le dossier reste `Sanctuary-0.1.0-alpha.1`, avec sauvegarde
ciblée dans `sanctuary-backups/before-0.1.0-alpha.27/`.
Reçus locaux : `build/alpha27-delivery-public.json`,
`build/alpha27-isolated-validation.json`, `build/alpha27-prism-validation.json`.
SHA-256 JAR : `56144b291407650e148aa3769596165a5e87398ea4a847cf67352ce2a2c625bf`.
SHA-256 MRpack : `e13be90c6454bad3cdd3418fc54b827488700876f6e4ddb42e4a05f57acfecb6`.
Créer un **nouveau monde Sanctuary** pour cet essai. Les sauvegardes et réglages
personnels sont conservés. Aucun essai Windows natif n’est revendiqué.
## Alpha.24 publiée — 11 septembre 2026
`check build assemblePack` et les essais natifs passent. Le JAR et
`build/Sanctuary-0.1.0-alpha.24.mrpack` sont vérifiés : versions, index,
empreintes et JAR intégré concordent. Minecraft 26.3-pre-2, Fabric Loader
0.19.5 et Fabric API 0.160.0+26.3 sont conservés. Voir
[les vérifications](testing-alpha24.md) et [la génération](generation-alpha24.md).
SHA-256 du JAR :
```text
f045655cef30bbaa93099a24443462f213d7851fecd03b7b00c6ca874c9d9c45
```
La [release alpha.24](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.24)
est publiée depuis le commit source `27d7cba`. Le canal packwiz est au commit
`bd9b4c4`. Le JAR, le
[MRpack](https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.24/Sanctuary-0.1.0-alpha.24.mrpack)
et le ZIP d’amorçage ont été vérifiés par téléchargement public.
Deux installations isolées, puis deux synchronisations dans la même instance
Sanctuary Beta réussissent. Un seul JAR Sanctuary alpha.24 est actif ; les
**925 fichiers personnels et réglages suivis** conservent leurs empreintes.
Le dossier reste `Sanctuary-0.1.0-alpha.1`. Sauvegarde ciblée :
`sanctuary-backups/before-0.1.0-alpha.24/`, hors de `mods/`.
Reçus locaux : `build/alpha24-artifacts.json`,
`build/alpha24-isolated-validation.json`, `build/alpha24-prism-validation.json`.
Le jeu est fermé pendant la mise à jour ; aucun monde personnel n’est ouvert,
converti ou régénéré. Le lanceur est resté ouvert et ses réglages sont inchangés.
Pour essayer : créer un **nouveau monde Sanctuary**, avec les structures et
l’option expérimentale activées. Les cinq lieux sont référencés dans le
[guide des témoins](testing-alpha24.md). Le ZIP d’amorçage suit le canal stable ;
il ne sert pas à réimporter l’instance existante. Aucun essai Windows natif
n’est revendiqué.
## Alpha.23.1 locale vérifiée — 11 septembre 2026
Le JAR et `build/Sanctuary-0.1.0-alpha.23.1.mrpack` sont construits et vérifiés
après `check build` et `assemblePack`. Les versions Minecraft 26.3-pre-2,
Fabric Loader 0.19.5 et Fabric API 0.160.0+26.3 sont conservées.
Voir [les validations](testing-alpha23.1.md) et
[le contrat de génération](generation-alpha23.1.md).
SHA-256 du JAR :
```text
906fd2e12be4233676a1a561556508eee7412183698c2cac704dc1191324f136
```
**Publication en attente :** le gestionnaire d’identifiants Git ne fournit pas
l’authentification nécessaire. Le canal public reste à l’alpha.22 ; aucune
synchronisation de l’instance Prism n’a été effectuée pour l’alpha.23.1.
Le MRpack local peut être conservé pour les essais. Le ZIP d’amorçage préparé
suit encore le canal public alpha.22 et ne doit pas être présenté comme une
installation publiée de l’alpha.23.1. Les étapes de publication puis de
synchronisation ci-dessous restent à exécuter après rétablissement de l’accès.
## Alpha.22 publiée — 10 septembre 2026
[Sanctuary 0.1.0-alpha.22](https://git.botsu.net/koka/sanctuary-beta/releases/tag/v0.1.0-alpha.22)
@@ -449,7 +1399,7 @@ Après les vérifications, le commit et le push de la branche du ticket, le scri
de publication réalise les étapes de release et de canal ci-dessous :
```sh
python3 scripts/publish_pack.py --notes-file chemin/vers/notes.md --asset build/Sanctuary-0.1.0-alpha.12.mrpack
python3 scripts/publish_pack.py --notes-file chemin/vers/notes.md --asset build/Sanctuary-beta.001.mrpack
```
Les options sont facultatives. Ce script **publie** sur le Git configuré dans
@@ -463,12 +1413,13 @@ de livraison restent à exécuter avant cette commande.
La procédure complète, également utilisable manuellement :
1. Modifier ensemble les versions de `gradle.properties` et `packwiz/pack.toml`.
1. Incrémenter ensemble les versions de `gradle.properties` et `packwiz/pack.toml`
selon la [convention `beta.xxx`](versioning.md).
2. Exécuter `./gradlew check build assemblePack` et les vérifications du ticket.
3. Préparer les métadonnées de la livraison, avec l'URL exacte du futur JAR :
```sh
python3 scripts/pack.py release https://git.botsu.net/koka/sanctuary-beta/releases/download/v0.1.0-alpha.12/sanctuary-0.1.0-alpha.12.jar
python3 scripts/pack.py release https://git.botsu.net/koka/sanctuary-beta/releases/download/beta.001/sanctuary-beta.001.jar
```
4. Pousser le commit source vérifié. Créer une release Gitea correspondant à ce
+58
View File
@@ -0,0 +1,58 @@
# beta.027 — piles de joueurs
## Résultat attendu
**Maj + clic droit sur un joueur** permet de monter sur sa tête, même lorsqu’il
est lui-même assis sur un autre joueur. Chaque tête garde une seule place :
pour agrandir la pile, viser une tête libre, à portée normale.
Un porteur peut aussi grimper sur un autre joueur avec son groupe déjà porté.
Chaque personne ou animal au-dessus multiplie la vitesse du porteur par **0,75**,
avec un plancher de **25 %** de sa vitesse habituelle. Une personne au-dessus :
75 % ; deux : 56,25 % ; trois : 42,19 % ; quatre : 31,64 % ; cinq ou plus : 25 %.
Le calcul s’applique à tous les porteurs de la pile. Les autres effets de vitesse
continuent de s’appliquer. La pénalité se recalcule immédiatement à chaque montée
ou descente et disparaît dès que le porteur est libre.
Relâcher Maj après être monté, puis appuyer à nouveau pour descendre.
**Maj + clic droit sans viser un joueur extérieur à la pile** dépose le groupe porté.
Viser un joueur extérieur à la pile permet de grimper avec son groupe.
Les coups entre tous les membres d’une même pile sont refusés.
## Limites et données
Le serveur refuse les cycles, les têtes occupées, les montures ordinaires,
les porteurs endormis/allongés/en vol plané et un plafond trop bas pour l’ensemble
du groupe. Il vérifie aussi la bordure, la hauteur et les chunks déjà chargés.
Une dépose cherche une place pour tout le groupe supérieur. Les passagers de ce
groupe restent ensemble ; la disparition d’un joueur au milieu sépare les parties
survivantes. Les contrôles de collision continuent pendant le déplacement.
Les relations utilisent les passagers natifs et l’attachement temporaire existant
`sanctuary:carried`. Aucun nouveau format de sauvegarde, aucune migration et
aucune modification des inventaires, aptitudes ou règles de progression.
Les animaux gardent leur identité native et les joueurs ne sont pas enregistrés
dans la sauvegarde d’un autre joueur. Client et serveur beta.027 ensemble.
## Vérifications
**27 tests serveur natifs réussis**, dont 8 nouveaux tests de portage : pile de
huit joueurs, maintien sur 20 ticks, portée et siège unique, refus des cycles et
des montures ordinaires, plafond du groupe complet, cumul des vitesses, retrait
immédiat de la pénalité, coexistence avec les autres modificateurs, coups entre
membres éloignés, dépose d’une pile, mort au milieu, déchargement, absence de
passagers enregistrés dans les joueurs et identité de l’animal porté. Les
régressions des familiers et mouvements passent dans la même suite.
Validation finale et assemblage **réussis** (3 min 41 s) :
`./gradlew check build assemblePack -PsanctuaryFocusedTests=carry,familiar,movement`.
La session macOS est verrouillée : l’observation graphique reste à confirmer.
Export local vérifié : [Sanctuary-beta.027.mrpack](../build/Sanctuary-beta.027.mrpack).
Les 1 253 classes du JAR correspondent à la compilation. Seuls `CarryService`
(et ses classes internes) et `CarryDropMixin` diffèrent de beta.026. La carte,
Demeure et JEI gardent leur code précédent. Les JAR imbriqués correspondent aux
modules construits ; l’export beta.026 est intact. Aucun déploiement effectué.
SHA-256 MRpack : `13afddafca072151ba2b69ad5b3d7ee8de6f4f3841f3ace0cf598b87806e14f1`.
Reçu : `build/carry027-artifact.json` ; vérificateur : `build/verify-carry027.py`.

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