Difference between revisions of "Slot Data"

From wiki.vg
Jump to navigation Jump to search
(add examples)
(Improved formatting, correct if necessary)
(12 intermediate revisions by 10 users not shown)
Line 1: Line 1:
The '''slot''' data structure is how minecraft represents an item and its associated data in the [[Protocol|minecraft protocol]]
+
The '''Slot''' data structure is how Minecraft represents an item and its associated data in the [[Protocol|Minecraft Protocol]].
 
 
== Packets ==
 
 
 
* [[Protocol#Entity_Equipment_.280x05.29|0x05 Entity Equipment]]
 
* [[Protocol#Player_Block_Placement_.280x0F.29|0x0F Player Block Placement]]
 
* [[Protocol#Spawn Dropped Item (0x15)| 0x15 Spawn Dropped Item]]
 
* [[Protocol#Window_click_.280x66.29|0x66 Window Click]]
 
* [[Protocol#Set_slot_.280x67.29|0x67 Set Slot]]
 
* [[Protocol#Window_items_.280x68.29|0x68 Window Items]] (as an array)
 
* [[Protocol#Creative_inventory_action_.280x6B.29|0x6B Creative Inventory Action]]
 
  
 
== Format ==
 
== Format ==
  
The structure consists of at least a short, which gives the item/block ID [http://www.minecraftwiki.net/wiki/Block_ids#Block_IDs_.28Minecraft_Beta.29]. A value of <code>-1</code> signifies that the slot is empty, and no further data follows.
+
{| class="wikitable"
 
+
! Name
If the block ID is not <code>-1</code>, three more fields follow. These fields are a byte (item count), a short (item damage), and another short (length of item metadata).
+
! Type
 
+
! Meaning
If the short (length of item metadata) is <code>-1</code>, there is no item metadata, and no further data follows. Otherwise, a byte array will follow.
+
|-
 +
| Block ID
 +
| Short
 +
| The {{Minecraft Wiki|Data values#Block IDs|item/block ID}}. A value of <code>-1</code> signifies that the slot is empty, and no further data follows.
 +
|-
 +
| Item Count
 +
| Optional Byte
 +
| Not present if Block ID is <code>-1</code>.
 +
|-
 +
| Item Damage
 +
| Optional Short
 +
| Not present if Block ID is <code>-1</code>.
 +
|-
 +
| NBT
 +
| Optional NBT
 +
| Not present if Block ID is <code>-1</code>. If 0, there is no NBT data, and no further data follows. Otherwise the byte is the start of an NBT blob as shown below:
 +
|}
  
The byte array contains gzipped (that is RFC 1952 rather than RFC 1950) [[NBT]] data. The format of this data is as follows:
+
<pre>
 
+
   COMPOUND <nowiki>''</nowiki>
<code>
+
     LIST 'StoredEnchantments'
   COMPOUND: <nowiki>''</nowiki>
 
     LIST: 'ench'
 
 
       COMPOUND
 
       COMPOUND
         SHORT: 'id'
+
         SHORT 'id'
         SHORT: 'lvl'
+
         SHORT 'lvl'
 
       END
 
       END
 
       COMPOUND
 
       COMPOUND
         ...etc
+
         ...
 
       END
 
       END
 +
      ...
 +
    END
 +
    INT 'Unbreakable'
 +
    ...
 
   END
 
   END
</code>
+
</pre>
  
Each of the inner, untagged COMPOUNDs represents an enchantment, with its ID[http://www.minecraftwiki.net/wiki/Enchantment#Enchantment_Types] and level given as child SHORT elements.
+
See [[NBT]] for more information about the NBT format, and {{Minecraft Wiki|Player.dat format#Item structure|here}} for the contained information and its format.
  
 
== Examples ==
 
== Examples ==
  
<code>
+
<pre>
 
   ff ff                            | empty slot
 
   ff ff                            | empty slot
   01 16 01 00 00 ff ff            | a diamond pickaxe
+
   01 16 01 00 00 00                | a diamond pickaxe
   01 16 01 00 00 00 04 CA FE BA BE | a diamond pickaxe with (made-up) NBT data
+
   01 16 01 00 00 01 04 CA FE BA BE | a diamond pickaxe with (made-up) NBT data
</code>
+
</pre>
 +
 
 +
[[Category:Protocol Details]]
 +
[[Category:Minecraft Modern]]

Revision as of 17:55, 16 May 2016

The Slot data structure is how Minecraft represents an item and its associated data in the Minecraft Protocol.

Format

Name Type Meaning
Block ID Short The item/block ID. A value of -1 signifies that the slot is empty, and no further data follows.
Item Count Optional Byte Not present if Block ID is -1.
Item Damage Optional Short Not present if Block ID is -1.
NBT Optional NBT Not present if Block ID is -1. If 0, there is no NBT data, and no further data follows. Otherwise the byte is the start of an NBT blob as shown below:
  COMPOUND ''
    LIST 'StoredEnchantments'
      COMPOUND
        SHORT 'id'
        SHORT 'lvl'
      END
      COMPOUND
        ...
      END
      ...
    END
    INT 'Unbreakable'
    ...
  END

See NBT for more information about the NBT format, and here for the contained information and its format.

Examples

  ff ff                            | empty slot
  01 16 01 00 00 00                | a diamond pickaxe
  01 16 01 00 00 01 04 CA FE BA BE | a diamond pickaxe with (made-up) NBT data