mojira.dev
MCPE-221743

Squid animation is still incorrect

The 1.21.100.20 Preview includes a fix for MCPE-114253 that is stated to be a parity change. However, the fix is not really a fix.

  • the animation change does not match Java

  • Java’s animation is itself bugged per MC-197028 and MC-208015, and

  • the new animation still gives different parameters for baby and adult, which is is not needed.

Note: when I refer to the animation in this report I mean the model position and pitch, not the rolling that occurs when squid move around.


Steps to reproduce

  1. Open the attached test world. It contains baby and adult squid in 1-block chambers, and in a larger tank. When the levers at the chambers are on the squid in the chambers are constantly teleported to make their collision boxes align with the top of their chamber, and to face the player, which makes them orient vertically. To view the squid in the chambers accurately you must move at least 8 blocks away. If you are too close they jiggle. [mediaInline]

  2. View the squid from > 8 blocks away with the levers on and off.

Expected results

The squid animate like squid seem intended to animate in Java Edition regardless of pitch. Baby squid, which do not exist in Java Edition, animate like adult squid.

Observed results

When horizontally oriented, adult squid animate like they currently do in Java Edition, in which the hitbox and model are misaligned. (The hitbox is offset down and forward compared to the visual model.) Baby squid animate similarly, but baby model is positioned slightly lower. When vertically oriented, adult and baby squid do not animate as in Java Edition: in Java the top and sides of the squid model align with its hitbox, but in Bedrock they are offset upward.

JE vertical

[media]

BE vertical

[media]

JE horizontal

[media]

BE horizontal

[media]

Analysis

  • The disparity is a result of Bedrock trying to match Java by adjusting the body animation position instead of the body geometry rotation pivot.

  • The pre-existing horizontal misalignment in Java is caused by its rotation pivot being too high.

  • The baby offset is due to an unnecessary baby query in the position setting. The “minecraft:scale” component in the baby behavior components already triggers all necessary rendering adjustments, so there is no need to query for baby in the data-driven client files.

To fix this issue, change line 8 in squid.animation.json to

"body": { "position": [ 0.0, 4.8, 0 ] },

and change line 16 in squid.geo.json to

      "pivot": [0, 1.6, 0],

Linked issues

Attachments

Comments 0

No comments.

GoldenHelmet

(Unassigned)

1431286

Confirmed

Multiple

1.21.100.20 Preview

Retrieved