29class PacketRegistrar {
31 std::unique_ptr<Impl> impl;
36 void removeMod(std::string_view name);
39 using PacketFactory = std::function<std::unique_ptr<Packet>()>;
42 LLNDAPI
static PacketRegistrar& getInstance();
44 LLAPI
bool registerPacket(
45 std::string_view name,
47 PacketFactory factory,
48 PacketSide side = PacketSide::Both,
49 bool optional =
false,
50 std::weak_ptr<mod::Mod> mod = mod::NativeMod::current()
52 LLAPI
bool registerPacket(
53 std::string_view name,
55 PacketFactory factory,
56 PacketHandler handler,
57 PacketSide side = PacketSide::Both,
58 bool optional =
false,
59 std::weak_ptr<mod::Mod> mod = mod::NativeMod::current()
61 LLAPI
bool registerHandler(
62 std::string_view name,
64 PacketHandler handler,
65 PacketSide side = PacketSide::Both,
66 std::weak_ptr<mod::Mod> mod = mod::NativeMod::current()
69 LLAPI
bool unregisterPacket(PacketRuntimeId
id);
70 LLAPI
bool unregisterHandler(PacketRuntimeId
id, PacketSide side = PacketSide::Both);
72 LLNDAPI std::unique_ptr<Packet> createPacket(PacketRuntimeId runtimeId);
73 LLNDAPI PacketHandler getHandler(PacketRuntimeId runtimeId, PacketSide side);
75 LLNDAPI std::vector<PacketRuntimeId> getHandledPackets(PacketSide side)
const;
77 LLNDAPI std::vector<std::pair<PacketRuntimeId, std::string>> getRequiredPackets(PacketSide side)
const;