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