+ 0 player's entity state as predicted by the client
+ 42 movement input, vec3n
+ 48 active actions, 8bit bit field, first three bits are primary, secondary, and tertiary
+ 49 selected inventory slot, 8bit unsigned int
+Length: 50
+
+
+Spawn Entity
+------------
+
+Sent by the server to notify the client of an entity entering spawn range.
+
+Code: 5
+Payload:
+ 0 entity ID, 32bit unsigned int
+ 4 entity's model ID, 32bit unsigned int
+ 8 entity state
+ 50 bounding box of the entity, 6x 32bit float
+ 74 flags, 32bit bitfield with boolean values
+ 1: world collision
+ 78 entity name, max 32 byte UTF-8 string
+Length: 79 - 110
+
+
+Despawn Entity
+--------------
+
+Sent by the server to notify the client of an entity leaving spawn range.
+
+Code: 6
+Payload:
+ 0 entity ID, 32bit unsigned int
+Length: 4
+
+
+Entity Update
+-------------
+
+Sent by the server to notify the client of updated entity properties.
+Contained entities must be ordered by ascending entity ID.
+
+Code: 7
+Payload:
+ 0 number of entities, 32bit int, 1-12
+ 4 base for chunk coordinates, vec3i
+ 16 entity ID, 32bit unsigned int
+ 20 entity state with vec3b as chunk position (rather than vec3i)
+ 53 next entity...
+Length: 16 + multiple of 37, max 460
+
+
+Player Correction
+-----------------
+
+Sent by the server to tell a client that its prediction is way off.
+
+Code: 8
+Payload:
+ 0 sequence number of the offending packet, 16bit unsigned int
+ 2 entity state of the player's entity on the server
+Length: 44
+
+
+Chunk Begin
+-----------
+
+Sent by the server to inform the client of an upcoming chunk transmission.
+The client may send this packet to the server to re-request a chunk
+transmission. In that case fields other than the chunk coordinates are
+ignored. Also, the server may choose not to resend the chunk (e.g. if the
+player is too far away from it).
+
+Code: 9
+Payload:
+ 0 transmission ID, used for reference with Chunk Data packets, 32bit unsigned int
+ 4 flags, 32bit bitfield with boolean values
+ 1: compressed
+ 8 chunk coordinates, vec3i
+ 20 data size, 32bit unsigned int
+Length: 24
+
+
+Chunk Data
+----------
+
+Raw chunk data sent by the server, optionally compressed with zlib.
+
+Code: 10
+Payload:
+ 0 transmission ID, references the Chunk Begin packet this data belongs to, 32bit unsigned int
+ 4 block offset, offset of this block inside the whole data, 32bit unsigned int
+ 8 block size, size of the data block, 32bit unsigned int
+ 12 data, raw data
+Length: 12-484
+
+
+Block Update
+------------
+
+Sent by the server whenever one or more block in a chunk have changed.
+
+Code: 11
+Payload:
+ 0 chunk coordinates, vec3i
+ 12 number of blocks, 32bit unsigned int, 1-78
+ 16 first block index, 16bit unsigned int
+ 18 first block data, 32bit
+ 22 second block index...
+Length: 16 + multiple of 6, max 484
+
+
+Message
+-------
+
+Sent by the client when the user submits a line on the chat input.
+Sent by the server on various events like player chat, server status, command output, etc.
+
+Code: 12
+Payload:
+ 0 message type, 8bit unsigned int: 0 = notification, 1 = chat
+ 1 referral, 32bit unsigned int, entity ID if type = 1
+ 5 message, max 450 byte UTF-8 string, should be zero terminated if shorter
+Length: 6-455