Open Opisek opened 4 months ago
Please enable debug mode and post packet log
I'm also experiencing the same thing on Node 20, but I couldn't reproduce it in a testing environment yet. The Node 18 reproduction works every time for me, though.
minecraft-protocol read packet handshaking.set_protocol +0ms
minecraft-protocol {
minecraft-protocol "protocolVersion": 765,
minecraft-protocol "serverHost": "kubernetes.docker.internal",
minecraft-protocol "serverPort": 25565,
minecraft-protocol "nextState": 2
minecraft-protocol } +1ms
minecraft-protocol read packet login.login_start +13ms
minecraft-protocol {
minecraft-protocol "username": "Opisek",
minecraft-protocol "playerUUID": "ecbc77f4-0f18-4ec2-9653-ce51e560a4eb"
minecraft-protocol } +0ms
minecraft-protocol writing packet login.encryption_begin +152ms
minecraft-protocol {
minecraft-protocol serverId: '817abf9c',
minecraft-protocol publicKey: <Buffer 30 81 9f 30 0d 06 09 2a 86 48 86 f7 0d 01 01 01 05 00 03 81 8d 00 30 81 89 02 81 81 00 9a a5 23 83 21 14 01 e4 85 78 1d 03 a1 f7 dc b9 99 00 5c 70 51 ... 112 more bytes>,
minecraft-protocol verifyToken: <Buffer 51 76 b0 70>
minecraft-protocol } +0ms
minecraft-protocol read packet login.encryption_begin +233ms
minecraft-protocol {
minecraft-protocol "sharedSecret": {
minecraft-protocol "type": "Buffer",
minecraft-protocol "data": [
minecraft-protocol 96,
minecraft-protocol 41,
minecraft-protocol 15,
minecraft-protocol 58,
minecraft-protocol 184,
minecraft-protocol 6,
minecraft-protocol 234,
minecraft-protocol 106,
minecraft-protocol 89,
minecraft-protocol 137,
minecraft-protocol 53,
minecraft-protocol 201,
minecraft-protocol 36,
minecraft-protocol 97,
minecraft-protocol 9,
minecraft-protocol 6,
minecraft-protocol 8,
minecraft-protocol 184,
minecraft-protocol 215,
minecraft-protocol 228,
minecraft-protocol 168,
minecraft-protocol 96,
minecraft-protocol 190,
minecraft-protocol 45,
minecraft-protocol 80,
minecraft-protocol 66,
minecraft-protocol 116,
minecraft-protocol 255,
minecraft-protocol 224,
minecraft-protocol 129,
minecraft-protocol 62,
minecraft-protocol 97,
minecraft-protocol 248,
minecraft-protocol 164,
minecraft-protocol 200,
minecraft-protocol 193,
minecraft-protocol 225,
minecraft-protocol 154,
minecraft-protocol 8,
minecraft-protocol 141,
minecraft-protocol 159,
minecraft-protocol 120,
minecraft-protocol 183,
minecraft-protocol 59,
minecraft-protocol 249,
minecraft-protocol 218,
minecraft-protocol 253,
minecraft-protocol 208,
minecraft-protocol 213,
minecraft-protocol 193,
minecraft-protocol 144,
minecraft-protocol 107,
minecraft-protocol 104,
minecraft-protocol 140,
minecraft-protocol 243,
minecraft-protocol 254,
minecraft-protocol 47,
minecraft-protocol 50,
minecraft-protocol 4,
minecraft-protocol 169,
minecraft-protocol 239,
minecraft-protocol 8,
minecraft-protocol 164,
minecraft-protocol 112,
minecraft-protocol 94,
minecraft-protocol 13,
minecraft-protocol 63,
minecraft-protocol 35,
minecraft-protocol 180,
minecraft-protocol 12,
minecraft-protocol 37,
minecraft-protocol 179,
minecraft-protocol 122,
minecraft-protocol 40,
minecraft-protocol 119,
minecraft-protocol 1,
minecraft-protocol 64,
minecraft-protocol 164,
minecraft-protocol 78,
minecraft-protocol 88,
minecraft-protocol 151,
minecraft-protocol 225,
minecraft-protocol 99,
minecraft-protocol 63,
minecraft-protocol 4,
minecraft-protocol 156,
minecraft-protocol 18,
minecraft-protocol 173,
minecraft-protocol 60,
minecraft-protocol 70,
minecraft-protocol 44,
minecraft-protocol 33,
minecraft-protocol 142,
minecraft-protocol 25,
minecraft-protocol 242,
minecraft-protocol 238,
minecraft-protocol 14,
minecraft-protocol 26,
minecraft-protocol 176,
minecraft-protocol 8,
minecraft-protocol 231,
minecraft-protocol 184,
minecraft-protocol 58,
minecraft-protocol 130,
minecraft-protocol 50,
minecraft-protocol 203,
minecraft-protocol 139,
minecraft-protocol 163,
minecraft-protocol 210,
minecraft-protocol 157,
minecraft-protocol 169,
minecraft-protocol 212,
minecraft-protocol 96,
minecraft-protocol 119,
minecraft-protocol 77,
minecraft-protocol 45,
minecraft-protocol 201,
minecraft-protocol 56,
minecraft-protocol 69,
minecraft-protocol 136,
minecraft-protocol 179,
minecraft-protocol 84,
minecraft-protocol 59,
minecraft-protocol 57,
minecraft-protocol 28,
minecraft-protocol 216,
minecraft-protocol 188,
minecraft-protocol 116
minecraft-protocol ]
minecraft-protocol },
minecraft-protocol "verifyToken": {
minecraft-protocol "type": "Buffer",
minecraft-protocol "data": [
minecraft-protocol 73,
minecraft-protocol 187,
minecraft-protocol 146,
minecraft-protocol 205,
minecraft-protocol 142,
minecraft-protocol 135,
minecraft-protocol 28,
minecraft-protocol 253,
minecraft-protocol 37,
minecraft-protocol 109,
minecraft-protocol 95,
minecraft-protocol 178,
minecraft-protocol 188,
minecraft-protocol 141,
minecraft-protocol 90,
minecraft-protocol 132,
minecraft-protocol 99,
minecraft-protocol 237,
minecraft-protocol 33,
minecraft-protocol 163,
minecraft-protocol 238,
minecraft-protocol 21,
minecraft-protocol 74,
minecraft-protocol 234,
minecraft-protocol 7,
minecraft-protocol 78,
minecraft-protocol 234,
minecraft-protocol 207,
minecraft-protocol 240,
minecraft-protocol 128,
minecraft-protocol 210,
minecraft-protocol 24,
minecraft-protocol 157,
minecraft-protocol 23,
minecraft-protocol 45,
minecraft-protocol 195,
minecraft-protocol 34,
minecraft-protocol 176,
minecraft-protocol 48,
minecraft-protocol 253,
minecraft-protocol 198,
minecraft-protocol 228,
minecraft-protocol 86,
minecraft-protocol 75,
minecraft-protocol 186,
minecraft-protocol 28,
minecraft-protocol 8,
minecraft-protocol 192,
minecraft-protocol 152,
minecraft-protocol 68,
minecraft-protocol 182,
minecraft-protocol 96,
minecraft-protocol 249,
minecraft-protocol 92,
minecraft-protocol 107,
minecraft-protocol 182,
minecraft-protocol 98,
minecraft-protocol 219,
minecraft-protocol 99,
minecraft-protocol 177,
minecraft-protocol 114,
minecraft-protocol 57,
minecraft-protocol 100,
minecraft-protocol 55,
minecraft-protocol 11,
minecraft-protocol 61,
minecraft-protocol 45,
minecraft-protocol 241,
minecraft-protocol 69,
minecraft-protocol 168,
minecraft-protocol 183,
minecraft-protocol 129,
minecraft-protocol 91,
minecraft-protocol 56,
minecraft-protocol 175,
minecraft-protocol 54,
minecraft-protocol 26,
minecraft-protocol 121,
minecraft-protocol 231,
minecraft-protocol 78,
minecraft-protocol 85,
minecraft-protocol 166,
minecraft-protocol 73,
minecraft-protocol 173,
minecraft-protocol 158,
minecraft-protocol 107,
minecraft-protocol 213,
minecraft-protocol 67,
minecraft-protocol 198,
minecraft-protocol 67,
minecraft-protocol 245,
minecraft-protocol 182,
minecraft-protocol 30,
minecraft-protocol 158,
minecraft-protocol 114,
minecraft-protocol 178,
minecraft-protocol 96,
minecraft-protocol 53,
minecraft-protocol 222,
minecraft-protocol 131,
minecraft-protocol 169,
minecraft-protocol 128,
minecraft-protocol 107,
minecraft-protocol 119,
minecraft-protocol 40,
minecraft-protocol 126,
minecraft-protocol 85,
minecraft-protocol 15,
minecraft-protocol 234,
minecraft-protocol 150,
minecraft-protocol 251,
minecraft-protocol 154,
minecraft-protocol 237,
minecraft-protocol 162,
minecraft-protocol 202,
minecraft-protocol 5,
minecraft-protocol 6,
minecraft-protocol 214,
minecraft-protocol 35,
minecraft-protocol 122,
minecraft-protocol 157,
minecraft-protocol 214,
minecraft-protocol 167,
minecraft-protocol 82,
minecraft-protocol 162,
minecraft-protocol 193,
minecraft-protocol 103,
minecraft-protocol 207
minecraft-protocol ]
minecraft-protocol }
minecraft-protocol } +0ms
minecraft-protocol writing packet login.disconnect +2ms
minecraft-protocol { reason: '{"text":"DidNotEncryptVerifyTokenProperly"}' } +0ms
minecraft-protocol { reason: '{"text":"DidNotEncryptVerifyTokenProperly"}' } +0ms
this is clearly the problem
@Opisek can you reproduce in a vanilla server?
No I cannot. The issue is only with node-minecraft-protocol based server, I can join any other server just fine. The issue persisted on two machines I tried for a server and two different minecraft users from different countries.
For context, here's my production code: https://github.com/Opisek/mc-paper-docker/blob/bug/dynmap/src/modules/mock.ts This one doesn't work on both Node 18 and Node 20.
The example in my original post only seems to work in Node 20, but not Node 18.
Are you using online login?
Yes, everything worked fine a few weeks ago in node-minecraft-protocol 1.44.0 and minecraft 1.20.1.
May I know what Node version you use for testing?
Here's how node-minecraft-protocol behaves on my systems depending on the Node version: v18.19.1 (npm v10.2.4): Doesn't work v20.10.0 (npm v10.2.3): Works v20.11.1 (npm v10.2.4): Doesn't work v20.11.1 (npm v10.2.3): Doesn't work
(Tested on both a Debian and a Windows server with both the example code in my original post and the linked production code.)
https://github.com/PrismarineJS/node-minecraft-protocol/blob/master/.github/workflows/ci.yml#L20 we use node 18
However we disabled the online login tests a while back because it did not work well with the throttling limits on Mojang auth https://github.com/PrismarineJS/node-minecraft-protocol/issues/372
Might be time to revisit this...
I'll see if I can run it on the one stable version I could find, otherwise I'll disable online login. Thanks for looking into it and please keep me updated.
Weirdly enough on my testing, Deno 1.42.0 (on node compat) emits the Login event correctly. But Node 20.11.1 does not.
Tho it seems that Turns out this was already filedclient.end
is broken on both due to including backslashes on the message for 1.20.2 and above but this could be another issue
Could this be due to an ABI change in Node?
I was trying to make a proxy and suddenly could not join any Minecraft-Protocol Server so I tested multiple versions of Minecraft such as 1.12.2
, 1.16.5
, and 1.19.2
and none of them worked.
When I join the server from the client it says:
After I found this GitHub issue I tried v20.10.0 and it worked.
Node v18.0.0: Yes
Node v18.20.2: No
Node v19.0.0: Yes
Node v19.9.0: No
Node v20.0.0: Yes
Node v20.10.0: Yes
Node v20.12.2: No
Node v21.0.0: Yes
Node v21.7.3: No (Error)
DeprecationWarning: The 'punycode' module is deprecated.
Internal Exception: io.netty.handler.codec.DecoderException:
java.lang.IndexOutOfBoundsException: Index: 94, Size: 5
Node v22.0.0: No
Any update on this?
Is the library still being actually updated? This seems to have been an issue for months with no commits trying to fix it.
Is the library still being actually updated? This seems to have been an issue for months with no commits trying to fix it.
I hope it is, I recently made a pr that fixs joining 1.20.6 servers with viaversion in prismarine-registry. It have been 2 weeks and it haven't been merged. It seems that they Maybe the maintainers are just busy at something right now.
Be patient.
I am (i have been postponing doing the project I have in mind for quite a while already), it’s just starting to look like this library is either not being updated anymore or there are not enough trusted maintainers that can keep up with the bugs (this bug is now several months old and is a breaking one) or even merge the pull requests.
I am (i have been postponing doing the project I have in mind for quite a while already), it’s just starting to look like this library is either not being updated anymore or there are not enough trusted maintainers that can keep up with the bugs (this bug is now several months old and is a breaking one) or even merge the pull requests.
I had an idea of forking all prismarinejs projects to another GitHub organization to get my wanted changes to be merged. Most of the prismarinejs projects doesn't really need to have to update once a while, usually they are just classes and types for the core projects. Because of this, they didn't really have to add many maintainers for most of the projects. But I agree with you that they didn't keep up with the bugs recently.
Is the library still being actually updated? This seems to have been an issue for months with no commits trying to fix it.
Indeed, this is normal for open source projects; you don't just push commits for the sake of doing commits to appear active. That doesn't mean there are no maintainers, it just means there are no PRs to merge.
If you (or someone) make a PR to fix it then there is a discussion about not merging it, then we can talk about why the PR isn't merged, but at this time there is no PR to fix it.
There are indeed no maintainers here being paid to monitor and fix your bugs, and we are not sponsored by Microsoft or some other org. The commits done here are done by volunteers and will be done as soon as someone has time and is interested in doing a PR. You are always free to fork, but that obviously won't fix bugs unless you write the code to fix them yourself.
Any update on this?
Could be related to #1293
Is the library still being actually updated? This seems to have been an issue for months with no commits trying to fix it.
You seem to need this update and more contributors is always better. Are you interested in writing the commits needed to update to that new version?
On Sun, Jun 2, 2024, 1:36 PM extremeheat @.***> wrote:
Is the library still being actually updated? This seems to have been an issue for months with no commits trying to fix it.
Indeed, this is normal for open source projects; you don't just push commits for the sake of doing commits to appear active. That doesn't mean there are no maintainers, it just means there are no PRs to merge.
If you (or someone) make a PR to fix it then there is a discussion about not merging it, then we can talk about why the PR isn't merged, but at this time there is no PR to fix it.
There are indeed no maintainers here being paid to monitor and fix your bugs, and we are not sponsored by Microsoft or some other org. The commits done here are done by volunteers and will be done as soon as someone has time and is interested in doing a PR. You are always free to fork, but that obviously won't fix bugs unless you write the code to fix them yourself.
Any update on this?
Could be related to #1293 https://github.com/PrismarineJS/node-minecraft-protocol/issues/1293
— Reply to this email directly, view it on GitHub https://github.com/PrismarineJS/node-minecraft-protocol/issues/1289#issuecomment-2143881229, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAR437UDDJ73Y54CLZMRQMLZFMUYLAVCNFSM6AAAAABD3YO44OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNBTHA4DCMRSHE . You are receiving this because you commented.Message ID: @.***>
Versions
Detailed description of a problem
The protocol is broken on Node 18. Works fine on Node 20. The simplest way to reproduce it is to simply listen for a
login
event.Current code
Expected behavior
"join" is printed on the console when a client tries to join the server.
Actual behavior
Nothing is printed and one of the following happens
Furthermore, the server may receive the following error (does not always happen either):
Additional context
I'd like to ask you to adjust the supported engine value for this library to disclude older versions of Node, if this issue can't be fixed easily.