Minecraft anticheat guide
Minecraft Transaction Packet Acknowledgements
Understand packet IDs, acknowledgements, logical ordering, timeouts, and connection sessions in Minecraft transaction handling.
Three identifiers with different jobs
FairPlay separates a signed short wire ID, a monotonic logical sequence, and a session epoch. The wire ID correlates a request and response on one connection; domain consumers use the logical stamp (mode, epoch, sequence) to order state.
A connection write accepted by Netty means only that the write succeeded. It is not an inbound acknowledgment. FairPlay marks outbound observation and advances acknowledgement state only when a response is matched and consumed in stream order.
What timeout and recovery mean
The native session tracks prepared and sent markers. Timeouts evict markers and report failure to callbacks without advancing the acknowledged logical sequence. A late response may be counted as recovered, but it does not move the logical clock beyond normal acknowledgment progression.
On reconnect, the session epoch changes so stale markers from an earlier connection are ignored. These rules prevent transport IDs from being mistaken for durable application ordering.
Use this as an implementation guide
Transaction handling uses an owner thread, polling cadence, backpressure, timeouts, and consumer fences. These details help developers investigate transaction traces; they do not measure a player’s network latency.
Internal transaction types are not the public plugin API. External plugins should use the documented FairPlay service surface rather than depend on internal session classes.
FAQ
Is an accepted Netty write an acknowledgement?
No. A write only means the packet was accepted for sending. Acknowledgement state advances when a response is matched and consumed in stream order.
What happens to pending markers on reconnect?
The session epoch changes, so stale markers from the earlier connection are ignored instead of being mistaken for current ordering.