10 #define ITERATE_MAPBLOCK for (u8 x = 0; x < 16; x++) for (u8 y = 0; y < 16; y++) for (u8 z = 0; z < 16; z++)
20 MapNode data[16][16][16];
33 typedef void (*MapBlockCallback)(MapBlock *block);
38 MapBlockCallback on_block_create;
39 MapBlockCallback on_block_add;
40 MapBlockCallback on_block_change;
44 void map_delete(Map *map);
46 MapSector *map_get_sector_raw(Map *map, size_t idx);
47 MapBlock *map_get_block_raw(MapSector *sector, size_t idx);
48 MapSector *map_get_sector(Map *map, v2s32 pos, bool create);
49 MapBlock *map_get_block(Map *map, v3s32 pos, bool create);
51 void map_free_block(MapBlock *block);
53 bool map_deserialize_node(int fd, MapNode *buf);
54 bool map_serialize_block(int fd, MapBlock *block);
55 bool map_deserialize_block(int fd, Map *map, bool dummy);
56 bool map_serialize(int fd, Map *map);
57 void map_deserialize(int fd, Map *map);
59 v3s32 map_node_to_block_pos(v3s32 pos, v3u8 *offset);
61 MapNode map_get_node(Map *map, v3s32 pos);
62 void map_set_node(Map *map, v3s32 pos, MapNode node);
63 MapNode map_node_create(Node type);
64 void map_node_clear(MapNode *node);