McProtocol.Packet.Client.Handshake.LegacyServerListPing

%{payload: ProtoDef.Type.U8}

McProtocol.Packet.Client.Handshake.SetProtocol

%{next_state: ProtoDef.Type.Varint, protocol_version: ProtoDef.Type.Varint,
  server_host: ProtoDef.Type.PString, server_port: ProtoDef.Type.U16}

McProtocol.Packet.Client.Login.EncryptionBegin

%{shared_secret: ProtoDef.Type.Buffer, verify_token: ProtoDef.Type.Buffer}

McProtocol.Packet.Client.Login.LoginStart

%{username: ProtoDef.Type.PString}

McProtocol.Packet.Client.Play.Abilities

%{flags: ProtoDef.Type.I8, flying_speed: ProtoDef.Type.F32,
  walking_speed: ProtoDef.Type.F32}

McProtocol.Packet.Client.Play.ArmAnimation

%{hand: ProtoDef.Type.Varint}

McProtocol.Packet.Client.Play.BlockDig

%{face: ProtoDef.Type.I8, location: {:type_ref, "position"},
  status: ProtoDef.Type.I8}

McProtocol.Packet.Client.Play.BlockPlace

%{cursor_x: ProtoDef.Type.I8, cursor_y: ProtoDef.Type.I8,
  cursor_z: ProtoDef.Type.I8, direction: ProtoDef.Type.Varint,
  hand: ProtoDef.Type.Varint, location: {:type_ref, "position"}}

McProtocol.Packet.Client.Play.Chat

%{message: ProtoDef.Type.PString}

McProtocol.Packet.Client.Play.ClientCommand

%{action_id: ProtoDef.Type.Varint}

McProtocol.Packet.Client.Play.CloseWindow

%{window_id: ProtoDef.Type.U8}

McProtocol.Packet.Client.Play.CustomPayload

%{channel: ProtoDef.Type.PString, data: {:type_ref, "restBuffer"}}

McProtocol.Packet.Client.Play.EnchantItem

%{enchantment: ProtoDef.Type.I8, window_id: ProtoDef.Type.I8}

McProtocol.Packet.Client.Play.EntityAction

%{action_id: ProtoDef.Type.Varint, entity_id: ProtoDef.Type.Varint,
  jump_boost: ProtoDef.Type.Varint}

McProtocol.Packet.Client.Play.Flying

%{on_ground: ProtoDef.Type.Bool}

McProtocol.Packet.Client.Play.HeldItemSlot

%{slot_id: ProtoDef.Type.I16}

McProtocol.Packet.Client.Play.KeepAlive

%{keep_alive_id: ProtoDef.Type.Varint}

McProtocol.Packet.Client.Play.Look

%{on_ground: ProtoDef.Type.Bool, pitch: ProtoDef.Type.F32,
  yaw: ProtoDef.Type.F32}

McProtocol.Packet.Client.Play.Position

%{on_ground: ProtoDef.Type.Bool, x: ProtoDef.Type.F64, y: ProtoDef.Type.F64,
  z: ProtoDef.Type.F64}

McProtocol.Packet.Client.Play.PositionLook

%{on_ground: ProtoDef.Type.Bool, pitch: ProtoDef.Type.F32, x: ProtoDef.Type.F64,
  y: ProtoDef.Type.F64, yaw: ProtoDef.Type.F32, z: ProtoDef.Type.F64}

McProtocol.Packet.Client.Play.ResourcePackReceive

%{hash: ProtoDef.Type.PString, result: ProtoDef.Type.Varint}

McProtocol.Packet.Client.Play.SetCreativeSlot

%{item: {:type_ref, "slot"}, slot: ProtoDef.Type.I16}

McProtocol.Packet.Client.Play.Settings

%{chat_colors: ProtoDef.Type.Bool, chat_flags: ProtoDef.Type.Varint,
  locale: ProtoDef.Type.PString, main_hand: ProtoDef.Type.Varint,
  skin_parts: ProtoDef.Type.U8, view_distance: ProtoDef.Type.I8}

McProtocol.Packet.Client.Play.Spectate

%{target: {:type_ref, "UUID"}}

McProtocol.Packet.Client.Play.SteerBoat

%{unknown1: ProtoDef.Type.Bool, unknown2: ProtoDef.Type.Bool}

McProtocol.Packet.Client.Play.SteerVehicle

%{forward: ProtoDef.Type.F32, jump: ProtoDef.Type.U8,
  sideways: ProtoDef.Type.F32}

McProtocol.Packet.Client.Play.TabComplete

%{assume_command: ProtoDef.Type.Bool,
  looked_at_block: {:or, [:void, {:type_ref, "position"}]},
  text: ProtoDef.Type.PString}

McProtocol.Packet.Client.Play.TeleportConfirm

%{teleport_id: ProtoDef.Type.Varint}

McProtocol.Packet.Client.Play.Transaction

%{accepted: ProtoDef.Type.Bool, action: ProtoDef.Type.I16,
  window_id: ProtoDef.Type.I8}

McProtocol.Packet.Client.Play.UpdateSign

%{location: {:type_ref, "position"}, text1: ProtoDef.Type.PString,
  text2: ProtoDef.Type.PString, text3: ProtoDef.Type.PString,
  text4: ProtoDef.Type.PString}

McProtocol.Packet.Client.Play.UseEntity

%{hand: {:or, [:void, ProtoDef.Type.Varint]}, mouse: ProtoDef.Type.Varint,
  target: ProtoDef.Type.Varint, x: {:or, [:void, ProtoDef.Type.F32]},
  y: {:or, [:void, ProtoDef.Type.F32]}, z: {:or, [:void, ProtoDef.Type.F32]}}

McProtocol.Packet.Client.Play.UseItem

%{hand: ProtoDef.Type.Varint}

McProtocol.Packet.Client.Play.VehicleMove

%{pitch: ProtoDef.Type.F32, x: ProtoDef.Type.F64, y: ProtoDef.Type.F64,
  yaw: ProtoDef.Type.F32, z: ProtoDef.Type.F64}

McProtocol.Packet.Client.Play.WindowClick

%{action: ProtoDef.Type.I16, item: {:type_ref, "slot"}, mode: ProtoDef.Type.I8,
  mouse_button: ProtoDef.Type.I8, slot: ProtoDef.Type.I16,
  window_id: ProtoDef.Type.U8}

McProtocol.Packet.Client.Status.Ping

%{time: ProtoDef.Type.I64}

McProtocol.Packet.Client.Status.PingStart

%{}

McProtocol.Packet.Server.Login.Compress

%{threshold: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Login.Disconnect

%{reason: ProtoDef.Type.PString}

McProtocol.Packet.Server.Login.EncryptionBegin

%{public_key: ProtoDef.Type.Buffer, server_id: ProtoDef.Type.PString,
  verify_token: ProtoDef.Type.Buffer}

McProtocol.Packet.Server.Login.Success

%{username: ProtoDef.Type.PString, uuid: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.Abilities

%{flags: ProtoDef.Type.I8, flying_speed: ProtoDef.Type.F32,
  walking_speed: ProtoDef.Type.F32}

McProtocol.Packet.Server.Play.Animation

%{animation: ProtoDef.Type.U8, entity_id: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.AttachEntity

%{entity_id: ProtoDef.Type.I32, vehicle_id: ProtoDef.Type.I32}

McProtocol.Packet.Server.Play.Bed

%{entity_id: ProtoDef.Type.Varint, location: {:type_ref, "position"}}

McProtocol.Packet.Server.Play.BlockAction

%{block_id: ProtoDef.Type.Varint, byte1: ProtoDef.Type.U8,
  byte2: ProtoDef.Type.U8, location: {:type_ref, "position"}}

McProtocol.Packet.Server.Play.BlockBreakAnimation

%{destroy_stage: ProtoDef.Type.I8, entity_id: ProtoDef.Type.Varint,
  location: {:type_ref, "position"}}

McProtocol.Packet.Server.Play.BlockChange

%{location: {:type_ref, "position"}, type: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.BossBar

%{action: ProtoDef.Type.Varint, color: {:or, [:void, ProtoDef.Type.Varint]},
  dividers: {:or, [:void, ProtoDef.Type.Varint]},
  entity_uuid: {:type_ref, "UUID"}, flags: {:or, [:void, ProtoDef.Type.U8]},
  health: {:or, [:void, ProtoDef.Type.F32]},
  title: {:or, [:void, ProtoDef.Type.PString]}}

McProtocol.Packet.Server.Play.Camera

%{camera_id: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.Chat

%{message: ProtoDef.Type.PString, position: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.CloseWindow

%{window_id: ProtoDef.Type.U8}

McProtocol.Packet.Server.Play.Collect

%{collected_entity_id: ProtoDef.Type.Varint,
  collector_entity_id: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.CombatEvent

%{duration: {:or, [:void, ProtoDef.Type.Varint]},
  entity_id: {:or, [:void, ProtoDef.Type.I32]}, event: ProtoDef.Type.Varint,
  message: {:or, [:void, ProtoDef.Type.PString]},
  player_id: {:or, [:void, ProtoDef.Type.Varint]}}

McProtocol.Packet.Server.Play.CraftProgressBar

%{property: ProtoDef.Type.I16, value: ProtoDef.Type.I16,
  window_id: ProtoDef.Type.U8}

McProtocol.Packet.Server.Play.CustomPayload

%{channel: ProtoDef.Type.PString, data: {:type_ref, "restBuffer"}}

McProtocol.Packet.Server.Play.Difficulty

%{difficulty: ProtoDef.Type.U8}

McProtocol.Packet.Server.Play.Entity

%{entity_id: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.EntityDestroy

%{entity_ids: {:array, ProtoDef.Type.Varint}}

McProtocol.Packet.Server.Play.EntityEffect

%{amplifier: ProtoDef.Type.I8, duration: ProtoDef.Type.Varint,
  effect_id: ProtoDef.Type.I8, entity_id: ProtoDef.Type.Varint,
  hide_particles: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.EntityEquipment

%{entity_id: ProtoDef.Type.Varint, item: {:type_ref, "slot"},
  slot: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.EntityHeadRotation

%{entity_id: ProtoDef.Type.Varint, head_yaw: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.EntityLook

%{entity_id: ProtoDef.Type.Varint, on_ground: ProtoDef.Type.Bool,
  pitch: ProtoDef.Type.I8, yaw: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.EntityMetadata

%{entity_id: ProtoDef.Type.Varint, metadata: {:type_ref, "entityMetadata"}}

McProtocol.Packet.Server.Play.EntityMove

%{d_x: ProtoDef.Type.I16, d_y: ProtoDef.Type.I16, d_z: ProtoDef.Type.I16,
  entity_id: ProtoDef.Type.Varint, on_ground: ProtoDef.Type.Bool}

McProtocol.Packet.Server.Play.EntityMoveLook

%{d_x: ProtoDef.Type.I16, d_y: ProtoDef.Type.I16, d_z: ProtoDef.Type.I16,
  entity_id: ProtoDef.Type.Varint, on_ground: ProtoDef.Type.Bool,
  pitch: ProtoDef.Type.I8, yaw: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.EntityStatus

%{entity_id: ProtoDef.Type.I32, entity_status: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.EntityTeleport

%{entity_id: ProtoDef.Type.Varint, on_ground: ProtoDef.Type.Bool,
  pitch: ProtoDef.Type.I8, x: ProtoDef.Type.F64, y: ProtoDef.Type.F64,
  yaw: ProtoDef.Type.I8, z: ProtoDef.Type.F64}

McProtocol.Packet.Server.Play.EntityUpdateAttributes

%{entity_id: ProtoDef.Type.Varint,
  properties: {:array,
   %{key: ProtoDef.Type.PString,
     modifiers: {:array,
      %{amount: ProtoDef.Type.F64, operation: ProtoDef.Type.I8,
        uuid: {:type_ref, "UUID"}}}, value: ProtoDef.Type.F64}}}

McProtocol.Packet.Server.Play.EntityVelocity

%{entity_id: ProtoDef.Type.Varint, velocity_x: ProtoDef.Type.I16,
  velocity_y: ProtoDef.Type.I16, velocity_z: ProtoDef.Type.I16}

McProtocol.Packet.Server.Play.Experience

%{experience_bar: ProtoDef.Type.F32, level: ProtoDef.Type.Varint,
  total_experience: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.Explosion

%{affected_block_offsets: {:array,
   %{x: ProtoDef.Type.I8, y: ProtoDef.Type.I8, z: ProtoDef.Type.I8}},
  player_motion_x: ProtoDef.Type.F32, player_motion_y: ProtoDef.Type.F32,
  player_motion_z: ProtoDef.Type.F32, radius: ProtoDef.Type.F32,
  x: ProtoDef.Type.F32, y: ProtoDef.Type.F32, z: ProtoDef.Type.F32}

McProtocol.Packet.Server.Play.GameStateChange

%{game_mode: ProtoDef.Type.F32, reason: ProtoDef.Type.U8}

McProtocol.Packet.Server.Play.HeldItemSlot

%{slot: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.KeepAlive

%{keep_alive_id: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.KickDisconnect

%{reason: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.Login

%{difficulty: ProtoDef.Type.U8, dimension: ProtoDef.Type.I32,
  entity_id: ProtoDef.Type.I32, game_mode: ProtoDef.Type.U8,
  level_type: ProtoDef.Type.PString, max_players: ProtoDef.Type.U8,
  reduced_debug_info: ProtoDef.Type.Bool}

McProtocol.Packet.Server.Play.Map

%{columns: ProtoDef.Type.I8, data: {:or, [ProtoDef.Type.Buffer, :void]},
  icons: {:array,
   %{direction_and_type: ProtoDef.Type.I8, x: ProtoDef.Type.I8,
     y: ProtoDef.Type.I8}}, item_damage: ProtoDef.Type.Varint,
  rows: {:or, [ProtoDef.Type.I8, :void]}, scale: ProtoDef.Type.I8,
  tracking_position: ProtoDef.Type.Bool, x: {:or, [ProtoDef.Type.I8, :void]},
  y: {:or, [ProtoDef.Type.I8, :void]}}

McProtocol.Packet.Server.Play.MapChunk

%{bit_map: ProtoDef.Type.Varint, chunk_data: ProtoDef.Type.Buffer,
  ground_up: ProtoDef.Type.Bool, x: ProtoDef.Type.I32, z: ProtoDef.Type.I32}

McProtocol.Packet.Server.Play.MultiBlockChange

%{chunk_x: ProtoDef.Type.I32, chunk_z: ProtoDef.Type.I32,
  records: {:array,
   %{block_id: ProtoDef.Type.Varint, horizontal_pos: ProtoDef.Type.U8,
     y: ProtoDef.Type.U8}}}

McProtocol.Packet.Server.Play.NamedEntitySpawn

%{entity_id: ProtoDef.Type.Varint, metadata: {:type_ref, "entityMetadata"},
  pitch: ProtoDef.Type.I8, player_uuid: {:type_ref, "UUID"},
  x: ProtoDef.Type.F64, y: ProtoDef.Type.F64, yaw: ProtoDef.Type.I8,
  z: ProtoDef.Type.F64}

McProtocol.Packet.Server.Play.NamedSoundEffect

%{pitch: ProtoDef.Type.U8, sound_category: ProtoDef.Type.Varint,
  sound_name: ProtoDef.Type.PString, volume: ProtoDef.Type.F32,
  x: ProtoDef.Type.I32, y: ProtoDef.Type.I32, z: ProtoDef.Type.I32}

McProtocol.Packet.Server.Play.OpenSignEntity

%{location: {:type_ref, "position"}}

McProtocol.Packet.Server.Play.OpenWindow

%{entity_id: {:or, [:void, ProtoDef.Type.I32]},
  inventory_type: ProtoDef.Type.PString, slot_count: ProtoDef.Type.U8,
  window_id: ProtoDef.Type.U8, window_title: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.PlayerInfo

%{action: ProtoDef.Type.Varint,
  data: {:array,
   %{display_name: {:or, [:void, {:or, [:void, ProtoDef.Type.PString]}]},
     gamemode: {:or, [:void, ProtoDef.Type.Varint]},
     name: {:or, [:void, ProtoDef.Type.PString]},
     ping: {:or, [:void, ProtoDef.Type.Varint]},
     properties: {:or,
      [:void,
       {:array,
        %{name: ProtoDef.Type.PString,
          signature: {:or, [:void, ProtoDef.Type.PString]},
          value: ProtoDef.Type.PString}}]}, uuid: {:type_ref, "UUID"}}}}

McProtocol.Packet.Server.Play.PlayerlistHeader

%{footer: ProtoDef.Type.PString, header: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.Position

%{flags: ProtoDef.Type.I8, pitch: ProtoDef.Type.F32,
  teleport_id: ProtoDef.Type.Varint, x: ProtoDef.Type.F64, y: ProtoDef.Type.F64,
  yaw: ProtoDef.Type.F32, z: ProtoDef.Type.F64}

McProtocol.Packet.Server.Play.RemoveEntityEffect

%{effect_id: ProtoDef.Type.I8, entity_id: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.ResourcePackSend

%{hash: ProtoDef.Type.PString, url: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.Respawn

%{difficulty: ProtoDef.Type.U8, dimension: ProtoDef.Type.I32,
  gamemode: ProtoDef.Type.U8, level_type: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.ScoreboardDisplayObjective

%{name: ProtoDef.Type.PString, position: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.ScoreboardObjective

%{action: ProtoDef.Type.I8, display_text: {:or, [:void, ProtoDef.Type.PString]},
  name: ProtoDef.Type.PString, type: {:or, [:void, ProtoDef.Type.PString]}}

McProtocol.Packet.Server.Play.ScoreboardScore

%{action: ProtoDef.Type.I8, item_name: ProtoDef.Type.PString,
  score_name: ProtoDef.Type.PString,
  value: {:or, [ProtoDef.Type.Varint, :void]}}

McProtocol.Packet.Server.Play.SetCooldown

%{cooldown_ticks: ProtoDef.Type.Varint, item_id: ProtoDef.Type.Varint}

McProtocol.Packet.Server.Play.SetPassengers

%{entity_id: ProtoDef.Type.Varint, passengers: {:array, ProtoDef.Type.Varint}}

McProtocol.Packet.Server.Play.SetSlot

%{item: {:type_ref, "slot"}, slot: ProtoDef.Type.I16,
  window_id: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.SoundEffect

%{pitch: ProtoDef.Type.U8, sound_catagory: ProtoDef.Type.Varint,
  sound_id: ProtoDef.Type.Varint, volume: ProtoDef.Type.F32,
  x: ProtoDef.Type.I32, y: ProtoDef.Type.I32, z: ProtoDef.Type.I32}

McProtocol.Packet.Server.Play.SpawnEntity

%{entity_id: ProtoDef.Type.Varint, int_field: ProtoDef.Type.I32,
  object_uuid: {:type_ref, "UUID"}, pitch: ProtoDef.Type.I8,
  type: ProtoDef.Type.I8, velocity_x: ProtoDef.Type.I16,
  velocity_y: ProtoDef.Type.I16, velocity_z: ProtoDef.Type.I16,
  x: ProtoDef.Type.F64, y: ProtoDef.Type.F64, yaw: ProtoDef.Type.I8,
  z: ProtoDef.Type.F64}

McProtocol.Packet.Server.Play.SpawnEntityExperienceOrb

%{count: ProtoDef.Type.I16, entity_id: ProtoDef.Type.Varint,
  x: ProtoDef.Type.F64, y: ProtoDef.Type.F64, z: ProtoDef.Type.F64}

McProtocol.Packet.Server.Play.SpawnEntityLiving

%{entity_id: ProtoDef.Type.Varint, entity_uuid: {:type_ref, "UUID"},
  head_pitch: ProtoDef.Type.I8, metadata: {:type_ref, "entityMetadata"},
  pitch: ProtoDef.Type.I8, type: ProtoDef.Type.U8,
  velocity_x: ProtoDef.Type.I16, velocity_y: ProtoDef.Type.I16,
  velocity_z: ProtoDef.Type.I16, x: ProtoDef.Type.F64, y: ProtoDef.Type.F64,
  yaw: ProtoDef.Type.I8, z: ProtoDef.Type.F64}

McProtocol.Packet.Server.Play.SpawnEntityPainting

%{direction: ProtoDef.Type.U8, entity_id: ProtoDef.Type.Varint,
  entity_uuid: {:type_ref, "UUID"}, location: {:type_ref, "position"},
  title: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.SpawnEntityWeather

%{entity_id: ProtoDef.Type.Varint, type: ProtoDef.Type.I8, x: ProtoDef.Type.F64,
  y: ProtoDef.Type.F64, z: ProtoDef.Type.F64}

McProtocol.Packet.Server.Play.SpawnPosition

%{location: {:type_ref, "position"}}

McProtocol.Packet.Server.Play.Statistics

%{entries: {:array,
   %{name: ProtoDef.Type.PString, value: ProtoDef.Type.Varint}}}

McProtocol.Packet.Server.Play.TabComplete

%{matches: {:array, ProtoDef.Type.PString}}

McProtocol.Packet.Server.Play.Teams

%{collision_rule: {:or, [:void, ProtoDef.Type.PString]},
  color: {:or, [:void, ProtoDef.Type.I8]},
  friendly_fire: {:or, [:void, ProtoDef.Type.I8]}, mode: ProtoDef.Type.I8,
  name: {:or, [:void, ProtoDef.Type.PString]},
  name_tag_visibility: {:or, [:void, ProtoDef.Type.PString]},
  players: {:or, [:void, {:array, ProtoDef.Type.PString}]},
  prefix: {:or, [:void, ProtoDef.Type.PString]},
  suffix: {:or, [:void, ProtoDef.Type.PString]}, team: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.TileEntityData

%{action: ProtoDef.Type.U8, location: {:type_ref, "position"},
  nbt_data: {:type_ref, "optionalNbt"}}

McProtocol.Packet.Server.Play.Title

%{action: ProtoDef.Type.Varint, fade_in: {:or, [:void, ProtoDef.Type.I32]},
  fade_out: {:or, [:void, ProtoDef.Type.I32]},
  stay: {:or, [:void, ProtoDef.Type.I32]},
  text: {:or, [:void, ProtoDef.Type.PString]}}

McProtocol.Packet.Server.Play.Transaction

%{accepted: ProtoDef.Type.Bool, action: ProtoDef.Type.I16,
  window_id: ProtoDef.Type.I8}

McProtocol.Packet.Server.Play.UnloadChunk

%{chunk_x: ProtoDef.Type.I32, chunk_z: ProtoDef.Type.I32}

McProtocol.Packet.Server.Play.UpdateHealth

%{food: ProtoDef.Type.Varint, food_saturation: ProtoDef.Type.F32,
  health: ProtoDef.Type.F32}

McProtocol.Packet.Server.Play.UpdateSign

%{location: {:type_ref, "position"}, text1: ProtoDef.Type.PString,
  text2: ProtoDef.Type.PString, text3: ProtoDef.Type.PString,
  text4: ProtoDef.Type.PString}

McProtocol.Packet.Server.Play.UpdateTime

%{age: ProtoDef.Type.I64, time: ProtoDef.Type.I64}

McProtocol.Packet.Server.Play.VehicleMove

%{pitch: ProtoDef.Type.F32, x: ProtoDef.Type.F64, y: ProtoDef.Type.F64,
  yaw: ProtoDef.Type.F32, z: ProtoDef.Type.F64}

McProtocol.Packet.Server.Play.WindowItems

%{items: {:array, {:type_ref, "slot"}}, window_id: ProtoDef.Type.U8}

McProtocol.Packet.Server.Play.WorldBorder

%{action: ProtoDef.Type.Varint, new_radius: {:or, [:void, ProtoDef.Type.F64]},
  old_radius: {:or, [:void, ProtoDef.Type.F64]},
  portal_boundary: {:or, [:void, ProtoDef.Type.Varint]},
  radius: {:or, [:void, ProtoDef.Type.F64]},
  speed: {:or, [:void, ProtoDef.Type.Varint]},
  warning_blocks: {:or, [:void, ProtoDef.Type.Varint]},
  warning_time: {:or, [:void, ProtoDef.Type.Varint]},
  x: {:or, [:void, ProtoDef.Type.F64]}, z: {:or, [:void, ProtoDef.Type.F64]}}

McProtocol.Packet.Server.Play.WorldEvent

%{data: ProtoDef.Type.I32, effect_id: ProtoDef.Type.I32,
  global: ProtoDef.Type.Bool, location: {:type_ref, "position"}}

McProtocol.Packet.Server.Play.WorldParticles

%{data: {:or, [:void, {:array, ProtoDef.Type.Varint}]},
  long_distance: ProtoDef.Type.Bool, offset_x: ProtoDef.Type.F32,
  offset_y: ProtoDef.Type.F32, offset_z: ProtoDef.Type.F32,
  particle_data: ProtoDef.Type.F32, particle_id: ProtoDef.Type.I32,
  particles: ProtoDef.Type.I32, x: ProtoDef.Type.F32, y: ProtoDef.Type.F32,
  z: ProtoDef.Type.F32}

McProtocol.Packet.Server.Status.Ping

%{time: ProtoDef.Type.I64}

McProtocol.Packet.Server.Status.ServerInfo

%{response: ProtoDef.Type.PString}