Overview
TheBlinkManager (features/blink/BlinkManager.kt:75) intercepts network packets and stores them in a queue instead of sending them immediately. When flushed, all queued packets are sent at once.
How It Works
Packet Queueing
Packet Queue
Blink Actions
TheBlinkPacketEvent returns one of three actions:
Packet Filtering
Certain packets are never queued:Always Passed
- Connection packets (
ClientIntentionPacket,ServerboundStatusRequestPacket,ServerboundPingRequestPacket) - Chat messages (
ServerboundChatPacket,ClientboundSystemChatPacket,ServerboundChatCommandPacket)
Auto-Flush Triggers
Some packets trigger automatic flush:- Teleport:
ClientboundPlayerPositionPacket - Disconnect:
ClientboundDisconnectPacket - Death:
ClientboundSetHealthPacketwith health ≤ 0
Ignored Packets
Player hurt sounds are ignored to reduce queue spam:Flushing Packets
By Origin
Flush all packets from a specific origin:By Condition
Flush packets matching a condition:By Count
Flush a specific number of movement packets:Canceling Blink
Cancel blink and teleport to the first queued position:- Teleports player to first queued position
- Flushes all non-movement packets
- Discards movement packets
- Clears the queue
Position Tracking
Get queued player positions:ServerboundMovePlayerPackets (BlinkManager.kt:78-82):
Lag Detection
true if there are queued packets (BlinkManager.kt:84-85).
Packet Rewriting
Modify queued packets before flushing:Time-Based Flushing
Check if packets have been queued longer than a delay:Visual Feedback
ESP Modes
Blink includes multiple ESP modes for visualization:- Box - Draws a box at the blink position
- Model - Renders a player model
- Wireframe - Shows wireframe rendering
- None - No visualization
Line Trail
Draws a line showing the blink path:Event Handlers
Auto-Flush Handlers
Blink automatically attempts to flush based on game events:World Change Handler
Clears packets on disconnect:Use Cases
Lag Switch
Simulate lag to confuse opponents:Advanced Movement
Queue movement packets and release them to teleport:Desync
Create client-server position desync:Gradual Flush
Flush packets gradually:Best Practices
Handle Disconnects
Handle Disconnects
Blink automatically clears on world change. Don’t manually clear unless needed.
Respect Auto-Flush
Respect Auto-Flush
Don’t prevent auto-flush for teleport/death packets - this can cause severe desyncs.
Monitor Queue Size
Monitor Queue Size
Large queues can cause lag spikes when flushed. Consider periodic partial flushes.
Use Cancel for Safety
Use Cancel for Safety
When in doubt, use
cancel() instead of flush() to prevent invalid game states.Configuration
Blink is configured as aValueGroup: