Minecraft Bedrock protocol library, with authentication and encryption
Minecraft Bedrock Edition (aka MCPE) protocol library, supporting authentication and encryption. Help contribute.
Want to contribute on something important for PrismarineJS ? go to https://github.com/PrismarineJS/mineflayer/wiki/Big-Prismarine-projects
npm install bedrock-protocol
To update bedrock-protocol (or any Node.js package) and its dependencies after a previous install, you must run npm update --depth 9999
Example to connect to a server in offline mode, and relay chat messages back:
const bedrock = require('bedrock-protocol')
const client = bedrock.createClient({
host: 'localhost', // optional
port: 19132, // optional, default 19132
username: 'Notch', // the username you want to join as, optional if online mode
offline: true // optional, default false. if true, do not login with Xbox Live. You will not be asked to sign-in if set to true.
})
client.on('text', (packet) => { // Listen for chat messages from the server and echo them back.
if (packet.source_name != client.username) {
client.queue('text', {
type: 'chat', needs_translation: false, source_name: client.username, xuid: '', platform_chat_id: '',
message: `${packet.source_name} said: ${packet.message} on ${new Date().toLocaleString()}`
})
}
})
Example to connect to a Realm that the authenticating account is owner of or has been invited to:
const bedrock = require('bedrock-protocol')
const client = bedrock.createClient({
realms: {
pickRealm: (realms) => realms[0] // Function which recieves an array of joined/owned Realms and must return a single Realm. Can be async
}
})
Can't connect locally on Windows? See the faq
const bedrock = require('bedrock-protocol')
const server = bedrock.createServer({
host: '0.0.0.0', // optional. host to bind as.
port: 19132, // optional
version: '1.17.10', // optional. The server version, latest if not specified.
})
server.on('connect', client => {
client.on('join', () => { // The client has joined the server.
const d = new Date() // Once client is in the server, send a colorful kick message
client.disconnect(`Good ${d.getHours() < 12 ? '§emorning§r' : '§3afternoon§r'} :)\n\nMy time is ${d.toLocaleString()} !`)
})
})
const { ping } = require('bedrock-protocol')
ping({ host: 'play.cubecraft.net', port: 19132 }).then(res => {
console.log(res)
})
For documentation on the protocol, and packets/fields see the protocol documentation.
npm test
You can enable some protocol debugging output using DEBUG
environment variable.
Through node.js, add process.env.DEBUG = 'minecraft-protocol'
at the top of your script.
Please read CONTRIBUTING.md and https://github.com/PrismarineJS/prismarine-contribute
See history