The bug
After upgrading my server from 20w13b to 20w14a, my client crashes on join with the error:
The game crashed whilst unexpected error
Error: java.lang.IllegalStateException: Tag minecraft:water used before it was bound
Code analysis
See comment
Linked issues
is duplicated by 3
relates to 1
Attachments
Comments 7
Have just encountered this bug. Unable to play on a snapshot server. Crashes to desktop. Have uploaded crash report too.
I found the same issue and attached the 20w13b copy of my server's world.
Don't know if related, but someone logged in with the 20w14infinity client before and likely got into an infinite dimention when got into it.
Can confirm that removing the data of 20w14a from .minecraft/versions folder and redownloading with launcher, for some reason fixed my issue.
Thought that deleting only the infinity version might help, it did not.
Spoke too soon. After closing current session. I got the same crash with error message:
"The game crashed whilst unexpected error
Error: java.lang.IllegalStateException: Tag minecraft:water used before it was bound"
Uploaded new crash report.
Will try deleting data and redownloading as before.
Result: As before the game functions. If I leave a server and rejoin, the game still works. HOWEVER if the game itself is closed completely, then the error reoccurs. (Players would have to delete their version everytime they wish to start the game again.)
Replication:
This bug can only be replicated when you join a remote server right after you freshly launched minecraft. If you've opened a local game or joined a server successfully, this crash won't be replicated.
Analysis:
Since 20w14a, tags have been refactored. As a result, tags, by default, are initialized with dummy entries that throw this IllegalStateException when called (before the tag container is set by the loaded local save). Because joining a local game or a remote server successfully previously would have set the tag container (no longer the dummy ones that crash), and as a result it won't crash.
When playing on remote servers, tags are sent by a Tag synchronization packet, yet the client starts rendering when it receives a Join game packet. As a result, when the game starts rendering fluids and checking tags, it might not have yet processed the tag packet if the network is bad, causing usage of dummy tags that throw exceptions and crash the game.
Would you be willing to attach the 20w13b copy of the world for help in reproducing this (if you still have it)?