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);
}
예제 #2
0
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;
}
예제 #3
0
DECODE_BEGIN(SP_UpdateBlockEntity,_1_8_1) {
    Plong(loc.p);
    Pchar(action);
    tpkt->nbt = nbt_parse(&p);
} DECODE_END;