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 correctlymutilcraft-mt53
parent
167df02e3d
commit
6c37e89f08
|
@ -37,6 +37,9 @@ local function initialize_builtin_statbars(player)
|
||||||
|
|
||||||
if (hud_ids[name] == nil) then
|
if (hud_ids[name] == nil) then
|
||||||
hud_ids[name] = {}
|
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
|
end
|
||||||
|
|
||||||
if player:hud_get_flags().healthbar and
|
if player:hud_get_flags().healthbar and
|
||||||
|
|
17
src/hud.cpp
17
src/hud.cpp
|
@ -414,6 +414,23 @@ void Hud::drawHotbar(u16 playeritem) {
|
||||||
drawItems(secondpos, hotbar_itemcount, hotbar_itemcount/2, mainlist, playeritem + 1, 0);
|
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));
|
||||||
|
////////////////////////////////////////////////////////////////////////////
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3357,6 +3357,10 @@ void Server::SendHUDSetFlags(u16 peer_id, u32 flags, u32 mask)
|
||||||
|
|
||||||
// Write command
|
// Write command
|
||||||
writeU16(os, TOCLIENT_HUD_SET_FLAGS);
|
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, flags);
|
||||||
writeU32(os, mask);
|
writeU32(os, mask);
|
||||||
|
|
||||||
|
@ -4591,6 +4595,7 @@ bool Server::hudSetFlags(Player *player, u32 flags, u32 mask) {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
SendHUDSetFlags(player->peer_id, flags, mask);
|
SendHUDSetFlags(player->peer_id, flags, mask);
|
||||||
|
player->hud_flags = flags;
|
||||||
|
|
||||||
m_script->player_event(player->getPlayerSAO(),"hud_changed");
|
m_script->player_event(player->getPlayerSAO(),"hud_changed");
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue