首页 > 解决方案 > 如何让 Mineflayer (Minecraft Bot) 单击像 Sign 这样的块

问题描述

我正在尝试制作一个名为 Mineflayer 的 Minecraft 机器人,单击一个块,在本例中为“Sign Block”。在这种情况下,我也无法处理 Vec3。简而言之:我怎样才能让机器人点击标志块。

我已经尝试参考 Mineflayer 的官方文档,但根本没有解释。我也尝试过询问一些使用 Mineflayer 的人,但这些都不能帮助我。下面是代码,以及我面临的错误。

const mineflayer = require('mineflayer')
const Vec3 = require('vec3');

const bot = mineflayer.createBot({
  host: 'localhost',
  port: 25564,
  username: 'Minecharmer',
  version: '1.12.2'
})

let blockAt = (x, y, z) => blockAt(new Vec3(x, y, z));
let blockAtVec3 = (v) => bot.blockAt(v);
let blockClick = (x, y, z, callback) => {
     bot.activateBlock(blockAt(x, y, z), callback);
}

bot.on('chat', (username, message) => {
  if (username == 'Username' && message == 'clickblock') {
    startClicking();
  }
})

function startClicking() {
  blockClick(-74, 65, 254, () => {
      console.log('Clicked block!')
      startClicking();
  });
}
RangeError: Maximum call stack size exceeded

标签: javascriptnode.jsminecraft

解决方案


为您的 startClicking 函数添加延迟。


推荐阅读