51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef NETWORKPROTOCOL_HEADER
-#define NETWORKPROTOCOL_HEADER
+#pragma once
+
#include "util/string.h"
/*
ContentFeatures and NodeDefManager use a different serialization
format; better for future version cross-compatibility
Many things
+ Obsolete TOCLIENT_PLAYERITEM
PROTOCOL_VERSION 10:
TOCLIENT_PRIVILEGES
Version raised to force 'fly' and 'fast' privileges into effect.
PROTOCOL_VERSION 22:
add swap_node
PROTOCOL_VERSION 23:
- TOSERVER_CLIENT_READY
+ Obsolete TOSERVER_RECEIVED_MEDIA
+ Server: Stop using TOSERVER_CLIENT_READY
PROTOCOL_VERSION 24:
ContentFeatures version 7
ContentFeatures: change number of special tiles to 6 (CF_SPECIAL_COUNT)
Rename GENERIC_CMD_SET_ATTACHMENT to GENERIC_CMD_ATTACH_TO
PROTOCOL_VERSION 26:
Add TileDef tileable_horizontal, tileable_vertical flags
+ PROTOCOL_VERSION 27:
+ backface_culling: backwards compatibility for playing with
+ newer client on pre-27 servers.
+ Add nodedef v3 - connected nodeboxes
+ PROTOCOL_VERSION 28:
+ CPT2_MESHOPTIONS
+ PROTOCOL_VERSION 29:
+ Server doesn't accept TOSERVER_BREATH anymore
+ serialization of TileAnimation params changed
+ TAT_SHEET_2D
+ Removed client-sided chat perdiction
+ PROTOCOL VERSION 30:
+ New ContentFeatures serialization version
+ Add node and tile color and palette
+ Fix plantlike visual_scale being applied squared and add compatibility
+ with pre-30 clients by sending sqrt(visual_scale)
+ PROTOCOL VERSION 31:
+ Add tile overlay
+ Stop sending TOSERVER_CLIENT_READY
+ PROTOCOL VERSION 32:
+ Add fading sounds
+ PROTOCOL VERSION 33:
+ Add TOCLIENT_UPDATE_PLAYER_LIST and send the player list to the client,
+ instead of guessing based on the active object list.
+ PROTOCOL VERSION 34:
+ Add sound pitch
+ PROTOCOL VERSION 35:
+ Rename TOCLIENT_CHAT_MESSAGE to TOCLIENT_CHAT_MESSAGE_OLD (0x30)
+ Add TOCLIENT_CHAT_MESSAGE (0x2F)
+ This chat message is a signalisation message containing various
+ informations:
+ * timestamp
+ * sender
+ * type (RAW, NORMAL, ANNOUNCE, SYSTEM)
+ * content
+ Add TOCLIENT_CSM_FLAVOUR_LIMITS to define which CSM flavour should be
+ limited
+ Add settable player collisionbox. Breaks compatibility with older
+ clients as a 1-node vertical offset has been removed from player's
+ position
+ Add settable player stepheight using existing object property.
+ Breaks compatibility with older clients.
+ PROTOCOL VERSION 36:
+ Backwards compatibility drop
*/
-#define LATEST_PROTOCOL_VERSION 25
+#define LATEST_PROTOCOL_VERSION 36
// Server's supported network protocol range
-#define SERVER_PROTOCOL_VERSION_MIN 13
+#define SERVER_PROTOCOL_VERSION_MIN 36
#define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
// Client's supported network protocol range
-#define CLIENT_PROTOCOL_VERSION_MIN 13
+// 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_LEGACY 24
#define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
// Constant that differentiates the protocol from random data and other protocols
TOCLIENT_BLOCKDATA = 0x20, //TODO: Multiple blocks
TOCLIENT_ADDNODE = 0x21,
/*
- u16 command
v3s16 position
serialized mapnode
u8 keep_metadata // Added in protocol version 22
/*
Sent as unreliable.
- u16 command
u16 number of player positions
for each player:
u16 peer_id
TOCLIENT_TIME_OF_DAY = 0x29,
/*
- u16 command
u16 time (0-23999)
Added in a later version:
f1000 time_speed
*/
+ TOCLIENT_CSM_FLAVOUR_LIMITS = 0x2A,
+ /*
+ u32 CSMFlavourLimits byteflag
+ */
+
// (oops, there is some gap here)
- TOCLIENT_CHAT_MESSAGE = 0x30,
+ TOCLIENT_CHAT_MESSAGE = 0x2F,
+ /*
+ u8 version
+ u8 message_type
+ u16 sendername length
+ wstring sendername
+ u16 length
+ wstring message
+ */
+
+ TOCLIENT_CHAT_MESSAGE_OLD = 0x30, // Deprecated by proto v35
/*
- 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
TOCLIENT_ACTIVE_OBJECT_MESSAGES = 0x32,
/*
- u16 command
for all objects
{
u16 id
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_LEGACY = 0x35,
/*
- u16 command
u16 reason_length
wstring reason
*/
TOCLIENT_PLAYERITEM = 0x36, // Obsolete
/*
- u16 command
u16 count of player items
for all player items {
u16 peer id
TOCLIENT_DEATHSCREEN = 0x37,
/*
- u16 command
u8 bool set camera point target
v3f1000 camera point target (to point the death cause or whatever)
*/
TOCLIENT_MEDIA = 0x38,
/*
- u16 command
u16 total number of texture bunches
u16 index of this bunch
u32 number of files in this bunch
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_MEDIA = 0x3c,
/*
- u16 command
u32 number of files
for each texture {
u16 length of name
TOCLIENT_ITEMDEF = 0x3d,
/*
- u16 command
u32 length of next item
serialized ItemDefManager
*/
TOCLIENT_PLAY_SOUND = 0x3f,
/*
- u16 command
s32 sound_id
u16 len
u8[len] sound name
TOCLIENT_STOP_SOUND = 0x40,
/*
- u16 command
s32 sound_id
*/
TOCLIENT_PRIVILEGES = 0x41,
/*
- u16 command
u16 number of privileges
for each privilege
u16 len
TOCLIENT_INVENTORY_FORMSPEC = 0x42,
/*
- u16 command
u32 len
u8[len] formspec
*/
TOCLIENT_MOVEMENT = 0x45,
/*
- u16 command
f1000 movement_acceleration_default
f1000 movement_acceleration_air
f1000 movement_acceleration_fast
TOCLIENT_SPAWN_PARTICLE = 0x46,
/*
- u16 command
v3f1000 pos
v3f1000 velocity
v3f1000 acceleration
u8 bool vertical
u32 len
u8[len] texture
+ u8 collision_removal
*/
TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
/*
- u16 command
u16 amount
f1000 spawntime
v3f1000 minpos
u32 len
u8[len] texture
u32 id
+ u8 collision_removal
*/
TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY = 0x48,
/*
- u16 command
u16 id
*/
TOCLIENT_HUDADD = 0x49,
/*
- u16 command
u32 id
u8 type
v2f1000 pos
TOCLIENT_HUDRM = 0x4a,
/*
- u16 command
u32 id
*/
TOCLIENT_HUDCHANGE = 0x4b,
/*
- u16 command
u32 id
u8 stat
[v2f1000 data |
TOCLIENT_HUD_SET_FLAGS = 0x4c,
/*
- u16 command
u32 flags
u32 mask
*/
TOCLIENT_HUD_SET_PARAM = 0x4d,
/*
- u16 command
u16 param
u16 len
u8[len] value
TOCLIENT_BREATH = 0x4e,
/*
- u16 command
u16 breath
*/
TOCLIENT_SET_SKY = 0x4f,
/*
- u16 command
u8[4] color (ARGB)
u8 len
u8[len] type
foreach count:
u8 len
u8[len] param
+ u8 clouds (boolean)
*/
TOCLIENT_OVERRIDE_DAY_NIGHT_RATIO = 0x50,
/*
- u16 command
u8 do_override (boolean)
u16 day-night ratio 0...65535
*/
TOCLIENT_LOCAL_PLAYER_ANIMATIONS = 0x51,
/*
- u16 command
v2s32 stand/idle
v2s32 walk
v2s32 dig
TOCLIENT_EYE_OFFSET = 0x52,
/*
- u16 command
v3f1000 first
v3f1000 third
*/
TOCLIENT_DELETE_PARTICLESPAWNER = 0x53,
/*
- u16 command
u32 id
*/
+ TOCLIENT_CLOUD_PARAMS = 0x54,
+ /*
+ f1000 density
+ u8[4] color_diffuse (ARGB)
+ u8[4] color_ambient (ARGB)
+ f1000 height
+ f1000 thickness
+ v2f1000 speed
+ */
+
+ TOCLIENT_FADE_SOUND = 0x55,
+ /*
+ s32 sound_id
+ float step
+ float gain
+ */
+ TOCLIENT_UPDATE_PLAYER_LIST = 0x56,
+ /*
+ u8 type
+ u16 number of players
+ for each player
+ u16 len
+ u8[len] player name
+ */
+
TOCLIENT_SRP_BYTES_S_B = 0x60,
/*
Belonging to AUTH_MECHANISM_LEGACY_PASSWORD and AUTH_MECHANISM_SRP.
- u16 command
std::string bytes_s
std::string bytes_B
*/
[2+12+12] s32 pitch*100
[2+12+12+4] s32 yaw*100
[2+12+12+4+4] u32 keyPressed
+ [2+12+12+4+4+1] u8 fov*80
+ [2+12+12+4+4+4+1] u8 ceil(wanted_range / MAP_BLOCKSIZE)
*/
TOSERVER_GOTBLOCKS = 0x24,
TOSERVER_SIGNTEXT = 0x30, // Old signs, obsolete
/*
- u16 command
v3s16 blockpos
s16 id
u16 textlen
TOSERVER_CHAT_MESSAGE = 0x32,
/*
- u16 command
u16 length
wstring message
*/
TOSERVER_SIGNNODETEXT = 0x33, // obsolete
/*
- u16 command
v3s16 p
u16 textlen
textdata
TOSERVER_DAMAGE = 0x35,
/*
- u16 command
u8 amount
*/
TOSERVER_REMOVED_SOUNDS = 0x3a,
/*
- u16 command
u16 len
s32[len] sound_id
*/
TOSERVER_NODEMETA_FIELDS = 0x3b,
/*
- u16 command
v3s16 p
u16 len
u8[len] form name (reserved for future use)
TOSERVER_INVENTORY_FIELDS = 0x3c,
/*
- u16 command
u16 len
u8[len] form name (reserved for future use)
u16 number of fields
TOSERVER_REQUEST_MEDIA = 0x40,
/*
- u16 command
u16 number of files requested
for each file {
u16 length of name
TOSERVER_RECEIVED_MEDIA = 0x41,
/*
- u16 command
+ <no payload data>
*/
- TOSERVER_BREATH = 0x42,
+ TOSERVER_BREATH = 0x42, // Obsolete
/*
- u16 command
u16 breath
*/
"This server has experienced an internal error. You will now be disconnected."
};
-#endif
+enum PlayerListModifer: u8
+{
+ PLAYER_LIST_INIT,
+ PLAYER_LIST_ADD,
+ PLAYER_LIST_REMOVE,
+};
+
+enum CSMFlavourLimit : u64 {
+ CSM_FL_NONE = 0x00000000,
+ CSM_FL_LOOKUP_NODES = 0x00000001, // Limit node lookups
+ 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_ALL = 0xFFFFFFFF,
+};
+