Fix disconnect messages and progress on Configuration stage
All checks were successful
Build & Test / nix-build (push) Successful in 1m30s
All checks were successful
Build & Test / nix-build (push) Successful in 1m30s
This commit is contained in:
parent
1ced941440
commit
6495a246e0
@ -81,7 +81,7 @@ alias ElixirSense.Log
|
||||
:ok -> state
|
||||
{:error, reason} ->
|
||||
Logger.error("Error handling packet with ID #{id} in state #{connstate}: #{reason}")
|
||||
send(self(), {:disconnect, "Error handling packet #{id}:\n#{reason}"})
|
||||
send(self(), {:disconnect, "§cError handling packet #{id}:\n#{reason}"})
|
||||
state
|
||||
newstate ->
|
||||
if is_map(newstate) do
|
||||
@ -94,7 +94,7 @@ alias ElixirSense.Log
|
||||
rescue
|
||||
e ->
|
||||
Logger.error("Error handling packet with ID #{id} in state #{connstate}: #{Exception.format(:error, e, __STACKTRACE__)}")
|
||||
send(self(), {:disconnect, "Error handling packet #{id}:\n#{e.message}"})
|
||||
send(self(), {:disconnect, "§cError handling packet #{id}:\n#{Exception.format(:error, e, __STACKTRACE__)}"})
|
||||
state
|
||||
end
|
||||
end
|
||||
|
@ -25,7 +25,7 @@ defmodule Amethyst.ConnectionState.Configuration do
|
||||
"""
|
||||
Macros.defpacket_clientbound :cookie_request, 0x00, 767, [identifier: :string]
|
||||
Macros.defpacket_clientbound :clientbound_plugin_message, 0x01, 767, [channel: :string, data: :raw]
|
||||
Macros.defpacket_clientbound :disconnect, 0x02, 767, [reason: :json]
|
||||
Macros.defpacket_clientbound :disconnect, 0x02, 767, [reason: :nbt]
|
||||
Macros.defpacket_clientbound :finish_configuration, 0x03, 767, []
|
||||
Macros.defpacket_clientbound :clientbound_keep_alive, 0x04, 767, [id: :long]
|
||||
Macros.defpacket_clientbound :ping, 0x05, 767, [id: :int]
|
||||
@ -107,9 +107,43 @@ defmodule Amethyst.ConnectionState.Configuration do
|
||||
]}
|
||||
]
|
||||
|
||||
def handle(%{packet_type: :serverbound_plugin_message, channel: "minecraft:brand", data: data}, 767, state) do
|
||||
{[string], ""} = Amethyst.Minecraft.Read.start(data) |> Amethyst.Minecraft.Read.string() |> Amethyst.Minecraft.Read.stop()
|
||||
Logger.debug("Received brand: #{string}")
|
||||
send(self(), {:send_packet, %{
|
||||
packet_type: :clientbound_plugin_message,
|
||||
channel: "minecraft:brand",
|
||||
data: Amethyst.Minecraft.Write.string("Amethyst")
|
||||
}})
|
||||
state |> Map.put(:brand, string)
|
||||
end
|
||||
|
||||
def handle(%{
|
||||
packet_type: :client_information,
|
||||
locale: locale,
|
||||
view_distance: view_distance,
|
||||
chat_mode: chat_mode,
|
||||
chat_colors: chat_colors,
|
||||
displayed_skin_parts: displayed_skin_parts,
|
||||
main_hand: main_hand,
|
||||
text_filtering: text_filtering,
|
||||
allow_server_listings: allow_server_listings
|
||||
}, 767, state) do
|
||||
Logger.debug("Received client information")
|
||||
state
|
||||
|> Map.put(:locale, locale)
|
||||
|> Map.put(:view_distance, view_distance)
|
||||
|> Map.put(:chat_mode, chat_mode)
|
||||
|> Map.put(:chat_colors, chat_colors)
|
||||
|> Map.put(:displayed_skin_parts, displayed_skin_parts)
|
||||
|> Map.put(:main_hand, main_hand)
|
||||
|> Map.put(:text_filtering, text_filtering)
|
||||
|> Map.put(:allow_server_listings, allow_server_listings)
|
||||
end
|
||||
|
||||
def disconnect(reason) do
|
||||
%{packet_type: :disconnect, reason: %{
|
||||
"text" => reason
|
||||
}}
|
||||
%{packet_type: :disconnect, reason: {:compound, %{
|
||||
"text" => {:string, reason}
|
||||
}}}
|
||||
end
|
||||
end
|
||||
|
@ -23,7 +23,7 @@ defmodule Amethyst.ConnectionState.Login do
|
||||
@moduledoc """
|
||||
This module contains the packets and logic for the Login state.
|
||||
"""
|
||||
Macros.defpacket_clientbound :disconnect, 0x00, 767, [reason: :nbt]
|
||||
Macros.defpacket_clientbound :disconnect, 0x00, 767, [reason: :json]
|
||||
Macros.defpacket_clientbound :encryption_request, 0x01, 767, [
|
||||
server_id: :string,
|
||||
public_key: :byte_array,
|
||||
@ -84,9 +84,9 @@ defmodule Amethyst.ConnectionState.Login do
|
||||
|
||||
def disconnect(reason) do
|
||||
%{packet_type: :disconnect, reason:
|
||||
{:compound, %{
|
||||
"text" => {:string, reason}
|
||||
}}
|
||||
%{
|
||||
"text" => reason
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user