DECODE_BEGIN(SP_MultiBlockChange,_1_8_1) { Pint(X); Pint(Z); Pvarint(count); lh_alloc_num(tpkt->blocks, tpkt->count); int i; for(i=0; i<tpkt->count; i++) { Pchar(blocks[i].pos); Pchar(blocks[i].y); Rvarint(bid); tpkt->blocks[i].bid.raw = (uint16_t)bid; } } DECODE_END;
DECODE_BEGIN(SP_Explosion,_1_8_1) { Pfloat(x); Pfloat(y); Pfloat(z); Pfloat(radius); Pint(count); lh_alloc_num(tpkt->blocks, tpkt->count); int i; for(i=0; i<tpkt->count; i++) { boff_t *b = tpkt->blocks+i; Rchar(dx); Rchar(dy); Rchar(dz); b->dx = (int8_t)dx; b->dy = (int8_t)dy; b->dz = (int8_t)dz; } Pfloat(vx); Pfloat(vy); Pfloat(vz); } DECODE_END;
void hud_update(MCPacketQueue *cq) { hud_prune(); if (hud_id < 0 || !hud_inv) return; bg_color = 34; draw_clear(); bg_color = 0; int updated = 0; switch(hud_mode) { case HUDMODE_TEST: updated = huddraw_test(); break; case HUDMODE_INFO: updated = huddraw_info(); break; case HUDMODE_TUNNEL: updated = huddraw_tunnel(); break; case HUDMODE_MAP: updated = huddraw_map(); break; case HUDMODE_BUILD: updated = huddraw_build(); break; case HUDMODE_HELP: updated = huddraw_help(); break; default: break; } if (updated) { NEWPACKET(SP_Map, map); tmap->mapid = hud_id; tmap->scale = 0; tmap->trackpos = 0; tmap->nicons = 0; tmap->icons = NULL; tmap->ncols = 128; tmap->nrows = 128; tmap->X = 0; tmap->Z = 0; tmap->len = sizeof(hud_image); lh_alloc_num(tmap->data, sizeof(hud_image)); memmove(tmap->data, hud_image, sizeof(hud_image)); queue_packet(map, cq); } hud_inv = HUDINV_NONE; }