Difference between revisions of "Classic Protocol Extension"
m (Formatting fixes) |
|||
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
Contents
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 |