The bug
When joining a world or switching dimensions while in spectator mode, the game will forget the last game mode you were in and will put you into spectator mode (The game mode you are already in) when using F3 + N or F3 + F4.
Expected result
You should be set to survival/creative/adventure (whatever your last game mode was) whenever you use F3 + N or F3 + F4.
To reproduce
Steps (1)
Join a world.
Set your game mode to spectator mode.
Use the /execute command to teleport into the nether.
Press F3 + N to attempt to switch back to your previous game mode.
Steps (2)
Join a world.
Set your game mode to spectator mode.
Leave and rejoin the world.
Press F3 + N to attempt to switch back to your previous game mode.
Steps (3)
Join a world.
/gamemode creative
/gamemode spectator
Press F3 + F4
✔ The game switches back to creative mode
/kill or rejoin the world/server
Press F3 + F4
❌ The game switches back to spectator mode
Code analysis
Code analysis by @unknown can be found in MC-260836 (Yarn mappings).
ServerPlayerInteractionManager#changeGameMode
(1.19.3):
ServerPlayerInteractionManager#changeGameMode
(prior to 1.19.3):
The previous game mode being set in ServerPlayerInteractionManager#setGameMode
is no longer being set to the existing gamemode but instead the previous one, meaning that this never changes - it is always null, unless the player had set their previous gamemode in a version prior to 1.19.3.
Linked issues
is duplicated by 7
relates to 1
Attachments
Comments 4
Confirmed in 1.21.3
As stated in the comments section here and in the comments section of the duplicate, there are worlds that are reproduced and worlds that are not reproduced. This bug is very troublesome. (Using a translator)
Confirmed, previousPlayerGameType is set to the current game mode upon switching dimension, even if that game mode is spectator.
Edit: actually, that value never seems to change for me anymore... but still, confirmed in a specific world though.