[Networking] FFAPI login query handling conflicts with Sponge (indefinite wait / payload discard)
Minecraft version
1.21.1
Describe the bug
When running a Sponge-powered NeoForge server together with FFAPI, login custom query handling may hang or drop because of FFAPI’s current packet tracking logic
Steps to reproduce
- Install SpongeNeo + FFAPI on a NeoForge 1.21.1 server.
- Let both mods send/expect login queries during handshake.
Observe: Clients hang indefinitely (“waiting for login response”), or Disconnect with Unexpected custom data from client.
Logs
No response
Additional context
When running a Sponge-powered NeoForge server together with FFAPI, login custom query handling may hang or drop because of FFAPI’s current packet tracking logic:
- FFAPI records every outgoing login query (regardless of who sent it).
- On receiving, FFAPI expects to see a response for every recorded query, and tries to handle it.
- If FFAPI fails to handle, it discards the payload content.
This leads to two conflict scenarios with Sponge:
- Sponge handles first → FFAPI never sees the outgoing query, but still expects a response → indefinite wait.
- FFAPI handles first but fails → payload is discarded → Sponge no longer has access to the content → unexpected disconnect.
The issues from Sponge is here: https://github.com/SpongePowered/Sponge/issues/4228#issuecomment-3282821486
I am doing my work (try to write some mods to mixin that cause the problem's code)
If possible, we could try to fix that together.
This is the same incompatibility that's effected Neo/Forge modern forwarding mods, the current fix is to reflect into FFAPI and remove the query ID from the map of handled channels.
This can be reproduced with PCF v1.1.7 and a simple one-server Velocity proxy setup.