Glossary
Terms that already appear in the documentation. Each one has a short definition and a link to the page that covers it in full.
-
protocol version - a number the client sends in the handshake (for example, 772). It sets which packet field layout and which packet numbers apply for the session. More detail: A packet and its identifier.
-
send gate - a
SemaphoreSlim(1, 1)insideMinecraftClient. EverySendAsyncandSendRawAsynccall passes through it. Frames from different calls do not mix on one socket. More detail: Packet stream. -
frame - the framing wrapper around a packet: a length, one more varint when compressed, then the body. It makes the boundary between packets visible in a continuous TCP stream. More detail: Frames.
-
catalog - the list of packets for one (phase, direction) pair, returned by
PacketRegistry.Catalog(phase, dir). More detail: Phase and direction. -
batch reading - the transport path where frames are read and written in batches, not one at a time:
StreamingConnectionover a shared buffer. More detail: Connection without a client. -
multi-version - the ability of one build to work with every supported protocol version. Field layouts and packet numbers live inside the packet itself, and the protocol version picks the one to use. More detail: One build - many versions.
-
direction -
PacketDirection:Clientboundfor packets from the server to the client,Serverboundfor the opposite direction. Each phase has its own set of packets for each direction. More detail: Phase and direction. -
packet number - the
Idfield onIncomingPacket, the number on the wire. On its own it means nothing: the packet type is looked up by the number together with the phase, the direction, and the protocol version. More detail: A packet and its identifier. -
handler -
ClientboundHandlerandServerboundHandler: a base class with anOn<Name>method for each packet. Application code inherits from it and overrides only what it needs. More detail: First bot. -
shared secret - 16 bytes that the two sides exchange through
EncryptionRequestPacketandEncryptionResponsePacket. It serves as both the AES-128 key and the cipher's initialization vector. More detail: Compression and encryption. -
window into a buffer - a packet body is not a copy of the bytes but a region of a rented buffer. It lives only until the next read, so it must be parsed right away, not carried across an
await. More detail: Packet stream. -
ordinal - the dense packet number inside its own catalog, part of
PacketIdentity. Unlike the packet number on the wire, the ordinal stays stable across builds and protocol versions. More detail: Phase and direction. -
packet -
IncomingPacketon input,OutgoingPacketon output: the common currency of every layer of the library, a number and a body. More detail: What is visible from outside. -
compression threshold -
CompressionThresholdonMinecraftClient. A packet shorter than the threshold goes out as is. One that is not shorter is compressed with libdeflate. More detail: Compression and encryption. -
visitor -
IPacketVisitor, with the methodsVisit<T>andUnknown, a synchronous way to parse a packet throughPacketFlow.Dispatch. It does not work with async methods, so the handler is a separate concept. More detail: Who knows whom. -
PacketRegistry. It translates a packet number, together with the phase, the direction, and the protocol version, into a packet description or into the typed object itself. More detail: A packet and its identifier.
-
raw packet - what the transport returns: a number and a chunk of bytes, with no knowledge of which packet it is or what fields it has. More detail: Four layers on one screen.
-
phase -
PacketPhase. Handshaking, status, login, configuration, play: consecutive stages of a session. The library does not derive the phase on its own. Application code switches it. More detail: Phase and direction.