Player.dat format

 .dat files are used by Servers and Singleplayer Servers to store the state of individual players. The format is also used within level.dat files to store the state of the Singleplayer player, which overrides any .dat files with the same name as the Singleplayer player. These files are in NBT format.

NBT structure

 * The root tag. In level.dat files, this tag is called "Player".
 * All tags from Entities except the "id" tag.
 * All tags from Mobs.
 * : The dimension the player is in. -1 is The Nether, 0 is The Overworld, 1 is The End. Other values are interpreted as 0.
 * : The game mode of the player. 0 is Survival Mode, 1 is Creative Mode, and 2 is Adventure Mode.
 * : The Score displayed upon death.
 * : The selected hotbar slot of the player.
 * : See below.
 * : May not exist. The coordinates of the player's bed. These tags are only removed if the player attempts to respawn with no valid bed to spawn at at these coordinates.
 * : See above.
 * : 1 or 0 (true/false) - True if the player should spawn at the above coordinates even if no bed can be found.
 * : 1 or 0 (true/false) - true if the player was in a bed when this tag was saved; has no effect on whether the player is in a bed when they log in.
 * : The number of ticks the player had been in bed when this tag was saved. No effect.
 * : The value of the hunger bar; 20 is full. See Hunger.
 * : See Hunger.
 * : See Hunger.
 * : See Hunger.
 * : The level shown on the XP bar.
 * : The progress/percent across the XP bar to the next level.
 * : The total amount of XP the player has collected over time; used for the Score upon death.
 * : Each compound tag in this list is an item in the player's inventory.
 * An item in the inventory, includes the Slot tag.
 * See Item Structure below.
 * : If there are no items in the player's Ender chest, this is a list of Byte tags with size 0. If there are items, this is a list of Compound tags.
 * An item in the chest, includes the Slot tag. Slots are numbered 0 to 26.
 * See Item Structure below.
 * : The abilities this player has.
 * : The walking speed, always 0.1.
 * : The flying speed, always 0.05.
 * : 1 or 0 (true/false) - true if the player can fly.
 * : 1 or 0 (true/false) - true if the player is currently flying.
 * : 1 or 0 (true/false) - true if the player is immune to all damage and harmful effects except for void damage. (damage caused by the /kill command is void damage)
 * : 1 or 0 (true/false) - true if the player can place and destroy blocks.
 * : 1 or 0 (true/false) - true if the player can instantly destroy blocks.

Item structure
Items are used both in the player's inventory and Ender inventory, and in chest tile entities, dropped item entities, furnace tile entities, brewing stand tile entities, and Villager trading recipes. Sometimes a Slot tag is used to specify the slot the item is in, such was with chests; other times there is no Slot tag, such as with dropped items.
 * The item's root tag. Some instances may give this tag a name, other times it is nameless because it is in a list.
 * : May not exist. The inventory slot the item is in.
 * : Item or Block ID.
 * : The data value for this item. The name "Damage" comes from when only tools used this value, now many other items use this value for other purposes.
 * : Number of items stacked in this inventory slot. Any item can be stacked, including tools, armor, and vehicles. Range is -128 to 127. Values below 2 are not displayed in-game.
 * : Additional information about the item, discussed in the below sections. This tag is optional for most items.

Enchantments
There are two ways enchantments are associated with items; the first way is that the item is actually enchanted and the enchantment affects the behavior of the item, and the second way is that the item is an Enchanted Book which simply stores the enchantments without actually affecting the behavior of the item. There is also the RepairCost tag which tracks anvil usage for items, making them more costly with every use of the anvil.
 * : The tag tag.
 * : Contains enchantments on this item that affect the way the item works.
 * : A single enchantment.
 * : ID of the enchantment.
 * : Level of the enchantment, where 1 is level 1.
 * : Contains enchantments for enchanted books.
 * : A stored enchantment, identical structure to each enchantment in ench.
 * : Number of enchantment levels to add to the base level cost when repairing, combining, or renaming this item with an Anvil.

Attribute Modifiers
All items can be given Modifiers which affect various Attributes of the player/mob which wears or holds them. Note that if an item has vanilla default AttributeModifiers, these will cease to exist if this tag is added (e.g. a Diamond Sword given an empty AttributeModifiers list will no longer provide a boost to damage). Also note that the default vanilla AttributeModifiers do not actually use this tag, and as such, it will not appear on a natural item.
 * : The tag tag.
 * : Contains Attribute Modifiers on this item which modify Attributes of the wearer or holder (if the item is not in the hand or armor slots, it will have no effect).
 * : A single Attribute Modifier.
 * : The name of the Attribute this Modifier is to act upon.
 * All fields from the Modifier Format (Name, Amount, Operation, UUIDLeast, and UUIDMost).

Written Books
Both Book and Quill and Written Book use the tag tag to store information about the book. Only written books store the title and author of the book, and pages is stored in both varieties.
 * : The tag tag.
 * : The title of the written book.
 * : The author of the written book.
 * : The list of pages in the book.
 * A single page in the book.

Display Properties
Leather Armor can be colored, and all items can have custom display names and lore.
 * : The tag tag.
 * : Display properties.
 * : The color of the leather armor. Color codes are calculated from the Red, Green and Blue components using this formula:  Red <<16 + Green <<8 + Blue  (Note that because of Java byte-ordering, this calculation is in reverse from almost all other popular languages and libraries which use R+256*G+65536*B)
 * : The name to display for an item.
 * : List of strings to display as lore for the item.
 * A line of text for the lore of an item.

Potion Effects
Potions and Splash Potions can have multiple, customized effects via the tag tag, bypassing using the data value of the item. The data value is used only for the way the potion looks if these tags are present.
 * : The tag tag.
 * : The custom Potion effects this potion has.
 * One of these for each effect.
 * : The ID of the effect.
 * : The amplifier of the effect, with 0 being level 1.
 * : The duration of the effect in ticks.
 * : 1 or 0 (true/false) - whether or not this is an effect provided by a beacon and therefore should be less intrusive on the screen. This tag is optional.

Player Skulls
Skulls of the player variety can be associated with a specific username to take on the skin of that player when placed. There is currently no visible change for the hand-held item.
 * : The tag tag.
 * : The username of the player this is a skull of. Note that SkullOwner is for the item in inventories, whereas ExtraType is for skull blocks placed on the ground.

Fireworks
Fireworks use the tag tag to store information about their effects.
 * : The tag tag.
 * : One of these may appear on a firework star.
 * : 1 or 0 (true/false) - true if this explosion will have the Twinkle effect (glowstone dust). May be absent.
 * : 1 or 0 (true/false) - true if this explosion will have the Trail effect (diamond). May be absent.
 * : The shape of this firework's explosion. 0 = Small Ball, 1 = Large Ball, 2 = Star-shaped, 3 = Creeper-shaped, 4 = Burst. Other values will be named "Unknown Shape" and render as Small Ball.
 * : Array of integer values corresponding to the primary colors of this firework's explosion. If custom color codes are used, the game will render it as "Custom" in the tooltip, but the proper color will be used in the explosion. Custom colors are integers in the same format as the color tag from Display Properties.
 * : Array of integer values corresponding to the fading colors of this firework's explosion. Same handling of custom colors as Colors. May be absent.
 * : One of these may appear on a Firework Rocket.
 * : Number from 1-3 indicating the flight duration of this firework (equals the amount of gunpowder used in crafting the rocket). This value can also be smaller to make the firework detonate sooner - however, values of -2 and under almost never detonate at all.
 * : List of compounds representing each explosion this firework will cause.
 * Same format as 'Explosion' compound on a firework star, as described above.

Maps
Maps may be scaled.
 * : The tag tag.
 * : 1 or 0 (true/false) - true if map is scaled. May not exist if map is not scaled. Scale value is stored as Damage.