Files
sanctuary-beta/docs/super-piston-collision-beta089.md
T
2026-09-16 11:41:27 +02:00

3.4 KiB
Raw Permalink Blame History

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

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 dorigine 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 doccultation 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.