
Company News
/Security News
Socket Selected for OpenAI's Cybersecurity Grant Program
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.
mcproto is a small and lightweight implementation of the Minecraft protocol.
It aims to be a low-level library that provides the foundations
for building clients, servers, proxies and higher level abstractions.
This implementation only decodes packets that are related to the connection state
or login procedure. That makes it mostly version-independent since those
packets usually don't change from version to version.
nextPacket method for reading the next packet (with id).const { Client, PacketWriter, State } = require("mcproto")
const host = "play.hivemc.com", port = 25565
const client = await Client.connect(host, port)
client.send(new PacketWriter(0x0).writeVarInt(404)
.writeString(host).writeUInt16(port)
.writeVarInt(State.Status))
client.send(new PacketWriter(0x0))
const response = await client.nextPacket(0x0)
console.log(response.readJSON())
client.end()
const { Client, PacketWriter, State } = require("mcproto")
const host = "localhost", port = 25565, username = "Notch"
const client = await Client.connect(host, port)
client.send(new PacketWriter(0x0).writeVarInt(340)
.writeString(host).writeUInt16(port).writeVarInt(State.Login))
// Send login start
client.send(new PacketWriter(0x0).writeString(username))
const listener = client.onPacket(0x0, packet => {
console.log(packet.readJSON())
})
// The server can request encryption and compression which will be handled
// in the background, so just wait until login success.
await client.nextPacket(0x2, false)
listener.dispose()
client.on("packet", packet => {
if (packet.id == 0xf) console.log(packet.readJSON())
})
// Send chat message
client.send(new PacketWriter(0x2).writeString("Hello"))
For online servers, you must specify an accessToken and profile ID:
Client.connect("localhost", 25565, {
profile: "<id>", accessToken: "<token>"
})
More examples can be found in the repository's examples folder.
mcproto uses it's own tiny event emitter class and provides different methods
to handle packet, socket and error events.
Since a lot of the API is promise based, errors that happen during the lifetime a promise will result in the promise being rejected.
Errors that happen outside of async method calls should be handled with a error
event handler on the connection instance.
const listener = client.on("error", console.error)
// listeners can be removed with:
listener.dispose()
// or
client.off("error", console.error)
The server class does allow to return a Promise in the client handler and
it will forward errors to the server's event emitter.
const server = new Server(async client => {
// errors thrown inside here won't cause a crash but might
// show warnings if not handled.
throw "error"
})
server.on("error", console.error)
server.listen()
client.on("packet", packet => {
// make sure to catch errors inside event handlers
})
For details about packets and general information about the protocol, https://wiki.vg/Protocol is a great reference.
FAQs
Small Minecraft protocol implementation
The npm package mcproto receives a total of 46 weekly downloads. As such, mcproto popularity was classified as not popular.
We found that mcproto demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.

Security News
Socket CEO Feross Aboukhadijeh joins 10 Minutes or Less, a podcast by Ali Rohde, to discuss the recent surge in open source supply chain attacks.

Research
/Security News
Campaign of 108 extensions harvests identities, steals sessions, and adds backdoors to browsers, all tied to the same C2 infrastructure.