Classic Protocol Extension: Difference between revisions
imported>F m Formatting fixes |
imported>F No edit summary |
||
Line 8: | Line 8: | ||
At this time, client should send '''ExtInfo''' packet of its own, followed by the list of mutually-supported extensions. After receiving the last of '''ExtEntry''' packets, server should activate the mutually-supported extensions, and resume normal login procedure. | At this time, client should send '''ExtInfo''' packet of its own, followed by the list of mutually-supported extensions. After receiving the last of '''ExtEntry''' packets, server should activate the mutually-supported extensions, and resume normal login procedure. | ||
===ExtInfo=== | ===ExtInfo Packet=== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- class="row0" | |- class="row0" | ||
Line 27: | Line 27: | ||
| class="col2 centeralign" | 1 | | class="col2 centeralign" | 1 | ||
| class="col3" | Between 0 and 32767 | | class="col3" | Between 0 and 32767 | ||
|- class=" | |- class="row3" | ||
| class="col0" | Total Size: | | class="col0" | Total Size: | ||
| class="col1 rightalign" colspan="4" | 67 bytes | | class="col1 rightalign" colspan="4" | 67 bytes | ||
|} | |} | ||
===ExtEntry=== | ===ExtEntry Packet=== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- class="row0" | |- class="row0" | ||
Line 51: | Line 51: | ||
| class="col2 centeralign" | 1 | | class="col2 centeralign" | 1 | ||
| class="col3" | | | class="col3" | | ||
|- class=" | |- class="row3" | ||
| class="col0" | Total Size: | | class="col0" | Total Size: | ||
| class="col1 rightalign" colspan="4" | 69 bytes | | class="col1 rightalign" colspan="4" | 69 bytes | ||
|} | |||
==Extensions== | |||
===ClickDistance=== | |||
:Used to extend or restrict the distance at which client may click blocks, controlled by the server. Click range is given in player-space units (32 units per block). Upon receiving a '''SetClickDistance''' packet, client should immediately apply the change. | |||
====SetClickDistance packet==== | |||
''Server to Client''' | |||
{| class="wikitable" | |||
|- class="row0" | |||
| class="col0" | Packet ID | |||
| class="col1" | Field Name | |||
| class="col2" | Field Type | |||
| class="col3" | Example | |||
| class="col4" | Notes | |||
|- class="row1" | |||
| class="col0 centeralign" | 0x20 | |||
| class="col1 centeralign" | Distance | |||
| class="col2 centeralign" | short | |||
| class="col3 centeralign" | 160 | |||
| class="col4" | | |||
|- class="row2" | |||
| class="col0" | Total Size: | |||
| class="col1 rightalign" colspan="4" | 3 bytes | |||
|} | |} |
Revision as of 16:11, 11 October 2012
Negotiation
Extended clients should use magic number of 0x42
for the padding byte of the Player Identification packet. All standard/non-extended clients pad this packet with 0x00
, so extended servers should be able to easily notice extended clients. All standard/non-extended servers will ignore the modified padding byte, preserving compatibility.
When the server sees that padding byte is 0x42
, it should immediately reply with an ExtInfo packet, followed by zero or more ExtEntry packets, and await a response (ExtInfo packet) from the client.
After the client has sent its identification packet, it should await a response. If the server responds with an ExtInfo packet, it should parse it and any ExtEntry packets that follow. Client should then compare its locally-supported set of extensions with the list of extensions provided by the server, and find an intersection of these sets. These are the mutually-supported extensions.
At this time, client should send ExtInfo packet of its own, followed by the list of mutually-supported extensions. After receiving the last of ExtEntry packets, server should activate the mutually-supported extensions, and resume normal login procedure.
ExtInfo Packet
Packet ID | Field Name | Field Type | Example | Notes |
0x10 | AppName | string | MyServer
|
Client or server software name |
ExtensionCount | short | 1 | Between 0 and 32767 | |
Total Size: | 67 bytes |
ExtEntry Packet
Packet ID | Field Name | Field Type | Example | Notes |
0x11 | ExtName | string | MyExtension
|
Name of a supported extension |
Version | int | 1 | ||
Total Size: | 69 bytes |
Extensions
ClickDistance
- Used to extend or restrict the distance at which client may click blocks, controlled by the server. Click range is given in player-space units (32 units per block). Upon receiving a SetClickDistance packet, client should immediately apply the change.
SetClickDistance packet
Server to Client'
Packet ID | Field Name | Field Type | Example | Notes |
0x20 | Distance | short | 160 | |
Total Size: | 3 bytes |