X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fclientserver.h;h=8badd177eb468d78797affa007facca9b0a14b37;hb=54917e306256d4d39b95335986fce93b8c56a6e3;hp=7972762c05af82eccdbf9be60b0026c530a42fc9;hpb=f37a3a84fafb91bcfc109fed95aa6d42726f1bf7;p=minetest.git diff --git a/src/clientserver.h b/src/clientserver.h index 7972762c0..8badd177e 100644 --- a/src/clientserver.h +++ b/src/clientserver.h @@ -22,11 +22,41 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "utility.h" +/* + changes by PROTOCOL_VERSION: + + PROTOCOL_VERSION 3: + Base for writing changes here + PROTOCOL_VERSION 4: + Add TOCLIENT_TEXTURES + Add TOCLIENT_TOOLDEF + Add TOCLIENT_NODEDEF + Add TOCLIENT_CRAFTITEMDEF + Add TOSERVER_INTERACT + Obsolete TOSERVER_CLICK_ACTIVEOBJECT + Obsolete TOSERVER_GROUND_ACTION + PROTOCOL_VERSION 5: + Make players to be handled mostly as ActiveObjects + PROTOCOL_VERSION 6: + Only non-cached textures are sent + PROTOCOL_VERSION 7: + Add TOCLIENT_ITEMDEF + Obsolete TOCLIENT_TOOLDEF + Obsolete TOCLIENT_CRAFTITEMDEF + Compress the contents of TOCLIENT_ITEMDEF and TOCLIENT_NODEDEF + PROTOCOL_VERSION 8: + Digging based on item groups +*/ + +#define PROTOCOL_VERSION 8 + #define PROTOCOL_ID 0x4f457403 #define PASSWORD_SIZE 28 // Maximum password length. Allows for // base64-encoded SHA-1 (27+\0). +#define TEXTURENAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_." + enum ToClientCommand { TOCLIENT_INIT = 0x10, @@ -37,7 +67,7 @@ enum ToClientCommand [0] u16 TOSERVER_INIT [2] u8 deployed version [3] v3s16 player's position + v3f(0,BS/2,0) floatToInt'd - ([4] u64 map seed (new as of 2011-02-27)) + [12] u64 map seed (new as of 2011-02-27) NOTE: The position in here is deprecated; position is explicitly sent afterwards @@ -59,7 +89,7 @@ enum ToClientCommand [N+2+12+12+4] s32 yaw*100 */ - TOCLIENT_PLAYERINFO = 0x24, + TOCLIENT_PLAYERINFO = 0x24, // Obsolete /* [0] u16 command // Followed by an arbitary number of these: @@ -83,13 +113,14 @@ enum ToClientCommand [2] serialized inventory */ - TOCLIENT_OBJECTDATA = 0x28, + TOCLIENT_OBJECTDATA = 0x28, // Obsolete /* Sent as unreliable. u16 command u16 number of player positions for each player: + u16 peer_id v3s32 position*100 v3s32 speed*100 s32 pitch*100 @@ -106,6 +137,8 @@ enum ToClientCommand u16 time (0-23999) */ + // (oops, there is some gap here) + TOCLIENT_CHAT_MESSAGE = 0x30, /* u16 command @@ -124,7 +157,7 @@ enum ToClientCommand for all added objects { u16 id u8 type - u16 initialization data length + u32 initialization data length string initialization data } */ @@ -160,6 +193,80 @@ enum ToClientCommand u16 reason_length wstring reason */ + + TOCLIENT_PLAYERITEM = 0x36, + /* + u16 command + u16 count of player items + for all player items { + u16 peer id + u16 length of serialized item + string serialized item + } + */ + + TOCLIENT_DEATHSCREEN = 0x37, + /* + u16 command + u8 bool set camera point target + v3f1000 camera point target (to point the death cause or whatever) + */ + + TOCLIENT_TEXTURES = 0x38, + /* + u16 command + u16 total number of texture bunches + u16 index of this bunch + u32 number of textures in this bunch + for each texture { + u16 length of name + string name + u32 length of data + data + } + */ + + 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 + */ + + TOCLIENT_ANNOUNCE_TEXTURES = 0x3c, + + /* + u16 command + u32 number of textures + for each texture { + u16 length of name + string name + u16 length of sha1_digest + string sha1_digest + } + */ + + TOCLIENT_ITEMDEF = 0x3d, + /* + u16 command + u32 length of next item + serialized ItemDefManager + */ + }; enum ToServerCommand @@ -171,7 +278,8 @@ enum ToServerCommand [0] u16 TOSERVER_INIT [2] u8 SER_FMT_VER_HIGHEST [3] u8[20] player_name - [23] u8[28] password + [23] u8[28] password (new in some version) + [51] u16 client network protocol version (new in some version) */ TOSERVER_INIT2 = 0x11, @@ -220,7 +328,7 @@ enum ToServerCommand [8] u16 i */ - TOSERVER_CLICK_OBJECT = 0x27, + TOSERVER_CLICK_OBJECT = 0x27, // Obsolete /* length: 13 [0] u16 command @@ -230,7 +338,7 @@ enum ToServerCommand [11] u16 item */ - TOSERVER_GROUND_ACTION = 0x28, + TOSERVER_GROUND_ACTION = 0x28, // Obsolete /* length: 17 [0] u16 command @@ -247,7 +355,9 @@ enum ToServerCommand TOSERVER_RELEASE = 0x29, // Obsolete - TOSERVER_SIGNTEXT = 0x30, // Old signs + // (oops, there is some gap here) + + TOSERVER_SIGNTEXT = 0x30, // Old signs, obsolete /* u16 command v3s16 blockpos @@ -276,7 +386,7 @@ enum ToServerCommand textdata */ - TOSERVER_CLICK_ACTIVEOBJECT = 0x34, + TOSERVER_CLICK_ACTIVEOBJECT = 0x34, // Obsolete /* length: 7 [0] u16 command @@ -300,6 +410,47 @@ enum ToServerCommand [30] u8[28] new password */ + TOSERVER_PLAYERITEM=0x37, + /* + Sent to change selected item. + + [0] u16 TOSERVER_PLAYERITEM + [2] u16 item + */ + + TOSERVER_RESPAWN=0x38, + /* + u16 TOSERVER_RESPAWN + */ + + TOSERVER_INTERACT = 0x39, + /* + [0] u16 command + [2] u8 action + [3] u16 item + [5] u32 length of the next item + [9] serialized PointedThing + actions: + 0: start digging (from undersurface) or use + 1: stop digging (all parameters ignored) + 2: digging completed + 3: place block or item (to abovesurface) + 4: use item + + (Obsoletes TOSERVER_GROUND_ACTION and TOSERVER_CLICK_ACTIVEOBJECT.) + */ + + TOSERVER_REQUEST_TEXTURES = 0x40, + + /* + u16 command + u16 number of textures requested + for each texture { + u16 length of name + string name + } + */ + }; inline SharedBuffer makePacket_TOCLIENT_TIME_OF_DAY(u16 time)