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 */