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);
}
Beispiel #2
0
Datei: nbt.c Projekt: Youx/kouzan
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;
}