You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JS模块创建的bot对象正确传递至另一个文件的类中

解决方法

1. 修复Walk类的变量引用错误

你在Walk类的构造函数中已经将传入的bot对象保存到了this.bot,但类方法里直接使用bot变量会导致未定义错误,必须全部替换为this.bot。同时需要补充mc-data依赖的导入,因为Movements需要它来识别游戏版本数据。

修改后的Walk类文件代码:

const { Movements, goals: { GoalNear, GoalFollow } } = require('mineflayer-pathfinder');
const mcData = require('minecraft-data')('1.19'); // 替换为你的MC版本号

class Walk {
    constructor(bot) {
        this.bot = bot;
    }

    // 到我这里来
    goToMe(username) {
        try {
            const player = this.bot.players[username].entity.position;

            this.bot.pathfinder.setMovements(new Movements(this.bot, mcData));
            this.bot.pathfinder.setGoal(new GoalNear(player.x, player.y, player.z, 0), 1);

            this.bot.chat('Иду на позицию'); 
        } catch (error) {
            console.log(error);
            this.bot.chat('error');
        }
    }

    // 跟着我
    followMe(username) {
        try {
            const player = this.bot.players[username].entity;

            this.bot.pathfinder.setMovements(new Movements(this.bot, mcData));
            this.bot.pathfinder.setGoal(new GoalFollow(player, 1), 1);

            this.bot.chat('Следую за вами');   
        } catch (error) {
            console.log(error);
            this.bot.chat('error');
        }
    }

    // 停止移动
    stopWalk() {
        try {
            this.bot.pathfinder.setGoal(null, 1);
            this.bot.chat('Стою');
        } catch (error) {
            console.log(error);
            this.bot.chat('error');
        }
    }
}

module.exports = Walk; // 导出类,供主文件导入

2. 完善主文件的bot初始化逻辑

主文件中需要确保加载pathfinder插件,并且在bot登录成功后实例化Walk类,将bot对象传入:

修改后的主文件代码:

const mineflayer = require('mineflayer');
const { pathfinder } = require('mineflayer-pathfinder');
const Walk = require('./Walk'); // 替换为你的Walk类文件路径

const bot = mineflayer.createBot({
    host: '127.0.0.1',
    port: 5000,
    username: 'bot',
});

// 加载pathfinder插件
bot.loadPlugin(pathfinder);

// 当bot登录成功后初始化Walk实例
bot.on('login', () => {
    const walkController = new Walk(bot);
    
    // 示例:调用方法,比如当收到玩家消息时触发
    bot.on('chat', (username, message) => {
        if (message === 'come') {
            walkController.goToMe(username);
        } else if (message === 'follow') {
            walkController.followMe(username);
        } else if (message === 'stop') {
            walkController.stopWalk();
        }
    });
});

// 处理bot错误
bot.on('error', (err) => {
    console.error(err);
});

3. 安装缺失的依赖

如果还没安装mc-data,需要执行命令安装:

npm install mc-data

内容的提问来源于stack exchange,提问作者Vyakoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 19:57:41