* `basic_debug`: Allow showing basic debug info that might give a gameplay advantage.
This includes map seed, player position, look direction, the pointed node and block bounds.
Does not affect players with the `debug` privilege.
+ * `chat`: Modifies the client's permission to view chat on the HUD.
+ The client may locally elect to not view chat. Does not affect the console.
* If a flag equals `nil`, the flag is not modified
* `hud_get_flags()`: returns a table of player HUD flags with boolean values.
* See `hud_set_flags` for a list of flags that can be toggled.
} else if (wasKeyDown(KeyType::MINIMAP)) {
toggleMinimap(isKeyDown(KeyType::SNEAK));
} else if (wasKeyDown(KeyType::TOGGLE_CHAT)) {
- m_game_ui->toggleChat();
+ m_game_ui->toggleChat(client);
} else if (wasKeyDown(KeyType::TOGGLE_FOG)) {
toggleFog();
} else if (wasKeyDown(KeyType::TOGGLE_UPDATE_CAMERA)) {
{
v2u32 screensize = RenderingEngine::getWindowSize();
+ LocalPlayer *player = client->getEnv().getLocalPlayer();
+
s32 minimal_debug_height = 0;
// Minimal debug text must only contain info that can't give a gameplay advantage
// Basic debug text also shows info that might give a gameplay advantage
if (m_flags.show_basic_debug) {
- LocalPlayer *player = client->getEnv().getLocalPlayer();
v3f player_position = player->getPosition();
std::ostringstream os(std::ios_base::binary);
m_guitext_status->enableOverrideColor(true);
}
- // Hide chat when console is visible
- m_guitext_chat->setVisible(isChatVisible() && !chat_console->isVisible());
+ // Hide chat when disabled by server or when console is visible
+ m_guitext_chat->setVisible(isChatVisible() && !chat_console->isVisible() && (player->hud_flags & HUD_FLAG_CHAT_VISIBLE));
}
void GameUI::initFlags()
m_guitext_profiler->setVisible(m_profiler_current_page != 0);
}
-void GameUI::toggleChat()
+void GameUI::toggleChat(Client *client)
{
- m_flags.show_chat = !m_flags.show_chat;
- if (m_flags.show_chat)
- showTranslatedStatusText("Chat shown");
- else
- showTranslatedStatusText("Chat hidden");
+ if (client->getEnv().getLocalPlayer()->hud_flags & HUD_FLAG_CHAT_VISIBLE) {
+ m_flags.show_chat = !m_flags.show_chat;
+ if (m_flags.show_chat)
+ showTranslatedStatusText("Chat shown");
+ else
+ showTranslatedStatusText("Chat hidden");
+ } else {
+ showTranslatedStatusText("Chat currently disabled by game or mod");
+ }
+
}
void GameUI::toggleHud()
void updateProfiler();
- void toggleChat();
+ void toggleChat(Client *client);
void toggleHud();
void toggleProfiler();
{HUD_FLAG_MINIMAP_VISIBLE, "minimap"},
{HUD_FLAG_MINIMAP_RADAR_VISIBLE, "minimap_radar"},
{HUD_FLAG_BASIC_DEBUG, "basic_debug"},
+ {HUD_FLAG_CHAT_VISIBLE, "chat"},
{0, NULL},
};
#define HUD_FLAG_MINIMAP_VISIBLE (1 << 5)
#define HUD_FLAG_MINIMAP_RADAR_VISIBLE (1 << 6)
#define HUD_FLAG_BASIC_DEBUG (1 << 7)
+#define HUD_FLAG_CHAT_VISIBLE (1 << 8)
#define HUD_PARAM_HOTBAR_ITEMCOUNT 1
#define HUD_PARAM_HOTBAR_IMAGE 2
HUD_FLAG_HOTBAR_VISIBLE | HUD_FLAG_HEALTHBAR_VISIBLE |
HUD_FLAG_CROSSHAIR_VISIBLE | HUD_FLAG_WIELDITEM_VISIBLE |
HUD_FLAG_BREATHBAR_VISIBLE | HUD_FLAG_MINIMAP_VISIBLE |
- HUD_FLAG_MINIMAP_RADAR_VISIBLE | HUD_FLAG_BASIC_DEBUG;
+ HUD_FLAG_MINIMAP_RADAR_VISIBLE | HUD_FLAG_BASIC_DEBUG |
+ HUD_FLAG_CHAT_VISIBLE;
hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT;