+
+ u32 getDayNightRatio();
+
+ u16 getHP();
+
+ void setTempMod(v3s16 p, NodeMod mod);
+ void clearTempMod(v3s16 p);
+
+ float getAvgRtt()
+ {
+ //JMutexAutoLock lock(m_con_mutex); //bulk comment-out
+ con::Peer *peer = m_con.GetPeerNoEx(PEER_ID_SERVER);
+ if(peer == NULL)
+ return 0.0;
+ return peer->avg_rtt;
+ }
+
+ bool getChatMessage(std::wstring &message)
+ {
+ if(m_chat_queue.size() == 0)
+ return false;
+ message = m_chat_queue.pop_front();
+ return true;
+ }
+
+ void addChatMessage(const std::wstring &message)
+ {
+ if (message[0] == L'/') {
+ m_chat_queue.push_back(
+ (std::wstring)L"issued command: "+message);
+ return;
+ }
+
+ //JMutexAutoLock envlock(m_env_mutex); //bulk comment-out
+ LocalPlayer *player = m_env.getLocalPlayer();
+ assert(player != NULL);
+ std::wstring name = narrow_to_wide(player->getName());
+ m_chat_queue.push_back(
+ (std::wstring)L"<"+name+L"> "+message);
+ }
+
+ u64 getMapSeed(){ return m_map_seed; }
+
+ void addUpdateMeshTask(v3s16 blockpos, bool ack_to_server=false);
+ // Including blocks at appropriate edges
+ void addUpdateMeshTaskWithEdge(v3s16 blockpos, bool ack_to_server=false);
+
+ // Get event from queue. CE_NONE is returned if queue is empty.
+ ClientEvent getClientEvent();