123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939 |
- /*
- Minetest
- Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
- 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
- the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser 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.
- */
- #pragma once
- #include "util/string.h"
- /*
- changes by PROTOCOL_VERSION:
- PROTOCOL_VERSION 3:
- Base for writing changes here
- PROTOCOL_VERSION 4:
- Add TOCLIENT_MEDIA
- 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
- Many things
- PROTOCOL_VERSION 9:
- 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.
- Node metadata change (came in later; somewhat incompatible)
- PROTOCOL_VERSION 11:
- TileDef in ContentFeatures
- Nodebox drawtype
- (some dev snapshot)
- TOCLIENT_INVENTORY_FORMSPEC
- (0.4.0, 0.4.1)
- PROTOCOL_VERSION 12:
- TOSERVER_INVENTORY_FIELDS
- 16-bit node ids
- 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
- PROTOCOL_VERSION 21:
- TOCLIENT_BREATH
- TOSERVER_BREATH
- range added to ItemDefinition
- drowning, leveled and liquid_range added to ContentFeatures
- stepheight and collideWithObjects added to object properties
- version, heat and humidity transfer in MapBock
- automatic_face_movement_dir and automatic_face_movement_dir_offset
- added to object properties
- PROTOCOL_VERSION 22:
- add swap_node
- PROTOCOL_VERSION 23:
- 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)
- PROTOCOL_VERSION 25:
- Rename TOCLIENT_ACCESS_DENIED to TOCLIENT_ACCESS_DENIED_LEGAGY
- Rename TOCLIENT_DELETE_PARTICLESPAWNER to
- TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY
- Rename TOSERVER_PASSWORD to TOSERVER_PASSWORD_LEGACY
- Rename TOSERVER_INIT to TOSERVER_INIT_LEGACY
- Rename TOCLIENT_INIT to TOCLIENT_INIT_LEGACY
- Add TOCLIENT_ACCESS_DENIED new opcode (0x0A), using error codes
- for standard error, keeping customisation possible. This
- permit translation
- Add TOCLIENT_DELETE_PARTICLESPAWNER (0x53), fixing the u16 read and
- reading u32
- Add new opcode TOSERVER_INIT for client presentation to server
- Add new opcodes TOSERVER_FIRST_SRP, TOSERVER_SRP_BYTES_A,
- TOSERVER_SRP_BYTES_M, TOCLIENT_SRP_BYTES_S_B
- for the three supported auth mechanisms around srp
- Add new opcodes TOCLIENT_ACCEPT_SUDO_MODE and TOCLIENT_DENY_SUDO_MODE
- for sudo mode handling (auth mech generic way of changing password).
- Add TOCLIENT_HELLO for presenting server to client after client
- presentation
- Add TOCLIENT_AUTH_ACCEPT to accept connection from client
- 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
- Add 'can_zoom' to player object properties
- Add glow to object properties
- Change TileDef serialization format.
- Add world-aligned tiles.
- Mod channels
- Raise ObjectProperties version to 3 for removing 'can_zoom' and adding
- 'zoom_fov'.
- Nodebox version 5
- Add disconnected nodeboxes
- Add TOCLIENT_FORMSPEC_PREPEND
- */
- #define LATEST_PROTOCOL_VERSION 36
- // Server's supported network protocol range
- #define SERVER_PROTOCOL_VERSION_MIN 36
- #define SERVER_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
- // Client's supported network protocol range
- // The minimal version depends on whether
- // send_pre_v25_init is enabled or not
- #define CLIENT_PROTOCOL_VERSION_MIN 36
- #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
- // base64-encoded SHA-1 (27+\0).
- #define FORMSPEC_API_VERSION 1
- #define FORMSPEC_VERSION_STRING "formspec_version[" TOSTRING(FORMSPEC_API_VERSION) "]"
- #define TEXTURENAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-"
- typedef u16 session_t;
- enum ToClientCommand
- {
- TOCLIENT_HELLO = 0x02,
- /*
- Sent after TOSERVER_INIT.
- u8 deployed serialisation version
- u16 deployed network compression mode
- u16 deployed protocol version
- u32 supported auth methods
- std::string username that should be used for legacy hash (for proper casing)
- */
- TOCLIENT_AUTH_ACCEPT = 0x03,
- /*
- Message from server to accept auth.
- v3s16 player's position + v3f(0,BS/2,0) floatToInt'd
- u64 map seed
- f1000 recommended send interval
- u32 : supported auth methods for sudo mode
- (where the user can change their password)
- */
- TOCLIENT_ACCEPT_SUDO_MODE = 0x04,
- /*
- Sent to client to show it is in sudo mode now.
- */
- TOCLIENT_DENY_SUDO_MODE = 0x05,
- /*
- Signals client that sudo mode auth failed.
- */
- TOCLIENT_ACCESS_DENIED = 0x0A,
- /*
- u8 reason
- std::string custom reason (if needed, otherwise "")
- u8 (bool) reconnect
- */
- TOCLIENT_INIT_LEGACY = 0x10, // Obsolete
- TOCLIENT_BLOCKDATA = 0x20, //TODO: Multiple blocks
- TOCLIENT_ADDNODE = 0x21,
- /*
- v3s16 position
- serialized mapnode
- u8 keep_metadata // Added in protocol version 22
- */
- TOCLIENT_REMOVENODE = 0x22,
- TOCLIENT_PLAYERPOS = 0x23, // Obsolete
- TOCLIENT_PLAYERINFO = 0x24, // Obsolete
- TOCLIENT_OPT_BLOCK_NOT_FOUND = 0x25, // Obsolete
- TOCLIENT_SECTORMETA = 0x26, // Obsolete
- TOCLIENT_INVENTORY = 0x27,
- /*
- [0] u16 command
- [2] serialized inventory
- */
- TOCLIENT_OBJECTDATA = 0x28, // Obsolete
- TOCLIENT_TIME_OF_DAY = 0x29,
- /*
- 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 = 0x2F,
- /*
- u8 version
- u8 message_type
- u16 sendername length
- wstring sendername
- u16 length
- wstring message
- */
- TOCLIENT_CHAT_MESSAGE_OLD = 0x30, // Obsolete
- TOCLIENT_ACTIVE_OBJECT_REMOVE_ADD = 0x31,
- /*
- 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,
- /*
- for all objects
- {
- u16 id
- u16 message length
- string message
- }
- */
- TOCLIENT_HP = 0x33,
- /*
- u8 hp
- */
- TOCLIENT_MOVE_PLAYER = 0x34,
- /*
- v3f1000 player position
- f1000 player pitch
- f1000 player yaw
- */
- TOCLIENT_ACCESS_DENIED_LEGACY = 0x35,
- /*
- u16 reason_length
- wstring reason
- */
- TOCLIENT_PLAYERITEM = 0x36, // Obsolete
- TOCLIENT_DEATHSCREEN = 0x37,
- /*
- u8 bool set camera point target
- v3f1000 camera point target (to point the death cause or whatever)
- */
- TOCLIENT_MEDIA = 0x38,
- /*
- u16 total number of texture bunches
- u16 index of this bunch
- u32 number of files in this bunch
- for each file {
- u16 length of name
- string name
- u32 length of data
- data
- }
- u16 length of remote media server url (if applicable)
- string url
- */
- TOCLIENT_TOOLDEF = 0x39,
- /*
- u32 length of the next item
- serialized ToolDefManager
- */
- TOCLIENT_NODEDEF = 0x3a,
- /*
- u32 length of the next item
- serialized NodeDefManager
- */
- TOCLIENT_CRAFTITEMDEF = 0x3b,
- /*
- u32 length of the next item
- serialized CraftiItemDefManager
- */
- TOCLIENT_ANNOUNCE_MEDIA = 0x3c,
- /*
- u32 number of files
- for each texture {
- u16 length of name
- string name
- u16 length of sha1_digest
- string sha1_digest
- }
- */
- TOCLIENT_ITEMDEF = 0x3d,
- /*
- u32 length of next item
- serialized ItemDefManager
- */
- TOCLIENT_PLAY_SOUND = 0x3f,
- /*
- 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)
- */
- TOCLIENT_STOP_SOUND = 0x40,
- /*
- s32 sound_id
- */
- TOCLIENT_PRIVILEGES = 0x41,
- /*
- u16 number of privileges
- for each privilege
- u16 len
- u8[len] privilege
- */
- TOCLIENT_INVENTORY_FORMSPEC = 0x42,
- /*
- u32 len
- u8[len] formspec
- */
- TOCLIENT_DETACHED_INVENTORY = 0x43,
- /*
- [0] u16 command
- u16 len
- 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,
- /*
- 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,
- /*
- v3f1000 pos
- v3f1000 velocity
- v3f1000 acceleration
- f1000 expirationtime
- f1000 size
- u8 bool collisiondetection
- u8 bool vertical
- u32 len
- u8[len] texture
- u8 collision_removal
- */
- TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
- /*
- 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
- u8 bool vertical
- u32 len
- u8[len] texture
- u32 id
- u8 collision_removal
- */
- TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY = 0x48, // Obsolete
- TOCLIENT_HUDADD = 0x49,
- /*
- 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
- v3f1000 world_pos
- v2s32 size
- */
- TOCLIENT_HUDRM = 0x4a,
- /*
- u32 id
- */
- TOCLIENT_HUDCHANGE = 0x4b,
- /*
- u32 id
- u8 stat
- [v2f1000 data |
- u32 len
- u8[len] data |
- u32 data]
- */
- TOCLIENT_HUD_SET_FLAGS = 0x4c,
- /*
- u32 flags
- u32 mask
- */
- TOCLIENT_HUD_SET_PARAM = 0x4d,
- /*
- u16 param
- u16 len
- u8[len] value
- */
- TOCLIENT_BREATH = 0x4e,
- /*
- u16 breath
- */
- TOCLIENT_SET_SKY = 0x4f,
- /*
- u8[4] color (ARGB)
- u8 len
- u8[len] type
- u16 count
- foreach count:
- u8 len
- u8[len] param
- u8 clouds (boolean)
- */
- TOCLIENT_OVERRIDE_DAY_NIGHT_RATIO = 0x50,
- /*
- u8 do_override (boolean)
- u16 day-night ratio 0...65535
- */
- TOCLIENT_LOCAL_PLAYER_ANIMATIONS = 0x51,
- /*
- v2s32 stand/idle
- v2s32 walk
- v2s32 dig
- v2s32 walk+dig
- f1000 frame_speed
- */
- TOCLIENT_EYE_OFFSET = 0x52,
- /*
- v3f1000 first
- v3f1000 third
- */
- TOCLIENT_DELETE_PARTICLESPAWNER = 0x53,
- /*
- 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_MODCHANNEL_MSG = 0x57,
- /*
- u16 channel name length
- std::string channel name
- u16 channel name sender
- std::string channel name
- u16 message length
- std::string message
- */
- TOCLIENT_MODCHANNEL_SIGNAL = 0x58,
- /*
- u8 signal id
- u16 channel name length
- std::string channel name
- */
- TOCLIENT_SRP_BYTES_S_B = 0x60,
- /*
- Belonging to AUTH_MECHANISM_SRP.
- std::string bytes_s
- std::string bytes_B
- */
- TOCLIENT_FORMSPEC_PREPEND = 0x61,
- /*
- u16 len
- u8[len] formspec
- */
- TOCLIENT_NUM_MSG_TYPES = 0x62,
- };
- enum ToServerCommand
- {
- TOSERVER_INIT = 0x02,
- /*
- Sent first after connected.
- u8 serialisation version (=SER_FMT_VER_HIGHEST_READ)
- u16 supported network compression modes
- u16 minimum supported network protocol version
- u16 maximum supported network protocol version
- std::string player name
- */
- TOSERVER_INIT_LEGACY = 0x10, // Obsolete
- TOSERVER_INIT2 = 0x11,
- /*
- Sent as an ACK for TOCLIENT_INIT.
- After this, the server can send data.
- [0] u16 TOSERVER_INIT2
- */
- TOSERVER_MODCHANNEL_JOIN = 0x17,
- /*
- u16 channel name length
- std::string channel name
- */
- TOSERVER_MODCHANNEL_LEAVE = 0x18,
- /*
- u16 channel name length
- std::string channel name
- */
- TOSERVER_MODCHANNEL_MSG = 0x19,
- /*
- u16 channel name length
- std::string channel name
- u16 message length
- std::string message
- */
- TOSERVER_GETBLOCK = 0x20, // Obsolete
- TOSERVER_ADDNODE = 0x21, // Obsolete
- TOSERVER_REMOVENODE = 0x22, // Obsolete
- TOSERVER_PLAYERPOS = 0x23,
- /*
- [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
- [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,
- /*
- [0] u16 command
- [2] u8 count
- [3] v3s16 pos_0
- [3+6] v3s16 pos_1
- ...
- */
- TOSERVER_DELETEDBLOCKS = 0x25,
- /*
- [0] u16 command
- [2] u8 count
- [3] v3s16 pos_0
- [3+6] v3s16 pos_1
- ...
- */
- TOSERVER_ADDNODE_FROM_INVENTORY = 0x26, // Obsolete
- TOSERVER_CLICK_OBJECT = 0x27, // Obsolete
- TOSERVER_GROUND_ACTION = 0x28, // Obsolete
- TOSERVER_RELEASE = 0x29, // Obsolete
- TOSERVER_SIGNTEXT = 0x30, // Obsolete
- TOSERVER_INVENTORY_ACTION = 0x31,
- /*
- See InventoryAction in inventorymanager.h
- */
- TOSERVER_CHAT_MESSAGE = 0x32,
- /*
- u16 length
- wstring message
- */
- TOSERVER_SIGNNODETEXT = 0x33, // Obsolete
- TOSERVER_CLICK_ACTIVEOBJECT = 0x34, // Obsolete
- TOSERVER_DAMAGE = 0x35,
- /*
- u8 amount
- */
- TOSERVER_PASSWORD_LEGACY = 0x36, // Obsolete
- 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
- */
- TOSERVER_REMOVED_SOUNDS = 0x3a,
- /*
- u16 len
- s32[len] sound_id
- */
- TOSERVER_NODEMETA_FIELDS = 0x3b,
- /*
- 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
- */
- TOSERVER_INVENTORY_FIELDS = 0x3c,
- /*
- 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
- */
- TOSERVER_REQUEST_MEDIA = 0x40,
- /*
- u16 number of files requested
- for each file {
- u16 length of name
- string name
- }
- */
- TOSERVER_RECEIVED_MEDIA = 0x41, // Obsolete
- TOSERVER_BREATH = 0x42, // Obsolete
- TOSERVER_CLIENT_READY = 0x43,
- /*
- u8 major
- u8 minor
- u8 patch
- u8 reserved
- u16 len
- u8[len] full_version_string
- */
- TOSERVER_FIRST_SRP = 0x50,
- /*
- Belonging to AUTH_MECHANISM_FIRST_SRP.
- std::string srp salt
- std::string srp verification key
- u8 is_empty (=1 if password is empty, 0 otherwise)
- */
- TOSERVER_SRP_BYTES_A = 0x51,
- /*
- Belonging to AUTH_MECHANISM_SRP,
- depending on current_login_based_on.
- std::string bytes_A
- u8 current_login_based_on : on which version of the password's
- hash this login is based on (0 legacy hash,
- or 1 directly the password)
- */
- TOSERVER_SRP_BYTES_M = 0x52,
- /*
- Belonging to AUTH_MECHANISM_SRP.
- std::string bytes_M
- */
- TOSERVER_NUM_MSG_TYPES = 0x53,
- };
- enum AuthMechanism
- {
- // reserved
- AUTH_MECHANISM_NONE = 0,
- // SRP based on the legacy hash
- AUTH_MECHANISM_LEGACY_PASSWORD = 1 << 0,
- // SRP based on the srp verification key
- AUTH_MECHANISM_SRP = 1 << 1,
- // Establishes a srp verification key, for first login and password changing
- AUTH_MECHANISM_FIRST_SRP = 1 << 2,
- };
- enum AccessDeniedCode {
- SERVER_ACCESSDENIED_WRONG_PASSWORD,
- SERVER_ACCESSDENIED_UNEXPECTED_DATA,
- SERVER_ACCESSDENIED_SINGLEPLAYER,
- SERVER_ACCESSDENIED_WRONG_VERSION,
- SERVER_ACCESSDENIED_WRONG_CHARS_IN_NAME,
- SERVER_ACCESSDENIED_WRONG_NAME,
- SERVER_ACCESSDENIED_TOO_MANY_USERS,
- SERVER_ACCESSDENIED_EMPTY_PASSWORD,
- SERVER_ACCESSDENIED_ALREADY_CONNECTED,
- SERVER_ACCESSDENIED_SERVER_FAIL,
- SERVER_ACCESSDENIED_CUSTOM_STRING,
- SERVER_ACCESSDENIED_SHUTDOWN,
- SERVER_ACCESSDENIED_CRASH,
- SERVER_ACCESSDENIED_MAX,
- };
- enum NetProtoCompressionMode {
- NETPROTO_COMPRESSION_NONE = 0,
- };
- const static std::string accessDeniedStrings[SERVER_ACCESSDENIED_MAX] = {
- "Invalid password",
- "Your client sent something the server didn't expect. Try reconnecting or updating your client",
- "The server is running in simple singleplayer mode. You cannot connect.",
- "Your client's version is not supported.\nPlease contact server administrator.",
- "Player name contains disallowed characters.",
- "Player name not allowed.",
- "Too many users.",
- "Empty passwords are disallowed. Set a password and try again.",
- "Another client is connected with this name. If your client closed unexpectedly, try again in a minute.",
- "Server authentication failed. This is likely a server error.",
- "",
- "Server shutting down.",
- "This server has experienced an internal error. You will now be disconnected."
- };
- enum PlayerListModifer: u8
- {
- PLAYER_LIST_INIT,
- PLAYER_LIST_ADD,
- PLAYER_LIST_REMOVE,
- };
- enum CSMFlavourLimit : u64 {
- CSM_FL_NONE = 0x00000000,
- CSM_FL_LOAD_CLIENT_MODS = 0x00000001, // Disable mods provided by clients
- 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_LOOKUP_NODES = 0x00000010, // Limit node lookups
- CSM_FL_ALL = 0xFFFFFFFF,
- };
|