前言
近期沉迷 MC 生存服,经常会有挂机的需求,但我玩的服务器没有假人插件,自己开个客户端又卡,还得 24h 在线,遂寻找解决方案
对于挂机需求而言,基本上只需要放一个无头客户端在服务器上即可满足需求
INFO
本地服务器:CentOS 8
目标服务器:Paper 1.21.6
无头客户端的选择
- FishingBot
对于简单的仅需挂机需求,FishingBot 即可满足需求,这是一个用于 Minecraft 自动钓鱼的机器人。从技术上讲,它是一个无头 Minecraft 客户端,因此无需运行 Minecraft 实例
虽然说是为钓鱼挂机而设计的,但其实可以简单当成一个纯挂机的假人使用
其部署也堪称是无脑化,几乎是开袋即食
- Mineflayer
对于更高级的操作,可以使用 Mineflayer,这是一个基于 JavaScript API 开发 Minecraft 机器人,能够完成许多复杂的操作,但需要具有一点编程基础
下文将基于 Mineflayer 进行展开
环境搭建
安装 Node.js
1 | yum install -y nodejs |
检查 Node.js 版本
1 | node -v |
需要 Node.js 版本至少为 18 以上
部署
新建一个文件夹
1 | mkdir Mineflayer |
新建一个 npm 包
1 | npm init |
随后一路回车即可
安装 Mineflayer
1 | npm install mineflayer |
小试牛刀
先让我们写一个最简单的机器人
安装完成后,新建一个 index.js
,随后输入
1 | const mineflayer = require('mineflayer') // 导入 mineflayer 库并存储在变量 mineflayer 中 |
随后试运行一下
1 | node index.js |
应该会有如下输出
1 | To sign in, use a web browser to open the page https://www.microsoft.com/link and use the code ABCDEFGH or visit http://microsoft.com/link?otc=ABCDEFGH |
可以看到代码是 ABCDEFGH
打开 https://www.microsoft.com/link,对于使用第三方启动器游玩的人来说应该很熟悉了,输入代码登录微软账户即可
登录完成后控制台应有如下输出
1 | [msa] Signed in with Microsoft |
打开 Minecraft,进入服务器,可以看到刚刚新建的 Bot 已经在服务器里了
现在这个 Bot 除了会进入服务器以外没有任何功能,想让它实现各种奇怪的功能,则需要再继续深入
相关教程
油管官方教程:
B 站搬运:
示范
攻击周围的怪物
一个会主动攻击周围怪物的 Bot 适用于刷怪塔
在 index.js
内增加以下内容
1 | // ============= |
随后运行
1 | node index.js |
可以看到机器人会攻击周围的怪物了
WARNING
Mineflayer 是通过获取周围怪物的标签信息,然后直接根据标签去攻击怪物,这意味着其与需要将准星对准怪物,然后左键攻击怪物的正常 Minecraft 客户端完全不同——他可以做到以更大的攻击范围,无需看向怪物乃至背对怪物都能攻击到怪物,甚至能够穿墙攻击,相当于杀戮光环 请务必对 Bot 加以限制,以确保你不是在开发外挂
让 Bot 转圈
突发奇想想让纯挂机的 Bot 转圈,于是便有了这个
在 index.js
内增加以下内容
1 | // ====== |
随后运行
1 | node index.js |
这个 Bot 就能像直升机一样转的飞起
当然,这个功能和 # 攻击周围的怪物 里的看向怪物互斥
(谁家 Bot 又能转又能看怪物的
保护 Bot 的安全
让 Bot 在饥饿值或生命值过低时自动退出来保证安全
在 index.js
内增加以下内容
1 | // ========== |
自动重连机制
当 Bot 掉线时能够自动重连回服务器
完整的 index.js
代码如下
1 | const process = require('process'); |