return block;
}
-void map_clear_meta(MapBlock *block)
-{
- pthread_mutex_lock(&block->mtx);
- ITERATE_MAPBLOCK list_clear(&block->metadata[x][y][z]);
- pthread_mutex_unlock(&block->mtx);
-}
-
void map_free_block(MapBlock *block)
{
- map_clear_meta(block);
pthread_mutex_destroy(&block->mtx);
free(block);
}
node_definitions[node.type].deserialize(&node);
block->data[x][y][z] = node;
- block->metadata[x][y][z] = list_create(&list_compare_string);
}
return true;
if (! map->callbacks.set_node || map->callbacks.set_node(block, offset, &node, arg)) {
if (map->callbacks.after_set_node)
map->callbacks.after_set_node(block, offset, arg);
- list_clear(&block->metadata[offset.x][offset.y][offset.z]);
block->data[offset.x][offset.y][offset.z] = node;
}
pthread_mutex_unlock(&block->mtx);
typedef struct
{
MapBlockData data;
- List metadata[MAPBLOCK_SIZE][MAPBLOCK_SIZE][MAPBLOCK_SIZE];
v3s32 pos;
pthread_mutex_t mtx;
void *extra;
MapBlock *map_get_block(Map *map, v3s32 pos, bool create);
MapBlock *map_allocate_block(v3s32 pos);
-void map_clear_meta(MapBlock *block);
void map_free_block(MapBlock *block);
bool map_deserialize_node(int fd, MapNode *buf);
ITERATE_MAPBLOCK {
block->data[x][y][z] = map_node_create(NODE_AIR);
- block->metadata[x][y][z] = list_create(&list_compare_string);
extra->mgs_buffer[x][y][z] = MGS_VOID;
}
}