The slot data structure is how Minecraft represents an item and its associated data in the minecraft protocol
The structure consists of at least a short, which gives the item/block ID . A value of
-1 signifies that the slot is empty, and no further data follows.
If the block ID is not
-1, three more fields follow. These fields are a byte (item count), a short (item damage), and another short (length of optional NBT data).
If the short (length of NBT data) is
-1, there is no NBT data, and no further data follows. Otherwise, a byte array will follow.
The byte array contains gzipped (that is RFC 1952 rather than RFC 1950) NBT data. The format of this data is as follows:
COMPOUND: '' LIST: 'ench' COMPOUND SHORT: 'id' SHORT: 'lvl' END COMPOUND ...etc END END
Each of the inner, untagged COMPOUNDs represents an enchantment, with its ID and level given as child SHORT elements.
ff ff | empty slot 01 16 01 00 00 ff ff | a diamond pickaxe 01 16 01 00 00 00 04 CA FE BA BE | a diamond pickaxe with (made-up) NBT data