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); }
int nbt_get_length(nbt_tag *t) { if (t->type == TAG_BYTE_ARRAY) { nbt_byte_array *ba = nbt_cast_byte_array(t); if (ba != NULL) return ba->length; } else if (t->type == TAG_LIST) { nbt_list *l = nbt_cast_list(t); if (l != NULL) return l->length; } else if (t->type == TAG_COMPOUND) { nbt_compound *c = nbt_cast_compound(t); if (c != NULL) return c->length; } return -1; }