]> git.lizzy.rs Git - minetest.git/blobdiff - src/network/networkprotocol.h
Bump minimal protocol version to 36 (#6319)
[minetest.git] / src / network / networkprotocol.h
index feb18e5098c048aa4db2b2debaf88d27b0ccb980..7eefaccaaa8fbb97b19787a389b09fbc28465b93 100644 (file)
@@ -17,8 +17,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef NETWORKPROTOCOL_HEADER
-#define NETWORKPROTOCOL_HEADER
+#pragma once
+
 #include "util/string.h"
 
 /*
@@ -50,6 +50,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
                ContentFeatures and NodeDefManager use a different serialization
                    format; better for future version cross-compatibility
                Many things
+               Obsolete TOCLIENT_PLAYERITEM
        PROTOCOL_VERSION 10:
                TOCLIENT_PRIVILEGES
                Version raised to force 'fly' and 'fast' privileges into effect.
@@ -104,7 +105,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
        PROTOCOL_VERSION 22:
                add swap_node
        PROTOCOL_VERSION 23:
-               TOSERVER_CLIENT_READY
+               Obsolete TOSERVER_RECEIVED_MEDIA
+               Server: Stop using TOSERVER_CLIENT_READY
        PROTOCOL_VERSION 24:
                ContentFeatures version 7
                ContentFeatures: change number of special tiles to 6 (CF_SPECIAL_COUNT)
@@ -132,16 +134,63 @@ with this program; if not, write to the Free Software Foundation, Inc.,
                Rename GENERIC_CMD_SET_ATTACHMENT to GENERIC_CMD_ATTACH_TO
        PROTOCOL_VERSION 26:
                Add TileDef tileable_horizontal, tileable_vertical flags
+       PROTOCOL_VERSION 27:
+               backface_culling: backwards compatibility for playing with
+               newer client on pre-27 servers.
+               Add nodedef v3 - connected nodeboxes
+       PROTOCOL_VERSION 28:
+               CPT2_MESHOPTIONS
+       PROTOCOL_VERSION 29:
+               Server doesn't accept TOSERVER_BREATH anymore
+               serialization of TileAnimation params changed
+               TAT_SHEET_2D
+               Removed client-sided chat perdiction
+       PROTOCOL VERSION 30:
+               New ContentFeatures serialization version
+               Add node and tile color and palette
+               Fix plantlike visual_scale being applied squared and add compatibility
+                       with pre-30 clients by sending sqrt(visual_scale)
+       PROTOCOL VERSION 31:
+               Add tile overlay
+               Stop sending TOSERVER_CLIENT_READY
+       PROTOCOL VERSION 32:
+               Add fading sounds
+       PROTOCOL VERSION 33:
+               Add TOCLIENT_UPDATE_PLAYER_LIST and send the player list to the client,
+                       instead of guessing based on the active object list.
+       PROTOCOL VERSION 34:
+               Add sound pitch
+       PROTOCOL VERSION 35:
+               Rename TOCLIENT_CHAT_MESSAGE to TOCLIENT_CHAT_MESSAGE_OLD (0x30)
+               Add TOCLIENT_CHAT_MESSAGE (0x2F)
+                       This chat message is a signalisation message containing various
+                       informations:
+                       * timestamp
+                       * sender
+                       * type (RAW, NORMAL, ANNOUNCE, SYSTEM)
+                       * content
+               Add TOCLIENT_CSM_FLAVOUR_LIMITS to define which CSM flavour should be
+                       limited
+               Add settable player collisionbox. Breaks compatibility with older
+                       clients as a 1-node vertical offset has been removed from player's
+                       position
+               Add settable player stepheight using existing object property.
+                       Breaks compatibility with older clients.
+       PROTOCOL VERSION 36:
+               Backwards compatibility drop
 */
 
-#define LATEST_PROTOCOL_VERSION 25
+#define LATEST_PROTOCOL_VERSION 36
 
 // Server's supported network protocol range
-#define SERVER_PROTOCOL_VERSION_MIN 13
+#define SERVER_PROTOCOL_VERSION_MIN 36
 #define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
 
 // Client's supported network protocol range
-#define CLIENT_PROTOCOL_VERSION_MIN 13
+// 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_LEGACY 24
 #define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
 
 // Constant that differentiates the protocol from random data and other protocols
@@ -208,7 +257,6 @@ enum ToClientCommand
        TOCLIENT_BLOCKDATA = 0x20, //TODO: Multiple blocks
        TOCLIENT_ADDNODE = 0x21,
        /*
-               u16 command
                v3s16 position
                serialized mapnode
                u8 keep_metadata // Added in protocol version 22
@@ -255,7 +303,6 @@ enum ToClientCommand
        /*
                Sent as unreliable.
 
-               u16 command
                u16 number of player positions
                for each player:
                        u16 peer_id
@@ -271,24 +318,36 @@ enum ToClientCommand
 
        TOCLIENT_TIME_OF_DAY = 0x29,
        /*
-               u16 command
                u16 time (0-23999)
                Added in a later version:
                f1000 time_speed
        */
 
+       TOCLIENT_CSM_FLAVOUR_LIMITS = 0x2A,
+       /*
+               u32 CSMFlavourLimits byteflag
+        */
+
        // (oops, there is some gap here)
 
-       TOCLIENT_CHAT_MESSAGE = 0x30,
+       TOCLIENT_CHAT_MESSAGE = 0x2F,
+       /*
+               u8 version
+               u8 message_type
+               u16 sendername length
+               wstring sendername
+               u16 length
+               wstring message
+       */
+
+       TOCLIENT_CHAT_MESSAGE_OLD = 0x30, // Deprecated by proto v35
        /*
-               u16 command
                u16 length
                wstring message
        */
 
        TOCLIENT_ACTIVE_OBJECT_REMOVE_ADD = 0x31,
        /*
-               u16 command
                u16 count of removed objects
                for all removed objects {
                        u16 id
@@ -304,7 +363,6 @@ enum ToClientCommand
 
        TOCLIENT_ACTIVE_OBJECT_MESSAGES = 0x32,
        /*
-               u16 command
                for all objects
                {
                        u16 id
@@ -315,13 +373,11 @@ enum ToClientCommand
 
        TOCLIENT_HP = 0x33,
        /*
-               u16 command
                u8 hp
        */
 
        TOCLIENT_MOVE_PLAYER = 0x34,
        /*
-               u16 command
                v3f1000 player position
                f1000 player pitch
                f1000 player yaw
@@ -329,14 +385,12 @@ enum ToClientCommand
 
        TOCLIENT_ACCESS_DENIED_LEGACY = 0x35,
        /*
-               u16 command
                u16 reason_length
                wstring reason
        */
 
        TOCLIENT_PLAYERITEM = 0x36, // Obsolete
        /*
-               u16 command
                u16 count of player items
                for all player items {
                        u16 peer id
@@ -347,14 +401,12 @@ enum ToClientCommand
 
        TOCLIENT_DEATHSCREEN = 0x37,
        /*
-               u16 command
                u8 bool set camera point target
                v3f1000 camera point target (to point the death cause or whatever)
        */
 
        TOCLIENT_MEDIA = 0x38,
        /*
-               u16 command
                u16 total number of texture bunches
                u16 index of this bunch
                u32 number of files in this bunch
@@ -370,21 +422,18 @@ enum ToClientCommand
 
        TOCLIENT_TOOLDEF = 0x39,
        /*
-               u16 command
                u32 length of the next item
                serialized ToolDefManager
        */
 
        TOCLIENT_NODEDEF = 0x3a,
        /*
-               u16 command
                u32 length of the next item
                serialized NodeDefManager
        */
 
        TOCLIENT_CRAFTITEMDEF = 0x3b,
        /*
-               u16 command
                u32 length of the next item
                serialized CraftiItemDefManager
        */
@@ -392,7 +441,6 @@ enum ToClientCommand
        TOCLIENT_ANNOUNCE_MEDIA = 0x3c,
 
        /*
-               u16 command
                u32 number of files
                for each texture {
                        u16 length of name
@@ -404,14 +452,12 @@ enum ToClientCommand
 
        TOCLIENT_ITEMDEF = 0x3d,
        /*
-               u16 command
                u32 length of next item
                serialized ItemDefManager
        */
 
        TOCLIENT_PLAY_SOUND = 0x3f,
        /*
-               u16 command
                s32 sound_id
                u16 len
                u8[len] sound name
@@ -424,13 +470,11 @@ enum ToClientCommand
 
        TOCLIENT_STOP_SOUND = 0x40,
        /*
-               u16 command
                s32 sound_id
        */
 
        TOCLIENT_PRIVILEGES = 0x41,
        /*
-               u16 command
                u16 number of privileges
                for each privilege
                        u16 len
@@ -439,7 +483,6 @@ enum ToClientCommand
 
        TOCLIENT_INVENTORY_FORMSPEC = 0x42,
        /*
-               u16 command
                u32 len
                u8[len] formspec
        */
@@ -463,7 +506,6 @@ enum ToClientCommand
 
        TOCLIENT_MOVEMENT = 0x45,
        /*
-               u16 command
                f1000 movement_acceleration_default
                f1000 movement_acceleration_air
                f1000 movement_acceleration_fast
@@ -480,7 +522,6 @@ enum ToClientCommand
 
        TOCLIENT_SPAWN_PARTICLE = 0x46,
        /*
-               u16 command
                v3f1000 pos
                v3f1000 velocity
                v3f1000 acceleration
@@ -490,11 +531,11 @@ enum ToClientCommand
                u8 bool vertical
                u32 len
                u8[len] texture
+               u8 collision_removal
        */
 
        TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
        /*
-               u16 command
                u16 amount
                f1000 spawntime
                v3f1000 minpos
@@ -512,17 +553,16 @@ enum ToClientCommand
                u32 len
                u8[len] texture
                u32 id
+               u8 collision_removal
        */
 
        TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY = 0x48,
        /*
-               u16 command
                u16 id
        */
 
        TOCLIENT_HUDADD = 0x49,
        /*
-               u16 command
                u32 id
                u8 type
                v2f1000 pos
@@ -542,13 +582,11 @@ enum ToClientCommand
 
        TOCLIENT_HUDRM = 0x4a,
        /*
-               u16 command
                u32 id
        */
 
        TOCLIENT_HUDCHANGE = 0x4b,
        /*
-               u16 command
                u32 id
                u8 stat
                [v2f1000 data |
@@ -559,14 +597,12 @@ enum ToClientCommand
 
        TOCLIENT_HUD_SET_FLAGS = 0x4c,
        /*
-               u16 command
                u32 flags
                u32 mask
        */
 
        TOCLIENT_HUD_SET_PARAM = 0x4d,
        /*
-               u16 command
                u16 param
                u16 len
                u8[len] value
@@ -574,13 +610,11 @@ enum ToClientCommand
 
        TOCLIENT_BREATH = 0x4e,
        /*
-               u16 command
                u16 breath
        */
 
        TOCLIENT_SET_SKY = 0x4f,
        /*
-               u16 command
                u8[4] color (ARGB)
                u8 len
                u8[len] type
@@ -588,18 +622,17 @@ enum ToClientCommand
                foreach count:
                        u8 len
                        u8[len] param
+               u8 clouds (boolean)
        */
 
        TOCLIENT_OVERRIDE_DAY_NIGHT_RATIO = 0x50,
        /*
-               u16 command
                u8 do_override (boolean)
                u16 day-night ratio 0...65535
        */
 
        TOCLIENT_LOCAL_PLAYER_ANIMATIONS = 0x51,
        /*
-               u16 command
                v2s32 stand/idle
                v2s32 walk
                v2s32 dig
@@ -609,22 +642,44 @@ enum ToClientCommand
 
        TOCLIENT_EYE_OFFSET = 0x52,
        /*
-               u16 command
                v3f1000 first
                v3f1000 third
        */
 
        TOCLIENT_DELETE_PARTICLESPAWNER = 0x53,
        /*
-               u16 command
                u32 id
        */
 
+       TOCLIENT_CLOUD_PARAMS = 0x54,
+       /*
+               f1000 density
+               u8[4] color_diffuse (ARGB)
+               u8[4] color_ambient (ARGB)
+               f1000 height
+               f1000 thickness
+               v2f1000 speed
+       */
+
+       TOCLIENT_FADE_SOUND = 0x55,
+       /*
+               s32 sound_id
+               float step
+               float gain
+       */
+       TOCLIENT_UPDATE_PLAYER_LIST = 0x56,
+       /*
+               u8 type
+               u16 number of players
+               for each player
+                       u16 len
+                       u8[len] player name
+       */
+
        TOCLIENT_SRP_BYTES_S_B = 0x60,
        /*
                Belonging to AUTH_MECHANISM_LEGACY_PASSWORD and AUTH_MECHANISM_SRP.
 
-               u16 command
                std::string bytes_s
                std::string bytes_B
        */
@@ -677,6 +732,8 @@ enum ToServerCommand
                [2+12+12] s32 pitch*100
                [2+12+12+4] s32 yaw*100
                [2+12+12+4+4] u32 keyPressed
+               [2+12+12+4+4+1] u8 fov*80
+               [2+12+12+4+4+4+1] u8 ceil(wanted_range / MAP_BLOCKSIZE)
        */
 
        TOSERVER_GOTBLOCKS = 0x24,
@@ -735,7 +792,6 @@ enum ToServerCommand
 
        TOSERVER_SIGNTEXT = 0x30, // Old signs, obsolete
        /*
-               u16 command
                v3s16 blockpos
                s16 id
                u16 textlen
@@ -749,14 +805,12 @@ enum ToServerCommand
 
        TOSERVER_CHAT_MESSAGE = 0x32,
        /*
-               u16 command
                u16 length
                wstring message
        */
 
        TOSERVER_SIGNNODETEXT = 0x33, // obsolete
        /*
-               u16 command
                v3s16 p
                u16 textlen
                textdata
@@ -773,7 +827,6 @@ enum ToServerCommand
 
        TOSERVER_DAMAGE = 0x35,
        /*
-               u16 command
                u8 amount
        */
 
@@ -818,14 +871,12 @@ enum ToServerCommand
 
        TOSERVER_REMOVED_SOUNDS = 0x3a,
        /*
-               u16 command
                u16 len
                s32[len] sound_id
        */
 
        TOSERVER_NODEMETA_FIELDS = 0x3b,
        /*
-               u16 command
                v3s16 p
                u16 len
                u8[len] form name (reserved for future use)
@@ -839,7 +890,6 @@ enum ToServerCommand
 
        TOSERVER_INVENTORY_FIELDS = 0x3c,
        /*
-               u16 command
                u16 len
                u8[len] form name (reserved for future use)
                u16 number of fields
@@ -852,7 +902,6 @@ enum ToServerCommand
 
        TOSERVER_REQUEST_MEDIA = 0x40,
        /*
-               u16 command
                u16 number of files requested
                for each file {
                        u16 length of name
@@ -862,12 +911,11 @@ enum ToServerCommand
 
        TOSERVER_RECEIVED_MEDIA = 0x41,
        /*
-               u16 command
+               <no payload data>
        */
 
-       TOSERVER_BREATH = 0x42,
+       TOSERVER_BREATH = 0x42, // Obsolete
        /*
-               u16 command
                u16 breath
        */
 
@@ -963,4 +1011,19 @@ const static std::string accessDeniedStrings[SERVER_ACCESSDENIED_MAX] = {
        "This server has experienced an internal error. You will now be disconnected."
 };
 
-#endif
+enum PlayerListModifer: u8
+{
+       PLAYER_LIST_INIT,
+       PLAYER_LIST_ADD,
+       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,
+};
+