diff --git a/src/DedicatedServer.cpp b/src/DedicatedServer.cpp index 118f833..79b544c 100644 --- a/src/DedicatedServer.cpp +++ b/src/DedicatedServer.cpp @@ -57,11 +57,18 @@ namespace Feather using namespace Protocol; + void DedicatedServer::HandleUnknownPacket(MinecraftClient &client, int32_t id, const PacketReader &packet) + { + Log_Trace("Got unknown packet with ID %d from client.", id); + } + void DedicatedServer::HandleLegacyPing(MinecraftClient& client) { Log_Info("Got legacy server list ping."); } +#pragma region Handshake & Status + template <> void DedicatedServer::HandlePacket(MinecraftClient& client, const Handholding::ServerboundHandshake& handshake) { @@ -101,6 +108,8 @@ namespace Feather client.SendMessage(message); } +#pragma endregion + template <> void DedicatedServer::HandlePacket(MinecraftClient& client,const Login::ServerboundStart& start) { diff --git a/src/DedicatedServer.h b/src/DedicatedServer.h index 3b99884..23b2f7d 100644 --- a/src/DedicatedServer.h +++ b/src/DedicatedServer.h @@ -3,6 +3,7 @@ #include "MinecraftClient.h" #include "ServerStatus.h" #include "protocol/Protocol.h" +#include "PacketReader.h" #include "network/IListenerInterface.h" @@ -24,6 +25,8 @@ namespace Feather template void HandlePacket(MinecraftClient& client, const T& message); + void HandleUnknownPacket(MinecraftClient& client, int32_t id, const PacketReader& packet); + private: ServerProperties* m_properties; Network::TCPListener m_listener; diff --git a/src/protocol/generate_protocol.py b/src/protocol/generate_protocol.py index 239bb2e..a5a8259 100644 --- a/src/protocol/generate_protocol.py +++ b/src/protocol/generate_protocol.py @@ -201,6 +201,13 @@ def print_handler(list): add_text('handler.template HandlePacket<{}>(client, {}(packet));', name, name) add_text('break;') unindent() + # handle unknown packets + add_text('default:') + indent() + add_text('handler.HandleUnknownPacket(client, packetId, packet);') + add_text('break;') + unindent() + unindent() add_text('}}') add_text('break;')