3.4 KiB
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.