ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Mineflayer 快速上手指南:用 JavaScript 构建稳定、强大的 Minecraft 机器人

Mineflayer 快速上手指南:用 JavaScript 构建稳定、强大的 Minecraft 机器人 游戏开发【免费下载链接】mineflayerCreate Minecraft bots with a powerful, stable, and high level JavaScript API.项目地址https://gitcode.com/gh_mirrors/mi/mineflayer点击查看免费下载Mineflayer 是一个面向 Node.js 的高阶 Minecraft 机器人 API它让你可以用十几行代码就能让一个机器人登录任意 Minecraft 服务器——自动聊天、挖掘方块、攻击生物、骑乘矿车、管理容器与附魔台甚至用浏览器实时观察它的一举一动。读完本文你将掌握 mineflayer 的安装方式、createBot核心配置、经典实战示例、底层模块架构以及如何用官方测试体系验证某个 Minecraft 版本下机器人的行为。本文内容以 docs/tr/README_TR.md 为主线并结合仓库源码index.js、lib/loader.js、lib/version.js 与 examples 目录进行源码级佐证。Mineflayer 概览与核心特性Mineflayer 为 JavaScript 开发者提供了一套「强大、稳定、高阶」的 Minecraft 机器人 API。按照官方特性清单其能力覆盖多版本支持原文档声明支持 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 等版本。当前仓库的 lib/version.js 中testedVersions数组已经扩展到 1.21.x 乃至 26.1说明该项目的版本覆盖面仍在持续更新。实体信息与追踪感知并追踪周围的生物与玩家包括矿车等载具。方块信息能够「环视四周」进行方块查询定位某个方块仅需毫秒级耗时对应bot.findBlock能力。物理与移动完整处理游戏内的「虚拟碰撞箱」支持行走、跳跃、潜行等控制。攻击与载具攻击生物、骑乘并操控载具。背包管理读写、排序、装备物品。方块交互容器工作台、箱子、发射器、附魔台等方块窗口。挖放方块按需挖掘与放置方块。状态感知获取生命值、判断是否下雨等环境状态。物品使用与方块激活右键使用物品、激活方块。聊天接收并发送聊天消息。环境要求与安装安装 mineflayer 只需一行命令npm install mineflayer关于 Node.js 版本原文档写的是「Node.js 14 或以上」但需要注意当前仓库的 package.json 中engines字段已声明node: 22并且 index.js 在启动时会主动校验运行环境——若 Node 主版本小于 18会直接打印提示并要求升级到 22.x 以上后退出。也就是说以当前仓库为准请使用 Node.js 22 或更高版本来运行 mineflayer 项目。安装完成后仓库的package.json中main指向index.jsindex.js再导出 lib/loader.js 中的createBot函数——这是你与 mineflayer 打交道的第一入口。文档与 Wiki 导航原文档为使用者准备了完整的学习路径以下链接均已转换为仓库根目录下的相对路径链接说明教程从零学习 Node.js 与 mineflayerFAQ常见问题解答API 文档 与 不稳定 API关于 API 的全部细节更新历史变更记录列表examples 目录仓库内所有 mineflayer 示例如果你有意参与贡献请先阅读 CONTRIBUTING.md 以及 prismarine-contribute 指南后者为外部项目可在原文档中查看其链接。快速开始创建你的第一个机器人createBot 配置项速查createBot(options)是机器人的唯一入口。仓库 lib/loader.js 中为未传入的选项提供了默认值结合原文档注释常用配置如下配置项默认值说明host必填服务器 IP 地址示例中为localhostusernamePlayerMinecraft 用户名或正版账号对应的邮箱地址password可选Minecraft 密码离线盗版服务器可留空port25565服务器端口仅当非默认端口时需要显式指定versionfalse不指定时自动探测服务器版本也可强制指定如1.20.1authmojang账号认证方式使用 Microsoft 账号时改为microsofthideErrorsfalse为true时隐藏警告与错误日志输出logErrorstrue是否在error事件时打印错误loadInternalPluginstrue是否加载内置插件集合respawntrue死亡后是否自动重生需要注意version的自动探测逻辑从 lib/loader.js 可以看到连接建立后 mineflayer 会读取服务器协商出的协议版本再通过prismarine-registry加载对应版本数据若服务器版本超出仓库支持范围低于 lib/version.js 中的oldestSupportedVersion或高于latestSupportedVersion会直接抛出「版本不受支持」的错误。鹦鹉示例让机器人复读你的话原文档给出的入门示例是一个会模仿复读玩家聊天内容的「鹦鹉」机器人const mineflayer require(mineflayer) const bot mineflayer.createBot({ host: localhost, // 服务器 IP 地址 username: emailexample.com, // Minecraft 用户名 / 邮箱地址 password: 12345678 // Minecraft 密码离线服务器可留空 // port: 25565, // 仅当端口不是 25565 时使用 // version: false, // 需要指定版本时取消注释并填入版本号 // auth: mojang // 使用 Microsoft 账号时改为 microsoft }) bot.on(chat, (username, message) { if (username bot.username) return bot.chat(message) }) // 将错误与被踢出服务器的原因打印到控制台 bot.on(kicked, console.log) bot.on(error, console.log)这段代码演示了两个最重要的概念bot.on(chat, ...)事件监听每当有玩家说话回调会收到说话者username与消息内容通过if (username bot.username) return避免机器人复读自己的发言再调用bot.chat(message)把消息原样发回聊天频道。错误兜底kicked事件携带被服务器踢出的原因error事件捕获连接层错误。在 lib/loader.js 中可以看到connect、error、end等底层minecraft-protocol客户端事件会被重新转发为 bot 上同名事件因此你的监听器能拿到完整信息。用 prismarine-viewer 实时观察机器人调试机器人时「看不见它在干什么」是最头疼的问题。原文档推荐使用prismarine-viewer在浏览器标签页里实时观察 bot 的视角。npm install prismarine-viewer然后在 bot 代码中加入const { mineflayer: mineflayerViewer } require(prismarine-viewer) bot.once(spawn, () { mineflayerViewer(bot, { port: 3007, firstPerson: true }) // port: 视频流端口firstPerson: true 为第一人称视角false 为俯视鸟瞰视角 })bot.once(spawn, ...)保证在机器人成功进入服务器后才启动可视化。仓库中的 examples/viewer/viewer.js 提供了完整可运行版本其命令行用法为node viewer.js host port [name] [password]启动后打开浏览器访问http://localhost:3007即可看到画面其中默认使用firstPerson: false的鸟瞰视角。原文档还提到作者提供的 YouTube 视频教程展示了「live 画面」的效果并附有四个教学视频链接含配套源码仓库这些外部资源可在原文档 docs/tr/README_TR.md 中直接查看。更多实战示例从示例代码理解 API 用法原文档用一张示例清单展示了各种能力以下链接均已转换为仓库根目录下的相对路径示例说明examples/viewer在浏览器中观察 bot 行动examples/pathfinder让 bot 自动寻路到指定位置A* 寻路examples/chest.js使用箱子、熔炉、发射器与附魔台examples/digger.js制作一个能挖方块的机器人examples/discord.js把 mineflayer bot 接入 Discordexamples/jumper.js学习移动、跳跃、骑乘载具、攻击附近生物examples/ansi.js在控制台以完整颜色显示聊天消息examples/guard.js制作一个保护区域免受怪物入侵的守卫 botexamples/multiple_from_file.js从账号文件中批量登录多个 bot仓库的 examples 目录还包含更多示例如attack.js、fisherman.js、farmer.js、auto-eat.js、elytra.js等以下挑几个关键示例深入说明其源码实现挖掘方块diggerexamples/digger.js 演示了「挖掉脚下方块、再用泥土搭柱子返回地面」的完整流程。核心调用链是const target bot.blockAt(bot.entity.position.offset(0, -1, 0)) // 取脚下方块 if (target bot.canDigBlock(target)) { await bot.dig(target) // 挖掘等待完成 }其中bot.entity.position.offset(0, -1, 0)表示把自身坐标沿 Y 轴下移 1 格bot.canDigBlock用于校验能否挖掘await bot.dig(target)是异步挖掘操作。示例还展示了bot.waitForChunksToLoad()等待区块加载完毕、bot.setControlState(jump, true)控制跳跃与bot.placeBlock(referenceBlock, vec3(0, 1, 0))放置方块等 API这些正好对应原文档特性清单中的「物理与移动」「挖放方块」能力。移动、跳跃与骑乘jumperexamples/jumper.js 通过聊天命令控制机器人展示了控制状态与载具 API 的典型用法bot.setControlState(forward, true)/bot.setControlState(back, true)等分别设置前进、后退、左右平移、疾跑、跳跃等控制状态bot.clearControlStates()一次清除全部。bot.attack(entity, true)攻击附近的实体bot.nearestEntity()获取最近的实体。bot.mount(entity)/bot.dismount()骑乘/离开载具如矿车。bot.moveVehicle(x, z)以向量参数操控载具的前进/后退/转向。bot.lookAt(position)让 bot 注视某个坐标示例中用它实现「死死盯着目标玩家」的效果。容器与方块窗口chestexamples/chest.js 覆盖箱子、末影箱、陷阱箱、熔炉、发射器与附魔台的完整交互bot.findBlock({ matching, maxDistance })按方块 ID 列表在指定距离内查找方块这正是「寻找方块仅需毫秒」特性的实现入口。bot.openContainer(block)打开箱子/发射器等容器返回的窗口对象支持containerItems()、withdraw(item.type, null, amount)取出、deposit(...)存入以及updateSlot、close事件。bot.openFurnace(block)熔炉窗口支持putInput/putFuel/takeOutput并可通过furnace.fuel、furnace.progress读取燃料与烧炼进度。bot.openEnchantmentTable(block)附魔台支持putTargetItem、putLapis放入青金石、enchant(choice)选择附魔项与takeTargetItem取回成品。批量账号登录multiple_from_fileexamples/multiple_from_file.js 读取一个每行格式为username:password的账号文件为每个账号创建一个 bot并用setTimeout按interval默认 500ms错峰登录避免短时间内并发连接被服务器拒绝。它利用Promise.allSettled收集成功/失败的登录结果并统计成功数量。模块化架构Mineflayer 的构建基石原文档明确强调mineflayer 的大量活跃开发发生在它依赖的一批小型 npm 包中这一设计理念被作者称为 The Node Way™。When applications are done well, they are just the really application-specific, brackish residue that cant 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《how I write modules》也就是说mineflayer 本体只保留「应用特定」的胶水逻辑而把可复用的底层能力拆分为独立模块。这些模块大部分正是当前仓库 package.json 中声明的dependencies模块说明仓库依赖佐证minecraft-protocolMinecraft 数据包解析与协议层负责与服务器通信minecraft-protocol: ^1.67.0minecraft-data关于 Minecraft 的数据集数据库方块、物品、实体、版本等minecraft-data: ^3.114.0prismarine-physicsMinecraft 生物的物理引擎prismarine-physics: ^1.11.1prismarine-chunk区块chunk数据存储prismarine-chunk: ^1.41.0node-vec3带单元测试的 3D 向量数学库vec3: ^0.1.7prismarine-block用数据完整描述一个 Minecraft 方块prismarine-block: ^1.22.0prismarine-chatMinecraft 聊天消息解析器从 mineflayer 中拆分出来prismarine-chat: ^1.7.1node-yggdrasil与 Mojang 账号认证体系交互的 Node.js 库认证逻辑由 minecraft-protocol 依赖链引入prismarine-worldPrismarine 世界的核心库prismarine-world: ^3.6.0prismarine-windowsMinecraft 窗口容器界面管理库prismarine-windows: ^2.9.0prismarine-item用数据完整描述一个 Minecraft 物品prismarine-item: ^1.17.0prismarine-nbt面向 node-minecraft-protocol 的 NBT 解析器prismarine-nbt: ^2.0.0prismarine-recipeMinecraft 合成配方库prismarine-recipe: ^1.5.0prismarine-biome用数据完整描述一个 Minecraft 生物群系prismarine-biome: ^1.1.1prismarine-entity用数据完整描述一个 Minecraft 实体prismarine-entity: ^2.5.0此外从 lib/loader.js 的源码结构看mineflayer 还把功能拆成约 40 个内置插件plugin如blocks、chat、chest、digging、physics、health、inventory、craft、fishing、villager、anvil等每个插件对应 lib/plugins 目录下的一个文件。createBot在初始化时会先通过pluginLoader加载插件再合并内置插件与用户通过options.plugins传入的外部插件lib/loader.js。这套「核心 插件」的架构正是后续「第三方插件生态」得以繁荣的根基。调试技巧开启协议层日志遇到连接类问题时可以借助DEBUG环境变量输出协议层的调试日志DEBUGminecraft-protocol node [...]Windows 环境下使用set命令set DEBUGminecraft-protocol node your_script.js设置后控制台会打印 minecraft-protocol 的收发数据包等详细信息是排查「连不上服务器」「版本不匹配」「数据包解析失败」类问题最直接的抓手。第三方插件生态mineflayer 原生支持插件机制——任何人都可以编写插件在 mineflayer 之上叠加更高阶的 API。原文档列出了一些较为活跃、实用的第三方插件均为外部独立项目链接见原文档插件用途pathfinder带大量可配置项的高级 A* 寻路prismarine-viewer简易的浏览器区块可视化器即上文 viewer 演示所用web-inventory基于 Web 的背包可视化器statemachine面向更复杂 bot 事件流的状态机 APIArmor Manager自动穿脱/管理护甲Collect Block简单快速的方块收集 APIDashboard面向 mineflayer 机器人的控制面板PVP面向 PVP/PVE 的简易战斗 APIauto-eat自动进食Tool自动选择合适工具的高阶 APIHawkeye弓箭自动瞄准弹道计算API原文档还提到更多可关注的项目包括基于 canvas 与 socket.io 的浏览器雷达界面radar、3D 世界方块查找blockfinder、放置/挖掘方块铺路抵达目标scaffold、聊天式自动登录auto-auth、伤害来源归因分析Bloodhound、获取服务器 TPStps、拍摄世界全景照片panorama。这些项目均为外部链接请在原文档 docs/tr/README_TR.md 中查看对应地址。使用 Mineflayer 构建的开源项目原文档还列举了一批基于 mineflayer 的真实项目可为你设计自己的机器人提供参考rbot建筑类机器人示例视频包含「建造螺旋楼梯」「模仿建筑结构」等场景。Helperbot辅助型机器人。mineflayer-voxel结合 voxel.js 可视化 bot 行为。Skynet把 bot 活动上报到在线 API。MinecraftChatMinecraft 网页聊天工具。Cheese Bot基于 node-webkit、带干净界面的插件式 bot。Chaoscraft使用遗传算法的 Minecraft bot。minetelegram基于 mineflayer 与 telegraf 的 Minecraft↔Telegram 桥接。mineflayer-builder在生存模式下按 Minecraft 蓝图schematic建造建筑的项目。更多使用 mineflayer 的项目可以通过原文档给出的 GitHub dependents 页面查看。测试验证特定版本下的机器人行为仓库为每个版本都准备了完整的集成测试体系原文档给出了三条核心测试命令运行全部测试npm test根据 package.json 的 scripts 定义npm test实际会先执行pretest中的 lintstandardstandard-markdown代码风格检查再通过mocha --reporter ./test/common/durationsReporter.js --exit运行测试套件。测试特定 Minecraft 版本npm test -- -g version其中version需要是一个 Minecraft 版本号例如1.12、1.15.2。这与 lib/version.js 中testedVersions列出的版本一一对应当前仓库已覆盖 1.8.8 至 1.21.x 及 26.1。测试特定功能npm test -- -g test_name其中test_name是测试用例名例如bed、useChests、rayTrace。仓库 test/externalTests 目录下就对应着这些测试文件如bed.js、useChests.js、rayTrace.js、digAndBuild.js、scoreboard.js等你可以直接阅读它们来了解某个功能在真实服务器上的预期行为——这也是学习 mineflayer API 的极佳素材。许可证Mineflayer 使用 MIT 许可证允许自由使用、修改与再分发。小结从npm install mineflayer到createBot一行登录再到dig、openContainer、mount等实战 API以及「核心 插件」的模块化架构与可版本化的测试体系本文覆盖了 docs/tr/README_TR.md 的全部要点并用仓库源码进行了印证。下一步建议通读 docs/api.md 与 docs/tutorial.md并对照 examples 目录逐个运行示例亲手打造你的第一个 Minecraft 机器人。赞分享游戏开发【免费下载链接】mineflayerCreate Minecraft bots with a powerful, stable, and high level JavaScript API.项目地址https://gitcode.com/gh_mirrors/mi/mineflayer点击查看免费下载相关推荐终极指南如何用Mineflayer快速构建智能Minecraft机器人Mineflayer是一个强大的Node.js库专门用于创建智能Minecraft机器人。通过稳定、高级的JavaScript API你可以轻松构建能够游戏开发Mineflayer 新手实战教程从零开始用 JavaScript 创建 Minecraft 机器人Mineflayer 新手实战教程从零开始用 JavaScript 创建 Minecraft 机器人 本篇教程是 Mineflayer 项目官方入门指南的中文游戏开发探索Mineflayer构建智能Minecraft机器人完全指南探索Mineflayer构建智能Minecraft机器人完全指南 你是否曾想象过在Minecraft世界中拥有一个不知疲倦的助手一个能够自动收集资源、建造复游戏开发上一篇抖音内容一键入库douyin-downloader 无水印批量下载的 10 分钟上手路线下一篇从翻车现场到一键直链网盘直链下载工具用起来到底有多省心创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表