PrismarineJS / PrismarineJS/node-minecraft-protocol
Make node-minecraft-protocol protocol agnostic
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 1.4k
- Forks
- 290
- Avg merge
- 4d 8h
- Merged PRs (30d)
- 7
Description
Making node-minecraft-protocol protocol agnostic has been a long standing goal of the various refactoring of node-minecraft-protocol.
The extraction of node-protodef has permitted to support easily various minecraft pc version.
The recent refactoring of the server into plugins make the basic server implementation even more agnostic of the various ways to use the protocols.
A goal that was mentioned several time is to make node-minecraft-protocol "disapear", ie to have data in minecraft-data (or other places) and generic modules such as node-protodef and to have no specific code in node-minecraft-protocol.
This would allow to support more protocol, such as minecraft classic, minecraft pocket edition or even other games (minetest maybe, or even non voxel)
I believe we could extract the server and client implementation, along with their plugin systems and make them completely generic (remove all the minecraft specific code), put that in a node-network, and then use that in node-minecraft-protocol.
The code currently in https://github.com/PrismarineJS/node-minecraft-protocol/tree/master/src/client and https://github.com/PrismarineJS/node-minecraft-protocol/tree/master/src/server and https://github.com/PrismarineJS/node-minecraft-protocol/tree/master/src/transforms could probably go into something like a node-minecraft-client and a node-minecraft-server which would be plugins that could be used with node-network.
node-minecraft-protocol would then just use that to keep the API stable for users.
But real users could then stop actually using node-minecraft-protocol and just use node-minecraft-client as basic plugins for node-network for mineflayer for example.
And I guess we could then have a node-minecraft-pocket-client that could replace node-minecraft-client when we want to use pocket edition.
This has been discussed a long time ago with @wtfaremyinitials and @roblabla I believe.
Also I believe node-minecraft-protocol, mineflayer and flying-squid plugin systems can be merged into one that way.
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 reading the implementations under src/client, src/server, and src/transforms, then review how their plugin systems relate to node-minecraft-protocol. Done would mean extracting generic client, server, and transform functionality into node-network-compatible modules while keeping the existing node-minecraft-protocol API stable.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, node.js
- Domain
- networking
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100