@@ -11,231 +11,7 @@ Minecraft world maps.
1111
1212## Overview
1313
14- Minecraft worlds will generate differently based on the version being
15- played and the seed used to run the internal generation algorithms.
16- Players will often juggle between other worlds across devices and
17- versions, making re-entering this data particularly cumbersome. To address
18- this, Alidade uses a document-based approach to store worlds as files
19- using the ` .mcmap ` file package format.
20-
21- The following article will outline the file format, key structures
22- involved, and best practices for working with the file format.
23-
24- ** Last Updated** : 3 May 2025
25- ** Current Format Version** : 1
26-
27- ### Key Tenets
28-
29- The ` .mcmap ` format has been carefully designed with the following key
30- tenets in mind:
31-
32- - ** Portability** : The file format should be portable and easy to
33- assemble.
34- - ** Cross-platform** : Wherever possible, the file format should be
35- designed to work across platforms, both within and outside of the Apple
36- ecosystem.
37- - ** Human-readable** : The format should be readable and inspectable to
38- players.
39- - ** Performant** : The file format should be performant to read from and
40- write to.
41-
42- ## General Structure
43-
44- An ` .mcmap ` file is a package that consist of at least one file,
45- ` Info.json ` (see `` CartographyMapFile/Keys/metadata `` ). Below is an
46- example structure of how an ` .mcmap ` file looks on disk:
47-
48- ```
49- My World.mcmap/
50- Info.json
51- Images/
52- f6654efd-e52c-4dae-b5e0-e91f08d8cb54.heic
53- 309643c9-d86b-4079-a9a6-4805d1b3c8e4.heic
54- 0c25dea0-ec2e-4061-87ca-da9391193889.heic
55- ```
56-
57- > Note: The ` .mcmap ` file is not a compressed archive. On Windows and
58- > other platforms that don't have Alidade installed, it will appear as a
59- > directory.
60-
61-
62- ` .mcmap ` files might also contain an ` Images ` directory (see
63- `` CartographyMapFile/Keys/images `` ), containing various images, typically
64- stored in the HEIC file format.
65-
66- <a name =" File-metadata " />
67-
68- ## The Manifest
69-
70- The ` .mcmap ` file contains a top-level file, ` Info.json ` , which provides
71- critical metadata about the file. This file is known as the _ manifest_ ,
72- and it is heavily versioned.
73-
74- The manifest will usually contain data such as the world's name, version,
75- seed, and player-created pins. Depending on the manifest version, they can
76- be stored in different locations or keys. At the time of writing, the
77- latest stable version of the manifest is Version ** 1** ; files without the
78- `` MCMapManifestProviding/manifestVersion `` key supplied are assumed to be
79- this version.
80-
81- ``` json
82- {
83- "manifestVersion" : 2 ,
84- "name" : " My World" ,
85- "world" : {
86- "version" : " 1.21" ,
87- "seed" : 123
88- },
89- "pins" : [ ... ],
90- "recentLocations" : [ ... ]
91- }
92- ```
93-
94- > SeeAlso: The latest version of the manifest can be accessed via
95- > `` MCMapManifest `` . Refer to its documentation to learn the differences
96- > across versions.
97-
98- The manifest also contains a ` name ` property, which represents the name of
99- the world, if it doesn't match the name of the file.
100-
101- ### World settings
102-
103- Most manifest versions store world-specific information in the world
104- settings object, denoted as ` world ` , which contains three required
105- properties:
106-
107- - `` MCMapManifestWorldSettings/version `` : (String) The version of
108- Minecraft: Java Edition used to create the world.
109- - `` MCMapManifestWorldSettings/seed `` : (Int) The seed used to generate the
110- Minecraft world.
111- - `` MCMapManifestWorldSettings/largeBiomes `` : (Bool) Whether to use the
112- "Large Biomes" setting to generate the world.
113-
114- > Note: In older manifest versions,
115- > `` MCMapManifestWorldSettings/largeBiomes `` would always evaluate to
116- > false, as those versions did not support this key.
117-
118- ### Recent locations
119-
120- The ` recentLocations ` key is used to store a list of recently visited
121- locations that the player can revisit or use to create a pin. It consists
122- of a two-dimensional array, with each subarray representing coordinates on
123- the X and Z axes:
124-
125- ``` json
126- {
127- "recentLocations" : [ [0 , 0 ], [1847 , 1847 ] ]
128- }
129- ```
130-
131- ### Pins
132-
133- @Row (numberOfColumns: 6) {
134- @Column (size: 4) {
135- Pins are objects created by the player to mark specific points of
136- interest in the world and associate specific metadata with them,
137- such as images, colors, and descriptions. Pins are intended to be
138- customizable and personal to the player's preferences and should
139- offer flexibility.
140-
141- > Note: Pins are still a work in progress feature that will be
142- > updated over time with more customization and personalization
143- > options.
144-
145- A pin must contain the following keys:
146-
147- - ` name ` : (String) The player-assigned name for the pin.
148- - ` position ` : (Array) The location of the pin in the world on the
149- X and Z axes.
150- }
151- @Column (size: 2) {
152- @Image (source: "FileFormat-Pins", alt: "A screenshot showing a player-made pin")
153- An example pin for a player in their Minecraft world.
154- }
155- }
156-
157- Pins can also contain any of the following properties, which can be
158- customized by players:
159-
160- - ` aboutDescription ` : (String) A player-authored description about the
161- pin.
162- - ` color ` : (String) The pin's associated color.
163- - ` images ` : (Array) A list of images associated with this pin.
164-
165- Some manifest versions might also provide their own properties on top of
166- these ones.
167-
168- > Tip: To conserve disk space and memory, when players decide to delete
169- > pins, any associated images to that pin should also be removed. This is
170- > already handled with `` CartographyMapFile/removePins(at:) `` and
171- > `` CartographyMapFile/removePin(at:) `` in `` CartographyMapFile `` .
172-
173-
174- ## Images
175-
176- Pins and other relevant data types might contain images that are
177- associated to them. Officially, the ` .mcmap ` file format doesn't
178- enforce a consistent naming convention for image files, but
179- Alidade will generate a unique UUID string to be used as the
180- file's name when a player uploads a photo from their Photos
181- library or an image file from their Mac through the Finder.
182-
183- Images that correspond to a given data type, such as a pin, should
184- match the name of the file as it is stored in the
185- `` CartographyMapFile/Keys/images `` directory, without the folder
186- path. See below for how this is correlated for a pin as an
187- example.
188-
189- @Row {
190- @Column {
191- ** Info.json**
192- ```json
193- {
194- ...,
195- "pins" : [
196- {
197- "name" : "My Pin",
198- "position" : [
199- 0,
200- 0
201- ] ,
202- "images" : [
203- "MyFile.heic"
204- ] ,
205- ...
206- }
207- ]
208- }
209- ```
210- }
211- @Column {
212- ** My World.mcmap**
213- ```
214- My World.mcmap/
215- Info.json
216- Images/
217- MyFile.heic
218- ...
219- ```
220- }
221- }
222-
223- > Tip: Consider making image file names unique, and don't tie them
224- > with names of data types. Since players can rename these types
225- > at any given moment, having a unique name that isn't associated
226- > with a data type's name ensures stability across rename
227- > operations.
228-
229- ## Topics
230-
231- ### File Structures
232-
233- - `` CartographyMapFile ``
234-
235- ### Manifests
236-
237- - `` CartographyMapFile/Manifest-swift.typealias ``
238- - `` MCMapManifest ``
239- - `` MCMapManifest_PreVersioning ``
240- - `` MCMapManifest_v1 ``
241- - `` MCMapManifest_v2 ``
14+ > Important: The documentation for the file format has moved. Visit the
15+ > documentation below for updates on the file format:
16+ >
17+ > [ Visit new documentation &rsaquo ; ] ( https://mcmap.alidade.dev/ )
0 commit comments