Record Sanctuary sources through beta.060 and Git validation
Build Sanctuary / build (push) Canceled after 0s

This commit is contained in:
koka
2026-09-15 09:29:11 +02:00
parent 1490fb2a80
commit e13f3cc1b8
1372 changed files with 92055 additions and 212 deletions
+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é.