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
+ AO_CMD_SET_ANIMATION
+ AO_CMD_SET_BONE_POSITION
GENERIC_CMD_SET_ATTACHMENT
PROTOCOL_VERSION 15:
Serialization format changes
damageGroups added to ToolCapabilities
sound_place added to ItemDefinition
PROTOCOL_VERSION 19:
- GENERIC_CMD_SET_PHYSICS_OVERRIDE
+ AO_CMD_SET_PHYSICS_OVERRIDE
PROTOCOL_VERSION 20:
TOCLIENT_HUDADD
TOCLIENT_HUDRM
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
+ Rename GENERIC_CMD_SET_ATTACHMENT to AO_CMD_ATTACH_TO
PROTOCOL_VERSION 26:
Add TileDef tileable_horizontal, tileable_vertical flags
PROTOCOL_VERSION 27:
* sender
* type (RAW, NORMAL, ANNOUNCE, SYSTEM)
* content
- Add TOCLIENT_CSM_FLAVOUR_LIMITS to define which CSM flavour should be
+ Add TOCLIENT_CSM_RESTRICTION_FLAGS to define which CSM features should be
limited
Add settable player collisionbox. Breaks compatibility with older
clients as a 1-node vertical offset has been removed from player's
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
+ PROTOCOL VERSION 37:
+ Redo detached inventory sending
+ Add TOCLIENT_NODEMETA_CHANGED
+ New network float format
+ ContentFeatures version 13
+ Add full Euler rotations instead of just yaw
+ Add TOCLIENT_PLAYER_SPEED
+ PROTOCOL VERSION 38:
+ Incremental inventory sending mode
+ Unknown inventory serialization fields no longer throw an error
+ Mod-specific formspec version
+ Player FOV override API
+ "ephemeral" added to TOCLIENT_PLAY_SOUND
+ PROTOCOL VERSION 39:
+ Updated set_sky packet
+ Adds new sun, moon and stars packets
+ Minimap modes
*/
-#define LATEST_PROTOCOL_VERSION 36
+#define LATEST_PROTOCOL_VERSION 39
+#define LATEST_PROTOCOL_VERSION_STRING TOSTRING(LATEST_PROTOCOL_VERSION)
// Server's supported network protocol range
-#define SERVER_PROTOCOL_VERSION_MIN 36
+#define SERVER_PROTOCOL_VERSION_MIN 37
#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_MIN 37
#define CLIENT_PROTOCOL_VERSION_MAX LATEST_PROTOCOL_VERSION
// Constant that differentiates the protocol from random data and other protocols
#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) "]"
+/*
+ Changes by FORMSPEC_API_VERSION:
+
+ FORMSPEC VERSION 1:
+ (too much)
+ FORMSPEC VERSION 2:
+ Forced real coordinates
+ background9[]: 9-slice scaling parameters
+ FORMSPEC VERSION 3:
+ Formspec elements are drawn in the order of definition
+ bgcolor[]: use 3 parameters (bgcolor, formspec (now an enum), fbgcolor)
+ box[] and image[] elements enable clipping by default
+ new element: scroll_container[]
+ FORMSPEC VERSION 4:
+ Allow dropdown indexing events
+*/
+#define FORMSPEC_API_VERSION 4
#define TEXTURENAME_ALLOWED_CHARS "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.-"
+typedef u16 session_t;
+
enum ToClientCommand
{
TOCLIENT_HELLO = 0x02,
f1000 time_speed
*/
- TOCLIENT_CSM_FLAVOUR_LIMITS = 0x2A,
+ TOCLIENT_CSM_RESTRICTION_FLAGS = 0x2A,
+ /*
+ u32 CSMRestrictionFlags byteflag
+ */
+
+ TOCLIENT_PLAYER_SPEED = 0x2B,
/*
- u32 CSMFlavourLimits byteflag
+ v3f added_vel
*/
+ TOCLIENT_MEDIA_PUSH = 0x2C,
+ /*
+ std::string raw_hash
+ std::string filename
+ bool should_be_cached
+ u32 len
+ char filedata[len]
+ */
+
// (oops, there is some gap here)
TOCLIENT_CHAT_MESSAGE = 0x2F,
wstring reason
*/
- TOCLIENT_PLAYERITEM = 0x36, // Obsolete
+ TOCLIENT_FOV = 0x36,
+ /*
+ Sends an FOV override/multiplier to client.
+
+ f32 fov
+ bool is_multiplier
+ f32 transition_time
+ */
TOCLIENT_DEATHSCREEN = 0x37,
/*
s32[3] pos_nodes*10000
u16 object_id
u8 loop (bool)
+ u8 ephemeral (bool)
*/
TOCLIENT_STOP_SOUND = 0x40,
f1000 expirationtime
f1000 size
u8 bool collisiondetection
- u8 bool vertical
u32 len
u8[len] texture
+ u8 bool vertical
u8 collision_removal
+ TileAnimation animation
+ u8 glow
+ u8 object_collision
*/
TOCLIENT_ADD_PARTICLESPAWNER = 0x47,
f1000 minsize
f1000 maxsize
u8 bool collisiondetection
- u8 bool vertical
u32 len
u8[len] texture
- u32 id
+ u8 bool vertical
u8 collision_removal
+ u32 id
+ TileAnimation animation
+ u8 glow
+ u8 object_collision
*/
TOCLIENT_DELETE_PARTICLESPAWNER_LEGACY = 0x48, // Obsolete
u32 id
u8 type
v2f1000 pos
- u32 len
+ u16 len
u8[len] name
v2f1000 scale
- u32 len2
+ u16 len2
u8[len2] text
u32 number
u32 item
v2f1000 offset
v3f1000 world_pos
v2s32 size
+ s16 z_index
+ u16 len3
+ u8[len3] text2
*/
TOCLIENT_HUDRM = 0x4a,
TOCLIENT_SET_SKY = 0x4f,
/*
- u8[4] color (ARGB)
+ Protocol 38:
+ u8[4] base_color (ARGB)
u8 len
u8[len] type
u16 count
u8 len
u8[len] param
u8 clouds (boolean)
+
+ Protocol 39:
+ u8[4] bgcolor (ARGB)
+ std::string type
+ int texture_count
+ std::string[6] param
+ bool clouds
+ bool bgcolor_fog
+ u8[4] day_sky (ARGB)
+ u8[4] day_horizon (ARGB)
+ u8[4] dawn_sky (ARGB)
+ u8[4] dawn_horizon (ARGB)
+ u8[4] night_sky (ARGB)
+ u8[4] night_horizon (ARGB)
+ u8[4] indoors (ARGB)
+ u8[4] fog_sun_tint (ARGB)
+ u8[4] fog_moon_tint (ARGB)
+ std::string fog_tint_type
*/
TOCLIENT_OVERRIDE_DAY_NIGHT_RATIO = 0x50,
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_NODEMETA_CHANGED = 0x59,
+ /*
+ serialized and compressed node metadata
+ */
+
+ TOCLIENT_SET_SUN = 0x5a,
+ /*
+ bool visible
+ std::string texture
+ std::string tonemap
+ std::string sunrise
+ f32 scale
+ */
+
+ TOCLIENT_SET_MOON = 0x5b,
+ /*
+ bool visible
+ std::string texture
+ std::string tonemap
+ f32 scale
+ */
+
+ TOCLIENT_SET_STARS = 0x5c,
+ /*
+ bool visible
+ u32 count
+ u8[4] starcolor (ARGB)
+ f32 scale
+ */
+
TOCLIENT_SRP_BYTES_S_B = 0x60,
/*
Belonging to AUTH_MECHANISM_SRP.
std::string bytes_B
*/
- TOCLIENT_NUM_MSG_TYPES = 0x61,
+ TOCLIENT_FORMSPEC_PREPEND = 0x61,
+ /*
+ u16 len
+ u8[len] formspec
+ */
+
+ TOCLIENT_MINIMAP_MODES = 0x62,
+ /*
+ u16 count // modes
+ u16 mode // wanted current mode index after change
+ for each mode
+ u16 type
+ std::string label
+ u16 size
+ std::string extra
+ */
+
+ TOCLIENT_NUM_MSG_TYPES = 0x63,
};
enum ToServerCommand
[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
"This server has experienced an internal error. You will now be disconnected."
};
-enum PlayerListModifer: u8
+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,
+enum CSMRestrictionFlags : u64 {
+ CSM_RF_NONE = 0x00000000,
+ // Until server-sent CSM and verifying of builtin are complete,
+ // 'CSM_RF_LOAD_CLIENT_MODS' also disables loading 'builtin'.
+ // When those are complete, this should return to only being a restriction on the
+ // loading of client mods.
+ CSM_RF_LOAD_CLIENT_MODS = 0x00000001, // Don't load client-provided mods or 'builtin'
+ CSM_RF_CHAT_MESSAGES = 0x00000002, // Disable chat message sending from CSM
+ CSM_RF_READ_ITEMDEFS = 0x00000004, // Disable itemdef lookups
+ CSM_RF_READ_NODEDEFS = 0x00000008, // Disable nodedef lookups
+ CSM_RF_LOOKUP_NODES = 0x00000010, // Limit node lookups
+ CSM_RF_READ_PLAYERINFO = 0x00000020, // Disable player info lookups
+ CSM_RF_ALL = 0xFFFFFFFF,
};
+enum InteractAction : u8
+{
+ INTERACT_START_DIGGING, // 0: start digging (from undersurface) or use
+ INTERACT_STOP_DIGGING, // 1: stop digging (all parameters ignored)
+ INTERACT_DIGGING_COMPLETED, // 2: digging completed
+ INTERACT_PLACE, // 3: place block or item (to abovesurface)
+ INTERACT_USE, // 4: use item
+ INTERACT_ACTIVATE // 5: rightclick air ("activate")
+};