if (hud_ids[name] == nil) then
hud_ids[name] = {}
+ -- flags are not transmitted to client on connect, we need to make sure
+ -- our current flags are transmitted by sending them actively
+ player:hud_set_flags(player:hud_get_flags())
end
if player:hud_get_flags().healthbar and
drawItems(secondpos, hotbar_itemcount, hotbar_itemcount/2, mainlist, playeritem + 1, 0);
}
}
+
+ //////////////////////////// compatibility code to be removed //////////////
+ // this is ugly as hell but there's no other way to keep compatibility to
+ // old servers
+ if ( player->hud_flags & HUD_FLAG_HEALTHBAR_VISIBLE)
+ drawStatbar(v2s32(floor(0.5 * (float) m_screensize.X + 0.5),
+ floor(1 * (float) m_screensize.Y + 0.5)),
+ HUD_CORNER_UPPER, 0, "heart.png",
+ player->hp, v2s32((-10*24)-25,-(48+24+10)), v2s32(24,24));
+
+ if ((player->hud_flags & HUD_FLAG_BREATHBAR_VISIBLE) &&
+ (player->getBreath() < 11))
+ drawStatbar(v2s32(floor(0.5 * (float) m_screensize.X + 0.5),
+ floor(1 * (float) m_screensize.Y + 0.5)),
+ HUD_CORNER_UPPER, 0, "heart.png",
+ player->getBreath(), v2s32(25,-(48+24+10)), v2s32(24,24));
+ ////////////////////////////////////////////////////////////////////////////
}
// Write command
writeU16(os, TOCLIENT_HUD_SET_FLAGS);
+
+ //////////////////////////// compatibility code to be removed //////////////
+ flags &= ~(HUD_FLAG_HEALTHBAR_VISIBLE | HUD_FLAG_BREATHBAR_VISIBLE);
+ ////////////////////////////////////////////////////////////////////////////
writeU32(os, flags);
writeU32(os, mask);
return false;
SendHUDSetFlags(player->peer_id, flags, mask);
+ player->hud_flags = flags;
m_script->player_event(player->getPlayerSAO(),"hud_changed");
return true;