mojira.dev

onnowhere

Assigned

No issues.

Reported

MC-300003 Entities resting on a happy ghast fall through when a player is not standing/hovering above it Confirmed MC-300001 Happy ghast riding another entity does not sync rotation visually as driver turns. Confirmed MC-300000 Player desync when teleporting all users riding a happy ghast on LAN server Unconfirmed MC-299999 Teleporting a happy ghast with riders to its current position causes it to move downwards Unconfirmed MC-299998 Teleport command does not tab-complete properly with single-entity selectors Duplicate MC-261600 Inconsistent interpolation animations can result from desync on display entities Won't Fix MC-260874 Display entity chained interpolation has inconsistent behavior Fixed MC-260857 Display entities summoned with initial transformation interpolate incorrectly from default transformation during next transformation Fixed MC-260285 Applying an identical transformation will result in the previous interpolation repeating instead of having no effect Confirmed MC-260232 Cherry blossom particles are accessible from vanilla datapack Won't Fix MC-260208 Display entities in spawn chunks with interpolation_duration greater than 0 visually reset to default transformation on rejoin Fixed MC-260207 Improperly formatted log error for certain nbt tags with required values Fixed MC-260000 Saved Y Pos of entities mounted on display entities does not update internally in NBT Fixed MC-259999 Entities mounted on display entities do not visually update until after resync Fixed MC-259964 Display Entity does not resume interpolation outside of spawn chunks Awaiting Response MC-259963 Display Entity incorrectly resumes last interpolation from default transformation on chunk load Duplicate MC-259195 Using /ride on an entity in another dimension causes client/server desync Fixed MC-256361 Mouse position is remembered after switching windows and opening a menu with pause on lost focus disabled Won't Fix MC-250000 Allays and villagers create ghost items when they take items from a stack and cannot fit the whole stack in their inventory Fixed MC-249999 Passenger allays cause ridden entity to move at abnormal speed Confirmed

Comments

Same behavior with forceloaded chunk would be observed as they work the same.

Confirmed 24w09a, cannot use numpad home/end to navigate chat and command blocks as example

(bumping comment)
Bug can be resolved as fixed in 23w13a, and relates to MC-261600

I created MC-261600 to separate the two apparent bugs. This issue should be focusing on the animation leaking that was fixed in 23w13a, and MC-261600 should be focusing on the desync issue.

This issue can be resolved as fixed in 23w13a.

This bug was partially fixed in 23w13a. The issue with animation leaking is resolved, but the desync still happens. The best way to reproduce this is with the 20hz demonstrations, along with holding down the pause (ESC) button.

So, based on this finding, the best map-making workaround at the moment to ensure a reliable animation is:

  • If you specify an interpolation_duration, the duration must be less than or equal to the total ticks from the last animation, to ensure the 'ghost animation' is fully finished
    Example:

  • If at 40 ticks from the last animation, you create an animation with > 40 duration, it will highly likely fail interpolation

  • If at 40 ticks from the last animation, you create an animation at <= 40 duration, it will succeed

  • *However, the caveat is that, even if you do it right, it might still desync and do something else unexpected*

From my understanding, this is a result of two different bugs happening together.
1. Animation leaking. Mid-animation interpolation is fundamentally broken, as it is prone to leaking and ghost-animating the previous animation instantaneously using the duration of the current animation, before starting the next animation, even if the previous animation is already finished.
2. Multiple animations from desync. The game can desync, for example, depending on how much the user pauses. This then becomes evident when a transform animation is applied, which can cause animations to behave in multiple different ways based on how desynced they are.

I did one more experiment to verify if my understanding is correct, outlined below:
Video: https://bugs.mojang.com/secure/attachment/527204/desynctest11.mp4

  • Assume we NBT summon (not execute/data merge in same tick) without specifying transform or interpolation at all

  • at 30 ticks, we try to initialize the animation with scale 2, translation 0,2,0, start 0, duration 0

  • at 40 ticks, we do an animation to scale 1, translation 0,0,0 with start 0, duration 20

  • The game will animate from scale 2, translation 0,2,0 to scale 1, translation 0,0,0 across 20 ticks immediately, but get cut off at 40-30=10 ticks (this happens instantaneously before the tick 40 animation starts)

  • The animation will then start from scale 1.5, translation 0,1.5,0 and THEN start animating to scale 1, translation 0,0,0 over 20 ticks

The video displays this phenomenon EXACTLY as described above, however, the first loop seems to animate the 80 duration animation instantly, resulting in no animation at all. This was unexpected. The second loop illustrates the above description precisely.

I was never able to observe the actual intended animation. Something with the normal function of interpolation animation does not work properly.

Repro:
In a repeating command chain:

scoreboard players add @e[tag=loop] test 1
execute as @e[tag=loop,scores={test=20}] run data merge entity @s {transformation:{translation:[0f,2f,0f],scale:[2f,2f,2f]},start_interpolation:0,interpolation_duration:0}
execute as @e[tag=loop,scores={test=40}] run data merge entity @s {transformation:{translation:[0f,0f,0f],scale:[1f,1f,1f]},start_interpolation:0,interpolation_duration:80}

Then:

/scoreboard objectives add test
/summon block_display ~ ~1 ~ {block_state:{Name:"stone"},Tags:[loop]}

This is somewhat major issue as simply starting from a non-default transformation now becomes very difficult to make reliable: https://bugs.mojang.com/secure/attachment/527194/desynctest7.mp4

This repro is:
In a repeating command block chain

scoreboard players add @e[tag=loop] test 1
execute as @e[tag=loop,scores={test=21}] run data merge entity @s {transformation:{translation:[0.0f,0.0f,0.0f],scale:[0.1f,0.1f,0.1f]},start_interpolation:0,interpolation_duration:0,block_state:{Name:"stone"}}
execute as @e[tag=loop,scores={test=41}] run data merge entity @s {transformation:{translation:[2.0f,0.0f,0.0f],scale:[0.1f,0.1f,0.1f]},start_interpolation:0,interpolation_duration:40}
execute at @e[tag=loop,scores={test=81..}] run summon minecraft:block_display ~ ~ ~ {Tags:[loop]}
kill @e[tag=loop,scores={test=81..}]

Then run

/scoreboard objectives add test dummy
/summon minecraft:block_display ~ ~1 ~ {block_state:{Name:"stone"},Tags:[loop]}

This one is trying to best case it: I don't set the initial transformation until a full 20 ticks after summon, but still I cannot make a reliable starting animation. It still jumps to a different unexpected scale at tick 41 that is halfway between the default transformation and the transformation at tick 21.

FYI interpolation can be specified in the first command and it will still repro. The issue is unrelated to not setting those values.

Occasionally I can repro but a few rare times it works properly, but depends on where I spawn the block display. I believe the issue you're describing manifests occasionally when desync occurs and may be the equivalent of MC-260874. I believe there's some desync occurring between when the summon happens and when the data merge happens in the first command. Possibly doing your repro after triggering desync or running it on 20hz may make it visible. May be alright to keep this bug separate for now as this is a very simple repro.

See note in bug report I added: This bug is different from MC-259926 as this bug deals with live interpolation changes that are visible without the user rejoining or reloading mid-animation.

This issue also appeared in this release candidate (possibly pre4 as well)