{"id":29117881,"url":"https://github.com/prismarinejs/bedrock-protocol","last_synced_at":"2026-04-29T06:01:51.140Z","repository":{"id":38019334,"uuid":"51658481","full_name":"PrismarineJS/bedrock-protocol","owner":"PrismarineJS","description":"Minecraft Bedrock protocol library, with authentication and encryption","archived":false,"fork":false,"pushed_at":"2026-04-28T21:10:57.000Z","size":1088,"stargazers_count":410,"open_issues_count":63,"forks_count":109,"subscribers_count":25,"default_branch":"master","last_synced_at":"2026-04-28T23:11:59.205Z","etag":null,"topics":["bedrock","bedrock-edition","bedrock-protocol","minecraft","minecraft-pocket-edition","raknet"],"latest_commit_sha":null,"homepage":"https://prismarinejs.github.io/minecraft-data/?v=bedrock_1.17.10\u0026d=protocol","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PrismarineJS.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"docs/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"PrismarineJS","open_collective":"prismarinejs","custom":"https://rysolv.com/repos/detail/74691b23-938d-4b2f-b65a-5c47bf5b3f0f"}},"created_at":"2016-02-13T18:10:23.000Z","updated_at":"2026-04-28T21:04:33.000Z","dependencies_parsed_at":"2024-03-02T21:00:24.572Z","dependency_job_id":"a327ceee-ca24-485b-8df8-84affa158adf","html_url":"https://github.com/PrismarineJS/bedrock-protocol","commit_stats":{"total_commits":473,"total_committers":38,"mean_commits":"12.447368421052632","dds":0.5137420718816068,"last_synced_commit":"1ddc5251695fda670c70ea506e0d1d267997e053"},"previous_names":["mhsjlw/pocket-minecraft-protocol"],"tags_count":79,"template":false,"template_full_name":null,"purl":"pkg:github/PrismarineJS/bedrock-protocol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismarineJS%2Fbedrock-protocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismarineJS%2Fbedrock-protocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismarineJS%2Fbedrock-protocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismarineJS%2Fbedrock-protocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PrismarineJS","download_url":"https://codeload.github.com/PrismarineJS/bedrock-protocol/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrismarineJS%2Fbedrock-protocol/sbom","scorecard":{"id":112218,"data":{"date":"2025-08-11","repo":{"name":"github.com/PrismarineJS/bedrock-protocol","commit":"0b9c49fedcb4e0e9bdc9e1c6b1fc251884d67e4a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.3,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":5,"reason":"Found 17/29 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"9 commit(s) and 9 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: no topLevel permission defined: .github/workflows/commands.yml:1","Warn: no topLevel permission defined: .github/workflows/publish.yml:1","Warn: no topLevel permission defined: .github/workflows/update-helper.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/ci.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/ci.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/commands.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/commands.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/commands.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/commands.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/update-helper.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/update-helper.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/update-helper.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/PrismarineJS/bedrock-protocol/update-helper.yml/master?enable=pin","Warn: containerImage not pinned by hash: .gitpod.DockerFile:1: pin your Docker image by updating gitpod/workspace-full:latest to gitpod/workspace-full:latest@sha256:b1195dfae7ee9a12a89d195247c3e1357cc6a18360a41473dbec67525ef434e2","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:36","Warn: npmCommand not pinned by hash: .github/workflows/publish.yml:18","Warn: npmCommand not pinned by hash: .github/workflows/update-helper.yml:20","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   3 npmCommand dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T12:33:32.900Z","repository_id":38019334,"created_at":"2025-08-15T12:33:32.900Z","updated_at":"2025-08-15T12:33:32.900Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32412890,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T05:20:56.964Z","status":"ssl_error","status_checked_at":"2026-04-29T05:19:54.749Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bedrock","bedrock-edition","bedrock-protocol","minecraft","minecraft-pocket-edition","raknet"],"created_at":"2025-06-29T12:07:58.133Z","updated_at":"2026-04-29T06:01:51.134Z","avatar_url":"https://github.com/PrismarineJS.png","language":"JavaScript","funding_links":["https://github.com/sponsors/PrismarineJS","https://opencollective.com/prismarinejs","https://rysolv.com/repos/detail/74691b23-938d-4b2f-b65a-5c47bf5b3f0f"],"categories":[],"sub_categories":[],"readme":"# bedrock-protocol\n[![NPM version](https://img.shields.io/npm/v/bedrock-protocol.svg)](http://npmjs.com/package/bedrock-protocol)\n[![Build Status](https://github.com/PrismarineJS/bedrock-protocol/workflows/CI/badge.svg)](https://github.com/PrismarineJS/bedrock-protocol/actions?query=workflow%3A%22CI%22)\n[![Try it on gitpod](https://img.shields.io/badge/try-on%20gitpod-brightgreen.svg)](https://gitpod.io/#https://github.com/PrismarineJS/bedrock-protocol)\n\n[![Official Discord](https://img.shields.io/static/v1.svg?label=OFFICIAL\u0026message=DISCORD\u0026color=blue\u0026logo=discord\u0026style=for-the-badge)](https://discord.gg/GsEFRM8)\n\nMinecraft Bedrock Edition (aka MCPE) protocol library, supporting authentication and encryption. Help [contribute](docs/CONTRIBUTING.md).\n\n[Protocol doc](https://prismarinejs.github.io/minecraft-data/?v=bedrock_1.19.10\u0026d=protocol)\n\n## Features\n\n - Supports Minecraft Bedrock version 1.16.201, 1.16.210, 1.16.220, 1.17.0, 1.17.10, 1.17.30, 1.17.40, 1.18.0, 1.18.11, 1.18.30, 1.19.1, 1.19.10, 1.19.20, 1.19.21, 1.19.30, 1.19.40, 1.19.41, 1.19.50, 1.19.60, 1.19.62, 1.19.63, 1.19.70, 1.19.80, 1.20.0, 1.20.10, 1.20.30, 1.20.40, 1.20.50, 1.20.61, 1.20.71, 1.20.80, 1.21.0, 1.21.2, 1.21.21, 1.21.30, 1.21.42, 1.21.50, 1.21.60, 1.21.70, 1.21.80, 1.21.90, 1.21.93, 1.21.100, 1.21.111, 1.21.120, 1.21.124, 1.21.130, 1.26.0, 1.26.10, 26.10\n - Parse and serialize packets as JavaScript objects\n - Automatically respond to keep-alive packets\n - [Proxy and mitm connections](docs/API.md#proxy-docs)\n - Client\n   - Authentication\n   - Encryption\n   - [Ping a server for status](docs/API.md#beping-host-port---serveradvertisement)\n - Server\n   - Authenticate clients with Xbox Live \n   - Ping status\n\n * Robust test coverage.\n * Easily extend with many other PrismarineJS projects, world providers, and more \n * Optimized for rapidly staying up to date with Minecraft protocol updates.\n\n\nWant to contribute to something important for PrismarineJS? Go to https://github.com/PrismarineJS/mineflayer/wiki/Big-Prismarine-projects\n\n## Installation\n\n`npm install bedrock-protocol`\n\nTo update bedrock-protocol (or any Node.js package) and its dependencies after a previous install, you must run `npm update`\n\n## Usage\n\n### Client example\n\nExample to connect to a server in offline mode, and relay chat messages back:\n\n```js\nconst bedrock = require('bedrock-protocol')\nconst client = bedrock.createClient({\n  host: 'localhost',   // optional\n  port: 19132,         // optional, default 19132\n  username: 'Notch',   // the username you want to join as, optional if online mode\n  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.\n})\n\nclient.on('text', (packet) =\u003e { // Listen for chat messages from the server and echo them back.\n  if (packet.source_name != client.username) {\n    client.queue('text', {\n      type: 'chat', needs_translation: false, source_name: client.username, xuid: '', platform_chat_id: '', filtered_message: '',\n      message: `${packet.source_name} said: ${packet.message} on ${new Date().toLocaleString()}`\n    })\n  }\n})\n```\n\n### Client example joining a Realm\n\nExample to connect to a Realm that the authenticating account is the owner of or has been invited to:\n\n```js\nconst bedrock = require('bedrock-protocol')\nconst client = bedrock.createClient({\n  realms: {\n    pickRealm: (realms) =\u003e realms[0] // Function which receives an array of joined/owned Realms and must return a single Realm. Can be async\n  }\n})\n```\n\n### Server example\n\n*Can't connect locally on Windows? See the [faq](docs/FAQ.md)*\n```js\nconst bedrock = require('bedrock-protocol')\nconst server = bedrock.createServer({\n  host: '0.0.0.0',       // optional. host to bind as.\n  port: 19132,           // optional\n  version: '1.17.10',   // optional. The server version, latest if not specified. \n})\n\nserver.on('connect', client =\u003e {\n  client.on('join', () =\u003e { // The client has joined the server.\n    const d = new Date()  // Once client is in the server, send a colorful kick message\n    client.disconnect(`Good ${d.getHours() \u003c 12 ? '§emorning§r' : '§3afternoon§r'} :)\\n\\nMy time is ${d.toLocaleString()} !`)\n  })\n})\n```\n\n### Ping example\n\n```js\nconst { ping } = require('bedrock-protocol')\nping({ host: 'play.cubecraft.net', port: 19132 }).then(res =\u003e {\n  console.log(res)\n})\n```\n\n## Documentation\n\nFor documentation on the protocol, and packets/fields see the [protocol documentation](https://prismarinejs.github.io/minecraft-data/protocol).\n\n* See [API documentation](docs/API.md)\n\n* See [frequently asked questions and answers](docs/FAQ.md)\n\n\u003c!-- ## Projects Using bedrock-protocol\n\n * [mineflayer](https://github.com/PrismarineJS/mineflayer/) - create bots with a stable, high level API.\n * [pakkit](https://github.com/Heath123/pakkit) To monitor your packets\n * [flying-squid](https://github.com/PrismarineJS/flying-squid/) - create minecraft bots with a stable, high level API. --\u003e\n\n## Testing\n\n```npm test```\n\n## Debugging\n\nYou can enable some protocol debugging output using `DEBUG` environment variable.\n\nThrough node.js, add `process.env.DEBUG = 'minecraft-protocol'` at the top of your script.\n\n## Contribute\n\nPlease read [CONTRIBUTING.md](docs/CONTRIBUTING.md) and https://github.com/PrismarineJS/prismarine-contribute\n\n## History\n\nSee [history](HISTORY.md)\n\n\u003c!-- ## Related\n\n* [map-colors](https://github.com/AresRPG/aresrpg-map-colors) can be used to convert any image into a buffer of minecraft compatible colors --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprismarinejs%2Fbedrock-protocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprismarinejs%2Fbedrock-protocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprismarinejs%2Fbedrock-protocol/lists"}