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
28class Packet {
29public:
30 [[nodiscard]] constexpr explicit Packet(
31 PacketPriority priority = PacketPriority::MediumPriority,
32 NetworkPeer::Reliability reliability = NetworkPeer::Reliability::ReliableOrdered,
33 SubClientId clientSubId = SubClientId::PrimaryClient,
34 bool compress = true
35 )
36 : mPriority(priority),
37 mReliability(reliability),
38 mSenderSubId(clientSubId),
39 mCompressible(compress ? Compressibility::Compressible : Compressibility::Incompressible) {}
40
46 LLAPI void sendTo(Player const& player) const;
47
54 LLAPI void sendTo(BlockPos const& pos, DimensionType dimId, optional_ref<Player const> except = std::nullopt) const;
55
62 LLAPI void sendTo(Actor const& actor, optional_ref<Player const> except = std::nullopt) const;
63
70 LLAPI void sendToClient(NetworkIdentifier const& identifier, ::SubClientId clientId) const;
71
72 LLAPI void sendToClient(NetworkIdentifierWithSubId const& identifierWithSubId) const;
73
77 LLAPI void sendToClients() const;
78
79 LLAPI void sendToClients(NetworkIdentifier const& exceptId, ::SubClientId exceptSubid) const;
80
81 LLAPI void sendToServer() const;
82
83public:
84 // member variables
85 // NOLINTBEGIN
86 ::PacketPriority mPriority;
87 ::NetworkPeer::Reliability mReliability;
88 ::SubClientId mSenderSubId;
89 bool mIsHandled;
90 ::std::chrono::steady_clock::time_point mReceiveTimepoint;
91 ::IPacketHandlerDispatcher const* mHandler;
92 ::Compressibility mCompressible;
93 // NOLINTEND
94
95public:
96 // virtual functions
97 // NOLINTBEGIN
98 virtual ~Packet();
99
100 virtual ::MinecraftPacketIds getId() const = 0;
101
102 virtual ::std::string getName() const = 0;
103
104 virtual uint64 getMaxSize() const;
105
106 virtual ::Bedrock::Result<void> checkSize(uint64 packetSize, bool receiverIsServer) const;
107
108 virtual void writeWithSerializationMode(
109 ::BinaryStream& bitStream,
110 ::cereal::ReflectionCtx const& reflectionCtx,
111 ::std::optional<::SerializationMode>
112 ) const;
113
114 virtual void write(::BinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx) const;
115
116 virtual void write(::BinaryStream&) const = 0;
117
118 virtual ::Bedrock::Result<void>
119 read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
120
121 virtual ::Bedrock::Result<void> read(::ReadOnlyBinaryStream& bitStream);
122
123 virtual bool disallowBatching() const;
124
125 virtual bool isValid() const;
126
127 virtual ::SerializationMode getSerializationMode() const;
128
129 virtual void setSerializationMode(::SerializationMode);
130
131 virtual ::std::string toString() const;
132
133 virtual ::Bedrock::Result<void>
134 _read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
135
136 virtual ::Bedrock::Result<void> _read(::ReadOnlyBinaryStream&) = 0;
137 // NOLINTEND
138
139public:
140 // member functions
141 // NOLINTBEGIN
142 MCAPI ::Bedrock::Result<void> readNoHeader(
143 ::ReadOnlyBinaryStream& bitstream,
144 ::cereal::ReflectionCtx const& reflectionCtx,
145 ::SubClientId const& subid
146 );
147 // NOLINTEND
148
149public:
150 // destructor thunk
151 // NOLINTBEGIN
152 MCFOLD void $dtor();
153 // NOLINTEND
154
155public:
156 // virtual function thunks
157 // NOLINTBEGIN
158 MCFOLD uint64 $getMaxSize() const;
159
160 MCAPI ::Bedrock::Result<void> $checkSize(uint64 packetSize, bool receiverIsServer) const;
161
162 MCAPI void $writeWithSerializationMode(
163 ::BinaryStream& bitStream,
164 ::cereal::ReflectionCtx const& reflectionCtx,
165 ::std::optional<::SerializationMode>
166 ) const;
167
168 MCAPI void $write(::BinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx) const;
169
170 MCFOLD ::Bedrock::Result<void>
171 $read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
172
173 MCAPI ::Bedrock::Result<void> $read(::ReadOnlyBinaryStream& bitStream);
174
175 MCFOLD bool $disallowBatching() const;
176
177 MCFOLD bool $isValid() const;
178
179 MCFOLD ::SerializationMode $getSerializationMode() const;
180
181 MCFOLD void $setSerializationMode(::SerializationMode);
182
183 MCFOLD ::std::string $toString() const;
184
185 MCFOLD ::Bedrock::Result<void>
186 $_read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
187
188
189 // NOLINTEND
190
191public:
192 // vftables
193 // NOLINTBEGIN
194 MCAPI static void** $vftable();
195 // NOLINTEND
196};
197
198namespace ll {
199template <class PacketPayloadT>
200class PayloadPacket : public ::Packet, public PacketPayloadT {
201public:
202 using PayloadType = PacketPayloadT;
203
204 template <typename... Args>
205 PayloadPacket(Args&&... args) : Packet(),
206 PacketPayloadT(std::forward<Args>(args)...) {}
207};
208} // namespace ll
Definition Actor.h:105
Definition BinaryStream.h:11
Definition BlockPos.h:19
Definition IPacketHandlerDispatcher.h:12
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:125
Definition ReadOnlyBinaryStream.h:8
Definition optional_ref.h:10
Definition NetworkIdentifierWithSubId.h:10
Definition ReflectionCtx.h:11