-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Minor
-
None
-
Affects Version/s: None
-
None
-
Environment:
macOS 10.13.4 Beta (17E182a)
Java(TM) SE Runtime Environment (build 9+181)
CraftBukkit version git-Bukkit-7e94e65 (MC: 1.12.2) (Implementing API version 1.12.2-R0.1-SNAPSHOT)
Most obvious when stepping through the exit portal in the End dimension without sleeping in a bed beforehand, when players are moved to a world avoidSuffocation is false in moveToWorld() which sticks the player at the exact spawn point and suffocates them. Vanilla Minecraft will safely spawn the player on the ground above.
After some investigation, I'm not sure avoidSuffocation is needed at all anymore. It appears Minecraft will avoid suffocation when going through portals entirely in 1.9+.
(I believe internally they also use slightly different methods to determine spawn location. Sleeping in a bed, for example, Vanilla will place you on the adjacent block when to exit The End but CraftBukkit places you on the corner of the bed itself. If I had to guess they, Mojang, use the same code for respawning/sleeping as they do for changing worlds.)
Steps to reproduce:
- Run a CraftBukkit server and Vanilla (Mojang provided) server with the same seed. (I'm using seed 5858123021922510744 for my testing.)
- In each of them, go to The End (/locate Stronghold, /tp x y z), kill the Ender Dragon (/kill @e[type=ender_dragon]), and jump into the Exit Portal, hit ESC to skip the credits.
- You will spawn normally above ground in the Vanilla server. You will spawn in the ground and suffocate in the CraftBukkit server.
Thank you.