2010-11-29 19:13:04 +01:00
|
|
|
/*
|
2013-02-24 18:40:43 +01:00
|
|
|
Minetest
|
2013-02-24 19:38:45 +01:00
|
|
|
Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
|
2010-11-29 19:13:04 +01:00
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
2012-06-05 16:56:56 +02:00
|
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2.1 of the License, or
|
2010-11-29 19:13:04 +01:00
|
|
|
(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
|
2012-06-05 16:56:56 +02:00
|
|
|
GNU Lesser General Public License for more details.
|
2010-11-29 19:13:04 +01:00
|
|
|
|
2012-06-05 16:56:56 +02:00
|
|
|
You should have received a copy of the GNU Lesser General Public License along
|
2010-11-29 19:13:04 +01:00
|
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
*/
|
|
|
|
|
2010-11-27 00:02:21 +01:00
|
|
|
#ifndef CLIENTSERVER_HEADER
|
|
|
|
#define CLIENTSERVER_HEADER
|
2014-06-25 19:04:47 +02:00
|
|
|
#include "util/string.h"
|
2010-11-27 00:02:21 +01:00
|
|
|
|
2011-11-15 00:00:16 +01:00
|
|
|
/*
|
|
|
|
changes by PROTOCOL_VERSION:
|
|
|
|
|
|
|
|
PROTOCOL_VERSION 3:
|
|
|
|
Base for writing changes here
|
|
|
|
PROTOCOL_VERSION 4:
|
2012-03-25 10:50:29 +02:00
|
|
|
Add TOCLIENT_MEDIA
|
2011-11-15 22:58:56 +01:00
|
|
|
Add TOCLIENT_TOOLDEF
|
2011-11-15 19:32:56 +01:00
|
|
|
Add TOCLIENT_NODEDEF
|
2011-11-29 16:15:18 +01:00
|
|
|
Add TOCLIENT_CRAFTITEMDEF
|
|
|
|
Add TOSERVER_INTERACT
|
|
|
|
Obsolete TOSERVER_CLICK_ACTIVEOBJECT
|
|
|
|
Obsolete TOSERVER_GROUND_ACTION
|
2011-12-01 22:55:57 +01:00
|
|
|
PROTOCOL_VERSION 5:
|
|
|
|
Make players to be handled mostly as ActiveObjects
|
2012-01-02 12:31:50 +01:00
|
|
|
PROTOCOL_VERSION 6:
|
|
|
|
Only non-cached textures are sent
|
2012-01-12 06:10:39 +01:00
|
|
|
PROTOCOL_VERSION 7:
|
|
|
|
Add TOCLIENT_ITEMDEF
|
|
|
|
Obsolete TOCLIENT_TOOLDEF
|
|
|
|
Obsolete TOCLIENT_CRAFTITEMDEF
|
|
|
|
Compress the contents of TOCLIENT_ITEMDEF and TOCLIENT_NODEDEF
|
2012-02-28 18:45:23 +01:00
|
|
|
PROTOCOL_VERSION 8:
|
|
|
|
Digging based on item groups
|
2012-03-24 18:01:26 +01:00
|
|
|
Many things
|
2012-03-25 19:36:02 +02:00
|
|
|
PROTOCOL_VERSION 9:
|
|
|
|
ContentFeatures and NodeDefManager use a different serialization
|
|
|
|
format; better for future version cross-compatibility
|
2012-03-31 15:23:26 +02:00
|
|
|
Many things
|
|
|
|
PROTOCOL_VERSION 10:
|
|
|
|
TOCLIENT_PRIVILEGES
|
|
|
|
Version raised to force 'fly' and 'fast' privileges into effect.
|
2012-06-16 02:40:45 +02:00
|
|
|
Node metadata change (came in later; somewhat incompatible)
|
2012-06-17 16:49:12 +02:00
|
|
|
PROTOCOL_VERSION 11:
|
|
|
|
TileDef in ContentFeatures
|
|
|
|
Nodebox drawtype
|
2012-07-22 16:10:58 +02:00
|
|
|
(some dev snapshot)
|
|
|
|
TOCLIENT_INVENTORY_FORMSPEC
|
|
|
|
(0.4.0, 0.4.1)
|
2012-07-23 06:20:13 +02:00
|
|
|
PROTOCOL_VERSION 12:
|
2012-07-22 16:10:58 +02:00
|
|
|
TOSERVER_INVENTORY_FIELDS
|
2012-07-23 06:20:13 +02:00
|
|
|
16-bit node ids
|
2012-07-24 19:57:17 +02:00
|
|
|
TOCLIENT_DETACHED_INVENTORY
|
2012-09-04 23:39:43 +02:00
|
|
|
PROTOCOL_VERSION 13:
|
|
|
|
InventoryList field "Width" (deserialization fails with old versions)
|
2012-11-12 15:35:10 +01:00
|
|
|
PROTOCOL_VERSION 14:
|
2012-11-22 20:01:31 +01:00
|
|
|
Added transfer of player pressed keys to the server
|
|
|
|
Added new messages for mesh and bone animation, as well as attachments
|
2012-11-12 15:35:10 +01:00
|
|
|
GENERIC_CMD_SET_ANIMATION
|
|
|
|
GENERIC_CMD_SET_BONE_POSITION
|
|
|
|
GENERIC_CMD_SET_ATTACHMENT
|
2012-11-26 22:58:27 +01:00
|
|
|
PROTOCOL_VERSION 15:
|
|
|
|
Serialization format changes
|
2013-01-02 20:45:04 +01:00
|
|
|
PROTOCOL_VERSION 16:
|
|
|
|
TOCLIENT_SHOW_FORMSPEC
|
2013-01-25 01:37:19 +01:00
|
|
|
PROTOCOL_VERSION 17:
|
|
|
|
Serialization format change: include backface_culling flag in TileDef
|
2013-03-23 23:15:30 +01:00
|
|
|
Added rightclickable field in nodedef
|
2013-01-23 18:32:02 +01:00
|
|
|
TOCLIENT_SPAWN_PARTICLE
|
|
|
|
TOCLIENT_ADD_PARTICLESPAWNER
|
|
|
|
TOCLIENT_DELETE_PARTICLESPAWNER
|
2013-03-28 21:40:44 +01:00
|
|
|
PROTOCOL_VERSION 18:
|
|
|
|
damageGroups added to ToolCapabilities
|
2013-03-25 23:59:17 +01:00
|
|
|
sound_place added to ItemDefinition
|
2013-04-05 13:03:28 +02:00
|
|
|
PROTOCOL_VERSION 19:
|
|
|
|
GENERIC_CMD_SET_PHYSICS_OVERRIDE
|
2013-04-11 20:23:38 +02:00
|
|
|
PROTOCOL_VERSION 20:
|
2013-05-04 01:04:09 +02:00
|
|
|
TOCLIENT_HUDADD
|
|
|
|
TOCLIENT_HUDRM
|
|
|
|
TOCLIENT_HUDCHANGE
|
|
|
|
TOCLIENT_HUD_SET_FLAGS
|
2013-07-20 21:25:21 +02:00
|
|
|
PROTOCOL_VERSION 21:
|
|
|
|
TOCLIENT_BREATH
|
|
|
|
TOSERVER_BREATH
|
|
|
|
range added to ItemDefinition
|
|
|
|
drowning, leveled and liquid_range added to ContentFeatures
|
2013-07-22 18:54:30 +02:00
|
|
|
stepheight and collideWithObjects added to object properties
|
2013-08-01 22:51:36 +02:00
|
|
|
version, heat and humidity transfer in MapBock
|
2013-08-18 15:49:09 +02:00
|
|
|
automatic_face_movement_dir and automatic_face_movement_dir_offset
|
|
|
|
added to object properties
|
2014-02-13 20:17:42 +01:00
|
|
|
PROTOCOL_VERSION 22:
|
|
|
|
add swap_node
|
|
|
|
PROTOCOL_VERSION 23:
|
|
|
|
TOSERVER_CLIENT_READY
|
2014-07-25 07:35:55 +02:00
|
|
|
PROTOCOL_VERSION 24:
|
|
|
|
ContentFeatures version 7
|
|
|
|
ContentFeatures: change number of special tiles to 6 (CF_SPECIAL_COUNT)
|
2011-11-15 00:00:16 +01:00
|
|
|
*/
|
|
|
|
|
2014-07-25 07:35:55 +02:00
|
|
|
#define LATEST_PROTOCOL_VERSION 24
|
2011-10-15 14:02:28 +02:00
|
|
|
|
2012-11-26 22:58:27 +01:00
|
|
|
// Server's supported network protocol range
|
2012-11-26 23:15:17 +01:00
|
|
|
#define SERVER_PROTOCOL_VERSION_MIN 13
|
2012-11-26 22:58:27 +01:00
|
|
|
#define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
|
|
|
|
|
|
|
|
// Client's supported network protocol range
|
2012-11-26 08:49:07 +01:00
|
|
|
#define CLIENT_PROTOCOL_VERSION_MIN 13
|
2012-11-26 22:58:27 +01:00
|
|
|
#define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
|
2012-11-26 08:49:07 +01:00
|
|
|
|
|
|
|
// Constant that differentiates the protocol from random data and other protocols
|
2010-11-27 00:02:21 +01:00
|
|
|
#define PROTOCOL_ID 0x4f457403
|
|
|
|
|
2011-05-29 20:11:16 +02:00
|
|
|
#define PASSWORD_SIZE 28 // Maximum password length. Allows for
|
|
|
|
// base64-encoded SHA-1 (27+\0).
|
|
|
|
|
2014-06-25 19:04:47 +02:00
|
|
|
#define FORMSPEC_API_VERSION 1
|
|
|
|
#define FORMSPEC_VERSION_STRING "formspec_version[" TOSTRING(FORMSPEC_API_VERSION) "]"
|
|
|
|
|
2014-02-02 15:34:33 +01:00
|
|
|
#define TEXTURENAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-"
|
2012-01-03 23:37:46 +01:00
|
|
|
|
2010-11-27 00:02:21 +01:00
|
|
|
enum ToClientCommand
|
|
|
|
{
|
2010-11-27 16:18:34 +01:00
|
|
|
TOCLIENT_INIT = 0x10,
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
Server's reply to TOSERVER_INIT.
|
|
|
|
Sent second after connected.
|
|
|
|
|
|
|
|
[0] u16 TOSERVER_INIT
|
|
|
|
[2] u8 deployed version
|
2014-02-13 20:17:42 +01:00
|
|
|
[3] v3s16 player's position + v3f(0,BS/2,0) floatToInt'd
|
2011-06-26 23:27:17 +02:00
|
|
|
[12] u64 map seed (new as of 2011-02-27)
|
2012-11-26 21:31:21 +01:00
|
|
|
[20] f1000 recommended send interval (in seconds) (new as of 14)
|
2011-04-21 18:35:17 +02:00
|
|
|
|
|
|
|
NOTE: The position in here is deprecated; position is
|
|
|
|
explicitly sent afterwards
|
2010-11-27 00:02:21 +01:00
|
|
|
*/
|
|
|
|
|
2010-11-27 16:18:34 +01:00
|
|
|
TOCLIENT_BLOCKDATA = 0x20, //TODO: Multiple blocks
|
|
|
|
TOCLIENT_ADDNODE = 0x21,
|
2013-11-23 15:35:49 +01:00
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
v3s16 position
|
|
|
|
serialized mapnode
|
|
|
|
u8 keep_metadata // Added in protocol version 22
|
|
|
|
*/
|
2010-11-27 16:18:34 +01:00
|
|
|
TOCLIENT_REMOVENODE = 0x22,
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-04-21 18:35:17 +02:00
|
|
|
TOCLIENT_PLAYERPOS = 0x23, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
// Followed by an arbitary number of these:
|
|
|
|
// Number is determined from packet length.
|
|
|
|
[N] u16 peer_id
|
|
|
|
[N+2] v3s32 position*100
|
|
|
|
[N+2+12] v3s32 speed*100
|
|
|
|
[N+2+12+12] s32 pitch*100
|
|
|
|
[N+2+12+12+4] s32 yaw*100
|
|
|
|
*/
|
|
|
|
|
2011-12-01 22:55:57 +01:00
|
|
|
TOCLIENT_PLAYERINFO = 0x24, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
// Followed by an arbitary number of these:
|
|
|
|
// Number is determined from packet length.
|
|
|
|
[N] u16 peer_id
|
|
|
|
[N] char[20] name
|
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-04-21 18:35:17 +02:00
|
|
|
TOCLIENT_OPT_BLOCK_NOT_FOUND = 0x25, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
|
2011-04-21 18:35:17 +02:00
|
|
|
TOCLIENT_SECTORMETA = 0x26, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
[2] u8 sector count
|
|
|
|
[3...] v2s16 pos + sector metadata
|
|
|
|
*/
|
|
|
|
|
2010-11-27 16:18:34 +01:00
|
|
|
TOCLIENT_INVENTORY = 0x27,
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
[2] serialized inventory
|
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-12-01 22:55:57 +01:00
|
|
|
TOCLIENT_OBJECTDATA = 0x28, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
Sent as unreliable.
|
|
|
|
|
|
|
|
u16 command
|
|
|
|
u16 number of player positions
|
|
|
|
for each player:
|
2011-08-22 21:04:46 +02:00
|
|
|
u16 peer_id
|
2010-11-27 00:02:21 +01:00
|
|
|
v3s32 position*100
|
|
|
|
v3s32 speed*100
|
|
|
|
s32 pitch*100
|
|
|
|
s32 yaw*100
|
|
|
|
u16 count of blocks
|
|
|
|
for each block:
|
|
|
|
v3s16 blockpos
|
|
|
|
block objects
|
|
|
|
*/
|
2010-12-20 13:04:31 +01:00
|
|
|
|
|
|
|
TOCLIENT_TIME_OF_DAY = 0x29,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 time (0-23999)
|
2012-03-16 15:34:30 +01:00
|
|
|
Added in a later version:
|
|
|
|
f1000 time_speed
|
2010-12-20 13:04:31 +01:00
|
|
|
*/
|
2010-12-23 21:35:53 +01:00
|
|
|
|
2011-11-15 19:32:56 +01:00
|
|
|
// (oops, there is some gap here)
|
|
|
|
|
2010-12-23 21:35:53 +01:00
|
|
|
TOCLIENT_CHAT_MESSAGE = 0x30,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 length
|
|
|
|
wstring message
|
|
|
|
*/
|
|
|
|
|
2011-02-20 23:45:14 +01:00
|
|
|
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
|
2011-08-22 21:04:46 +02:00
|
|
|
u32 initialization data length
|
2011-02-21 15:10:36 +01:00
|
|
|
string initialization data
|
2011-02-20 23:45:14 +01:00
|
|
|
}
|
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-02-20 23:45:14 +01:00
|
|
|
TOCLIENT_ACTIVE_OBJECT_MESSAGES = 0x32,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
for all objects
|
|
|
|
{
|
|
|
|
u16 id
|
|
|
|
u16 message length
|
|
|
|
string message
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
2011-04-21 18:35:17 +02:00
|
|
|
TOCLIENT_HP = 0x33,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u8 hp
|
|
|
|
*/
|
|
|
|
|
|
|
|
TOCLIENT_MOVE_PLAYER = 0x34,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
v3f1000 player position
|
|
|
|
f1000 player pitch
|
|
|
|
f1000 player yaw
|
|
|
|
*/
|
2011-05-20 21:28:03 +02:00
|
|
|
|
|
|
|
TOCLIENT_ACCESS_DENIED = 0x35,
|
|
|
|
/*
|
|
|
|
u16 command
|
2011-05-29 20:11:16 +02:00
|
|
|
u16 reason_length
|
|
|
|
wstring reason
|
2011-05-20 21:28:03 +02:00
|
|
|
*/
|
2011-08-11 07:02:57 +02:00
|
|
|
|
2012-03-19 03:04:16 +01:00
|
|
|
TOCLIENT_PLAYERITEM = 0x36, // Obsolete
|
2011-08-11 07:02:57 +02:00
|
|
|
/*
|
|
|
|
u16 command
|
2011-08-25 21:31:28 +02:00
|
|
|
u16 count of player items
|
|
|
|
for all player items {
|
|
|
|
u16 peer id
|
|
|
|
u16 length of serialized item
|
|
|
|
string serialized item
|
|
|
|
}
|
2011-08-11 07:02:57 +02:00
|
|
|
*/
|
2011-10-15 13:46:59 +02:00
|
|
|
|
|
|
|
TOCLIENT_DEATHSCREEN = 0x37,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u8 bool set camera point target
|
|
|
|
v3f1000 camera point target (to point the death cause or whatever)
|
|
|
|
*/
|
2011-11-15 00:00:16 +01:00
|
|
|
|
2012-03-25 10:50:29 +02:00
|
|
|
TOCLIENT_MEDIA = 0x38,
|
2011-11-15 10:02:47 +01:00
|
|
|
/*
|
|
|
|
u16 command
|
2011-11-15 22:58:56 +01:00
|
|
|
u16 total number of texture bunches
|
|
|
|
u16 index of this bunch
|
2012-03-25 10:50:29 +02:00
|
|
|
u32 number of files in this bunch
|
|
|
|
for each file {
|
2011-11-15 10:02:47 +01:00
|
|
|
u16 length of name
|
|
|
|
string name
|
|
|
|
u32 length of data
|
|
|
|
data
|
|
|
|
}
|
2012-12-14 12:30:17 +01:00
|
|
|
u16 length of remote media server url (if applicable)
|
|
|
|
string url
|
2011-11-15 10:02:47 +01:00
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-11-15 22:58:56 +01:00
|
|
|
TOCLIENT_TOOLDEF = 0x39,
|
2011-11-15 19:32:56 +01:00
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u32 length of the next item
|
2011-11-15 22:58:56 +01:00
|
|
|
serialized ToolDefManager
|
2011-11-15 19:32:56 +01:00
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-11-15 22:58:56 +01:00
|
|
|
TOCLIENT_NODEDEF = 0x3a,
|
2011-11-15 00:00:16 +01:00
|
|
|
/*
|
|
|
|
u16 command
|
2011-11-15 22:58:56 +01:00
|
|
|
u32 length of the next item
|
|
|
|
serialized NodeDefManager
|
2011-11-15 00:00:16 +01:00
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-11-29 16:15:18 +01:00
|
|
|
TOCLIENT_CRAFTITEMDEF = 0x3b,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u32 length of the next item
|
|
|
|
serialized CraftiItemDefManager
|
|
|
|
*/
|
2012-01-02 12:31:50 +01:00
|
|
|
|
2012-03-25 10:50:29 +02:00
|
|
|
TOCLIENT_ANNOUNCE_MEDIA = 0x3c,
|
2012-01-02 12:31:50 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
u16 command
|
2012-03-25 10:50:29 +02:00
|
|
|
u32 number of files
|
2012-01-02 12:31:50 +01:00
|
|
|
for each texture {
|
|
|
|
u16 length of name
|
|
|
|
string name
|
|
|
|
u16 length of sha1_digest
|
|
|
|
string sha1_digest
|
|
|
|
}
|
|
|
|
*/
|
2012-01-12 06:10:39 +01:00
|
|
|
|
|
|
|
TOCLIENT_ITEMDEF = 0x3d,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u32 length of next item
|
|
|
|
serialized ItemDefManager
|
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2012-03-24 18:01:26 +01:00
|
|
|
TOCLIENT_PLAY_SOUND = 0x3f,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
s32 sound_id
|
|
|
|
u16 len
|
|
|
|
u8[len] sound name
|
|
|
|
s32 gain*1000
|
|
|
|
u8 type (0=local, 1=positional, 2=object)
|
|
|
|
s32[3] pos_nodes*10000
|
|
|
|
u16 object_id
|
|
|
|
u8 loop (bool)
|
|
|
|
*/
|
2012-01-12 06:10:39 +01:00
|
|
|
|
2012-03-24 18:01:26 +01:00
|
|
|
TOCLIENT_STOP_SOUND = 0x40,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
s32 sound_id
|
|
|
|
*/
|
2012-03-31 15:23:26 +02:00
|
|
|
|
|
|
|
TOCLIENT_PRIVILEGES = 0x41,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 number of privileges
|
|
|
|
for each privilege
|
|
|
|
u16 len
|
|
|
|
u8[len] privilege
|
|
|
|
*/
|
2012-07-19 13:09:16 +02:00
|
|
|
|
|
|
|
TOCLIENT_INVENTORY_FORMSPEC = 0x42,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u32 len
|
|
|
|
u8[len] formspec
|
|
|
|
*/
|
2012-07-24 19:57:17 +02:00
|
|
|
|
|
|
|
TOCLIENT_DETACHED_INVENTORY = 0x43,
|
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
u16 len
|
|
|
|
u8[len] name
|
|
|
|
[2] serialized inventory
|
|
|
|
*/
|
2013-01-23 18:32:02 +01:00
|
|
|
|
2013-01-02 20:45:04 +01:00
|
|
|
TOCLIENT_SHOW_FORMSPEC = 0x44,
|
|
|
|
/*
|
|
|
|
[0] u16 command
|
2013-01-03 18:59:28 +01:00
|
|
|
u32 len
|
2013-01-02 20:45:04 +01:00
|
|
|
u8[len] formspec
|
2013-01-03 18:59:28 +01:00
|
|
|
u16 len
|
|
|
|
u8[len] formname
|
2013-01-02 20:45:04 +01:00
|
|
|
*/
|
2013-02-08 21:54:01 +01:00
|
|
|
|
|
|
|
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
|
|
|
|
*/
|
2013-01-23 18:32:02 +01:00
|
|
|
|
|
|
|
TOCLIENT_SPAWN_PARTICLE = 0x46,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
v3f1000 pos
|
|
|
|
v3f1000 velocity
|
|
|
|
v3f1000 acceleration
|
|
|
|
f1000 expirationtime
|
|
|
|
f1000 size
|
|
|
|
u8 bool collisiondetection
|
2013-04-22 20:35:10 +02:00
|
|
|
u8 bool vertical
|
2013-01-23 18:32:02 +01:00
|
|
|
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
|
2013-04-22 20:35:10 +02:00
|
|
|
u8 bool vertical
|
2013-01-23 18:32:02 +01:00
|
|
|
u32 len
|
|
|
|
u8[len] texture
|
|
|
|
u32 id
|
|
|
|
*/
|
|
|
|
|
|
|
|
TOCLIENT_DELETE_PARTICLESPAWNER = 0x48,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u32 id
|
|
|
|
*/
|
2013-04-11 20:23:38 +02:00
|
|
|
|
|
|
|
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
|
2013-04-22 11:53:55 +02:00
|
|
|
v2f1000 align
|
2013-04-23 01:47:59 +02:00
|
|
|
v2f1000 offset
|
2014-04-28 23:41:27 +02:00
|
|
|
v3f1000 world_pos
|
|
|
|
v2s32 size
|
2013-04-11 20:23:38 +02:00
|
|
|
*/
|
|
|
|
|
2013-04-24 12:52:46 +02:00
|
|
|
TOCLIENT_HUDRM = 0x4a,
|
2013-04-11 20:23:38 +02:00
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u32 id
|
|
|
|
*/
|
|
|
|
|
2013-04-24 12:52:46 +02:00
|
|
|
TOCLIENT_HUDCHANGE = 0x4b,
|
2013-04-11 20:23:38 +02:00
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u32 id
|
|
|
|
u8 stat
|
|
|
|
[v2f1000 data |
|
|
|
|
u32 len
|
|
|
|
u8[len] data |
|
|
|
|
u32 data]
|
|
|
|
*/
|
2013-04-24 12:52:46 +02:00
|
|
|
|
2013-04-26 01:27:22 +02:00
|
|
|
TOCLIENT_HUD_SET_FLAGS = 0x4c,
|
2013-04-24 12:52:46 +02:00
|
|
|
/*
|
|
|
|
u16 command
|
2013-04-26 01:27:22 +02:00
|
|
|
u32 flags
|
|
|
|
u32 mask
|
2013-04-24 12:52:46 +02:00
|
|
|
*/
|
2013-05-04 02:08:52 +02:00
|
|
|
|
|
|
|
TOCLIENT_HUD_SET_PARAM = 0x4d,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 param
|
|
|
|
u16 len
|
|
|
|
u8[len] value
|
|
|
|
*/
|
2013-07-19 19:50:33 +02:00
|
|
|
|
|
|
|
TOCLIENT_BREATH = 0x4e,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 breath
|
|
|
|
*/
|
2013-05-02 22:52:50 +02:00
|
|
|
|
|
|
|
TOCLIENT_SET_SKY = 0x4f,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u8[4] color (ARGB)
|
|
|
|
u8 len
|
|
|
|
u8[len] type
|
|
|
|
u16 count
|
|
|
|
foreach count:
|
|
|
|
u8 len
|
|
|
|
u8[len] param
|
|
|
|
*/
|
2013-10-18 10:53:19 +02:00
|
|
|
|
|
|
|
TOCLIENT_OVERRIDE_DAY_NIGHT_RATIO = 0x50,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u8 do_override (boolean)
|
|
|
|
u16 day-night ratio 0...65535
|
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2014-01-08 13:47:53 +01:00
|
|
|
TOCLIENT_LOCAL_PLAYER_ANIMATIONS = 0x51,
|
|
|
|
/*
|
|
|
|
u16 command
|
2014-04-12 13:50:22 +02:00
|
|
|
v2s32 stand/idle
|
|
|
|
v2s32 walk
|
|
|
|
v2s32 dig
|
|
|
|
v2s32 walk+dig
|
2014-01-08 13:47:53 +01:00
|
|
|
f1000 frame_speed
|
|
|
|
*/
|
2014-04-11 15:32:46 +02:00
|
|
|
|
|
|
|
TOCLIENT_EYE_OFFSET = 0x52,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
v3f1000 first
|
|
|
|
v3f1000 third
|
|
|
|
*/
|
2010-11-27 00:02:21 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
enum ToServerCommand
|
|
|
|
{
|
|
|
|
TOSERVER_INIT=0x10,
|
|
|
|
/*
|
|
|
|
Sent first after connected.
|
|
|
|
|
|
|
|
[0] u16 TOSERVER_INIT
|
2013-08-01 22:51:36 +02:00
|
|
|
[2] u8 SER_FMT_VER_HIGHEST_READ
|
2010-11-27 00:02:21 +01:00
|
|
|
[3] u8[20] player_name
|
2011-07-30 19:02:17 +02:00
|
|
|
[23] u8[28] password (new in some version)
|
2012-11-26 08:49:07 +01:00
|
|
|
[51] u16 minimum supported network protocol version (added sometime)
|
|
|
|
[53] u16 maximum supported network protocol version (added later than the previous one)
|
2010-11-27 00:02:21 +01:00
|
|
|
*/
|
|
|
|
|
2010-11-27 16:18:34 +01:00
|
|
|
TOSERVER_INIT2 = 0x11,
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
Sent as an ACK for TOCLIENT_INIT.
|
|
|
|
After this, the server can send data.
|
|
|
|
|
|
|
|
[0] u16 TOSERVER_INIT2
|
|
|
|
*/
|
|
|
|
|
2011-04-21 18:35:17 +02:00
|
|
|
TOSERVER_GETBLOCK=0x20, // Obsolete
|
|
|
|
TOSERVER_ADDNODE = 0x21, // Obsolete
|
|
|
|
TOSERVER_REMOVENODE = 0x22, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
|
2010-11-27 16:18:34 +01:00
|
|
|
TOSERVER_PLAYERPOS = 0x23,
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
[2] v3s32 position*100
|
|
|
|
[2+12] v3s32 speed*100
|
|
|
|
[2+12+12] s32 pitch*100
|
|
|
|
[2+12+12+4] s32 yaw*100
|
2012-11-22 20:01:31 +01:00
|
|
|
[2+12+12+4+4] u32 keyPressed
|
2010-11-27 00:02:21 +01:00
|
|
|
*/
|
|
|
|
|
2010-11-27 16:18:34 +01:00
|
|
|
TOSERVER_GOTBLOCKS = 0x24,
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
[2] u8 count
|
|
|
|
[3] v3s16 pos_0
|
|
|
|
[3+6] v3s16 pos_1
|
|
|
|
...
|
|
|
|
*/
|
|
|
|
|
2010-11-27 16:18:34 +01:00
|
|
|
TOSERVER_DELETEDBLOCKS = 0x25,
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
[2] u8 count
|
|
|
|
[3] v3s16 pos_0
|
|
|
|
[3+6] v3s16 pos_1
|
|
|
|
...
|
|
|
|
*/
|
|
|
|
|
2011-04-21 18:35:17 +02:00
|
|
|
TOSERVER_ADDNODE_FROM_INVENTORY = 0x26, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
[0] u16 command
|
|
|
|
[2] v3s16 pos
|
|
|
|
[8] u16 i
|
|
|
|
*/
|
|
|
|
|
2011-11-29 16:15:18 +01:00
|
|
|
TOSERVER_CLICK_OBJECT = 0x27, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
length: 13
|
|
|
|
[0] u16 command
|
|
|
|
[2] u8 button (0=left, 1=right)
|
|
|
|
[3] v3s16 blockpos
|
|
|
|
[9] s16 id
|
|
|
|
[11] u16 item
|
|
|
|
*/
|
|
|
|
|
2011-11-29 16:15:18 +01:00
|
|
|
TOSERVER_GROUND_ACTION = 0x28, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
length: 17
|
|
|
|
[0] u16 command
|
2010-12-18 12:10:37 +01:00
|
|
|
[2] u8 action
|
2010-11-27 00:02:21 +01:00
|
|
|
[3] v3s16 nodepos_undersurface
|
|
|
|
[9] v3s16 nodepos_abovesurface
|
|
|
|
[15] u16 item
|
2010-12-18 12:10:37 +01:00
|
|
|
actions:
|
|
|
|
0: start digging (from undersurface)
|
|
|
|
1: place block (to abovesurface)
|
|
|
|
2: stop digging (all parameters ignored)
|
2010-12-23 21:35:53 +01:00
|
|
|
3: digging completed
|
2010-11-27 00:02:21 +01:00
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-04-21 18:35:17 +02:00
|
|
|
TOSERVER_RELEASE = 0x29, // Obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
|
2011-11-15 19:32:56 +01:00
|
|
|
// (oops, there is some gap here)
|
|
|
|
|
2011-11-29 16:15:18 +01:00
|
|
|
TOSERVER_SIGNTEXT = 0x30, // Old signs, obsolete
|
2010-11-27 00:02:21 +01:00
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
v3s16 blockpos
|
|
|
|
s16 id
|
|
|
|
u16 textlen
|
|
|
|
textdata
|
|
|
|
*/
|
2010-12-22 15:30:23 +01:00
|
|
|
|
|
|
|
TOSERVER_INVENTORY_ACTION = 0x31,
|
|
|
|
/*
|
|
|
|
See InventoryAction in inventory.h
|
|
|
|
*/
|
2010-12-23 21:35:53 +01:00
|
|
|
|
|
|
|
TOSERVER_CHAT_MESSAGE = 0x32,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 length
|
|
|
|
wstring message
|
|
|
|
*/
|
|
|
|
|
2012-06-01 19:51:15 +02:00
|
|
|
TOSERVER_SIGNNODETEXT = 0x33, // obsolete
|
2011-04-04 04:12:33 +02:00
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
v3s16 p
|
|
|
|
u16 textlen
|
|
|
|
textdata
|
|
|
|
*/
|
|
|
|
|
2011-11-29 16:15:18 +01:00
|
|
|
TOSERVER_CLICK_ACTIVEOBJECT = 0x34, // Obsolete
|
2011-04-10 03:15:10 +02:00
|
|
|
/*
|
|
|
|
length: 7
|
|
|
|
[0] u16 command
|
|
|
|
[2] u8 button (0=left, 1=right)
|
|
|
|
[3] u16 id
|
|
|
|
[5] u16 item
|
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-04-21 18:35:17 +02:00
|
|
|
TOSERVER_DAMAGE = 0x35,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u8 amount
|
|
|
|
*/
|
2011-05-22 22:09:12 +02:00
|
|
|
|
|
|
|
TOSERVER_PASSWORD=0x36,
|
|
|
|
/*
|
|
|
|
Sent to change password.
|
|
|
|
|
|
|
|
[0] u16 TOSERVER_PASSWORD
|
|
|
|
[2] u8[28] old password
|
|
|
|
[30] u8[28] new password
|
|
|
|
*/
|
|
|
|
|
2011-08-10 21:43:40 +02:00
|
|
|
TOSERVER_PLAYERITEM=0x37,
|
|
|
|
/*
|
|
|
|
Sent to change selected item.
|
|
|
|
|
|
|
|
[0] u16 TOSERVER_PLAYERITEM
|
|
|
|
[2] u16 item
|
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2011-10-15 13:46:59 +02:00
|
|
|
TOSERVER_RESPAWN=0x38,
|
|
|
|
/*
|
|
|
|
u16 TOSERVER_RESPAWN
|
|
|
|
*/
|
2011-11-29 16:15:18 +01:00
|
|
|
|
|
|
|
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.)
|
|
|
|
*/
|
2014-04-28 23:41:27 +02:00
|
|
|
|
2012-03-24 18:01:26 +01:00
|
|
|
TOSERVER_REMOVED_SOUNDS = 0x3a,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 len
|
|
|
|
s32[len] sound_id
|
|
|
|
*/
|
2012-01-02 12:31:50 +01:00
|
|
|
|
2012-06-01 19:51:15 +02:00
|
|
|
TOSERVER_NODEMETA_FIELDS = 0x3b,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
v3s16 p
|
|
|
|
u16 len
|
|
|
|
u8[len] form name (reserved for future use)
|
|
|
|
u16 number of fields
|
|
|
|
for each field:
|
|
|
|
u16 len
|
|
|
|
u8[len] field name
|
|
|
|
u32 len
|
|
|
|
u8[len] field value
|
|
|
|
*/
|
|
|
|
|
2012-07-22 16:10:58 +02:00
|
|
|
TOSERVER_INVENTORY_FIELDS = 0x3c,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 len
|
|
|
|
u8[len] form name (reserved for future use)
|
|
|
|
u16 number of fields
|
|
|
|
for each field:
|
|
|
|
u16 len
|
|
|
|
u8[len] field name
|
|
|
|
u32 len
|
|
|
|
u8[len] field value
|
|
|
|
*/
|
|
|
|
|
2012-03-25 10:50:29 +02:00
|
|
|
TOSERVER_REQUEST_MEDIA = 0x40,
|
2012-01-02 12:31:50 +01:00
|
|
|
/*
|
2012-03-24 18:01:26 +01:00
|
|
|
u16 command
|
2012-03-25 10:50:29 +02:00
|
|
|
u16 number of files requested
|
|
|
|
for each file {
|
2012-03-24 18:01:26 +01:00
|
|
|
u16 length of name
|
|
|
|
string name
|
|
|
|
}
|
2012-01-02 12:31:50 +01:00
|
|
|
*/
|
|
|
|
|
2012-12-14 12:30:17 +01:00
|
|
|
TOSERVER_RECEIVED_MEDIA = 0x41,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
*/
|
2013-07-19 19:50:33 +02:00
|
|
|
|
|
|
|
TOSERVER_BREATH = 0x42,
|
|
|
|
/*
|
|
|
|
u16 command
|
|
|
|
u16 breath
|
|
|
|
*/
|
2014-02-13 20:17:42 +01:00
|
|
|
|
|
|
|
TOSERVER_CLIENT_READY = 0x43,
|
|
|
|
/*
|
|
|
|
u8 major
|
|
|
|
u8 minor
|
|
|
|
u8 patch
|
|
|
|
u8 reserved
|
|
|
|
u16 len
|
|
|
|
u8[len] full_version_string
|
|
|
|
*/
|
2010-11-27 00:02:21 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|