High-Performance, Low-Memory, Lightweight, Extensible Minecraft Reverse Proxy with Excellent Multi-Protocol Version Support - Velocity/Bungee Replacement - Ready for dev and large deploy!
When using Player.SendResourcePack(), the client will send the ResourcePacketResponse packet during the login phase instead of during the configuration phase.
event.Subscribe(proxy.Event(), 0, func(e *proxy.PostLoginEvent) {
e.Player().SendResourcePack(proxy.ResourcePackInfo{
ID: resourcePackUUID,
URL: "XXX",
ShouldForce: true,
Prompt: &component.Text{
Content: util.Latinize("you are required to use this texturepack in csmc.dev"),
S: component.Style{Color: color.Yellow, Bold: component.True},
},
})
})
Logs:
2024-05-05T00:01:23.510Z LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=0,PacketType=*packet.StatusRequest,Payloadlen=1"}
2024-05-05T00:01:23.513Z LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=765,KnownPacket=true,PacketID=0,PacketType=*packet.StatusResponse,Payloadlen=0", "bytes": 3546}
2024-05-05T00:01:23.532Z LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=1,PacketType=*packet.StatusPing,Payloadlen=9"}
2024-05-05T00:01:23.532Z DEBUG java.client netmc/connection.go:255 update auto reading {"enabled": true}
2024-05-05T00:04:27.810Z DEBUG java.client.SetActiveSessionHandler netmc/connection.go:576 set session handler {"state": "Handshake", "handler": "*proxy.handshakeSessionHandler"}
2024-05-05T00:04:27.811Z 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"}
2024-05-05T00:04:27.811Z DEBUG java.client netmc/connection.go:477 update state {"previous": "Handshake", "new": "Login"}
2024-05-05T00:04:27.811Z DEBUG java.client.SetActiveSessionHandler netmc/connection.go:576 set session handler {"state": "Login", "handler": "*proxy.initialLoginSessionHandler"}
2024-05-05T00:04:27.811Z LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=0,PacketType=*packet.ServerLogin,Payloadlen=31"}
2024-05-05T00:04:27.812Z LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=765,KnownPacket=true,PacketID=1,PacketType=*packet.EncryptionRequest,Payloadlen=0", "bytes": 171}
2024-05-05T00:04:29.110Z LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=1,PacketType=*packet.EncryptionResponse,Payloadlen=261"}
2024-05-05T00:04:29.113Z DEBUG java.client.loginSession.authn.authnJoin.request auth/authenticator.go:192 authenticating user against sessionserver {"url": "https://sessionserver.mojang.com/session/minecraft/hasJoined?serverId=XXXXX&username=TheDevMinerTV"}
2024-05-05T00:04:29.266Z DEBUG java.client.loginSession.authn.authnJoin.request auth/authenticator.go:219 user authenticated against sessionserver {"onlineMode": true, "time": "152.950434ms", "statusCode": 200}
2024-05-05T00:04:29.266Z INFO java.client.authSession proxy/session_client_auth.go:99 player has connected, completing login {"player": "TheDevMinerTV", "id": "e0bf4142-017b-42bc-b935-691ad69ca062"}
2024-05-05T00:04:29.266Z LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=765,KnownPacket=true,PacketID=3,PacketType=*packet.SetCompression,Payloadlen=0", "bytes": 3}
2024-05-05T00:04:29.266Z DEBUG java.client netmc/connection.go:617 update compression {"threshold": 256}
2024-05-05T00:04:29.267Z LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=765,KnownPacket=true,PacketID=2,PacketType=*packet.ServerLoginSuccess,Payloadlen=0", "bytes": 1146}
2024-05-05T00:04:29.268Z DEBUG java.client.SetActiveSessionHandler netmc/connection.go:576 set session handler {"state": "Login", "handler": "*proxy.authSessionHandler"}
2024-05-05T00:04:29.289Z LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=3,PacketType=*packet.LoginAcknowledged,Payloadlen=1"}
2024-05-05T00:04:29.290Z DEBUG java.client netmc/connection.go:477 update state {"previous": "Login", "new": "Config"}
2024-05-05T00:04:29.290Z DEBUG java.client.SetActiveSessionHandler netmc/connection.go:576 set session handler {"state": "Config", "handler": "*proxy.clientConfigSessionHandler"}
2024-05-05T00:04:29.290Z LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=1,PacketType=*plugin.Message,Payloadlen=24"}
2024-05-05T00:04:29.290Z LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=0,PacketType=*packet.ClientSettings,Payloadlen=14"}
2024-05-05T00:04:29.291Z LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=765,KnownPacket=true,PacketID=7,PacketType=*packet.ResourcePackRequest,Payloadlen=0", "bytes": 215}
2024-05-05T00:04:29.291Z DEBUG java.client netmc/connection.go:314 queued packet {"packet": "*bossbar.BossBar"}
2024/05/05 00:04:29 Chose server lobby-2 for player e0bf4142-017b-42bc-b935-691ad69ca062
2024-05-05T00:04:29.299Z DEBUG java.client.player.serverConn proxy/server.go:364 dialing backend server... {"name": "TheDevMinerTV", "id": "e0bf4142-017b-42bc-b935-691ad69ca062", "serverName": "lobby-2", "serverAddr": "10.42.1.183:25565"}
2024-05-05T00:04:29.299Z DEBUG java.client.player.serverConn proxy/server.go:378 connected to server {"name": "TheDevMinerTV", "id": "e0bf4142-017b-42bc-b935-691ad69ca062", "serverName": "lobby-2", "serverAddr": "10.42.1.183:25565"}
2024-05-05T00:04:29.300Z DEBUG java.client.server.SetActiveSessionHandler netmc/connection.go:576 set session handler {"state": "Handshake", "handler": "*proxy.backendLoginSessionHandler"}
2024-05-05T00:04:29.300Z DEBUG java.client.server.AddSessionHandler netmc/connection.go:550 added session handler {"state": "Login", "handler": "*proxy.backendLoginSessionHandler"}
2024-05-05T00:04:29.300Z DEBUG java.client.player.serverConn proxy/server.go:410 establishing player connection with server... {"name": "TheDevMinerTV", "id": "e0bf4142-017b-42bc-b935-691ad69ca062", "serverName": "lobby-2", "serverAddr": "10.42.1.183:25565"}
2024-05-05T00:04:29.300Z LEVEL(-2) java.client.server.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ServerBound,Protocol=4,KnownPacket=true,PacketID=0,PacketType=*packet.Handshake,Payloadlen=0", "bytes": 23}
2024-05-05T00:04:29.300Z DEBUG java.client.server netmc/connection.go:477 update state {"previous": "Handshake", "new": "Login"}
2024-05-05T00:04:29.300Z DEBUG java.client.server.SwitchSessionHandler netmc/connection.go:596 session handler already active, no need to switch {"state": "Login", "handler": "*proxy.backendLoginSessionHandler"}
2024-05-05T00:04:29.300Z LEVEL(-2) java.client.server.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=0,PacketType=*packet.ServerLogin,Payloadlen=0", "bytes": 31}
2024-05-05T00:04:29.318Z LEVEL(-2) java.client.decoder codec/decoder.go:97 decoded packet {"context": "PacketContext:direction=ServerBound,Protocol=765,KnownPacket=true,PacketID=5,PacketType=*packet.ResourcePackResponse,Payloadlen=18"}
2024-05-05T00:04:29.318Z DEBUG java.client.server.reader netmc/reader.go:64 error reading packet, closing connection {"error": "error reading packet frame: error reading varint: read tcp 10.42.0.199:55432->10.42.1.183:25565: use of closed network connection"}
2024-05-05T00:04:29.318Z DEBUG java.client.server netmc/connection.go:255 update auto reading {"enabled": true}
2024-05-05T00:04:29.318Z DEBUG java.client.server netmc/connection.go:351 error writing packet, closing connection {"bufferPacket": "*packet.ResourcePackResponse", "error": "packet id for type *packet.ResourcePackResponse in protocol 765 not registered in the ServerBound Login state registry"}
2024-05-05T00:04:29.318Z DEBUG java.client netmc/connection.go:314 queued packet {"packet": "*packet.ResourcePackResponse"}
2024-05-05T00:04:29.318Z DEBUG java.client.player proxy/switch.go:161 could not connect player to server {"name": "TheDevMinerTV", "id": "e0bf4142-017b-42bc-b935-691ad69ca062", "serverName": "lobby-2", "serverAddr": "10.42.1.183:25565", "error": "The connection to the remote server was unexpectedly closed."}
2024-05-05T00:04:29.318Z INFO java.client.player proxy/switch.go:174 unable to connect to server {"name": "TheDevMinerTV", "id": "e0bf4142-017b-42bc-b935-691ad69ca062", "serverName": "lobby-2", "serverAddr": "10.42.1.183:25565", "error": "The connection to the remote server was unexpectedly closed."}
2024-05-05T00:04:29.318Z LEVEL(-2) java.client.encoder codec/encoder.go:100 encoded packet {"context": "PacketContext:direction=ClientBound,Protocol=765,KnownPacket=true,PacketID=1,PacketType=*packet.Disconnect,Payloadlen=0", "bytes": 77}
2024-05-05T00:04:29.318Z DEBUG java.client.reader netmc/reader.go:64 error reading packet, closing connection {"error": "error reading packet frame: error reading varint: read tcp 10.42.0.199:25565->95.89.152.169:56594: use of closed network connection"}
2024-05-05T00:04:29.318Z DEBUG java.client netmc/connection.go:255 update auto reading {"enabled": true}
2024-05-05T00:04:29.318Z INFO java.client.player proxy/player.go:625 player has been disconnected {"name": "TheDevMinerTV", "id": "e0bf4142-017b-42bc-b935-691ad69ca062", "reason": "§cUnable to connect to \"lobby-2\". Try again later."}
When using
Player.SendResourcePack()
, the client will send theResourcePacketResponse
packet during the login phase instead of during the configuration phase.Logs: