Geyser icon indicating copy to clipboard operation
Geyser copied to clipboard

Bedrock clients are unable to crawl when using the GSit plugin

Open akemin-dayo opened this issue 3 years ago • 8 comments

Describe the bug

This issue concerns a (fairly popular) third-party Spigot plugin, GSit.

Possibly-related past PRs include #1518 and #1510.

What works fine

  • Sitting on blocks using either the /sit command or right-clicking on a block to sit, as well as seeing other players do so.
  • Sitting on other players by right-clicking on them, as well as seeing other players do so.
  • Laying on blocks using the /lay command, as well as seeing other players do so.
  • "Bellyflopping" on blocks using the /bellyflop command, as well as seeing other players do so.
  • Seeing other players crawl on blocks when they use the /crawl command.
    • ※ NOTE: This is probably an uncorrectable limitation of how Bedrock works, but any crawling or "bellyflopping" player rendered by a Bedrock client will have their arms constantly play the swimming animation. Java does not animate "swimming" player arms when the player in question is not actually moving.
  • ~~Riding on mobs using the /ride command.~~ This functionality was removed from the GSit plugin, so it is no longer applicable.

Currently-occurring issues

  • [Low, visual issue only] Bedrock clients are unable to play the spinning animation (which actually seems to be the Riptide animation…?) that a player using the newly-added /spin command will be playing. This applies to both the Bedrock player in question, and also any other player who uses the command.
  • [Medium-high, plugin feature missing] The crawling functionality provided by the /crawl command is completely broken. Attempting to use it results in erratic, juddery movement, and the Bedrock player's camera viewpoint acts as if they were standing and walking normally, albeit with a significantly lowered FoV.
    • As noted above, there are no issues regarding Bedrock clients rendering other crawling players.
    • This appears to be a regression (either that, or GSit might have changed the mechanism in which they use to trigger crawling mode), since /crawl functionality worked fine correctly at least on Geyser 1.4.0 3c9f628.

Fixed issues

  • [✅ Working as of Geyser 1.4.0 3c9f628] ~~[Severe, gameplay-breaking] If another player on a server ever uses the /lay or /crawl commands while a Bedrock client is joined, that player will become completely invisible to Bedrock clients until the Bedrock clients in question completely quit and re-join the server.~~
    • ~~If the affected Java player quits and re-joins, this will also fix the problem.~~
  • [✅ Working as of Geyser 1.4.0 3c9f628] ~~[Medium, aesthetic functionality missing] Bedrock players are unable to see themselves in the /lay or /crawl positions, but their own player model will become visible again once they exit the position (unlike what happens with other players).~~
  • [✅ Working as of Geyser 2.0.7 d499e22] ~~[Low, visual issue only] Bedrock clients will draw any player that is sitting on a block (both themselves and other players) to appear to float above the block they are sitting on.~~
  • [✅ Working as of Geyser 2.0.7 d499e22] ~~[Medium-high, plugin feature missing] If a Bedrock player right-clicks to sit on top of another player, the Bedrock player is unable to "follow" the other player when the other player moves. (Sub-issue ③ found below also occurs, too.)~~
    • ~~Instead, the Bedrock player has fully free movement, but only to themselves. To other Java players (and to the game server!), they appear correctly sat on top of the other player's head, with their position correctly updating with ("following") the other player's.~~
    • ~~When the Bedrock player gets off of the other player, they will be instantly teleported to the position they should have been at when riding on top of the other player.~~
  • [✅ Working as of Geyser 2.0.7 d499e22] ~~[High, user inconveniencing bug] The "teleported to the correct position" behaviour now causes Bedrock players to wind up in a blockless void if the other player moves far away enough from the original point. This renders the Bedrock player completely unable to move until they teleport out somehow (such as via /tp, /mvspawn, /spawn, etc.). Going off of my basic understanding of how Geyser works, the cause of this might have something to do with the chunk caching feature (which I have enabled).~~
  • [✅ Working as of Geyser 2.0.7 d499e22] ~~[Medium-high, potentially confusing aesthetic issue] If a player (Player A) uses right-clicks to sit on top of another player (Player B), Bedrock clients will be unable to see Player A sitting on top of Player B.~~
    • ~~Player A's rotational/looking/punching movements are still visible, but they appear to be frozen in place in the exact position where they began sitting on top of Player B.~~
    • ~~When Player A gets off of Player B, Player A will, on Bedrock clients, appear to instantly teleport to the current position of Player B.~~

Minor aesthetic issues that probably can't reasonably be fixed

  • [Minor aesthetic oddity] A seemingly unlocalised(?) toast popup appears when Bedrock players use any GSit command, with the text action.hint.exit.armor_stand or action.hint.exit.area_effect_cloud (only for sitting on another player). The custom "Use your Sneak Key to get up!" toast generated by GSit displays correctly, though.

To reproduce

  1. Download and install GSit on a server.
  2. Connect to it using 3 (or more) clients — at least one Bedrock client and at least two Java clients.
  3. Test the scenarios listed above in the bug description and observe the behaviour from both Java and Bedrock.

Expected behaviour

Bedrock behaviour should match Java behaviour.

Server Version (and GSit version)

  • 2022/08/23: Paper version git-Paper-411 (MC: 1.17.1) (Implementing API version 1.17.1-R0.1-SNAPSHOT) (Git: 6625db3 on ver/1.17.1), with GSit version 1.2.4 (yes, they reset the version number)
  • 2021/12/09: ~~Paper version git-Paper-397 (MC: 1.17.1) (Implementing API version 1.17.1-R0.1-SNAPSHOT) (Git: 1a83e90 on ver/1.17.1), with GSit version 6.0.4.1~~
  • 2021/06/18: ~~Paper version git-Paper-778 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)~~
  • 2021/04/27: ~~Paper version git-Paper-629 (MC: 1.16.5) (Implementing API version 1.16.5-R0.1-SNAPSHOT)~~

Geyser Version

  • 2022/08/23: 2.0.7-SNAPSHOT (git-master-d499e22), with Geyser Optional Pack enabled
  • 2021/12/09: ~~2.0.0-SNAPSHOT (git-master-8c7a3d1), with Geyser Optional Pack enabled~~
  • 2021/06/18: ~~1.4.0-SNAPSHOT (git-master-3c9f628), with Geyser Optional Pack enabled~~
  • 2021/04/27: ~~1.2.1-SNAPSHOT (git-master-7d80dff)~~

Minecraft: Bedrock Edition Version

  • 2022/08/23: 1.19.20 (Windows 10 UWP, Sony PlayStation 4/5, iOS, Android)
  • 2021/12/09: ~~1.18.1 (Windows 10 UWP, iOS, Android)~~
  • 2021/06/18: ~~1.17.0 (Windows 10 UWP, iOS, Android)~~
  • 2021/04/27: ~~1.16.221 (Windows 10 UWP, iOS)~~

akemin-dayo avatar Apr 27 '21 21:04 akemin-dayo

Thank you for the highly detailed report! Developers love detail.

A seemingly unlocalised(?) toast popup appears when Bedrock players use any GSit command, with the text action.hint.exit.armor_stand or action.hint.exit.area_effect_cloud (only for sitting on another player).

This one probably isn't reasonably fixable without providing a resource pack with localization for those strings - and at that point, should we provide it for every entity?

Camotoy avatar Apr 27 '21 22:04 Camotoy

Thank you for the highly detailed report! Developers love detail.

As a fellow (mostly Objective-C, but also Java/other languages) developer, I understand the pain of receiving vague / incomprehensible bug reports that do not accurately describe the issue l o l

This one probably isn't reasonably fixable without providing a resource pack with localization for those strings - and at that point, should we provide it for every entity?

Don't think it really makes sense to do that — it's a minor visual quirk at most anyway. The real issue is… well, everything else above ;P

akemin-dayo avatar Apr 27 '21 22:04 akemin-dayo

Tested this again on the most recent version of Geyser (1.4.0 3c9f628, with the optional resource pack enabled) and it seems like the major issues have been resolved!

Laying and crawling now work perfectly, with behaviour identical to what is observed on Java Edition.

I've updated the original post accordingly.

The issues with sitting on other players still persist, though.

(On second thought, these fixes might also be the result of a GSit plugin update rather than a change in Geyser… I should test that later.)

akemin-dayo avatar Jun 19 '21 02:06 akemin-dayo

Which of these issues still occur?

For the toast popup, see this recent issue: https://github.com/GeyserMC/Geyser/issues/2691#issuecomment-989072246

Konicai avatar Dec 08 '21 19:12 Konicai

I have just updated the original post with which issues are still applicable.

Here's a short summary:

  • Sitting on blocks still works, but now has a minor visual bug causing Bedrock clients to draw sitting players (self and others) as floating in the air.
  • Laying on blocks still works.
  • Crawling behaviour is now somewhat broken. Bedrock clients can draw crawling players (self and others) correctly, though.
  • Sitting on other players is still broken.
    • There is a new bug that occurs when you stop sitting on another player and get teleported to the correct location, if the other player has travelled significantly away from the original location.

akemin-dayo avatar Dec 09 '21 12:12 akemin-dayo

So, I just tested this again — the relevant versions of all software involved are in the original post, which I've updated.

A bit late for this feedback I suppose, but I can confirm that PR #2701 solves pretty much every issue with GSit… except for one.

Crawling using the /crawl command is still completely broken.

Aside from that, everything else (including sitting on other players, which was probably the most broken functionality before) works as well as it does on Java Edition!

———

※ EDIT: Ah, it seems that they've added a new feature to the plugin called /spin. Bedrock players are not able to see the animation that this feature plays. I'll add a more detailed writeup to the original post later.

akemin-dayo avatar Aug 22 '22 16:08 akemin-dayo

Still reproducible as of 1.20.71

Kas-tle avatar Mar 17 '24 04:03 Kas-tle

And /lay is again broken

Kas-tle avatar Mar 17 '24 04:03 Kas-tle

it fixe ?

itorz7 avatar Jul 11 '24 13:07 itorz7