-
Notifications
You must be signed in to change notification settings - Fork 0
Unable to join Servers with Fabric API installed #1
Description
Summary
Players are unable to connect to the proxy if the server has Fabric API installed. Fabric API is a library mod for the Fabric modloader, and provides many essential events and hooks for Fabric mod developers. Connecting to a server with Fabric API without minecraft-packet-proxy works. Likewise, connecting to minecraft-packet-proxy works if the server doesn't have Fabric API installed.
Reproduction Steps
Bash one-liner install command
wget -O fabric-installer-0.6.1.51.jar https://maven.fabricmc.net/net/fabricmc/fabric-installer/0.6.1.51/fabric-installer-0.6.1.51.jar && java -jar fabric-installer-0.6.1.51.jar server -downloadMinecraft- Place the Fabric API mod in the
<server root>/modsdirectory.
Fabric API download
https://www.curseforge.com/minecraft/mc-mods/fabric-api/download/3147523/file
(Latest version at the time of this writing)
-
Launch the Fabric server.
(java -jar fabric-server-launch.jar --nogui). -
Launch minecraft-packet-proxy and "Connect" to the server.
You get this packet from the server
(Server) login_plugin_request: {"messageId":0,"channel":"fabric-networking-api-v1:early_registration","data":{"type":"Buffer","data":[0]}}- Attempt to connect to the proxy.
-> ❌ You get this error on the client:
-> ❌ An empty server packet shows up for minecraft-packet-proxy:
(Server) login: {}-
Disable the proxy, and connect to the server directly.
-> ✔️ Clients can connect without issue -
Rename Fabric API to
.jar.footo prevent the mod from being loaded, and re-launch the server and the proxy.
-> ✔️ Clients can connect to the proxy without issue -
Load a Fabric mod which does not use or require Fabric API, such as Lithium and re-launch the server and the proxy.
-> ✔️ Clients can connect to the proxy without issue
Additional Info
My guess is that the networking module of Fabric API is doing something that the proxy doesn't understand or like. Unfortunately, I don't know how to get a full printout of the invalid JSON in step 6, it is not saved to the log file. I hope this is helpful, and thank you for creating this tool!