]> git.lizzy.rs Git - minetest.git/blobdiff - src/server.h
Server: Ignore whitespace-only chat messages
[minetest.git] / src / server.h
index 258d75eafabec04657ca11f7cb390966d32dec3f..9857215d09e98664772058ecfd51596b42672f91 100644 (file)
@@ -118,6 +118,25 @@ struct ServerPlayingSound
        std::unordered_set<session_t> clients; // peer ids
 };
 
+struct MinimapMode {
+       MinimapType type = MINIMAP_TYPE_OFF;
+       std::string label;
+       u16 size = 0;
+       std::string texture;
+       u16 scale = 1;
+};
+
+// structure for everything getClientInfo returns, for convenience
+struct ClientInfo {
+       ClientState state;
+       Address addr;
+       u32 uptime;
+       u8 ser_vers;
+       u16 prot_vers;
+       u8 major, minor, patch;
+       std::string vers_string, lang_code;
+};
+
 class Server : public con::PeerHandler, public MapEventReceiver,
                public IGameDef
 {
@@ -200,7 +219,7 @@ class Server : public con::PeerHandler, public MapEventReceiver,
        void onMapEditEvent(const MapEditEvent &event);
 
        // Connection must be locked when called
-       std::wstring getStatusString();
+       std::string getStatusString();
        inline double getUptime() const { return m_uptime_counter->get(); }
 
        // read shutdown state
@@ -238,7 +257,7 @@ class Server : public con::PeerHandler, public MapEventReceiver,
 
        void deleteParticleSpawner(const std::string &playername, u32 id);
 
-       bool dynamicAddMedia(const std::string &filepath);
+       bool dynamicAddMedia(const std::string &filepath, std::vector<RemotePlayer*> &sent_to);
 
        ServerInventoryManager *getInventoryMgr() const { return m_inventory_mgr.get(); }
        void sendDetachedInventory(Inventory *inventory, const std::string &name, session_t peer_id);
@@ -318,9 +337,7 @@ class Server : public con::PeerHandler, public MapEventReceiver,
        void DenyAccess_Legacy(session_t peer_id, const std::wstring &reason);
        void DisconnectPeer(session_t peer_id);
        bool getClientConInfo(session_t peer_id, con::rtt_stat_type type, float *retval);
-       bool getClientInfo(session_t peer_id, ClientState *state, u32 *uptime,
-                       u8* ser_vers, u16* prot_vers, u8* major, u8* minor, u8* patch,
-                       std::string* vers_string, std::string* lang_code);
+       bool getClientInfo(session_t peer_id, ClientInfo &ret);
 
        void printToConsoleOnly(const std::string &text);
 
@@ -331,6 +348,10 @@ class Server : public con::PeerHandler, public MapEventReceiver,
        void SendPlayerSpeed(session_t peer_id, const v3f &added_vel);
        void SendPlayerFov(session_t peer_id);
 
+       void SendMinimapModes(session_t peer_id,
+                       std::vector<MinimapMode> &modes,
+                       size_t wanted_mode);
+
        void sendDetachedInventories(session_t peer_id, bool incremental);
 
        virtual bool registerModStorage(ModMetadata *storage);
@@ -474,10 +495,8 @@ class Server : public con::PeerHandler, public MapEventReceiver,
        void handleChatInterfaceEvent(ChatEvent *evt);
 
        // This returns the answer to the sender of wmessage, or "" if there is none
-       std::wstring handleChat(const std::string &name, const std::wstring &wname,
-               std::wstring wmessage_input,
-               bool check_shout_priv = false,
-               RemotePlayer *player = NULL);
+       std::wstring handleChat(const std::string &name, std::wstring wmessage_input,
+               bool check_shout_priv = false, RemotePlayer *player = nullptr);
        void handleAdminChat(const ChatEventChat *evt);
 
        // When called, connection mutex should be locked
@@ -512,6 +531,7 @@ class Server : public con::PeerHandler, public MapEventReceiver,
        u16 m_max_chatmessage_length;
        // For "dedicated" server list flag
        bool m_dedicated;
+       Settings *m_game_settings = nullptr;
 
        // Thread can set; step() will throw as ServerError
        MutexedVariable<std::string> m_async_fatal_error;
@@ -527,6 +547,10 @@ class Server : public con::PeerHandler, public MapEventReceiver,
        // Environment
        ServerEnvironment *m_env = nullptr;
 
+       // Reference to the server map until ServerEnvironment is initialized
+       // after that this variable must be a nullptr
+       ServerMap *m_startup_server_map = nullptr;
+
        // server connection
        std::shared_ptr<con::Connection> m_con;
 
@@ -552,9 +576,6 @@ class Server : public con::PeerHandler, public MapEventReceiver,
        // Craft definition manager
        IWritableCraftDefManager *m_craftdef;
 
-       // Event manager
-       EventManager *m_event;
-
        // Mods
        std::unique_ptr<ServerModManager> m_modmgr;