• Stars
    star
    4,956
  • Rank 8,446 (Top 0.2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created almost 14 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Create Minecraft bots with a powerful, stable, and high level JavaScript API.

Mineflayer

NPM version Build Status Try it on gitpod Open In Colab GitHub Sponsors

Official Discord

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.

Features

  • Supports Minecraft 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19 and 1.20.
  • Entity knowledge and tracking.
  • Block knowledge. You can query the world around you. Milliseconds to find any block.
  • Physics and movement - handle all bounding boxes
  • Attacking entities and using vehicles.
  • Inventory management.
  • Crafting, chests, dispensers, enchantment tables.
  • Digging and building.
  • Miscellaneous stuff such as knowing your health and whether it is raining.
  • Activating blocks and using items.
  • Chat.

Roadmap

Checkout this page to see what our current projects are.

Installation

First install Node.js >= 14 from nodejs.org then:

npm install mineflayer

To update mineflayer (or any Node.js) package and its dependencies, use npm update --depth 9999

Documentation

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

Contribute

Please read CONTRIBUTING.md and prismarine-contribute

Usage

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.

tutorial 1 tutorial 2 tutorial 3 tutorial 4

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.

Echo Example

const mineflayer = require('mineflayer')

const bot = mineflayer.createBot({
  host: 'localhost', // minecraft server ip
  username: '[email protected]', // minecraft username
  auth: 'microsoft' // for offline mode servers, you can set this to 'offline'
  // 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
  // password: '12345678'        // set if you want to use password-based auth (may be unreliable)
})

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)

See what your bot is doing

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:

viewer

More Examples

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 more in the examples folder.

Modules

A lot of the active development is happening inside of small npm packages which are used by mineflayer.

The Node Way™

"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"

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

Debug

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

Third Party Plugins

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 :

  • pathfinder - advanced A* pathfinding with a lot of configurable features
  • prismarine-viewer - simple web chunk viewer
  • web-inventory - web based inventory viewer
  • statemachine - A state machine API for more complex bot behaviors
  • Armor Manager - automatic armor management
  • Dashboard - Frontend dashboard for mineflayer bot
  • PVP - Easy API for basic PVP and PVE.
  • Auto Eat - Automatic eating of food.
  • Auto Crystal - Automatic placing & breaking of end crystals.
  • Tool - A utility for automatic tool/weapon selection with a high level API.
  • Hawkeye - A utility for using auto-aim with bows.
  • GUI - Interact with nested GUI windows using async/await
  • Projectile - Get the required launch angle for projectiles
  • Movement - Smooth and realistic player movement, best suited for PvP
  • Collect Block - Quick and simple block collection API.

But also check out :

  • radar - web based radar interface using canvas and socket.io. YouTube Demo
  • auto-auth - chat-based bot authentication
  • Bloodhound - determine who and what is responsible for damage to another entity
  • tps - get the current tps (processed tps)
  • panorama - take Panorama Images of your world
  • player-death-event - emit player death event in Mineflayer.

Projects Using Mineflayer

Testing

Testing everything

Simply run: npm test

Testing specific version

Run npm run mocha_test -- -g <version>, where <version> is a minecraft version like 1.12, 1.15.2...

Testing specific test

Run npm run mocha_test -- -g <test_name>, where <test_name> is a name of the test like bed, useChests, rayTrace...

Example

npm run mocha_test -- -g "1.18.1.*BlockFinder" to run the block finder test for 1.18.1

License

MIT

More Repositories

1

node-minecraft-protocol

Parse and serialize minecraft packets, plus authentication and encryption.
JavaScript
1,206
star
2

minecraft-data

Language independent module providing minecraft data for minecraft clients, servers and libraries.
JavaScript
657
star
3

flying-squid

Create Minecraft servers with a powerful, stable, and high level JavaScript API.
JavaScript
531
star
4

prismarine-web-client

Minecraft web client running in your browser
JavaScript
437
star
5

bedrock-protocol

Minecraft Bedrock protocol library, with authentication and encryption
JavaScript
311
star
6

prismarine-viewer

Web based viewer for servers and bots
JavaScript
248
star
7

mineflayer-pathfinder

Pathfinding plugin that gives bot the ability to go from A to B
JavaScript
213
star
8

mineflayer-statemachine

A state machine plugin for Mineflayer to aid in designing more complex behavior trees.
TypeScript
108
star
9

node-minecraft-data

Provide easy access to minecraft-data in node.js
JavaScript
100
star
10

prismarine-nbt

An NBT parser for node-minecraft-protocol
JavaScript
93
star
11

prismarine-chunk

A class to hold chunk data for Minecraft
JavaScript
61
star
12

mineflayer-navigate

mineflayer plugin which gives bots a high level 3d navigating API using A*
JavaScript
59
star
13

minecraft-assets

Provide minecraft assets along with json files that help to use them.
59
star
14

node-minecraft-protocol-forge

Plugin to add FML/Forge client support (including auto-versioning) to node-minecraft-protocol
JavaScript
52
star
15

mineflayer-pvp

Adds support for basic PVP and PVE to Mineflayer bots.
TypeScript
50
star
16

prismarine-auth

Microsoft/Xbox Live authentication
JavaScript
48
star
17

node-vec3

3d vector math with robust unit tests
JavaScript
42
star
18

node-yggdrasil

Node.js library to interact with Mojang's authentication system, known as Yggdrasil
JavaScript
40
star
19

prismarine-windows

Represent minecraft windows
JavaScript
37
star
20

mineflayer-radar

(unmaintained) A plugin to give you a web-based radar interface to your mineflayer bot.
JavaScript
36
star
21

mineflayer-collectblock

A simple utility plugin for Mineflayer that add a higher level API for collecting blocks.
TypeScript
36
star
22

prismarine-physics

Provide the physics engine for minecraft entities
JavaScript
35
star
23

prismarine-world

The core implementation of worlds for prismarine
JavaScript
34
star
24

prismarine-chat

A parser for a minecraft chat message
JavaScript
33
star
25

numerous-alpaca

A Minecraft Bedrock Edition server in JavaScript
JavaScript
29
star
26

prismarine-block

Represent a minecraft block with its associated data
JavaScript
29
star
27

prismarine-server

NodeJS Game Server compatible with Minecraft Client
JavaScript
26
star
28

mineflayer-scaffold

mineflayer plugin to build or break blocks to get to a certain point
JavaScript
26
star
29

prismarine-proxy

Provide features to build proxies using Prismarine modules
JavaScript
25
star
30

dazed-sheep

A Minecraft Classic server in JavaScript
JavaScript
24
star
31

MineflayerArmorManager

TypeScript
24
star
32

node-minecraft-wrap

Download and wrap the vanilla minecraft server and client in node.js
JavaScript
24
star
33

prismarine-entity

Represent a minecraft entity
JavaScript
23
star
34

mineflayer-builder

JavaScript
22
star
35

prismarine-schematic

Read and write schematic of any minecraft version, provide them in a convenient and stable API
JavaScript
21
star
36

mineflayer-tool

A tool/weapon selection Mineflayer plugin for automatically selecting the best tool to use for a specific task.
TypeScript
20
star
37

prismarine-item

Represent a minecraft item with its associated data
JavaScript
19
star
38

node-minecraft-assets

Provide minecraft assets in node.js
JavaScript
17
star
39

node-mojangson

A mojangson parser written in node.js
JavaScript
16
star
40

bedrock-provider

Minecraft bedrock level provider for disk and network with caching support
TypeScript
14
star
41

prismarine-contribute

What is PrismarineJS and how to contribute
13
star
42

prismarine-provider-anvil

Anvil Storage Provider implementation.
JavaScript
13
star
43

prismarine-gameplay

A high level gameplay API for making Mineflayer bots.
TypeScript
12
star
44

prismarinejs.github.io

https://prismarinejs.github.io
JavaScript
11
star
45

minecraft-packets

Stores minecraft packets to test implementation of the minecraft protocol
11
star
46

prismarine-realms

Library for interacting with Minecraft Realms
JavaScript
11
star
47

minecraft-wiki-extractor

Extract structured data from the minecraft wiki
JavaScript
10
star
48

prismarine-recipe

Represent minecraft recipes
JavaScript
10
star
49

minecraft-inventory-gui

Render minecraft inventory GUIs in the browser and (soon) headless
JavaScript
10
star
50

diamond-square

A diamond square minecraft generation
JavaScript
9
star
51

minecraft-chunk-dumper

Dumps chunks for any minecraft version
JavaScript
9
star
52

minecraft-classic-protocol

[En][de]code Minecraft 0.30c packets
JavaScript
8
star
53

minecraft-jar-extractor

Extract structured data from the minecraft jar
JavaScript
8
star
54

prismarine-template

A template repository to make it easy to create new prismarine repo
JavaScript
7
star
55

minecraft-data-generator-server

Java
7
star
56

speedrun-challenge-ssgp

JavaScript
7
star
57

mineflayer-cmd

A command handler plugin for Mineflayer.
TypeScript
6
star
58

prismarine-registry

JavaScript
6
star
59

prismarine-biome

Represent a minecraft biome with its associated data
JavaScript
5
star
60

flying-squid-modpe

Flying squid modpe api
JavaScript
4
star
61

mineflayer-test-api

An automated testing library for Mineflayer and Mineflayer plugins with CI/CD.
JavaScript
4
star
62

minecraft-classic-protocol-extension

A plugin for minecraft-classic-protocol that adds experimental and bleeding-edge CPE features
JavaScript
4
star
63

auto-sheep

Automatically update and start dazed-sheep without a githook!
Shell
4
star
64

McDataExtracting

Extract block collision shapes to JSON using Fabric mod loader
Java
4
star
65

node-minecraft-packets

Access minecraft packets examples in node
JavaScript
4
star
66

prismarine-yggdrasil

An implementation of Minecraft's yggdrasil login API
JavaScript
3
star
67

prismarine-rng

JavaScript
3
star
68

gdmc-challenge-2021

The PrismarineJS entry for the 2021 Generative in Design Minecraft Competition.
JavaScript
3
star
69

auto-alpaca

Automatically update and start numerous-alpaca without a githook!
Shell
3
star
70

mineflayer-gptj

JavaScript
3
star
71

prismarine-packet-dumper

Dump minecraft packets
JavaScript
3
star
72

prismarine-updates

Summary of work being done in PrismarineJS modules and user modules, useful for communication
3
star
73

mcdevs-wiki-extractor

Extract structured data from the mcdevs wiki
JavaScript
3
star
74

prismarine-world-sync

A sync proxy to prismarine-world
JavaScript
3
star
75

burger-extractor

Convert burger to minecraft-data
JavaScript
3
star
76

minecraft-assets-pixel-perfection

Assets for the Pixel Perfection pack
GLSL
2
star
77

entity-model-extractor

JavaScript
2
star
78

prismarine-design

Discuss about design and big refactoring that can affects many modules
2
star
79

minecraft-data-auto-updater

Automatically run minecraft data extractors and create pull request for minecraft-data
2
star
80

marketing-and-media

Media/Marketing Materials
1
star
81

prismarine-provider-raw

Raw (prismarine-chunk based) Storage Provider implementation.
JavaScript
1
star
82

prismarine-meta

Make it easy to do chores and maintenance work using the meta package
JavaScript
1
star
83

prismarine-repo-actions

Github Action implementing issue/PR comment commands for repo automation
JavaScript
1
star