Difference between revisions of "Classic Protocol Extension"
m (→Negotiation) |
|||
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. | ||
− | + | :<h3>ExtInfo Packet</h3> | |
− | {| class="wikitable" | + | :{| class="wikitable" |
|- class="row0" | |- class="row0" | ||
| class="col0" | Packet ID | | class="col0" | Packet ID | ||
Line 32: | Line 32: | ||
|} | |} | ||
− | + | :<h3>ExtEntry Packet</h3> | |
− | {| class="wikitable" | + | :{| class="wikitable" |
|- class="row0" | |- class="row0" | ||
| class="col0" | Packet ID | | class="col0" | Packet ID |
Revision as of 16:13, 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