// messages sent between the client and the server, as json over a websocket export const AIR_ID = "bworld:air"; export interface PlayerInfo { id: string; name: string; x: number; y: number; z: number; yaw: number; pitch: number; } // x, y, z, block id export type BlockChange = [number, number, number, string]; export type ClientMessage = | { type: "hello"; name: string } | { type: "move"; x: number; y: number; z: number; yaw: number; pitch: number } | { type: "set_block"; x: number; y: number; z: number; id: string } | { type: "chat"; text: string }; export type ServerMessage = | { type: "welcome"; id: string; seed: string; players: PlayerInfo[]; changes: BlockChange[] } | { type: "player_join"; player: PlayerInfo } | { type: "player_leave"; id: string } | { type: "player_move"; id: string; x: number; y: number; z: number; yaw: number; pitch: number } | { type: "set_block"; x: number; y: number; z: number; id: string } | { type: "chat"; from?: string; text: string }; export const MAX_NAME_LENGTH = 16; export const MAX_CHAT_LENGTH = 256;