Commits on Sep 13, 2026
-
AC fingerprinting: server brand + plugin-channel enumeration
…
The tap now reads the server's advertised brand (ClientCommonPacketListenerImpl. serverBrand, via JNI) and enumerates every custom-payload channel id seen on the wire (reflected from the packet's payload().type().id(), which is parsed even for unknown DiscardedPayload channels). Both surface in the Packets tab under FINGERPRINT and mirror to fingerprint.txt. The tap Java class was versioned to Tap2 because a resident earlier copy had already defined lodestone/Tap, and a loader refuses to redefine a name — the new bytecode (channels()) needed a fresh name to load without a game restart. Live on DonutSMP: brand 'DonutFolia (SchengenVelocity)' — a Folia server fork behind a Velocity proxy fork. No plugin channel yet, consistent with a server-side packet-analysis anti-cheat rather than a mod-integration one. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
lodestone committed 1 day ago -
Force-send position so witness-dependent moves reach the server
…
Criticals, and any move the server has to see to credit, only worked on the tick's own position send — and not at all while Blink held those sends back. World.flush_position builds a ServerboundMovePlayerPacket.PosRot and sends it through the client's own ClientPacketListener.send, then updates xLast/yLast/ zLast so the client agrees a packet went out. Criticals now flushes the leaving-ground position on the hop, so the server registers off-ground-and- descending at the moment it matters regardless of Blink. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
lodestone committed 1 day ago
NewerOlder