Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
mineflayer
Advanced tools
EN English | RU русский | ES Español | FR Français | TR Türkçe | ZH 中文 |
---|
Create Minecraft bots with a powerful, stable, and high level JavaScript API, also usable from Python.
First time using Node.js? You may want to start with the tutorial. Know Python? Checkout some Python examples and try out Mineflayer on Google Colab.
Checkout this page to see what our current projects are.
First install Node.js >= 14 from nodejs.org then:
npm install mineflayer
link | description |
---|---|
tutorial | Begin with Node.js and mineflayer |
FAQ.md | Got a question ? go there first |
api.md unstable_api.md | The full API reference |
history.md | The changelog for mineflayer |
examples/ | Checkout all the mineflayer examples |
Please read CONTRIBUTING.md and prismarine-contribute
Videos
A tutorial video explaining the basic set up process for a bot can be found here.
If you want to learn more, more video tutorials are there, and the corresponding source codes for those bots is there.
Getting Started
Without a version specified, the version of the server will be guessed automatically. Without auth specified, the mojang auth style will be guessed.
const mineflayer = require('mineflayer')
const bot = mineflayer.createBot({
host: 'localhost', // minecraft server ip
username: 'email@example.com', // minecraft username
password: '12345678' // minecraft password, comment out if you want to log into online-mode=false servers
// port: 25565, // only set if you need a port that isn't 25565
// version: false, // only set if you need a specific version or snapshot (ie: "1.8.9" or "1.16.5"), otherwise it's set automatically
// auth: 'mojang' // only set if you need microsoft auth, then set this to 'microsoft'
})
bot.on('chat', (username, message) => {
if (username === bot.username) return
bot.chat(message)
})
// Log errors and kick reasons:
bot.on('kicked', console.log)
bot.on('error', console.log)
Thanks to the prismarine-viewer project, it's possible to display in a browser window what your bot is doing.
Just run npm install prismarine-viewer
and add this to your bot:
const { mineflayer: mineflayerViewer } = require('prismarine-viewer')
bot.once('spawn', () => {
mineflayerViewer(bot, { port: 3007, firstPerson: true }) // port is the minecraft server port, if first person is false, you get a bird's-eye view
})
And you'll get a live view looking like this:
example | description |
---|---|
viewer | Display your bot world view in the browser |
pathfinder | Make your bot go to any location automatically |
chest | Use chests, furnaces, dispensers, enchantment tables |
digger | Learn how to create a simple bot that is capable of digging blocks |
discord | Connect a discord bot with a mineflayer bot |
jumper | Learn how to move, jump, ride vehicles, attack nearby entities |
ansi | Display your bot's chat with all of the chat colors shown in your terminal |
guard | Make a bot guard a defined area from nearby mobs |
multiple-from-file | Add a text file with accounts and have them all login |
And many mores in the examples folder
A lot of the active development is happening inside of small npm packages which are used by mineflayer.
"When applications are done well, they are just the really application-specific, brackish residue that can't be so easily abstracted away. All the nice, reusable components sublimate away onto github and npm where everybody can collaborate to advance the commons." — substack from "how I write modules"
These are the main modules that make up mineflayer:
module | description |
---|---|
minecraft-protocol | Parse and serialize minecraft packets, plus authentication and encryption. |
minecraft-data | Language independent module providing minecraft data for minecraft clients, servers and libraries. |
prismarine-physics | Provide the physics engine for minecraft entities |
prismarine-chunk | A class to hold chunk data for Minecraft |
node-vec3 | 3d vector math with robust unit tests |
prismarine-block | Represent a minecraft block with its associated data |
prismarine-chat | A parser for a minecraft chat message (extracted from mineflayer) |
node-yggdrasil | Node.js library to interact with Mojang's authentication system, known as Yggdrasil |
prismarine-world | The core implementation of worlds for prismarine |
prismarine-windows | Represent minecraft windows |
prismarine-item | Represent a minecraft item with its associated data |
prismarine-nbt | An NBT parser for node-minecraft-protocol |
prismarine-recipe | Represent minecraft recipes |
prismarine-biome | Represent a minecraft biome with its associated data |
prismarine-entity | Represent a minecraft entity |
You can enable some protocol debugging output using DEBUG
environment variable:
DEBUG="minecraft-protocol" node [...]
On windows :
set DEBUG=minecraft-protocol
node your_script.js
Mineflayer is pluggable; anyone can create a plugin that adds an even higher level API on top of Mineflayer.
The most updated and useful are :
But also check out :
Simply run: npm test
Run npm run mocha_test -- -g <version>
, where <version>
is a minecraft version like 1.12
, 1.15.2
...
Run npm run mocha_test -- -g <test_name>
, where <test_name>
is a name of the test like bed
, useChests
, rayTrace
...
npm run mocha_test -- -g "1.18.1.*BlockFinder"
to run the block finder test for 1.18.1
FAQs
create minecraft bots with a stable, high level API
The npm package mineflayer receives a total of 5,941 weekly downloads. As such, mineflayer popularity was classified as popular.
We found that mineflayer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.