CSM: add requested CSM_RF_READ_PLAYERINFO (#8007)
[oweals/minetest.git] / src / network / networkprotocol.h
index f4258e9cdfff3c466c775b51afa98774307b9e99..6d6708482c28d579d0a267978dfd523aa071d718 100644 (file)
@@ -169,7 +169,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
                        * sender
                        * type (RAW, NORMAL, ANNOUNCE, SYSTEM)
                        * content
-               Add TOCLIENT_CSM_FLAVOUR_LIMITS to define which CSM flavour should be
+               Add TOCLIENT_CSM_RESTRICTION_FLAGS to define which CSM features should be
                        limited
                Add settable player collisionbox. Breaks compatibility with older
                        clients as a 1-node vertical offset has been removed from player's
@@ -180,18 +180,31 @@ with this program; if not, write to the Free Software Foundation, Inc.,
                Backwards compatibility drop
                Add 'can_zoom' to player object properties
                Add glow to object properties
+               Change TileDef serialization format.
+               Add world-aligned tiles.
+               Mod channels
+               Raise ObjectProperties version to 3 for removing 'can_zoom' and adding
+                       'zoom_fov'.
+               Nodebox version 5
+               Add disconnected nodeboxes
+               Add TOCLIENT_FORMSPEC_PREPEND
+       PROTOCOL VERSION 37:
+               Redo detached inventory sending
+               Add TOCLIENT_NODEMETA_CHANGED
+               New network float format
 */
 
-#define LATEST_PROTOCOL_VERSION 36
+#define LATEST_PROTOCOL_VERSION 37
+#define LATEST_PROTOCOL_VERSION_STRING TOSTRING(LATEST_PROTOCOL_VERSION)
 
 // Server's supported network protocol range
-#define SERVER_PROTOCOL_VERSION_MIN 36
+#define SERVER_PROTOCOL_VERSION_MIN 37
 #define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
 
 // Client's supported network protocol range
 // The minimal version depends on whether
 // send_pre_v25_init is enabled or not
-#define CLIENT_PROTOCOL_VERSION_MIN 36
+#define CLIENT_PROTOCOL_VERSION_MIN 37
 #define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
 
 // Constant that differentiates the protocol from random data and other protocols
@@ -205,6 +218,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #define TEXTURENAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-"
 
+typedef u16 session_t;
+
 enum ToClientCommand
 {
        TOCLIENT_HELLO = 0x02,
@@ -273,9 +288,9 @@ enum ToClientCommand
                f1000 time_speed
        */
 
-       TOCLIENT_CSM_FLAVOUR_LIMITS = 0x2A,
+       TOCLIENT_CSM_RESTRICTION_FLAGS = 0x2A,
        /*
-               u32 CSMFlavourLimits byteflag
+               u32 CSMRestrictionFlags byteflag
         */
 
        // (oops, there is some gap here)
@@ -466,10 +481,13 @@ enum ToClientCommand
                f1000 expirationtime
                f1000 size
                u8 bool collisiondetection
-               u8 bool vertical
                u32 len
                u8[len] texture
+               u8 bool vertical
                u8 collision_removal
+               TileAnimation animation
+               u8 glow
+               u8 object_collision
        */
 
        TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
@@ -487,11 +505,14 @@ enum ToClientCommand
                f1000 minsize
                f1000 maxsize
                u8 bool collisiondetection
-               u8 bool vertical
                u32 len
                u8[len] texture
-               u32 id
+               u8 bool vertical
                u8 collision_removal
+               u32 id
+               TileAnimation animation
+               u8 glow
+               u8 object_collision
        */
 
        TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY = 0x48, // Obsolete
@@ -611,6 +632,28 @@ enum ToClientCommand
                        u8[len] player name
        */
 
+       TOCLIENT_MODCHANNEL_MSG = 0x57,
+       /*
+               u16 channel name length
+               std::string channel name
+               u16 channel name sender
+               std::string channel name
+               u16 message length
+               std::string message
+       */
+
+       TOCLIENT_MODCHANNEL_SIGNAL = 0x58,
+       /*
+               u8 signal id
+               u16 channel name length
+               std::string channel name
+       */
+
+       TOCLIENT_NODEMETA_CHANGED = 0x59,
+       /*
+               serialized and compressed node metadata
+       */
+
        TOCLIENT_SRP_BYTES_S_B = 0x60,
        /*
                Belonging to AUTH_MECHANISM_SRP.
@@ -619,7 +662,13 @@ enum ToClientCommand
                std::string bytes_B
        */
 
-       TOCLIENT_NUM_MSG_TYPES = 0x61,
+       TOCLIENT_FORMSPEC_PREPEND = 0x61,
+       /*
+               u16 len
+               u8[len] formspec
+       */
+
+       TOCLIENT_NUM_MSG_TYPES = 0x62,
 };
 
 enum ToServerCommand
@@ -645,6 +694,26 @@ enum ToServerCommand
                [0] u16 TOSERVER_INIT2
        */
 
+       TOSERVER_MODCHANNEL_JOIN = 0x17,
+       /*
+               u16 channel name length
+               std::string channel name
+        */
+
+       TOSERVER_MODCHANNEL_LEAVE = 0x18,
+       /*
+               u16 channel name length
+               std::string channel name
+        */
+
+       TOSERVER_MODCHANNEL_MSG = 0x19,
+       /*
+               u16 channel name length
+               std::string channel name
+               u16 message length
+               std::string message
+        */
+
        TOSERVER_GETBLOCK = 0x20, // Obsolete
        TOSERVER_ADDNODE = 0x21, // Obsolete
        TOSERVER_REMOVENODE = 0x22, // Obsolete
@@ -876,12 +945,13 @@ enum PlayerListModifer: u8
        PLAYER_LIST_REMOVE,
 };
 
-enum CSMFlavourLimit : u64 {
-       CSM_FL_NONE = 0x00000000,
-       CSM_FL_LOOKUP_NODES = 0x00000001, // Limit node lookups
-       CSM_FL_CHAT_MESSAGES = 0x00000002, // Disable chat message sending from CSM
-       CSM_FL_READ_ITEMDEFS = 0x00000004, // Disable itemdef lookups
-       CSM_FL_READ_NODEDEFS = 0x00000008, // Disable nodedef lookups
-       CSM_FL_ALL = 0xFFFFFFFF,
+enum CSMRestrictionFlags : u64 {
+       CSM_RF_NONE = 0x00000000,
+       CSM_RF_LOAD_CLIENT_MODS = 0x00000001, // Disable mods provided by clients
+       CSM_RF_CHAT_MESSAGES = 0x00000002, // Disable chat message sending from CSM
+       CSM_RF_READ_ITEMDEFS = 0x00000004, // Disable itemdef lookups
+       CSM_RF_READ_NODEDEFS = 0x00000008, // Disable nodedef lookups
+       CSM_RF_LOOKUP_NODES = 0x00000010, // Limit node lookups
+       CSM_RF_READ_PLAYERINFO = 0x00000020, // Disable player info lookups
+       CSM_RF_ALL = 0xFFFFFFFF,
 };
-