node-minecraft-protocol icon indicating copy to clipboard operation
node-minecraft-protocol copied to clipboard

example proxy is producing packet serialize/deserialize errors

Open end-user opened this issue 4 years ago • 2 comments

[x] The FAQ doesn't contain a resolution to my issue

Versions

  • minecraft-protocol: 1.25.0 but also a clone from master as a version supporting 1.16.5 has not been released
  • server: 1.16.5, vanilla
  • node: 14.16.1

Detailed description of a problem

When I run the example proxy and connect through it to a server, I'm getting errors like this:

client<-server: Error in packet play.entity_equipment
received buffer 47a9080001be04010a000003000644616d616765000000000002018105010a000003000644616d616765000000000003018005010a000003000644616d61676500000
000000401ff04010a000003000644616d61676500000000000501fe04010a000003000644616d6167650000000009000c456e6368616e746d656e74730a000000020200036c766c000208
0002696400146d696e6563726166743a70726f74656374696f6e000200036c766c0002080002696400146d696e6563726166743a756e627265616b696e670000
produced buffer 47a9080001be04010a000003000644616d6167650000000000
received length 205
produced length 25

They are all "server to client" packets, and all are getting truncated at 25.

Current code

  const bufferEqual = require('buffer-equal')
  proxyClient.on('raw', function (buffer, meta) {
    if (client.state !== states.PLAY || meta.state !== states.PLAY) { return }
    const packetData = proxyClient.deserializer.parsePacketBuffer(buffer).data.params
    const packetBuff = client.serializer.createPacketBuffer({ name: meta.name, params: packetData })
    if (!bufferEqual(buffer, packetBuff)) {
      console.log('client<-server: Error in packet ' + meta.state + '.' + meta.name)
      console.log('received buffer', buffer.toString('hex'))
      console.log('produced buffer', packetBuff.toString('hex'))
      console.log('received length', buffer.length)
      console.log('produced length', packetBuff.length)
    }

Expected behavior

Packets get passed without being changed.

end-user avatar Dec 05 '20 04:12 end-user

what actions were you trying to perform in minecraft that caused this?

u9g avatar Mar 29 '21 12:03 u9g

First, clarification: This is vanilla, so I clarified the bug description. I also just updated the versions that I just tested with, so those are now current.

I have a vanilla server running on my network. I run node examples\proxy\proxy.js 192.168.16.192 1.16.5 - this means offline-mode and no keepalive. (The server is in online mode) I then connect my client. Before I even get the world painted, I get these:

Incoming connection (::ffff:127.0.0.1)
client<-server: Error in packet play.entity_equipment
received buffer 47d1300201f104010a000003000644616d61676500000000000301f004010a000003000644616d61676500000000000401ef04010a000003000644616d6167650000000009000c456e6368616e746d656e74730a000000010200036c766c0001080002696400196d696e6563726166743a666972655f70726f74656374696f6e00000501ee04010a000003000644616d6167650000000009000c456e6368616e746d656e74730a000000010200036c766c0002080002696400196d696e6563726166743a666972655f70726f74656374696f6e0000
produced buffer 47d1300201f104010a000003000644616d6167650000000000
received length 213
produced length 25
client<-server: Error in packet play.entity_equipment
received buffer 47d1300201f104010a000003000644616d61676500000000000301f004010a000003000644616d61676500000000000401ef04010a000003000644616d6167650000000009000c456e6368616e746d656e74730a000000010200036c766c0001080002696400196d696e6563726166743a666972655f70726f74656374696f6e00000501ee04010a000003000644616d6167650000000009000c456e6368616e746d656e74730a000000010200036c766c0002080002696400196d696e6563726166743a666972655f70726f74656374696f6e0000
produced buffer 47d1300201f104010a000003000644616d6167650000000000
received length 213
produced length 25
client<-server: Error in packet play.entity_equipment
received buffer 47ce3102018105010a000003000644616d616765000000000003018005010a000003000644616d61676500000000000401ff04010a000003000644616d6167650000000009000c456e6368616e746d656e74730a000000010200036c766c0002080002696400196d696e6563726166743a666972655f70726f74656374696f6e00000501fe04010a000003000644616d6167650000000000
produced buffer 47ce3102018105010a000003000644616d6167650000000000
received length 152
produced length 25
client<-server: Error in packet play.entity_equipment
received buffer 47ce3102018105010a000003000644616d616765000000000003018005010a000003000644616d61676500000000000401ff04010a000003000644616d6167650000000009000c456e6368616e746d656e74730a000000010200036c766c0002080002696400196d696e6563726166743a666972655f70726f74656374696f6e00000501fe04010a000003000644616d6167650000000000
produced buffer 47ce3102018105010a000003000644616d6167650000000000
received length 152
produced length 25

If I just let the client idle, I continue getting these, all with different 'received' lengths, but clearly the produced is the same and truncated.

end-user avatar Apr 11 '21 12:04 end-user