When throwing a Trident (plain throw or with Loyalty enchantment), the player gets unexpectedly disconnected immediately after the action when connecting through Gate proxy. This results in packet reading errors in the proxy logs ("error reading varint: EOF" and "use of closed network connection"). The issue does not occur on direct connection to the backend server (e.g., localhost:25566).
The disconnect happens right after login succeeds and the player enters the game world, triggered specifically by Trident entity packets (Thrown).
Direct connect to backend (bypassing Gate) works fine – Trident throws normally without disconnect.
Using velocity works too.
Trident throw and should work seamlessly through the proxy, just like direct connect. No packet desync or EOF errors.
Nearby player will kicked around thic trident's throwing action.
2025-11-03T11:45:21.692-0600 DEBUG java.client.server netmc/connection.go:652 update compression {"threshold": 256}
2025-11-03T11:45:21.801-0600 LEVEL(-2) java.client.server.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ClientBound,Protocol=773,KnownPacket=true,PacketID=2,PacketType=*packet.ServerLoginSuccess,Payloadlen=26"}
2025-11-03T11:45:21.801-0600 LEVEL(-2) java.client.server.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ServerBound,Protocol=773,KnownPacket=true,PacketID=3,PacketType=*packet.LoginAcknowledged,Payloadlen=0", "bytes": 1}
2025-11-03T11:45:21.801-0600 DEBUG java.client.server netmc/connection.go:512 update state {"previous": "Login", "new": "Config"}
2025-11-03T11:45:21.801-0600 DEBUG java.client.server.SetActiveSessionHandler netmc/connection.go:611 set session handler {"state": "Config", "handler": "*proxy.backendConfigSessionHandler"}
2025-11-03T11:45:21.801-0600 LEVEL(-2) java.client.server.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ServerBound,Protocol=773,KnownPacket=true,PacketID=0,PacketType=*packet.ClientSettings,Payloadlen=0", "bytes": 15}
2025-11-03T11:45:21.804-0600 LEVEL(-2) java notice.client.server.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ClientBound,Protocol=773,KnownPacket=true,PacketID=4,PacketType=*packet.KeepAlive,Payloadlen=9"}
2025-11-03T11:45:21.805-0600 LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=773,KnownPacket=true,PacketID=4,PacketType=*packet.KeepAlive,Payloadlen=0", "bytes": 9}
2025-11-03T11:45:21.805-0600 LEVEL(-2) java.client.server.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ClientBound,Protocol=773,KnownPacket=true,PacketID=1,PacketType=*plugin.Message,Payloadlen=20"}
2025-11-03T11:45:21.805-0600 LEVEL(-2) java.client.server.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ClientBound,Protocol=773,KnownPacket=true,PacketID=5,PacketType=*packet.PingIdentify,Payloadlen=5"}
2025-11-03T11:45:21.862-0600 DEBUG java.client.reader netmc/reader.go:64 error reading packet, closing connection {"error": "error reading packet frame: error reading varint: EOF"}
2025-11-03T11:45:21.864-0600 DEBUG java.client.server.reader netmc/reader.go:64 error reading packet, closing connection {"error": "error reading packet frame: error reading varint: read tcp 127.0.0.1:50896->127.0.0.1:25566: use of closed network connection"}
2025-11-03T11:45:21.864-0600 DEBUG java.client.server netmc/connection.go:290 update auto reading {"enabled": true}
2025-11-03T11:45:21.864-0600 DEBUG java.client netmc/connection.go:290 update auto reading {"enabled": true}
2025-11-03T11:45:21.864-0600 DEBUG java.client.player proxy/switch.go:169 could not connect player to server {"name": "en_calm", "id": "be8bf676-9ec5-3356-98e6-b69df2b61547", "serverName": "lobby", "serverAddr": "localhost:25566", "error": "unexpectedly disconnected from remote server"}
2025-11-03T11:45:22.251-0600 DEBUG java.client.SetActiveSessionHandler netmc/connection.go:611 set session handler {"state": "Handshake", "handler": "*proxy.handshakeSessionHandler"}
2025-11-03T11:45:22.251-0600 LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=4,KnownPacket=true,PacketID=0,PacketType=*packet.Handshake,Payloadlen=23"}
2025-11-03T11:45:22.251-0600 DEBUG java.client netmc/connection.go:512 update state {"previous": "Handshake", "new": "Status"}
2025-11-03T11:45:22.251-0600 INFO java.client.statusSession proxy/session_status.go:57 got server list status request {"inbound": "[initial connection] 103.175.237.48:61516 -> play.gapin.my.id:25565", "protocol": "773"}
2025-11-03T11:45:22.251-0600 DEBUG java.client.SetActiveSessionHandler netmc/connection.go:611 set session handler {"state": "Status", "handler": "*proxy.statusSessionHandler"}
2025-11-03T11:45:22.251-0600 LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=773,KnownPacket=true,PacketID=0,PacketType=*packet.StatusRequest,Payloadlen=1"}
2025-11-03T11:45:22.252-0600 LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=773,KnownPacket=true,PacketID=0,PacketType=*packet.StatusResponse,Payloadlen=0", "bytes": 19925}
2025-11-03T11:45:22.781-0600 LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=773,KnownPacket=true,PacketID=1,PacketType=*packet.StatusPing,Payloadlen=9"}
2025-11-03T11:45:22.781-0600 DEBUG java.client netmc/connection.go:290 update auto reading {"enabled": true}
2025-11-03T11:45:24.349-0600 DEBUG java.client.SetActiveSessionHandler netmc/connection.go:611 set session handler {"state": "Handshake", "handler": "*proxy.handshakeSessionHandler"}
2025-11-03T11:45:24.349-0600 LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=4,KnownPacket=true,PacketID=0,PacketType=*packet.Handshake,Payloadlen=16"}
2025-11-03T11:45:24.349-0600 DEBUG java.client netmc/connection.go:512 update state {"previous": "Handshake", "new": "Status"}
2025-11-03T11:45:24.349-0600 INFO java.client.statusSession proxy/session_status.go:57 got server list status request {"inbound": "[initial connection] 127.0.0.1:60688 -> localhost:25567", "protocol": "773"}
2025-11-03T11:45:24.349-0600 DEBUG java.client.SetActiveSessionHandler netmc/connection.go:611 set session handler {"state": "Status", "handler": "*proxy.statusSessionHandler"}
2025-11-03T11:45:24.349-0600 LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=773,KnownPacket=true,PacketID=0,PacketType=*packet.StatusRequest,Payloadlen=1"}
2025-11-03T11:45:24.350-0600 LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=773,KnownPacket=true,PacketID=0,PacketType=*packet.StatusResponse,Payloadlen=0", "bytes": 19925}
2025-11-03T11:45:24.391-0600 LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=773,KnownPacket=true,PacketID=1,PacketType=*packet.StatusPing,Payloadlen=9"}
2025-11-03T11:45:24.391-0600 DEBUG java.client netmc/connection.go:290 update auto reading {"enabled": true}
^C2025-11-03T11:45:24.805-0600 INFO gate/gate.go:246 Received os signal {"signal": "interrupt"}
2025-11-03T11:45:24.805-0600 INFO java proxy/proxy.go:571 stopped listening for new connections {"addr": "0.0.0.0:25565"}
2025-11-03T11:45:24.805-0600 INFO bedrock.geyser geyser/geyser.go:185 stopped listening for geyser connections {"addr": "localhost:25567"}
2025-11-03T11:45:24.806-0600 INFO connect gate/connect.go:78 connect stopped
2025-11-03T11:45:24.805-0600 INFO java proxy/proxy.go:268 shutting down the proxy...
2025-11-03T11:45:24.806-0600 INFO java proxy/proxy.go:288 disconnecting all players... {"reason": "§cGate proxy is shutting down...\nPlease reconnect in a moment!"}
2025-11-03T11:45:24.806-0600 INFO java proxy/proxy.go:291 disconnected all players. {"time": "1.203µs"}
2025-11-03T11:45:24.806-0600 INFO java proxy/proxy.go:293 waiting for all event handlers to complete...
2025-11-03T11:45:24.806-0600 INFO java proxy/proxy.go:271 finished shutdown. {"shutdownTime": "116µs", "totalTime": "1m1.633s"}
2025-11-03T11:45:24.852-0600 INFO bedrock proxy/proxy.go:124 bedrock proxy stopped
Describe the bug
When throwing a Trident (plain throw or with Loyalty enchantment), the player gets unexpectedly disconnected immediately after the action when connecting through Gate proxy. This results in packet reading errors in the proxy logs ("error reading varint: EOF" and "use of closed network connection"). The issue does not occur on direct connection to the backend server (e.g., localhost:25566).
The disconnect happens right after login succeeds and the player enters the game world, triggered specifically by Trident entity packets (Thrown).
To Reproduce
[09:57:46] [Render thread/WARN]: Client disconnected with reason: The server you were on kicked you: Internal server connection errorDirect connect to backend (bypassing Gate) works fine – Trident throws normally without disconnect.
Using velocity works too.
Expected behavior
Trident throw and should work seamlessly through the proxy, just like direct connect. No packet desync or EOF errors.
Bonus
Nearby player will kicked around thic trident's throwing action.
Logs
Relevant Gate log snippet (debug mode enabled):
Backend: Fabric 1.21.9
with some mods