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