LeviLamina
Loading...
Searching...
No Matches
Packet.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/common/SubClientId.h"
7#include "mc/deps/raknet/PacketPriority.h"
8#include "mc/network/Compressibility.h"
9#include "mc/network/MinecraftPacketIds.h"
10#include "mc/network/NetworkPeer.h"
11#include "mc/network/packet/cerealize/core/SerializationMode.h"
12#include "mc/platform/Result.h"
13
14// auto generated forward declare list
15// clang-format off
16class BinaryStream;
21namespace cereal { struct ReflectionCtx; }
22// clang-format on
23
24class Player;
25class Actor;
26class BlockPos;
29
30class Packet {
31public:
32 [[nodiscard]] constexpr explicit Packet(
33 PacketPriority priority = PacketPriority::MediumPriority,
34 NetworkPeer::Reliability reliability = NetworkPeer::Reliability::ReliableOrdered,
35 SubClientId clientSubId = SubClientId::PrimaryClient,
36 bool compress = true
37 )
38 : mPriority(priority),
39 mReliability(reliability),
40 mSenderSubId(clientSubId),
41 mCompressible(compress ? Compressibility::Compressible : Compressibility::Incompressible) {}
42
48 LLAPI void sendTo(Player const& player) const;
49
56 LLAPI void sendTo(BlockPos const& pos, DimensionType dimId, optional_ref<Player const> except = std::nullopt) const;
57
64 LLAPI void sendTo(Actor const& actor, optional_ref<Player const> except = std::nullopt) const;
65
72 LLAPI void sendToClient(NetworkIdentifier const& identifier, ::SubClientId clientId) const;
73
74 LLAPI void sendToClient(NetworkIdentifierWithSubId const& identifierWithSubId) const;
75
79 LLAPI void sendToClients() const;
80
81 LLAPI void sendToClients(NetworkIdentifier const& exceptId, ::SubClientId exceptSubid) const;
82
83 LLAPI void sendToServer() const;
84
85public:
86 // member variables
87 // NOLINTBEGIN
88 ::PacketPriority mPriority;
89 ::NetworkPeer::Reliability mReliability;
90 ::SubClientId mSenderSubId;
91 bool mIsHandled;
92 ::std::chrono::steady_clock::time_point mReceiveTimepoint;
93 ::IPacketHandlerDispatcher const* mHandler;
94 ::Compressibility mCompressible;
95 // NOLINTEND
96
97public:
98 // virtual functions
99 // NOLINTBEGIN
100 virtual ~Packet() = default;
101
102 virtual ::MinecraftPacketIds getId() const = 0;
103
104 virtual ::std::string_view getName() const = 0;
105
106 virtual uint64 getMaxSize() const;
107
108 virtual ::Bedrock::Result<void> checkSize(uint64 packetSize, bool receiverIsServer) const;
109
110 virtual void writeWithSerializationMode(
111 ::BinaryStream& stream,
112 ::cereal::ReflectionCtx const& reflectionCtx,
113 ::std::optional<::SerializationMode> overrideMode
114 ) const;
115
116 virtual void write(::BinaryStream& stream, ::cereal::ReflectionCtx const& reflectionCtx) const;
117
118 virtual void write(::BinaryStream& stream) const = 0;
119
120 virtual ::Bedrock::Result<void>
121 read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
122
123 virtual ::Bedrock::Result<void> read(::ReadOnlyBinaryStream& bitStream);
124
125 virtual bool disallowBatching() const;
126
127 virtual bool isValid() const;
128
129 virtual ::SerializationMode getSerializationMode() const;
130
131 virtual void setSerializationMode(::SerializationMode mode);
132
133 virtual ::std::string toString() const;
134
135 virtual ::Bedrock::Result<void> _read(::ReadOnlyBinaryStream& stream, ::cereal::ReflectionCtx const& reflectionCtx);
136
137 virtual ::Bedrock::Result<void> _read(::ReadOnlyBinaryStream& stream) = 0;
138 // NOLINTEND
139
140public:
141 // member functions
142 // NOLINTBEGIN
143 MCAPI void
144 handle(::NetworkIdentifier const& source, ::NetEventCallback& callback, ::std::shared_ptr<::Packet>& packet);
145
146 MCAPI ::Bedrock::Result<void> readNoHeader(
147 ::ReadOnlyBinaryStream& bitstream,
148 ::cereal::ReflectionCtx const& reflectionCtx,
149 ::SubClientId const& subid
150 );
151 // NOLINTEND
152
153public:
154 // virtual function thunks
155 // NOLINTBEGIN
156 MCAPI uint64 $getMaxSize() const;
157
158 MCAPI ::Bedrock::Result<void> $checkSize(uint64 packetSize, bool receiverIsServer) const;
159
160 MCAPI void $writeWithSerializationMode(
161 ::BinaryStream& stream,
162 ::cereal::ReflectionCtx const& reflectionCtx,
163 ::std::optional<::SerializationMode> overrideMode
164 ) const;
165
166 MCFOLD void $write(::BinaryStream& stream, ::cereal::ReflectionCtx const& reflectionCtx) const;
167
168 MCFOLD ::Bedrock::Result<void>
169 $read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
170
171 MCAPI ::Bedrock::Result<void> $read(::ReadOnlyBinaryStream& bitStream);
172
173 MCFOLD bool $disallowBatching() const;
174
175 MCFOLD bool $isValid() const;
176
177 MCFOLD ::SerializationMode $getSerializationMode() const;
178
179 MCFOLD void $setSerializationMode(::SerializationMode mode);
180
181 MCFOLD ::std::string $toString() const;
182
183 MCFOLD ::Bedrock::Result<void> $_read(::ReadOnlyBinaryStream& stream, ::cereal::ReflectionCtx const& reflectionCtx);
184
185
186 // NOLINTEND
187
188public:
189 // vftables
190 // NOLINTBEGIN
191 MCAPI static void** $vftable();
192 // NOLINTEND
193};
194
195namespace ll {
196template <class PacketPayloadT>
197class PayloadPacket : public ::Packet, public PacketPayloadT {
198public:
199 using PayloadType = PacketPayloadT;
200
201 template <typename... Args>
202 PayloadPacket(Args&&... args) : Packet(),
203 PacketPayloadT(std::forward<Args>(args)...) {}
204};
205} // namespace ll
Definition Actor.h:123
Definition BinaryStream.h:11
Definition BlockPos.h:21
Definition IPacketHandlerDispatcher.h:12
Definition NetEventCallback.h:260
Definition NetworkIdentifier.h:10
LLAPI void sendTo(Player const &player) const
LLAPI void sendToClient(NetworkIdentifier const &identifier, ::SubClientId clientId) const
LLAPI void sendTo(BlockPos const &pos, DimensionType dimId, optional_ref< Player const > except=std::nullopt) const
LLAPI void sendToClients() const
LLAPI void sendTo(Actor const &actor, optional_ref< Player const > except=std::nullopt) const
Definition Player.h:136
Definition ReadOnlyBinaryStream.h:8
Definition optional_ref.h:10
Definition NetworkIdentifierWithSubId.h:10
Definition ReflectionCtx.h:11