WIP: Forge 1.20.1 (FML3) login plugin message forwarding #613
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
Forge 1.20.1 modded clients cannot connect to modded backend servers through Gate proxy. The backend server rejects connections with:
This happens because:
fml:loginwrapper) during LOGIN phase for mod negotiationUser's Setup
What Was Tried
1. Fixed FML marker detection
FML2andFML3markers (not justFORGE)2. Added ForgeData to ping response
forgeDatain server ping (not legacymodinfo)fmlNetworkVersion: 3for FML3 compatibility3. Added BungeeForge extraData property
extraDataproperty with\x01FML3prefix4. Attempted login plugin message forwarding
ServerLoginSuccessfor Modern Forge clientsfml:loginwrappermessages from backend to clientLoginPluginMessagepacket to use raw bytes (not length-prefixed)Current State
Stuck at "encrypting..." stage
Flow:
LoginPluginMessage(fml:loginwrapper)LoginPluginResponseLogs
Possible Issues to Investigate
Files Changed
pkg/edition/java/ping/pong.go- Added ForgeData struct for modern Forge pingpkg/edition/java/proto/packet/login.go- Fixed LoginPluginMessage to use raw bytespkg/edition/java/proxy/login_inbound.go- Added Forge response forwardingpkg/edition/java/proxy/session_backend_login.go- Forward login plugin messagespkg/edition/java/proxy/session_client_auth.go- Defer login for Modern Forgepkg/edition/java/proxy/session_status.go- Use ForgeData in ping responseReferences
Test Environment
Config used for testing: