Files
sanctuary-beta/docs/mob-head-blocks-beta060.md
T
2026-09-15 09:29:11 +02:00

5.4 KiB

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 :

./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 · Monde plat rapide.

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é.