61 lines
3.4 KiB
Markdown
61 lines
3.4 KiB
Markdown
# beta.089 — Crash au contact du super piston
|
||
|
||
Branche : `codex/super-piston-collision-beta089`.
|
||
Signalement : crash beta.088 sous Minecraft 26.3-pre-2, `Ticking entity`,
|
||
pendant `LocalPlayer.moveTowardsClosestSpace` → `isSuffocating`.
|
||
|
||
## Cause et correction
|
||
|
||
Les propriétés de la tête et de la tige étaient copiées depuis le socle du
|
||
piston natif. Son prédicat de suffocation lit `PistonBaseBlock.EXTENDED`.
|
||
Cette propriété existe sur les socles, mais pas sur les pièces techniques :
|
||
la recherche d'un espace libre autour du joueur levait une exception lorsque
|
||
sa boîte de collision rencontrait `sanctuary:super_piston_head`.
|
||
La tige héritait du même défaut. Le prédicat de visibilité copié capture
|
||
aussi les propriétés du socle d’origine et relit ce même état : changer
|
||
uniquement la suffocation ne suffisait pas.
|
||
|
||
La tête et la tige utilisent des propriétés neuves, avec des prédicats
|
||
explicites de suffocation et d’occultation désactivés. Elles conservent leurs collisions physiques de plaque et de tige,
|
||
leur résistance et leurs règles de mouvement. Les socles gardent le prédicat
|
||
natif, avec suffocation seulement lorsqu'ils sont rétractés.
|
||
|
||
Aucun changement d'identifiant, d'état de bloc, de schéma ou de sauvegarde.
|
||
Les pistons déjà assemblés restent compatibles : aucune reconstruction,
|
||
conversion ou suppression de blocs n'est nécessaire. Les textures et le
|
||
correctif de navigation du Fût beta.088 sont conservés.
|
||
|
||
## Validation ciblée
|
||
|
||
Le parcours client natif des super pistons est étendu pour contrôler tous
|
||
les états des deux socles, de la tête et de la tige, côté client et serveur :
|
||
suffocation, visibilité, support d'apparition et conduction redstone.
|
||
Le chemin natif `collidesWithSuffocatingBlock` est aussi exercé avec le joueur
|
||
sur les neuf cases de tête et les deux positions de tige de chaque variante,
|
||
dans chacune des six orientations.
|
||
|
||
Le défaut initial a été reproduit avec la même `IllegalArgumentException`
|
||
que dans le rapport : `build/piston089-before-client.log`. Le contrôle de
|
||
visibilité a ensuite révélé la capture des anciennes propriétés, corrigée
|
||
par les propriétés neuves décrites ci-dessus.
|
||
|
||
Le parcours complet passe en 1 min 25 s (`build/piston089-client.log`) :
|
||
864 états contrôlés côté client et serveur ; contact natif du joueur avec
|
||
les pièces ; deux variantes et six directions ; charge de 108 et refus de
|
||
109 blocs ; obstacles, inventaires, slime/miel, transport vertical d'une
|
||
entité, interruption, sérialisation, retour dans les chunks et démontage.
|
||
Les essais se déroulent dans un monde de développement neuf, graine 87.
|
||
|
||
`check build assemblePack assembleTestPack` réussit en 2 min 35 s
|
||
(124 tâches, 104 exécutées), avec `:sanctuary:runGameTest` explicitement exclu.
|
||
Journal : `build/piston089-check.log`. Le reçu `build/piston089-artifact.json`
|
||
vérifie les sources, le JAR, les archives et l'identité de tous les assets
|
||
avec beta.088. Les seules classes compilées modifiées sont `SuperPistons`
|
||
et ses classes internes (décalages de lignes de debug pour ces dernières).
|
||
|
||
Archives locales : `build/Sanctuary-beta.089.mrpack` et
|
||
`build/Sanctuary-Test-beta.089.mrpack`. Les archives beta.088 sont intactes.
|
||
Aucun déploiement sur Prism ou sur le canal publié, aucun serveur dédié
|
||
lancé, aucune EULA acceptée. Validation native sur macOS ; pas d'exécution
|
||
sur le poste Windows du signalement ni d'essai LAN à deux clients distincts.
|