Skip to content

Latest commit

 

History

History
266 lines (192 loc) · 14.8 KB

README_ZH_CN.md

File metadata and controls

266 lines (192 loc) · 14.8 KB

Mineflayer

NPM version Build Status Discord Gitter Irc Issue Hunt

Try it on gitpod Open In Colab

EN English RU русский ES Español FR Français TR Türkçe ZH 中文 BR Portuguese

使用强大、稳定、高级的 JavaScript API 来开发 Minecraft 机器人,同时支持 Python。

第一次使用 node.js ?你可以先看看 使用教程 。了解过 Python?这里有一些 Python 实例,同时你也可以在谷歌 Colab 中运行 Mineflayer 来体验一下。

特点

  • 支持版本: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 和 1.20
  • 实体感知与追踪
  • 方块感知,你可以在几毫秒内查找到bot周围的任何方块
  • 物理和运动引擎 - 支持所有的碰撞箱
  • 攻击实体,使用交通工具
  • 背包管理
  • 使用工作台、箱子、酿造台、附魔台
  • 挖掘和建造
  • 各种各样的的信息接口,比如查看你的血量或是否下雨
  • 激活方块和使用物品
  • 进行聊天

路线图

点这里 看看目前我们有哪些实用的项目

安装

首先,从 nodejs.org 安装 nodejs(版本要求 >= 18),

然后在你创建的bot项目目录中,使用命令行运行:

npm install mineflayer

文档

链接 描述
使用教程 node.js 和 mineflayer 入门
FAQ 使用中出现问题?先看看这个文档吧
api不稳定的api 完整的接口参考文档
更新日志 mineflayer 的更新日志
示例/ 我们为你准备的 mineflayer 使用实例

参与贡献

请参阅 为本项目贡献,以及为 Prismarine 贡献

如何使用

视频(Youtube)

这里 是一个解释bot基本设置过程的教程视频。

如果你想了解更多,更多的视频教程可以在 这里 找到,视频的相应的源码在 这里

tutorial 1 tutorial 2 tutorial 3 tutorial 4

开始使用

如果没有指定特定版本,使用的服务器版本将自动判断并使用。
如果没有指定登录类型,默认使用 mojang 账户认证登录。

例子:复读机

const mineflayer = require('mineflayer')

const bot = mineflayer.createBot({
  host: 'localhost', // minecraft 服务器的 IP 地址
  username: '[email protected]', // minecraft 用户名
  password: '12345678' // minecraft 密码, 如果你玩的是不需要正版验证的服务器,请注释掉。
  // port: 25565,                // 默认使用 25565,如果你的服务器端口不是这个请取消注释并填写。
  // version: false,             // 如果需要指定使用一个版本或快照时,请取消注释并手动填写(如:"1.8.9" 或 "1.16.5"),否则会自动设置。
  // auth: 'mojang'              // 如果需要使用微软账号登录时,请取消注释,然后将值设置为 'microsoft',否则会自动设置为 'mojang'。
})

bot.on('chat', (username, message) => {
  if (username === bot.username) return
  bot.chat(message)
})

// 记录错误和被踢出服务器的原因:
bot.on('kicked', console.log)
bot.on('error', console.log)

看看你的 bot 在做什么

感谢 prismarine-viewer项目,它可以在浏览器窗口显示你的机器人正在做什么。
只需要运行 npm install prismarine-viewer 并将其添加到你的 bot 代码中。

const { mineflayer: mineflayerViewer } = require('prismarine-viewer')
bot.once('spawn', () => {
  mineflayerViewer(bot, { port: 3007, firstPerson: true }) // port 是本地网页运行的端口 ,如果 firstPerson: false,那么将会显示鸟瞰图。
})

然后你会得到一个看起来像这样的实时视图

viewer

更多示例

例子 描述
viewer 在浏览器中显示 bot 的视角
pathfinder 让你的 bot 自动前往任何地点
chest 使用箱子、熔炉、酿造台、附魔台
digger 学习如何创建一个能够挖掘方块的简单bot
discord 将 discord bot 与 mineflayer bot 进行消息互通
jumper 学习如何移动、跳跃、骑乘载具、攻击附近的实体
ansi 使用全彩色在命令行中显示 bot 的聊天记录
guard 让bot守卫一个指定的区域,不让附近的生物进入。
multiple-from-file 创建一个包含账户信息的文本文件,让它们全部同时登录

还有更多的例子在 examples 文件夹中

模块

很多活跃的开发都发生在 mineflayer 所使用的小型 npm 包内

The Node Way & trade;

"当你很好的编写了一个应用程序,此时它的价值仅限于这些特定的需求。你要知道,真正好的、可重复使用的优秀组件都会升华到github和npm上,在那里,每个人都可以合作来推进公共事业。" — 《 how I write modules 》 - substack

子模块

这些是 构成 mineflayer 的主要模块:

模块 描述
minecraft-protocol 解析和序列化 minecraft 数据包,以及身份验证和加密。
minecraft-data 为 minecraft 客户端、服务器和库提供 minecraft 数据的语言独立模块。
prismarine-physics 为 minecraft 实体提供物理引擎
prismarine-chunk 一个为 Minecraft 保存区块数据的类
node-vec3 具有强大单元测试的 3d 矢量数学
prismarine-block 用相关数据表示一个 minecraft 方块
prismarine-chat minecraft 聊天消息解析器(从 mineflayer 中提取)
node-yggdrasil Node.js 库与 Mojang 的身份验证系统交互
prismarine-world prismarine 世界的核心实现
prismarine-windows 表示 minecraft 窗口
prismarine-item 用相关数据表示一个 minecraft 物品
prismarine-nbt node-minecraft-protocol 的 NBT 解析器
prismarine-recipe 展示我的世界合成表
prismarine-biome 用相关数据表示 minecraft 生物群落
prismarine-entity 表示一个 minecraft 实体

调试

您可以使用 DEBUG 环境变量启用某些协议调试输出:

DEBUG="minecraft-protocol" node [...]

在 windows 上:

set DEBUG=minecraft-protocol
node your_script.js

第三方插件

mineflayer 支持插件;任何人都可以创建一个插件,在 mineflayer 之上添加更高级别的 API。

最新和最有用的有:

  • pathfinder - 具有许多可配置功能的高级 A* 寻路
  • prismarine-viewer - 简单的在线区块查看器
  • web-inventory - 在线背包查看器
  • statemachine - 用于更复杂机器人行为的状态机 API
  • Armor Manager - 自动护甲管理
  • Collect Block - 快速简单的块收集 API
  • Dashboard - mineflayer bot 的前端仪表板
  • PVP - 用于基本 PVP 和 PVE 的简单 API
  • auto-eat - 自动进食
  • Auto Crystal - 自动放置和破碎结
  • Tool - 一个具有高级API的工具/武器自动选择工具的工具
  • Hawkeye - 一个使用自动瞄准弓的工具
  • GUI - 简化了嵌套箱子GUI窗口的导航和管理
  • Projectile - 以投射物为基础的战斗的可配置插件

也可以看看这些 :

正在使用 mineflayer 的项目

测试

完整测试

运行

npm test

测试指定版本

运行

npm mocha_test -- -g <version>

其中 <version> 表示 minecraft 版本号 如 1.12, 1.15.2...

测试指定测试脚本

运行

npm mocha_test -- -g <test_name>

其中 <test_name> 是测试名称,例如 bed, useChests, rayTrace...

示例

npm run mocha_test -- -g "1.18.1.*BlockFinder"

进行 1.18.1 寻路测试

许可证

MIT