Minecraft Wiki
Register
Advertisement

Minecraft Beta 1.6 added craftable map items. Unlike books, maps do not store their information in the item - instead, their data value corresponds to the map number (ID) of a saved file. Their information is placed in the "data" directory within the world's save directory. Each map has its own file associated with its ID, and there is one file that keeps track of the highest (= most recently created) map ID. This is limited to the size of a short (65,536).[1] When Notch was adding them the first time he did not use the NBT format.[2]

There is support for The Nether, but it is obscured by the top blocks of the Nether and therefore unreadable. The End is supported without problems.

Data folder structure

The file idcounts.dat contains the latest ID for current map. Each map's file name uses the format map_<#>.dat, where <#> is the map's unique number.

map_<#>.dat format

map_<#>.dat files are GZip'd NBT files.

NBT structure

  • The root tag.
    •  data: The map data.
      •  scale: How zoomed in the map is (it is in 2scale blocks square per pixel, even for 0, where the map will be 1:1). Default 3, minimum 0 and maximum 4.
      •  dimension: 0 = The Overworld, -1 = The Nether, 1 = The End
      •  height: Height of map. Default (and only possible value) 128
      •  width: Width of map. Default (and only possible value) 128
      •  xCenter: Center of map according to real world by X
      •  zCenter: Center of map according to real world by Z
      •  colors: Width * Height array of color values (16384 entries for a default 128x128 map). Color can be accessed via the following method: colorID = Colors[widthOffset + heightOffset * width], where (widthOffset==0, heightOffset==0) is left upper point.

When this structure is loaded, Colors array is transformed to standard dimension (if it's necessary) and then structure is saved with standard height and width.

idcounts.dat format

This file keeps track of the latest map added. It is stored as a raw (uncompressed) NBT file.

NBT structure

  • The root tag.
    •  map: Latest map ID.

Color table

Maps use a color table to store the colors efficiently by ID.

Base colors

Blocks are colored according to their material. Each material has a base color which is multiplied by 180, 220 or 255, and then divided by 255 to make the map color. Each base color below is associated with four map colors - to get the first map color ID for a base color, multiply the base color ID by 4.

ID Color RGB Blocks
0 Transparent
1 127,178,56
2 247,233,163
3 167,167,167
4 255,0,0
5 160,160,255
6 167,167,167
7 0,124,0
8 255,255,255
9 164,168,184
10 183,106,47
11 112,112,112
12 64,64,255
13 104,83,50
14 255,252,245
15 216,127,51
16 178,76,216
17 102,153,216
18 229,229,51
19 127,204,25
20 242,127,165
21 76,76,76
22 153,153,153
23 76,127,153
24 127,63,178
25 51,76,178
26 102,76,51
27 102,127,51
28 153,51,51
29 25,25,25
30 250,238,77
31 92,219,213
32 74,128,255
33 0,217,58
34 21,20,31
35 112,2,0

Map colors

Each base color above has 4 associated map colors below. The conversion works by multiplying each of the red, green, and blue values by a value and then dividing by 255, finally rounding to the nearest whole. As of weekly snapshot 13w42b, the fourth base color variant is now multiplied by 135, providing a darker set of colors rather than just a clone of the second base color variant.

Map Color ID Multiply R,G,B By
Base Color ID*4 + 0 180
Base Color ID*4 + 1 220
Base Color ID*4 + 2 255 (same color)
Base Color ID*4 + 3 135

Here is a map color table provided as an example:

ID Color RGB Blocks
0 Transparent
1 Transparent
2 Transparent
3 Transparent
4 89,125,39
5 109,153,48
6 127,178,56
7 67,94,29
8 174,164,115
9 213,201,140
10 247,233,163
11 130,123,86
12 117,117,117
13 144,144,144
14 167,167,167
15 88,88,88
16 180,0,0
17 220,0,0
18 255,0,0
19 135,0,0
20 112,112,180
21 138,138,220
22 160,160,255
23 84,84,135
24 117,117,117
25 144,144,144
26 167,167,167
27 88,88,88
28 0,87,0
29 0,106,0
30 0,124,0
31 0,65,0
32 180,180,180
33 220,220,220
34 255,255,255
35 135,135,135
36 115,118,129
37 141,144,158
38 164,168,184
39 86,88,97
40 129,74,33
41 157,91,40
42 183,106,47
43 96,56,24
44 79,79,79
45 96,96,96
46 112,112,112
47 59,59,59
48 45,45,180
49 55,55,220
50 64,64,255
51 33,33,135
52 73,58,35
53 89,71,43
54 104,83,50
55 55,43,26
56 180,177,172
57 220,217,211
58 255,252,245
59 135,133,129
60 152,89,36
61 186,109,44
62 216,127,51
63 114,67,27
64 125,53,152
65 153,65,186
66 178,76,216
67 94,40,114
68 72,108,152
69 88,132,186
70 102,153,216
71 54,81,114
72 161,161,36
73 197,197,44
74 229,229,51
75 121,121,27
76 89,144,17
77 109,176,21
78 127,204,25
79 67,108,13
80 170,89,116
81 208,109,142
82 242,127,165
83 128,67,87
84 53,53,53
85 65,65,65
86 76,76,76
87 40,40,40
88 108,108,108
89 132,132,132
90 153,153,153
91 81,81,81
92 53,89,108
93 65,109,132
94 76,127,153
95 40,67,81
96 89,44,125
97 109,54,153
98 127,63,178
99 67,33,94
100 36,53,125
101 44,65,153
102 51,76,178
103 27,40,94
104 72,53,36
105 88,65,44
106 102,76,51
107 54,40,27
108 72,89,36
109 88,109,44
110 102,127,51
111 54,67,27
112 108,36,36
113 132,44,44
114 153,51,51
115 81,27,27
116 17,17,17
117 21,21,21
118 25,25,25
119 13,13,13
120 176,168,54
121 215,205,66
122 250,238,77
123 132,126,40
124 64,154,150
125 79,188,183
126 92,219,213
127 48,115,112
128 52,90,180
129 63,110,220
130 74,128,255
131 39,67,135
132 0,153,40
133 0,187,50
134 0,217,58
135 0,114,30
136 14,14,21
137 18,17,26
138 21,20,31
139 11,10,16
140 79,1,0
141 96,1,0
142 112,2,0
143 59,1,0

Code examples

Library name Language Link to Map-related code
MCModify Java Map.java

References

Advertisement