Skip to content

Latest commit

 

History

History
238 lines (172 loc) · 14.1 KB

README_ZH_CN.md

File metadata and controls

238 lines (172 loc) · 14.1 KB

Mineflayer

NPM version Build Status Discord Gitter Irc Issue Hunt

Try it on gitpod Open In Colab

🇺🇸 英语 🇷🇺 俄语 🇪🇸 西班牙语 🇫🇷 法语 🇹🇷 土耳其语 🇨🇳 中文

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

路标

点击这个页面,看看目前我们有哪些 实用项目.

安装

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

然后在你创建的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@example.com', // 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在做什么

感谢 prismarin-viewer项目,它可以在浏览器窗口显示你的机器人正在做什么。
只需要运行 npm install prismane-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™

"当你很好的编写了一个应用程序,此时它的价值仅限于这些特定的需求。你要知道,真正好的、可重复使用的优秀组件都会升华到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。

最新和最有用的有:

也可以看看这些 :

  • radar - 使用 canvas 和 socket.io 的基于 Web 的雷达界面 YouTube 演示
  • blockfinder - 在 3D 世界中寻找方块
  • scaffold - 到达目标目的地,即使您必须建造或破坏块才能这样做 YouTube 演示
  • auto-auth - 基于聊天的bot身份验证
  • Bloodhound - 确定谁和什么对另一个实体的损害负责
  • tps - 获取当前的 tps(已处理的 tps)
  • panorama - 拍摄您的世界的全景图像

正在使用 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...

许可证

MIT