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;
19namespace cereal { struct ReflectionCtx; }
20// clang-format on
21
22class Player;
23class Actor;
24class BlockPos;
27
28#ifndef MC_NETWORK_PACKET_DECALARE
29
30#define MC_NETWORK_PACKET_DECALARE(packetClassName) \
31 class packetClassName : public ::PayloadPacket<::packetClassName##Payload>
32
33#endif
34
35#ifndef MC_NETWORK_PACKET_DECALARE_END
36#define MC_NETWORK_PACKET_DECALARE_END ;
37#endif
38
39// class (.*?) : public ::Packet \{\npublic:\n // member variables\n // NOLINTBEGIN\n *
40// ::ll::TypedStorage<.*?::\1Payload> mPayload;\n.*\n.*
41// MC_NETWORK_PACKET_DECALARE($1)
42
43class Packet {
44public:
45 [[nodiscard]] constexpr explicit Packet(
46 PacketPriority priority = PacketPriority::MediumPriority,
47 NetworkPeer::Reliability reliability = NetworkPeer::Reliability::ReliableOrdered,
48 SubClientId clientSubId = SubClientId::PrimaryClient,
49 bool compress = true
50 )
51 : mPriority(priority),
52 mReliability(reliability),
53 mSenderSubId(clientSubId),
54 mCompressible(compress ? Compressibility::Compressible : Compressibility::Incompressible) {}
55
61 LLAPI void sendTo(Player const& player) const;
62
69 LLAPI void sendTo(BlockPos const& pos, DimensionType dimId, optional_ref<Player const> except = std::nullopt) const;
70
77 LLAPI void sendTo(Actor const& actor, optional_ref<Player const> except = std::nullopt) const;
78
85 LLAPI void sendToClient(NetworkIdentifier const& identifier, ::SubClientId clientId) const;
86
87 LLAPI void sendToClient(NetworkIdentifierWithSubId const& identifierWithSubId) const;
88
92 LLAPI void sendToClients() const;
93
94 LLAPI void sendToClients(NetworkIdentifier const& exceptId, ::SubClientId exceptSubid) const;
95
96public:
97 // member variables
98 // NOLINTBEGIN
99 ::PacketPriority mPriority;
100 ::NetworkPeer::Reliability mReliability;
101 ::SubClientId mSenderSubId;
102 bool mIsHandled;
103 ::std::chrono::steady_clock::time_point mReceiveTimepoint;
104 ::IPacketHandlerDispatcher const* mHandler;
105 ::Compressibility mCompressible;
106 // NOLINTEND
107
108public:
109 // virtual functions
110 // NOLINTBEGIN
111 // vIndex: 0
112 virtual ~Packet();
113
114 // vIndex: 1
115 virtual ::MinecraftPacketIds getId() const = 0;
116
117 // vIndex: 2
118 virtual ::std::string getName() const = 0;
119
120 // vIndex: 3
121 virtual ::Bedrock::Result<void> checkSize(uint64 packetSize, bool receiverIsServer) const;
122
123 // vIndex: 4
124 virtual void writeWithSerializationMode(
125 ::BinaryStream& bitStream,
126 ::cereal::ReflectionCtx const& reflectionCtx,
127 ::std::optional<::SerializationMode>
128 ) const;
129
130 // vIndex: 6
131 virtual void write(::BinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx) const;
132
133 // vIndex: 5
134 virtual void write(::BinaryStream&) const = 0;
135
136 // vIndex: 8
137 virtual ::Bedrock::Result<void>
138 read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
139
140 // vIndex: 7
141 virtual ::Bedrock::Result<void> read(::ReadOnlyBinaryStream& bitStream);
142
143 // vIndex: 9
144 virtual bool disallowBatching() const;
145
146 // vIndex: 10
147 virtual bool isValid() const;
148
149 // vIndex: 11
150 virtual ::SerializationMode getSerializationMode() const;
151
152 // vIndex: 12
153 virtual void setSerializationMode(::SerializationMode);
154
155 // vIndex: 13
156 virtual ::std::string toString() const;
157
158 // vIndex: 15
159 virtual ::Bedrock::Result<void>
160 _read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
161
162 // vIndex: 14
163 virtual ::Bedrock::Result<void> _read(::ReadOnlyBinaryStream&) = 0;
164 // NOLINTEND
165
166public:
167 // member functions
168 // NOLINTBEGIN
169 MCAPI ::Bedrock::Result<void> readNoHeader(
170 ::ReadOnlyBinaryStream& bitstream,
171 ::cereal::ReflectionCtx const& reflectionCtx,
172 ::SubClientId const& subid
173 );
174 // NOLINTEND
175
176public:
177 // destructor thunk
178 // NOLINTBEGIN
179 MCFOLD void $dtor();
180 // NOLINTEND
181
182public:
183 // virtual function thunks
184 // NOLINTBEGIN
185 MCAPI ::Bedrock::Result<void> $checkSize(uint64 packetSize, bool receiverIsServer) const;
186
187 MCAPI void $writeWithSerializationMode(
188 ::BinaryStream& bitStream,
189 ::cereal::ReflectionCtx const& reflectionCtx,
190 ::std::optional<::SerializationMode>
191 ) const;
192
193 MCAPI void $write(::BinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx) const;
194
195 MCFOLD ::Bedrock::Result<void>
196 $read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
197
198 MCAPI ::Bedrock::Result<void> $read(::ReadOnlyBinaryStream& bitStream);
199
200 MCFOLD bool $disallowBatching() const;
201
202 MCFOLD bool $isValid() const;
203
204 MCFOLD ::SerializationMode $getSerializationMode() const;
205
206 MCFOLD void $setSerializationMode(::SerializationMode);
207
208 MCFOLD ::std::string $toString() const;
209
210 MCFOLD ::Bedrock::Result<void>
211 $_read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
212 // NOLINTEND
213
214public:
215 // vftables
216 // NOLINTBEGIN
217 MCNAPI static void** $vftable();
218 // NOLINTEND
219};
220
221template <class PacketPayloadT>
222class PayloadPacket : public ::Packet, public PacketPayloadT {
223public:
224 ::SerializationMode mSerializationMode;
225
226 using PayloadType = PacketPayloadT;
227
228 template <typename... Args>
229 PayloadPacket(Args&&... args) : Packet(),
230 PacketPayloadT(std::forward<Args>(args)...) {}
231};
Definition Actor.h:102
Definition AutomaticID.h:6
Definition BinaryStream.h:10
Definition BlockPos.h:17
Definition IPacketHandlerDispatcher.h:12
Definition NetworkIdentifier.h:10
Definition Packet.h:43
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
static MCAPI void ** $vftable()
LLAPI void sendTo(Actor const &actor, optional_ref< Player const > except=std::nullopt) const
Definition Packet.h:222
Definition Player.h:123
Definition ReadOnlyBinaryStream.h:8
Definition optional_ref.h:10
Definition NetworkIdentifierWithSubId.h:10
Definition ReflectionCtx.h:11