0x01 S01PacketJoinGame

Welcomes the player into the world. Sends entity ID, gamemode, dimension, difficulty, max players, world type, and reduced debug info.

Clientbound (Server → Client) · PLAY · net/minecraft/network/play/server/S01PacketJoinGame.java
playerworldspawn

Fields

FieldTypeDescription
entityIdintThe player's own entity ID
gamemodeunsigned byte0=survival, 1=creative, 2=adventure, 3=spectator
dimensionbyte-1=nether, 0=overworld, 1=end
difficultyunsigned byteServer difficulty (0-3)
maxPlayersunsigned byteMax players (used to draw tab player list)
worldTypeString'default', 'flat', 'largeBiomes', 'amplified', 'customized'
reducedDebugInfobooleanWhether to hide coordinates in F3 debug screen

Wire Encoding

FieldTypeNotes
Entity IDintPlayer's own entity ID on the server
Gamemodeunsigned byte0=survival, 1=creative, 2=adventure, 3=spectator
Dimensionbyte-1=nether, 0=overworld, 1=end
Difficultyunsigned byte0=peaceful, 1=easy, 2=normal, 3=hard
Max Playersunsigned byteUsed for tab list rendering
Level TypeString'default', 'flat', 'largeBiomes', 'amplified', 'customized'
Reduced Debug InfobooleanIf true, hides coords from F3

MCP References

MCPNetHandlerPlayClient.handleJoinGame()

Handler Interface

HNDINetHandlerPlayClient

Notes

This is the VERY FIRST PLAY-state packet the client receives after login. It creates the WorldClient and EntityPlayerSP. All modules that depend on mc.theWorld or mc.thePlayer being non-null must wait for this packet. It's the universal 'onWorldLoad' trigger.

implementation Implementation Cases

SessionInfo (Tenacity 6.0)

Capture entity ID, gamemode, dimension on join. Used by modules for initialization.

Vanilla hook: EventReceivePacket
AutoRegister (Tenacity 6.0)

Capture entity ID, gamemode, dimension on join. Used by modules for initialization.

Vanilla hook: EventReceivePacket
NameProtect (Tenacity 6.0)

Capture entity ID, gamemode, dimension on join. Used by modules for initialization.

Vanilla hook: EventReceivePacket
← Back to all packets