PrismarineJS / PrismarineJS/node-minecraft-protocol
Proxy with dynamic cross version support enabled doesn't function in 1.20.2+
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 1.4k
- Forks
- 290
- Avg merge
- 4d 8h
- Merged PRs (30d)
- 7
Description
Versions
- minecraft-protocol: 1.57.0
- server: vanilla 1.20.2+
- node: 22.16.0
Detailed description of a problem
When using Minecraft client version 1.20.2 or higher, attempting to login to a server (that supports said 1.20.2+ version) through a dynamic cross version support enabled NMP proxy results in the following error (at least in 1.20.2):
I believe that the error messages vary as you go up in version.
Current code
examples/proxy/proxy.js example as-is, with line 76 as version: false (NMP server with dynamic cross version support enabled) (tested with the proxy NMP server and vanilla end server both in offline mode)
Alternatively, this repo has the same issue in an online mode scenario (Hypixel)
Expected behavior
The player would be able to login to the end server normally without errors, using any version the end server supports.
Additional context
Here are the scenarios I tested using proxy.js:
- ✅ 1.20.1 vanilla server, 1.20.1 vanilla client, 1.20.1 version specified proxy
- ✅ 1.20.1 vanilla server, 1.20.1 vanilla client, unspecified version proxy
- ✅ 1.20.2 vanilla server, 1.20.2 vanilla client, 1.20.2 version specified proxy
- ❌ 1.20.2 vanilla server, 1.20.2 vanilla client, unspecified version proxy
Although I don't have any deep knowledge of this codebase, I believe the issue stems from the configuration state added in 1.20.2. Discussion with @lapishusky (original creator of this proxy) has lead me to believe that this may happen because the NMP server has its own configuration state logic which may interfere with/override the configuration state being sent by the end server. Interestingly, the proxy seems to function okay when a server version is specified, so likely something specific to how the server handles configuration state when a version isn't specified.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the failure with examples/proxy/proxy.js using line 76 set to version: false, comparing the working version-specified 1.20.2 case with the failing dynamic case. Trace how configuration state is handled by the NMP proxy server and the vanilla end server, then verify that supported 1.20.2+ clients can log in through the dynamic proxy without configuration-state errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100