Difference between revisions of "Minecraft Forge Handshake"
(Very small amount of information about the handshake, to start.) |
m (__FORCETOC__ is no longer needed) |
||
Line 12: | Line 12: | ||
Largely based on my own attempts to document the protocol and allow connection to forge servers [https://github.com/ORelio/Minecraft-Console-Client/pull/100 here]. | Largely based on my own attempts to document the protocol and allow connection to forge servers [https://github.com/ORelio/Minecraft-Console-Client/pull/100 here]. | ||
− | |||
− | |||
== Changes to [[Server List Ping]] == | == Changes to [[Server List Ping]] == | ||
Line 68: | Line 66: | ||
If <code>\0FML\0</code> is added to the end of the server's address (again, in the 0x00 handshake packet), the server will not immediately reject you. However, you still will not complete the connection. | If <code>\0FML\0</code> is added to the end of the server's address (again, in the 0x00 handshake packet), the server will not immediately reject you. However, you still will not complete the connection. | ||
− | This occurs because Minecraft Forge has an additional set of handshakes (for determining mods and block IDs), that must be completed before the server allows logging in | + | This occurs because Minecraft Forge has an additional set of handshakes (for determining mods and block IDs), that must be completed before the server allows logging in. |
== Forge handshake == | == Forge handshake == |
Revision as of 18:02, 29 October 2015
Work in progress!
|
This page will document the changes made in the Minecraft Forge protocol.
Largely based on my own attempts to document the protocol and allow connection to forge servers here.
Changes to Server List Ping
When forge is installed, the Server List Ping changes with an additional modinfo
. Example:
{
"description": "A Minecraft Server",
"players": {
"max": 20,
"online": 0
},
"version": {
"name": "1.8",
"protocol": 47
},
"modinfo": {
"type": "FML",
"modList": [
{
"modid": "mcp",
"version": "9.05"
},
{
"modid": "FML",
"version": "8.0.99.99"
},
{
"modid": "Forge",
"version": "11.14.3.1512"
},
{
"modid": "rpcraft",
"version": "Beta 1.3 - 1.8.0"
}
]
}
}
So, to test whether forge is installed, look for the modinfo
key and then a type
of FML
The modList
contains each installed mod's version and ID.
The key modList
has a capital 'L', unlike any other key in the ping result!
This is injected in ServerStatusResponse by calling FMLNetworkHandler.enhanceStatusQuery().
Connection to a forge server
Attempting to connect to a forge server without making any changes results in getting immediately disconnected with the message "This server requires FML/Forge to be installed. Contact your server admin for more details.
". This message is displayed in FMLCommonHandler and is injected in a modified 0x00 Handshake packet.
If \0FML\0
is added to the end of the server's address (again, in the 0x00 handshake packet), the server will not immediately reject you. However, you still will not complete the connection.
This occurs because Minecraft Forge has an additional set of handshakes (for determining mods and block IDs), that must be completed before the server allows logging in.
Forge handshake
Forge's handshake occurs in the middle of the normal login sequence, right after 0x02 Login Success is received by the client.
In addition to the normal packet debugging for the server, if -Dfml.debugNetworkHandshake=true
is passed to the forge server, some more information about the current handshake status will be outputted.