]> git.lizzy.rs Git - minetest.git/blobdiff - src/network/networkprotocol.h
Bump protocol version
[minetest.git] / src / network / networkprotocol.h
index 53d36e6669cd2571afc748ff0e00e863aadaf85d..3ab839f8dc5527f486a9a5d7aef09acfde39a094 100644 (file)
@@ -70,8 +70,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
        PROTOCOL_VERSION 14:
                Added transfer of player pressed keys to the server
                Added new messages for mesh and bone animation, as well as attachments
-               GENERIC_CMD_SET_ANIMATION
-               GENERIC_CMD_SET_BONE_POSITION
+               AO_CMD_SET_ANIMATION
+               AO_CMD_SET_BONE_POSITION
                GENERIC_CMD_SET_ATTACHMENT
        PROTOCOL_VERSION 15:
                Serialization format changes
@@ -87,7 +87,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
                damageGroups added to ToolCapabilities
                sound_place added to ItemDefinition
        PROTOCOL_VERSION 19:
-               GENERIC_CMD_SET_PHYSICS_OVERRIDE
+               AO_CMD_SET_PHYSICS_OVERRIDE
        PROTOCOL_VERSION 20:
                TOCLIENT_HUDADD
                TOCLIENT_HUDRM
@@ -131,7 +131,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
                Add TOCLIENT_HELLO for presenting server to client after client
                        presentation
                Add TOCLIENT_AUTH_ACCEPT to accept connection from client
-               Rename GENERIC_CMD_SET_ATTACHMENT to GENERIC_CMD_ATTACH_TO
+               Rename GENERIC_CMD_SET_ATTACHMENT to AO_CMD_ATTACH_TO
        PROTOCOL_VERSION 26:
                Add TileDef tileable_horizontal, tileable_vertical flags
        PROTOCOL_VERSION 27:
@@ -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
@@ -187,18 +187,41 @@ with this program; if not, write to the Free Software Foundation, Inc.,
                        '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
+               ContentFeatures version 13
+               Add full Euler rotations instead of just yaw
+               Add TOCLIENT_PLAYER_SPEED
+       PROTOCOL VERSION 38:
+               Incremental inventory sending mode
+               Unknown inventory serialization fields no longer throw an error
+               Mod-specific formspec version
+               Player FOV override API
+               "ephemeral" added to TOCLIENT_PLAY_SOUND
+       PROTOCOL VERSION 39:
+               Updated set_sky packet
+               Adds new sun, moon and stars packets
+               Minimap modes
+       PROTOCOL VERSION 40:
+               TOCLIENT_MEDIA_PUSH changed, TOSERVER_HAVE_MEDIA added
+               Added new particlespawner parameters
+               [scheduled bump for 5.6.0]
 */
 
-#define LATEST_PROTOCOL_VERSION 36
+#define LATEST_PROTOCOL_VERSION 41
+#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
@@ -207,8 +230,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #define PASSWORD_SIZE 28       // Maximum password length. Allows for
                                // base64-encoded SHA-1 (27+\0).
 
-#define FORMSPEC_API_VERSION 1
-#define FORMSPEC_VERSION_STRING "formspec_version[" TOSTRING(FORMSPEC_API_VERSION) "]"
+// See also formspec [Version History] in doc/lua_api.txt
+#define FORMSPEC_API_VERSION 6
 
 #define TEXTURENAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-"
 
@@ -282,11 +305,24 @@ enum ToClientCommand
                f1000 time_speed
        */
 
-       TOCLIENT_CSM_FLAVOUR_LIMITS = 0x2A,
+       TOCLIENT_CSM_RESTRICTION_FLAGS = 0x2A,
        /*
-               u32 CSMFlavourLimits byteflag
+               u32 CSMRestrictionFlags byteflag
         */
 
+       TOCLIENT_PLAYER_SPEED = 0x2B,
+       /*
+               v3f added_vel
+        */
+
+       TOCLIENT_MEDIA_PUSH = 0x2C,
+       /*
+               std::string raw_hash
+               std::string filename
+               u32 callback_token
+               bool should_be_cached
+       */
+
        // (oops, there is some gap here)
 
        TOCLIENT_CHAT_MESSAGE = 0x2F,
@@ -344,7 +380,14 @@ enum ToClientCommand
                wstring reason
        */
 
-       TOCLIENT_PLAYERITEM = 0x36, // Obsolete
+       TOCLIENT_FOV = 0x36,
+       /*
+               Sends an FOV override/multiplier to client.
+
+               f32 fov
+               bool is_multiplier
+               f32 transition_time
+       */
 
        TOCLIENT_DEATHSCREEN = 0x37,
        /*
@@ -413,6 +456,7 @@ enum ToClientCommand
                s32[3] pos_nodes*10000
                u16 object_id
                u8 loop (bool)
+               u8 ephemeral (bool)
        */
 
        TOCLIENT_STOP_SOUND = 0x40,
@@ -469,38 +513,106 @@ enum ToClientCommand
 
        TOCLIENT_SPAWN_PARTICLE = 0x46,
        /*
-               v3f1000 pos
-               v3f1000 velocity
-               v3f1000 acceleration
-               f1000 expirationtime
-               f1000 size
+               -- struct range<T> { T min, T max, f32 bias };
+               v3f pos
+               v3f velocity
+               v3f acceleration
+               f32 expirationtime
+               f32 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
+               v3f drag
+               range<v3f> bounce
        */
 
        TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
        /*
+               -- struct range<T> { T min, T max, f32 bias };
+               -- struct tween<T> { T start, T end };
                u16 amount
-               f1000 spawntime
-               v3f1000 minpos
-               v3f1000 maxpos
-               v3f1000 minvel
-               v3f1000 maxvel
-               v3f1000 minacc
-               v3f1000 maxacc
-               f1000 minexptime
-               f1000 maxexptime
-               f1000 minsize
-               f1000 maxsize
+               f32 spawntime
+               v3f minpos
+               v3f maxpos
+               v3f minvel
+               v3f maxvel
+               v3f minacc
+               v3f maxacc
+               f32 minexptime
+               f32 maxexptime
+               f32 minsize
+               f32 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
+
+               f32 pos_start_bias
+               f32 vel_start_bias
+               f32 acc_start_bias
+               f32 exptime_start_bias
+               f32 size_start_bias
+
+               range<v3f> pos_end
+               -- i.e v3f pos_end_min
+               --     v3f pos_end_max
+               --     f32 pos_end_bias
+               range<v3f> vel_end
+               range<v3f> acc_end
+
+               tween<range<v3f>> drag
+               -- i.e. v3f drag_start_min
+               --      v3f drag_start_max
+               --      f32 drag_start_bias
+               --      v3f drag_end_min
+               --      v3f drag_end_max
+               --      f32 drag_end_bias
+               tween<range<v3f>> jitter
+               tween<range<f32>> bounce
+
+               u8 attraction_kind
+                       none  = 0
+                       point = 1
+                       line  = 2
+                       plane = 3
+
+               if attraction_kind > none {
+                       tween<range<f32>> attract_strength
+                       tween<v3f>        attractor_origin
+                       u16               attractor_origin_attachment_object_id
+                       u8                spawner_flags
+                           bit 1: attractor_kill (particles dies on contact)
+                       if attraction_mode > point {
+                               tween<v3f> attractor_angle
+                               u16        attractor_origin_attachment_object_id
+                       }
+               }
+
+               tween<range<v3f>> radius
+               tween<range<v3f>> drag
+
+               u16 texpool_sz
+               texpool_sz.times {
+                       u8 flags
+                       -- bit 0: animated
+                       -- other bits free & ignored as of proto v40
+                       tween<f32> alpha
+                       tween<v2f> scale
+                       if flags.animated {
+                               TileAnimation animation
+                       }
+               }
+
        */
 
        TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY = 0x48, // Obsolete
@@ -510,10 +622,10 @@ enum ToClientCommand
                u32 id
                u8 type
                v2f1000 pos
-               u32 len
+               u16 len
                u8[len] name
                v2f1000 scale
-               u32 len2
+               u16 len2
                u8[len2] text
                u32 number
                u32 item
@@ -522,6 +634,9 @@ enum ToClientCommand
                v2f1000 offset
                v3f1000 world_pos
                v2s32 size
+               s16 z_index
+               u16 len3
+               u8[len3] text2
        */
 
        TOCLIENT_HUDRM = 0x4a,
@@ -559,7 +674,8 @@ enum ToClientCommand
 
        TOCLIENT_SET_SKY = 0x4f,
        /*
-               u8[4] color (ARGB)
+               Protocol 38:
+               u8[4] base_color (ARGB)
                u8 len
                u8[len] type
                u16 count
@@ -567,6 +683,24 @@ enum ToClientCommand
                        u8 len
                        u8[len] param
                u8 clouds (boolean)
+
+               Protocol 39:
+               u8[4] bgcolor (ARGB)
+               std::string type
+               int texture_count
+               std::string[6] param
+               bool clouds
+               bool bgcolor_fog
+               u8[4] day_sky (ARGB)
+               u8[4] day_horizon (ARGB)
+               u8[4] dawn_sky (ARGB)
+               u8[4] dawn_horizon (ARGB)
+               u8[4] night_sky (ARGB)
+               u8[4] night_horizon (ARGB)
+               u8[4] indoors (ARGB)
+               u8[4] fog_sun_tint (ARGB)
+               u8[4] fog_moon_tint (ARGB)
+               std::string fog_tint_type
        */
 
        TOCLIENT_OVERRIDE_DAY_NIGHT_RATIO = 0x50,
@@ -628,13 +762,45 @@ enum ToClientCommand
                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_SET_SUN = 0x5a,
+       /*
+               bool visible
+               std::string texture
+               std::string tonemap
+               std::string sunrise
+               f32 scale
+       */
+
+       TOCLIENT_SET_MOON = 0x5b,
+       /*
+               bool visible
+               std::string texture
+               std::string tonemap
+               f32 scale
+       */
+
+       TOCLIENT_SET_STARS = 0x5c,
+       /*
+               bool visible
+               u32 count
+               u8[4] starcolor (ARGB)
+               f32 scale
+               f32 day_opacity
+       */
 
        TOCLIENT_SRP_BYTES_S_B = 0x60,
        /*
@@ -644,7 +810,29 @@ enum ToClientCommand
                std::string bytes_B
        */
 
-       TOCLIENT_NUM_MSG_TYPES = 0x61,
+       TOCLIENT_FORMSPEC_PREPEND = 0x61,
+       /*
+               u16 len
+               u8[len] formspec
+       */
+
+       TOCLIENT_MINIMAP_MODES = 0x62,
+       /*
+               u16 count // modes
+               u16 mode  // wanted current mode index after change
+               for each mode
+                       u16 type
+                       std::string label
+                       u16 size
+                       std::string extra
+       */
+
+       TOCLIENT_SET_LIGHTING = 0x63,
+       /*
+               f32 shadow_intensity
+       */
+
+       TOCLIENT_NUM_MSG_TYPES = 0x64,
 };
 
 enum ToServerCommand
@@ -819,7 +1007,13 @@ enum ToServerCommand
                }
        */
 
-       TOSERVER_RECEIVED_MEDIA = 0x41, // Obsolete
+       TOSERVER_HAVE_MEDIA = 0x41,
+       /*
+               u8 number of callback tokens
+               for each:
+                       u32 token
+       */
+
        TOSERVER_BREATH = 0x42, // Obsolete
 
        TOSERVER_CLIENT_READY = 0x43,
@@ -877,7 +1071,7 @@ enum AuthMechanism
        AUTH_MECHANISM_FIRST_SRP = 1 << 2,
 };
 
-enum AccessDeniedCode {
+enum AccessDeniedCode : u8 {
        SERVER_ACCESSDENIED_WRONG_PASSWORD,
        SERVER_ACCESSDENIED_UNEXPECTED_DATA,
        SERVER_ACCESSDENIED_SINGLEPLAYER,
@@ -900,34 +1094,48 @@ enum NetProtoCompressionMode {
 
 const static std::string accessDeniedStrings[SERVER_ACCESSDENIED_MAX] = {
        "Invalid password",
-       "Your client sent something the server didn't expect.  Try reconnecting or updating your client",
+       "Your client sent something the server didn't expect.  Try reconnecting or updating your client.",
        "The server is running in simple singleplayer mode.  You cannot connect.",
-       "Your client's version is not supported.\nPlease contact server administrator.",
-       "Player name contains disallowed characters.",
-       "Player name not allowed.",
-       "Too many users.",
+       "Your client's version is not supported.\nPlease contact the server administrator.",
+       "Player name contains disallowed characters",
+       "Player name not allowed",
+       "Too many users",
        "Empty passwords are disallowed.  Set a password and try again.",
        "Another client is connected with this name.  If your client closed unexpectedly, try again in a minute.",
-       "Server authentication failed.  This is likely a server error.",
+       "Internal server error",
        "",
-       "Server shutting down.",
-       "This server has experienced an internal error. You will now be disconnected."
+       "Server shutting down",
+       "The server has experienced an internal error.  You will now be disconnected."
 };
 
-enum PlayerListModifer: u8
+enum PlayerListModifer : u8
 {
        PLAYER_LIST_INIT,
        PLAYER_LIST_ADD,
        PLAYER_LIST_REMOVE,
 };
 
-enum CSMFlavourLimit : u64 {
-       CSM_FL_NONE = 0x00000000,
-       CSM_FL_LOAD_CLIENT_MODS = 0x00000001, // Disable mods provided by clients
-       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_LOOKUP_NODES = 0x00000010, // Limit node lookups
-       CSM_FL_ALL = 0xFFFFFFFF,
+enum CSMRestrictionFlags : u64 {
+       CSM_RF_NONE = 0x00000000,
+       // Until server-sent CSM and verifying of builtin are complete,
+       // 'CSM_RF_LOAD_CLIENT_MODS' also disables loading 'builtin'.
+       // When those are complete, this should return to only being a restriction on the
+       // loading of client mods.
+       CSM_RF_LOAD_CLIENT_MODS = 0x00000001, // Don't load client-provided mods or 'builtin'
+       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,
 };
 
+enum InteractAction : u8
+{
+       INTERACT_START_DIGGING,     // 0: start digging (from undersurface) or use
+       INTERACT_STOP_DIGGING,      // 1: stop digging (all parameters ignored)
+       INTERACT_DIGGING_COMPLETED, // 2: digging completed
+       INTERACT_PLACE,             // 3: place block or item (to abovesurface)
+       INTERACT_USE,               // 4: use item
+       INTERACT_ACTIVATE           // 5: rightclick air ("activate")
+};