32 [[nodiscard]]
constexpr explicit Packet(
33 PacketPriority priority = PacketPriority::MediumPriority,
34 NetworkPeer::Reliability reliability = NetworkPeer::Reliability::ReliableOrdered,
35 SubClientId clientSubId = SubClientId::PrimaryClient,
38 : mPriority(priority),
39 mReliability(reliability),
40 mSenderSubId(clientSubId),
41 mCompressible(compress ? Compressibility::Compressible : Compressibility::Incompressible) {}
83 LLAPI
void sendToServer()
const;
88 ::PacketPriority mPriority;
89 ::NetworkPeer::Reliability mReliability;
90 ::SubClientId mSenderSubId;
92 ::std::chrono::steady_clock::time_point mReceiveTimepoint;
94 ::Compressibility mCompressible;
100 virtual ~Packet() =
default;
102 virtual ::MinecraftPacketIds getId()
const = 0;
104 virtual ::std::string_view getName()
const = 0;
106 virtual uint64 getMaxSize()
const;
108 virtual ::Bedrock::Result<void> checkSize(uint64 packetSize,
bool receiverIsServer)
const;
110 virtual void writeWithSerializationMode(
113 ::std::optional<::SerializationMode> overrideMode
120 virtual ::Bedrock::Result<void>
125 virtual bool disallowBatching()
const;
127 virtual bool isValid()
const;
129 virtual ::SerializationMode getSerializationMode()
const;
131 virtual void setSerializationMode(::SerializationMode mode);
133 virtual ::std::string toString()
const;
146 MCAPI ::Bedrock::Result<void> readNoHeader(
149 ::SubClientId
const& subid
156 MCAPI uint64 $getMaxSize()
const;
158 MCAPI ::Bedrock::Result<void> $checkSize(uint64 packetSize,
bool receiverIsServer)
const;
160 MCAPI
void $writeWithSerializationMode(
163 ::std::optional<::SerializationMode> overrideMode
168 MCFOLD ::Bedrock::Result<void>
173 MCFOLD
bool $disallowBatching()
const;
175 MCFOLD
bool $isValid()
const;
177 MCFOLD ::SerializationMode $getSerializationMode()
const;
179 MCFOLD
void $setSerializationMode(::SerializationMode mode);
181 MCFOLD ::std::string $toString()
const;
191 MCAPI
static void** $vftable();