X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fclientserver.h;h=ee9271bbcdfe2cdfbffa4aac8ba49eea5e41de9d;hb=865f380c91ced850d1a499c91aa2ab5489624802;hp=82e485d95d96d2cf803461ac7c6d89569bc17a8e;hpb=1b63f8d6b9cb3b8775f3a541dded890b0adfa6fd;p=oweals%2Fminetest.git diff --git a/src/clientserver.h b/src/clientserver.h index 82e485d95..ee9271bbc 100644 --- a/src/clientserver.h +++ b/src/clientserver.h @@ -1,6 +1,6 @@ /* -Minetest-c55 -Copyright (C) 2010 celeron55, Perttu Ahola +Minetest +Copyright (C) 2010-2013 celeron55, Perttu Ahola This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -20,7 +20,9 @@ with this program; if not, write to the Free Software Foundation, Inc., #ifndef CLIENTSERVER_HEADER #define CLIENTSERVER_HEADER -#include "util/serialize.h" +#include "util/pointer.h" + +SharedBuffer makePacket_TOCLIENT_TIME_OF_DAY(u16 time, float time_speed); /* changes by PROTOCOL_VERSION: @@ -67,10 +69,45 @@ with this program; if not, write to the Free Software Foundation, Inc., TOCLIENT_DETACHED_INVENTORY PROTOCOL_VERSION 13: InventoryList field "Width" (deserialization fails with old versions) + 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 + GENERIC_CMD_SET_ATTACHMENT + PROTOCOL_VERSION 15: + Serialization format changes + PROTOCOL_VERSION 16: + TOCLIENT_SHOW_FORMSPEC + PROTOCOL_VERSION 17: + Serialization format change: include backface_culling flag in TileDef + Added rightclickable field in nodedef + TOCLIENT_SPAWN_PARTICLE + TOCLIENT_ADD_PARTICLESPAWNER + TOCLIENT_DELETE_PARTICLESPAWNER + PROTOCOL_VERSION 18: + damageGroups added to ToolCapabilities + sound_place added to ItemDefinition + PROTOCOL_VERSION 19: + GENERIC_CMD_SET_PHYSICS_OVERRIDE + PROTOCOL_VERSION 20: + TOCLIENT_HUDADD + TOCLIENT_HUDRM + TOCLIENT_HUDCHANGE + TOCLIENT_HUD_SET_FLAGS */ -#define PROTOCOL_VERSION 13 +#define LATEST_PROTOCOL_VERSION 20 + +// Server's supported network protocol range +#define SERVER_PROTOCOL_VERSION_MIN 13 +#define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION +// Client's supported network protocol range +#define CLIENT_PROTOCOL_VERSION_MIN 13 +#define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION + +// Constant that differentiates the protocol from random data and other protocols #define PROTOCOL_ID 0x4f457403 #define PASSWORD_SIZE 28 // Maximum password length. Allows for @@ -89,6 +126,7 @@ enum ToClientCommand [2] u8 deployed version [3] v3s16 player's position + v3f(0,BS/2,0) floatToInt'd [12] u64 map seed (new as of 2011-02-27) + [20] f1000 recommended send interval (in seconds) (new as of 14) NOTE: The position in here is deprecated; position is explicitly sent afterwards @@ -247,6 +285,8 @@ enum ToClientCommand u32 length of data data } + u16 length of remote media server url (if applicable) + string url */ TOCLIENT_TOOLDEF = 0x39, @@ -332,6 +372,114 @@ enum ToClientCommand u8[len] name [2] serialized inventory */ + + TOCLIENT_SHOW_FORMSPEC = 0x44, + /* + [0] u16 command + u32 len + u8[len] formspec + u16 len + u8[len] formname + */ + + TOCLIENT_MOVEMENT = 0x45, + /* + u16 command + f1000 movement_acceleration_default + f1000 movement_acceleration_air + f1000 movement_acceleration_fast + f1000 movement_speed_walk + f1000 movement_speed_crouch + f1000 movement_speed_fast + f1000 movement_speed_climb + f1000 movement_speed_jump + f1000 movement_liquid_fluidity + f1000 movement_liquid_fluidity_smooth + f1000 movement_liquid_sink + f1000 movement_gravity + */ + + TOCLIENT_SPAWN_PARTICLE = 0x46, + /* + u16 command + v3f1000 pos + v3f1000 velocity + v3f1000 acceleration + f1000 expirationtime + f1000 size + u8 bool collisiondetection + u32 len + u8[len] texture + */ + + TOCLIENT_ADD_PARTICLESPAWNER = 0x47, + /* + u16 command + u16 amount + f1000 spawntime + v3f1000 minpos + v3f1000 maxpos + v3f1000 minvel + v3f1000 maxvel + v3f1000 minacc + v3f1000 maxacc + f1000 minexptime + f1000 maxexptime + f1000 minsize + f1000 maxsize + u8 bool collisiondetection + u32 len + u8[len] texture + u32 id + */ + + TOCLIENT_DELETE_PARTICLESPAWNER = 0x48, + /* + u16 command + u32 id + */ + + TOCLIENT_HUDADD = 0x49, + /* + u16 command + u32 id + u8 type + v2f1000 pos + u32 len + u8[len] name + v2f1000 scale + u32 len2 + u8[len2] text + u32 number + u32 item + u32 dir + v2f1000 align + v2f1000 offset + */ + + TOCLIENT_HUDRM = 0x4a, + /* + u16 command + u32 id + */ + + TOCLIENT_HUDCHANGE = 0x4b, + /* + u16 command + u32 id + u8 stat + [v2f1000 data | + u32 len + u8[len] data | + u32 data] + */ + + TOCLIENT_HUD_SET_FLAGS = 0x4c, + /* + u16 command + u32 flags + u32 mask + */ }; enum ToServerCommand @@ -344,7 +492,8 @@ enum ToServerCommand [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) + [51] u16 minimum supported network protocol version (added sometime) + [53] u16 maximum supported network protocol version (added later than the previous one) */ TOSERVER_INIT2 = 0x11, @@ -366,6 +515,7 @@ enum ToServerCommand [2+12] v3s32 speed*100 [2+12+12] s32 pitch*100 [2+12+12+4] s32 yaw*100 + [2+12+12+4+4] u32 keyPressed */ TOSERVER_GOTBLOCKS = 0x24, @@ -549,16 +699,11 @@ enum ToServerCommand } */ + TOSERVER_RECEIVED_MEDIA = 0x41, + /* + u16 command + */ }; -inline SharedBuffer makePacket_TOCLIENT_TIME_OF_DAY(u16 time, float time_speed) -{ - SharedBuffer data(2+2+4); - writeU16(&data[0], TOCLIENT_TIME_OF_DAY); - writeU16(&data[2], time); - writeF1000(&data[4], time_speed); - return data; -} - #endif