Skip to content
LeviMC
English
AutoLightDark
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 // virtual function thunks
148 // NOLINTBEGIN
149 MCFOLD uint64 $getMaxSize() const;
150
151 MCAPI ::Bedrock::Result<void> $checkSize(uint64 packetSize, bool receiverIsServer) const;
152
153 MCAPI void $writeWithSerializationMode(
154 ::BinaryStream& stream,
155 ::cereal::ReflectionCtx const& reflectionCtx,
156 ::std::optional<::SerializationMode> overrideMode
157 ) const;
158
159 MCAPI void $write(::BinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx) const;
160
161 MCAPI ::Bedrock::Result<void>
162 $read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
163
164 MCAPI ::Bedrock::Result<void> $read(::ReadOnlyBinaryStream& bitStream);
165
166 MCFOLD bool $disallowBatching() const;
167
168 MCFOLD bool $isValid() const;
169
170 MCFOLD ::SerializationMode $getSerializationMode() const;
171
172 MCFOLD void $setSerializationMode(::SerializationMode mode);
173
174 MCFOLD ::std::string $toString() const;
175
176#ifdef LL_PLAT_S
177 MCAPI ::Bedrock::Result<void>
178 $_read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
179#else // LL_PLAT_C
180 MCFOLD ::Bedrock::Result<void>
181 $_read(::ReadOnlyBinaryStream& bitStream, ::cereal::ReflectionCtx const& reflectionCtx);
182#endif
183
184
185 // NOLINTEND
186
187public:
188 // vftables
189 // NOLINTBEGIN
190 MCNAPI static void** $vftable();
191 // NOLINTEND
192};
193
194namespace ll {
195template <class PacketPayloadT>
196class PayloadPacket : public ::Packet, public PacketPayloadT {
197public:
198 using PayloadType = PacketPayloadT;
199
200 template <typename... Args>
201 PayloadPacket(Args&&... args) : Packet(),
202 PacketPayloadT(std::forward<Args>(args)...) {}
203};
204} // namespace ll
Definition Actor.h:116
Definition BinaryStream.h:10
Definition BlockPos.h:14
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
static MCAPI void ** $vftable()
LLAPI void sendTo(Actor const &actor, optional_ref< Player const > except=std::nullopt) const
Definition Player.h:131
Definition ReadOnlyBinaryStream.h:8
Definition optional_ref.h:10
Definition DimensionType.h:5
Definition NetworkIdentifierWithSubId.h:10
Definition ReflectionCtx.h:11