[Issue] C2me related issues with Geyser players teleporting between dimentions.
MichaelBTryin opened this issue ยท 15 comments
Describe the bug
When Bedrock players (Via Geyser) Try to teleport via SSWaystones from the Overworld to the Nether for instance, their game doesn't render chunks, forcing them to reload. After that, they are still where they started.
I have gone to SSWaystones Github Issues, but others indicate that removing this mod fixes the issue.
[
MarkHarrisMedia said on Sep 6, 2024 on #8
" Removed 1: c2me-fabric-mc1.21-0.2.0+alpha.11.109.jar " <======== I have that
" Thankfully, the server seems to be working perfectly fine despite the annoying error message on console.
I'm just glad our bedrock players can now teleport to all waystones no matter what dimension they are standing in or going to. :) "
This indicates that c2me is at fault here.
]
I would like to keep using this mod, hence the issue report..
To Reproduce
Steps to reproduce the behavior:
1. With Server-Side Waystones [sswaystones-1.1.6.jar] and Geyser [Geyser version 2.6.0-b751 (git-master-5836dab)].
2. Then have a Bedrock player Join the world.
3. Have a waystone in both the Overworld and another dimention (Make global for ez access to all users)
4. Right click on a waystone while a Bedrock player.
5. Go to teleport to the other waystone.
6. You should find that the game stops rendering chunks, and gets stuck.
7. Relogging results in still being in the original location.
Expected behavior
The Player expects to teleport to the Waypoint in the other Dimention
Screenshots
1.Tried to use Waystone from Overworld to the Nether.

_
2.Reloaded the game:

Runtime info (please complete the following information):
OS: linux
Minecraft version: 1.21.4 - Fabric 1.21.4, FabricLoader 0.16.10, Fabric Installer Version 1.0.1
Mod version: c2me-fabric-mc1.21.4-0.3.1+rc.1.0.jar
Mod branch:
Crash reports / logs
Other mods
Checklist
- [ x] I am using the official version of the mod.
- I tried the latest development version but the issue persists.
- [x ] I searched for similar open issues and could not find an existing bug report on this. -[Other mod issue page refrenced reporting here, but I cannot find any issue relating to it]
Additional context
I am troubleshooting mod versions for all three, but This does seem to be where others have ended up finding the conflict though their own troubleshooting.
Again, I don't want to remove this mod if I don't have to...
Thank you for your hard work maintaining such a gud chunk performance mod!
Also, Thank you for your time reading this.
Have a gud rest of your day!
I think this is a Geyser bug and (probably) a sswaystones bug.
https://github.com/sylvxa/sswaystones/blob/bd94cc30fb04207c7fb0342dcd337a7be8b1617c/src/main/java/lol/sylvie/sswaystones/gui/GeyserViewerGui.java#L59
This callback is fired asynchronously, and it is not safe to teleport the player without going back to the server thread.
Also, Geyser doesn't seem to have documented this behavior, which is probably misleading and is the source of many subtle bugs.
This behavior have tripped the undefined behavior sanitization (integrity checks) in C2ME.
So the fix is:
- sswaystones should wrap the callback body with
server.execute() - Geyser should document this behavior, or just make the callback fire on server thread.
Server Logs:
[
07:48:51
MichaelBTryn has disconnected from the Java server because of Bedrock client disconnected
Geyser Fabric connection thread-6-2/INFO07:48:51
Floodgate player logged in as MichaelBTryin disconnected
Server thread/INFO07:48:52
MichaelBTryin lost connection: Disconnected
MichaelBTryin left the game
Server thread/WARN07:48:52
Entity class_3222['MichaelBTryin'/10359, l='ServerLevel[PH0Sphere_26-01-25_TerryCrusePicklePotatoBanktonCorkscrew]', x=-17776.83, y=67.00, z=1330.41, removed=CHANGED_DIMENSION]: wasn't found in section class_4076{x=-1112, y=4, z=83} (destroying due to UNLOADED_WITH_PLAYER)
epollEventLoopGroup-4-2/INFO07:48:59
Player connected with username MichaelBTryn
localSession-7-2/INFO07:48:59
MichaelBTryn (logged in as: MichaelBTryn) has connected to the Java server
pool-6-thread-2/INFO07:48:59
Floodgate player who is logged in as MichaelBTryin 76d107ad-3183-4d1b-b2e2-0547a1a41eda joined
Server thread/INFO07:48:59
MichaelBTryin[/172.28.128.1:0]: logged in with entity id 11559 at (-17776.828, 67.0, 1330.4102)
Floodgate player logged in as MichaelBTryin joined (UUID: 76d107ad-3183-4d1b-b2e2-0547a1a41eda)
MichaelBTryin joined the game
]
Please provide full logs
https://wiki.fabricmc.net/player:tutorials:logs
I'm not sure how to get logs for the client, when this only happens with Bedrock(Geyser) Players, on a Java server...
I'm not sure how to get logs for the client, when this only happens with Bedrock(Geyser) Players, on a Java server...
Provide server logs
Here is the full Server Log File:
https://pastebin.com/iG0bYp2h
Focus:
[07:48:52] [Server thread/WARN]: Entity class_3222['MichaelBTryin'/10359, l='ServerLevel[PH0Sphere_26-01-25_TerryCrusePicklePotatoBanktonCorkscrew]', x=-17776.83, y=67.00, z=1330.41, removed=CHANGED_DIMENSION]
I found a folder for Bedrock called 'Logs' But the file isn't plain text:

It was fixed by removing your mod, So I'm not sure what's at fault ๐
.
I've just stopped using C2ME, and it works normally ๐ค.
Like I know, I ain't no Mod dev.
It was fixed by removing your mod, So I'm not sure what's at fault ๐ . I've just stopped using C2ME, and it works normally ๐ค. Like I know, I ain't no Mod dev.
It was fixed by removing your mod, So I'm not sure what's at fault ๐ . I've just stopped using C2ME, and it works normally ๐ค. Like I know, I ain't no Mod dev.
Btw, that was my Issue Thread XD
I have just got around to testing it, and it works.
Thank you for everyone's time and effort into solving this! ๐
๐ฅฒ๐๐
I think this is a Geyser bug and (probably) a sswaystones bug.
https://github.com/sylvxa/sswaystones/blob/bd94cc30fb04207c7fb0342dcd337a7be8b1617c/src/main/java/lol/sylvie/sswaystones/gui/GeyserViewerGui.java#L59
This callback is fired asynchronously, and it is not safe to teleport the player without going back to the server thread.
Also, Geyser doesn't seem to have documented this behavior, which is probably misleading and is the source of many subtle bugs.
This behavior have tripped the undefined behavior sanitization (integrity checks) in C2ME.So the fix is:
- sswaystones should wrap the callback body with
server.execute()- Geyser should document this behavior, or just make the callback fire on server thread.
Thanks for the debugging! Cumulus' (zhe Bedrock GUI form library provided by both Geyser and Floodgate) response handlers are indeed executed async whenever the client responds to the form. Will add javadocs there to warn about running server methods that are supposed to be ran on the serve thread :)
