Packages
mc_query_ex
0.3.0
An Elixir module for making requests to a Minecraft servers query interface.
Current section
Files
Jump to
Current section
Files
lib/packets/handshake.ex
defmodule McQueryEx.Handshake do
@moduledoc """
McQueryEx.Handshake creates Handshake requests, and decodes Handshake responses. Used internally with each request.
"""
@type t :: <<_::56>>
@spec create(McQueryEx.t()) :: __MODULE__.t()
def create(%McQueryEx{session_id: id}) do
<<
McQueryEx.get_magic()::big-integer-16,
9::big-integer-8,
id::big-integer-32
#empty payload.
>>
end
@spec decode_response(binary()) :: {:ok, integer}
def decode_response(<<9::big-integer-8, _session_id::big-integer-32, challenge::binary>>) do
{parsed_challenge, _rem} = Integer.parse(challenge)
{:ok, parsed_challenge}
end
@spec decode_response(any()) :: {:error, String.t()}
def decode_response(_incorrect_response) do
{:error, "Handshake response was malformed."}
end
end