1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-07-22 17:18:39 +00:00

Fix old client showing duplicated health bar on new server

Fix client not showing hearts and bubbles on connecting to old server
Fix server not remembering hud flags correctly
This commit is contained in:
sapier 2014-05-11 00:35:31 +02:00
parent 167df02e3d
commit 6c37e89f08
3 changed files with 25 additions and 0 deletions

View file

@ -414,6 +414,23 @@ void Hud::drawHotbar(u16 playeritem) {
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));
////////////////////////////////////////////////////////////////////////////
}

View file

@ -3357,6 +3357,10 @@ void Server::SendHUDSetFlags(u16 peer_id, u32 flags, u32 mask)
// 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);
@ -4591,6 +4595,7 @@ bool Server::hudSetFlags(Player *player, u32 flags, u32 mask) {
return false;
SendHUDSetFlags(player->peer_id, flags, mask);
player->hud_flags = flags;
m_script->player_event(player->getPlayerSAO(),"hud_changed");
return true;