Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Remove legacy file format documentation
  • Loading branch information
random-geek authored and sfan5 committed Oct 23, 2019
1 parent 2f3c96b commit cd35949
Showing 1 changed file with 0 additions and 104 deletions.
104 changes: 0 additions & 104 deletions doc/world_format.txt
Expand Up @@ -562,107 +562,3 @@ Empty
EndInventoryList
EndInventory
---

===========================================================
Minetest World Format used as of 2011-05 or so (deprecated)
===========================================================

Map data serialization format version 17.

0.3.1 does not use this format, but a more recent one. This exists here for
historical reasons.

Directory structure:
sectors/XXXXZZZZ or sectors2/XXX/ZZZ
XXXX, ZZZZ, XXX and ZZZ being the hexadecimal X and Z coordinates.
Under these, the block files are stored, called YYYY.

There also exists files map_meta.txt and chunk_meta, that are used by the
generator. If they are not found or invalid, the generator will currently
behave quite strangely.

The MapBlock file format (sectors2/XXX/ZZZ/YYYY):
-------------------------------------------------

NOTE: Byte order is MSB first.

u8 version
- map format version number, this one is version 17

u8 flags
- Flag bitmasks:
- 0x01: is_underground: Should be set to 0 if there will be no light
obstructions above the block. If/when sunlight of a block is updated and
there is no block above it, this value is checked for determining whether
sunlight comes from the top.
- 0x02: day_night_differs: Whether the lighting of the block is different on
day and night. Only blocks that have this bit set are updated when day
transforms to night.
- 0x04: lighting_expired: If true, lighting is invalid and should be updated.
If you can't calculate lighting in your generator properly, you could try
setting this 1 to everything and setting the uppermost block in every
sector as is_underground=0. I am quite sure it doesn't work properly,
though.

zlib-compressed map data:
- content:
u8[4096]: content types
u8[4096]: param1 values
u8[4096]: param2 values

zlib-compressed node metadata
- content:
u16 version (=1)
u16 count of metadata
foreach count:
u16 position (= p.Z*MAP_BLOCKSIZE*MAP_BLOCKSIZE + p.Y*MAP_BLOCKSIZE + p.X)
u16 type_id
u16 content_size
u8[content_size] misc. stuff contained in the metadata

u16 mapblockobject_count
- always write as 0.
- if read != 0, just fail.

foreach mapblockobject_count:
- deprecated, should not be used. Length of this data can only be known by
properly parsing it. Just hope not to run into any of this.

u8 static object version:
- currently 0

u16 static_object_count

foreach static_object_count:
u8 type (object type-id)
s32 pos_x * 1000
s32 pos_y * 1000
s32 pos_z * 1000
u16 data_size
u8[data_size] data

u32 timestamp
- Timestamp when last saved, as seconds from starting the game.
- 0xffffffff = invalid/unknown timestamp, nothing will be done with the time
difference when loaded (recommended)

Node metadata format:
---------------------

Sign metadata:
u16 string_len
u8[string_len] string

Furnace metadata:
TBD

Chest metadata:
TBD

Locking Chest metadata:
u16 string_len
u8[string_len] string
TBD

// END

0 comments on commit cd35949

Please sign in to comment.