master uint/magnolia / include / net / mc_chunk.h
 1#ifndef MC_CHUNK_H
 2#define MC_CHUNK_H
 3
 4#include <stddef.h>
 5
 6#include "types.h"
 7#include "net/mc_proto.h"
 8
 9typedef struct {
10	i32 x;
11	i32 z;
12	u16 mask;
13	i8  replace;
14} MCChunkUpdate;
15
16typedef struct {
17	MCChunkUpdate* updates;
18	MCChunkUpdate  single_update;
19	i32            update_count;
20	const u8*      data;
21	size_t         data_size;
22	u8             skylight;
23	i8             bulk;
24	i8             unload;
25	i32            unload_x;
26	i32            unload_z;
27} MCChunkPacket;
28
29/*
30   general decode chunk data from packet
31   returns 1 on success, 0 on failure */
32i8 mc_chunk_decode(MCChunkPacket* chunk, const MCPacket* packet);
33
34/* destroy chunk data */
35void mc_chunk_destroy(MCChunkPacket* chunk);
36
37/*
38   calculate size of chunk data
39   returns size in bytes */
40size_t mc_chunk_update_size(u16 mask, u8 skylight, i8 bulk);
41
42#endif /* MC_CHUNK_H */