void Chunk::Load(string filename) { if (nbt_init(&nf) != NBT_OK) { fprintf(stderr, "nbt_init(): Failed.\n"); cout << "nbt_init(): Failed." << endl; return; } /* Try parsing */ if (nbt_parse(nf, filename.c_str()) != NBT_OK) { fprintf(stderr, "nbt_parse(): Failed\n"); cout << "nbt_parse(): Failed" << endl; return; } nbt_tag *level = nbt_find_tag_by_name("Level", nf->root); nbt_tag *blocks_tag = nbt_find_tag_by_name("Blocks", level); blocks = nbt_cast_byte_array(blocks_tag); nbt_tag *pos_tag = nbt_find_tag_by_name("xPos", level); x_pos = *nbt_cast_int(pos_tag); pos_tag = nbt_find_tag_by_name("zPos", level); z_pos = *nbt_cast_int(pos_tag); }
nbt_node* nbt_parse_compressed(const void* chunk_start, size_t length) { struct buffer decompressed = __decompress(chunk_start, length); if(decompressed.data == NULL) return NULL; nbt_node* ret = nbt_parse(decompressed.data, decompressed.len); buffer_free(&decompressed); return ret; }
DECODE_BEGIN(SP_UpdateBlockEntity,_1_8_1) { Plong(loc.p); Pchar(action); tpkt->nbt = nbt_parse(&p); } DECODE_END;