Add documentation for map block format 27 (#5576)

This commit is contained in:
Dániel Juhász 2017-04-13 10:19:46 +02:00 committed by Loïc Blot
parent 8bdf9a44c6
commit 021e667511
2 changed files with 33 additions and 10 deletions

@ -1,12 +1,13 @@
============================= =============================
Minetest World Format 22...25 Minetest World Format 22...27
============================= =============================
This applies to a world format carrying the block serialization version This applies to a world format carrying the block serialization version
22...25, used at least in 22...27, used at least in
- 0.4.dev-20120322 ... 0.4.dev-20120606 (22...23) - 0.4.dev-20120322 ... 0.4.dev-20120606 (22...23)
- 0.4.0 (23) - 0.4.0 (23)
- 24 was never released as stable and existed for ~2 days - 24 was never released as stable and existed for ~2 days
- 27 was added in 0.4.15-dev
The block serialization version does not fully specify every aspect of this The block serialization version does not fully specify every aspect of this
format; if compliance with this format is to be checked, it needs to be format; if compliance with this format is to be checked, it needs to be
@ -262,15 +263,36 @@ u8 flags
- 0x02: day_night_differs: Whether the lighting of the block is different - 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 on day and night. Only blocks that have this bit set are updated when
day transforms to night. day transforms to night.
- 0x04: lighting_expired: If true, lighting is invalid and should be - 0x04: lighting_expired: Not used in version 27 and above. If true,
updated. If you can't calculate lighting in your generator properly, lighting is invalid and should be updated. If you can't calculate
you could try setting this 1 to everything and setting the uppermost lighting in your generator properly, you could try setting this 1 to
block in every sector as is_underground=0. I am quite sure it doesn't everything and setting the uppermost block in every sector as
work properly, though. is_underground=0. I am quite sure it doesn't work properly, though.
- 0x08: generated: True if the block has been generated. If false, block - 0x08: generated: True if the block has been generated. If false, block
is mostly filled with CONTENT_IGNORE and is likely to contain eg. parts is mostly filled with CONTENT_IGNORE and is likely to contain eg. parts
of trees of neighboring blocks. of trees of neighboring blocks.
u16 lighting_complete
- Added in version 27.
- This contains 12 flags, each of them corresponds to a direction.
- Indicates if the light is correct at the sides of a map block.
Lighting may not be correct if the light changed, but a neighbor
block was not loaded at that time.
If these flags are false, Minetest will automatically recompute light
when both this block and its required neighbor are loaded.
- The bit order is:
nothing, nothing, nothing, nothing,
night X-, night Y-, night Z-, night Z+, night Y+, night X+,
day X-, day Y-, day Z-, day Z+, day Y+, day X+.
Where 'day' is for the day light bank, 'night' is for the night
light bank.
The 'nothing' bits should be always set, as they will be used
to indicate if direct sunlight spreading is finished.
- Example: if the block at (0, 0, 0) has
lighting_complete = 0b1111111111111110,
then Minetest will correct lighting in the day light bank when
the block at (1, 0, 0) is also loaded.
u8 content_width u8 content_width
- Number of bytes in the content (param0) fields of nodes - Number of bytes in the content (param0) fields of nodes
if map format version <= 23: if map format version <= 23:

@ -633,9 +633,10 @@ private:
/*! /*!
* Each bit indicates if light spreading was finished * Each bit indicates if light spreading was finished
* in a direction. (Because the neighbor could also be unloaded.) * in a direction. (Because the neighbor could also be unloaded.)
* Bits: day X+, day Y+, day Z+, day Z-, day Y-, day X-, * Bits (most significant first):
* night X+, night Y+, night Z+, night Z-, night Y-, night X-, * nothing, nothing, nothing, nothing,
* nothing, nothing, nothing, nothing. * night X-, night Y-, night Z-, night Z+, night Y+, night X+,
* day X-, day Y-, day Z-, day Z+, day Y+, day X+.
*/ */
u16 m_lighting_complete; u16 m_lighting_complete;