✅ |
Client connects to server |
✅ |
C→S: Handshake State=2 |
✅ |
C→S: Login Start |
✅ |
S→C: Encryption Request |
✅ |
Client auth |
✅ |
C→S: Encryption Response |
✅ |
Server auth, both enable encryption |
❌ |
S→C: Set Compression (Optional, enables compression) |
✅ |
S→C: Login Success |
✅ |
S→C: Join Game |
✅ |
S→C: Plugin Message: minecraft:brand with the server's brand (Optional) |
✅ |
S→C: Server Difficulty (Optional) |
✅ |
S→C: Player Abilities (Optional) |
✅ |
C→S: Plugin Message: minecraft:brand with the client's brand (Optional) |
✅ |
C→S: Client Settings |
✅ |
S→C: Held Item Change |
➕ |
C→S: Held Item Change (serverbound, Optional?) (The wiki does not mention this) |
✅ |
S→C: Declare Recipes |
✅ |
S→C: Tags |
✅ |
S→C: Entity Status (The wiki does not specify which status, assuming op permission level) |
✅ |
S→C: Declare Commands |
✅ |
S→C: Unlock Recipes |
🟡 |
S→C: Player Position And Look (This is not true, the first position packet will make the player leave the loading screen) |
❌ |
S→C: Player Info (Add Player action) |
❌ |
S→C: Player Info (Update latency action) |
✅ |
S→C: Update View Position |
✅ |
S→C: Update Light (One sent for each chunk in a square centered on the player's position) |
✅ |
S→C: Chunk Data (One sent for each chunk in a square centered on the player's position) |
✅ |
S→C: World Border (Once the world is finished loading) |
✅ |
S→C: Spawn Position (“home” spawn, not where the client will spawn on login) |
✅ |
S→C: Player Position And Look (Required, tells the client they're ready to spawn) |
✅ |
C→S: Teleport Confirm |
✅ |
C→S: Player Position And Look (to confirm the spawn position) |
❌ |
C→S: Client Status (sent either before or while receiving chunks, further testing needed, server handles correctly if not sent) |
❌ |
S→C: inventory, entities, etc |