Sodium client hangs on "Loading terrain..." when logging into a Paper 1.18.2 server while dead
mdcfe opened this issue · 18 comments
Version information
mc1.18.2-0.4.1+build.15
Expected Behavior
The client logs into the server and sees the "You died!" screen, with the option to either respawn or return to the title screen (disconnecting from the server).
Actual Behavior
The client hangs at the "Loading terrain..." screen and does not progress.
Reproduction Steps
- Connect to a Paper server.
- Die (in my case I jumped into fire)
- Rather than respawning, click
Title Screen
to disconnect from the server.- At this point you will stay dead until you next log in.
- Try to connect to the server again.
- A vanilla client shows the "Loading terrain..." screen for a brief moment, then displays the same "You died!" screen as before logging off.
- A Sodium client will reach the "Loading terrain..." screen and stay there indefinitely.
Java version
OpenJDK 64-Bit Server VM Temurin-17.0.1+12 (build 17.0.1+12, mixed mode, sharing)
CPU
AMD Ryzen 5 3600 6-Core Processor
GPU
NVIDIA GeForce RTX 2060
Additional information
Paper sends an empty chunk at the player's current position when they join. This is intended to close the ReceivingLevelScreen
.
If a player is dead when they join, Paper won't send the actual chunks until the player respawns.
Paper version
This server is running Paper version git-Paper-"1358d1e" (MC: 1.18.2) (Implementing API version 1.18.2-R0.1-SNAPSHOT) (Git: 1358d1e)
You are running the latest version
Previous version: git-Paper-"ab03538" (MC: 1.18.2)
The problem is that Paper isn't sending the neighboring chunks around the player while in this state, which leads to Sodium never submitting the chunk the player is within for rebuilds. The condition for leaving the "Loading terrain" screen requires that a chunk is built for the location you're standing in, and given it never gets built without the neighbors being there, the game freezes.
We need to patch this on our side, as I could imagine other edge cases which would freeze the game. We're finishing up Sodium 0.5 right now, and one of the final work items for it is cleaning up the chunk building/loading code. So I imagine this will only get fixed in the next major release.
The alternative is that Paper sends some empty chunks around the player so that Sodium will feel confident enough to re-build things. But I don't really see a reason for them to implement workarounds on their side.
This happened to me and my friend on a pvp server all the time, we had no clue what it was so we and some other people had to ask the owner every time it happened. Fortunately he found this and sent it to us xD
I confirm the issue. This happened to me and several players on my server. Everything is fine without Sodium.
I had this exact same problem when trying to connect to a considerably buggy lifesteal server experiencing null pointer errors, it was a perfect sequence of events where i was in combat, got disconnected and thus killed by combat logger, i tried to rejoin back as fast as possible and then my computer overheated.
I was running the Fabulously Optimized mod pack which included Sodium.
Same issue, I had to tell the server owner to delete my playerdata file for the third time in this week now! Super annoying.
No as that exits the server and this is an issue when trying to join a server
Same issue, I had to tell the server owner to delete my playerdata file for the third time in this week now! Super annoying.
Join without sodium
Happened to me on test.2b2t.org (paper 1.18.2) while i was NOT dead and to my friend on my paper 1.18.2 server, joining works after removing sodium or the player.dat file