syntax = "proto3"; package protocol.message_c2s; import "state.proto"; import "goodbye_reason.proto"; import "input.proto"; message MessageC2SHello { enum packet_info { unknown = 0; type = 0x01; } uint32 version = 1; // Version of the protocol. Currently always 1 string requested_username = 2; // The username that the client is requesting. protocol.state.State next_state = 3; // The state the connection will go into after the handshake. string token = 4; string user = 5; } message MessageC2SGoodbye { enum packet_info { unknown = 0; type = 0x02; } protocol.goodbye_reason.GoodbyeReason reason = 1; // The reason the client is disconnecting the server } message MessageC2SChat { enum packet_info { unknown = 0; type = 0x03; } string message = 1; // The chat message to sent } message MessageC2SPing { enum packet_info { unknown = 0; type = 0x04; } } message MessageC2SInput { enum packet_info { unknown = 0; type = 0x0b; } bool up_pressed = 1; bool down_pressed = 2; bool left_pressed = 3; bool right_pressed = 4; } message MessageC2SAuthenticateAndBeamOut { enum packet_info { unknown = 0; type = 0x0c; } string user_id = 1; // The user ID that the client is authenticating as string token = 2; // The token from the authentication server that the user is authenticating as } message MessageC2SMouseInput { enum packet_info { unknown = 0; type = 0x0d; } double worldpos_x = 1; double worldpos_y = 2; protocol.input.InputType button = 3; bool released = 4; } message MessageC2SModuleGrabBegin { enum packet_info { unknown = 0; type = 0x0e; } uint32 module_id = 1; double worldpos_x = 2; double worldpos_y = 3; } message MessageC2SModuleGrabEnd { enum packet_info { unknown = 0; type = 0x10; } uint32 module_id = 1; double worldpos_x = 2; double worldpos_y = 3; }