X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fclientserver.h;h=9d319275488725b10e1ba7b3a3c1af50812d2290;hb=0931d4b7ff95dc9b51bee28851c3780b2648ffd0;hp=8020692165cf7e3da7308c086913ba4d72e504e1;hpb=4e249fb3fbf75f0359758760d88e22aa5b14533c;p=dragonfireclient.git diff --git a/src/clientserver.h b/src/clientserver.h index 802069216..9d3192754 100644 --- a/src/clientserver.h +++ b/src/clientserver.h @@ -1,25 +1,53 @@ +/* +Minetest-c55 +Copyright (C) 2010 celeron55, Perttu Ahola + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + #ifndef CLIENTSERVER_HEADER #define CLIENTSERVER_HEADER +#include "utility.h" + #define PROTOCOL_ID 0x4f457403 +#define PASSWORD_SIZE 28 // Maximum password length. Allows for + // base64-encoded SHA-1 (27+\0). + enum ToClientCommand { - TOCLIENT_INIT=0x10, + TOCLIENT_INIT = 0x10, /* Server's reply to TOSERVER_INIT. Sent second after connected. [0] u16 TOSERVER_INIT [2] u8 deployed version - [3] v3s16 player's position + v3f(0,BS/2,0) floatToInt'd + [3] v3s16 player's position + v3f(0,BS/2,0) floatToInt'd + [12] u64 map seed (new as of 2011-02-27) + + NOTE: The position in here is deprecated; position is + explicitly sent afterwards */ - TOCLIENT_BLOCKDATA=0x20, //TODO: Multiple blocks - TOCLIENT_ADDNODE, - TOCLIENT_REMOVENODE, + TOCLIENT_BLOCKDATA = 0x20, //TODO: Multiple blocks + TOCLIENT_ADDNODE = 0x21, + TOCLIENT_REMOVENODE = 0x22, - TOCLIENT_PLAYERPOS, + TOCLIENT_PLAYERPOS = 0x23, // Obsolete /* [0] u16 command // Followed by an arbitary number of these: @@ -31,7 +59,7 @@ enum ToClientCommand [N+2+12+12+4] s32 yaw*100 */ - TOCLIENT_PLAYERINFO, + TOCLIENT_PLAYERINFO = 0x24, /* [0] u16 command // Followed by an arbitary number of these: @@ -40,28 +68,29 @@ enum ToClientCommand [N] char[20] name */ - TOCLIENT_OPT_BLOCK_NOT_FOUND, // Not used + TOCLIENT_OPT_BLOCK_NOT_FOUND = 0x25, // Obsolete - TOCLIENT_SECTORMETA, + TOCLIENT_SECTORMETA = 0x26, // Obsolete /* [0] u16 command [2] u8 sector count [3...] v2s16 pos + sector metadata */ - TOCLIENT_INVENTORY, + TOCLIENT_INVENTORY = 0x27, /* [0] u16 command [2] serialized inventory */ - TOCLIENT_OBJECTDATA, + TOCLIENT_OBJECTDATA = 0x28, /* 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 @@ -71,6 +100,78 @@ enum ToClientCommand v3s16 blockpos block objects */ + + TOCLIENT_TIME_OF_DAY = 0x29, + /* + u16 command + u16 time (0-23999) + */ + + TOCLIENT_CHAT_MESSAGE = 0x30, + /* + 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 + } + u16 count of added objects + for all added objects { + u16 id + u8 type + u32 initialization data length + string initialization data + } + */ + + TOCLIENT_ACTIVE_OBJECT_MESSAGES = 0x32, + /* + u16 command + for all objects + { + u16 id + u16 message length + string message + } + */ + + TOCLIENT_HP = 0x33, + /* + u16 command + u8 hp + */ + + TOCLIENT_MOVE_PLAYER = 0x34, + /* + u16 command + v3f1000 player position + f1000 player pitch + f1000 player yaw + */ + + TOCLIENT_ACCESS_DENIED = 0x35, + /* + u16 command + 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 + } + */ }; enum ToServerCommand @@ -82,9 +183,11 @@ enum ToServerCommand [0] u16 TOSERVER_INIT [2] u8 SER_FMT_VER_HIGHEST [3] u8[20] player_name + [23] u8[28] password (new in some version) + [51] u16 client network protocol version (new in some version) */ - TOSERVER_INIT2, + TOSERVER_INIT2 = 0x11, /* Sent as an ACK for TOCLIENT_INIT. After this, the server can send data. @@ -92,11 +195,11 @@ enum ToServerCommand [0] u16 TOSERVER_INIT2 */ - TOSERVER_GETBLOCK=0x20, // Not used - TOSERVER_ADDNODE, // Not used - TOSERVER_REMOVENODE, // deprecated + TOSERVER_GETBLOCK=0x20, // Obsolete + TOSERVER_ADDNODE = 0x21, // Obsolete + TOSERVER_REMOVENODE = 0x22, // Obsolete - TOSERVER_PLAYERPOS, + TOSERVER_PLAYERPOS = 0x23, /* [0] u16 command [2] v3s32 position*100 @@ -105,7 +208,7 @@ enum ToServerCommand [2+12+12+4] s32 yaw*100 */ - TOSERVER_GOTBLOCKS, + TOSERVER_GOTBLOCKS = 0x24, /* [0] u16 command [2] u8 count @@ -114,7 +217,7 @@ enum ToServerCommand ... */ - TOSERVER_DELETEDBLOCKS, + TOSERVER_DELETEDBLOCKS = 0x25, /* [0] u16 command [2] u8 count @@ -123,14 +226,14 @@ enum ToServerCommand ... */ - TOSERVER_ADDNODE_FROM_INVENTORY, // deprecated + TOSERVER_ADDNODE_FROM_INVENTORY = 0x26, // Obsolete /* [0] u16 command [2] v3s16 pos [8] u16 i */ - TOSERVER_CLICK_OBJECT, + TOSERVER_CLICK_OBJECT = 0x27, /* length: 13 [0] u16 command @@ -140,24 +243,24 @@ enum ToServerCommand [11] u16 item */ - TOSERVER_CLICK_GROUND, + TOSERVER_GROUND_ACTION = 0x28, /* length: 17 [0] u16 command - [2] u8 button (0=left, 1=right) + [2] u8 action [3] v3s16 nodepos_undersurface [9] v3s16 nodepos_abovesurface [15] u16 item + actions: + 0: start digging (from undersurface) + 1: place block (to abovesurface) + 2: stop digging (all parameters ignored) + 3: digging completed */ - TOSERVER_RELEASE, - /* - length: 3 - [0] u16 command - [2] u8 button - */ + TOSERVER_RELEASE = 0x29, // Obsolete - TOSERVER_SIGNTEXT, + TOSERVER_SIGNTEXT = 0x30, // Old signs /* u16 command v3s16 blockpos @@ -165,10 +268,68 @@ enum ToServerCommand u16 textlen textdata */ + + TOSERVER_INVENTORY_ACTION = 0x31, + /* + See InventoryAction in inventory.h + */ + + TOSERVER_CHAT_MESSAGE = 0x32, + /* + u16 command + u16 length + wstring message + */ + + TOSERVER_SIGNNODETEXT = 0x33, + /* + u16 command + v3s16 p + u16 textlen + textdata + */ + + TOSERVER_CLICK_ACTIVEOBJECT = 0x34, + /* + length: 7 + [0] u16 command + [2] u8 button (0=left, 1=right) + [3] u16 id + [5] u16 item + */ + + TOSERVER_DAMAGE = 0x35, + /* + u16 command + u8 amount + */ + + TOSERVER_PASSWORD=0x36, + /* + Sent to change password. + + [0] u16 TOSERVER_PASSWORD + [2] u8[28] old password + [30] u8[28] new password + */ + + TOSERVER_PLAYERITEM=0x37, + /* + Sent to change selected item. + + [0] u16 TOSERVER_PLAYERITEM + [2] u16 item + */ + }; -// Flags for TOSERVER_GETBLOCK -#define TOSERVER_GETBLOCK_FLAG_OPTIONAL (1<<0) +inline SharedBuffer makePacket_TOCLIENT_TIME_OF_DAY(u16 time) +{ + SharedBuffer data(2+2); + writeU16(&data[0], TOCLIENT_TIME_OF_DAY); + writeU16(&data[2], time); + return data; +} #endif