Пишем бота на JavaScript для Minecraft (1.8-1.18) / Часть 10-14

Здравствуйте, уважаемые читатели Хабра! Продолжаем писать бота для Minecraft(1.8 — 1.18) с помощью библиотеки mineflayer. С прошлыми уроками можете ознакомиться ТУТ.

Часть 10 (Взаимодействие с коровами)

Создаём асинхронную функцию async function startMilking(). После чего нашему объекту присваиваем фильтр. С помощью фильтра, определяем является ли корова взрослой. Если будет детёнышем, то бот молоко собрать не сможет. А также ставим дистанцию с которой бот будет собирать молоко, ставим < 5 блоков: e.position.distanceTo(bot.entity.position) < 5

bot.on('spawn', async function() {

await startMilking()

async function startMilking() {

setTimeout(async function() {

let nearbyCows = Object.values(bot.entities).filter(e => e.name == 'cow' && e.position.distanceTo(bot.entity.position) < 5 && !e.metadata[16]); let cow = nearbyCows[Math.floor(Math.random() * nearbyCows.length)]; await bot.lookAt(cow.position, false)

let empty_bucket = bot.inventory.items().filter(item => item.name == 'bucket')[0];

// Необязательный вывод в консоль

if(!empty_bucket) {console.log('[Предупреждение] В моем инвентаре нет пустого ведра');return startMilking();

await startMilking();},2000)

}});

Часть 11 (Значения еды, здоровья, опыта, уровня)

Введя в чат: Здоровье, Еда, Опыт, Уровень , будет выведено соответствующее сообщение.

bot.on('chat', function (username,message){

if(message === "Здоровье"){

bot.chat('У меня ' + bot.health.toFixed(0) + ' здоровье')}

if(message === "Еда"){

bot.chat(`У меня ` + bot.food + ` еды`)}

if(message === "Опыт"){

bot.chat("У меня " + bot.experience.points.toFixed(0) + " опыта" ) }

if(message === "Уровень"){

bot.chat('У меня ' + bot.experience.level.toFixed(0) + ' уровень') }});

Часть 12 (Автоматическая экипировка тотема)

Для начала необходимо установить плагин командой : npm i mineflayer-auto-totem --save.

Весь код:

bot.loadPlugin(autototem)

bot.on("physicsTick",async() =>{bot.autototem.equip()})

Возможно у вас возник вопрос, как данный плагин работает? Если у бота значение здоровья будет равняться 0 , то выполнится метод equip() и тотем автоматически появится в руке бота. Так будет до тех пор, пока все тотемы не закончатся.

Часть 13 (Радар)

Красным маркером отмечен бот, а зелёным игрок.

Напишем следующий код:

const radarPlugin = require('mineflayer-radar')(mineflayer);

radarPlugin(bot, options);

После чего нажимаем ПКМ на 'mineflayer-radar', и выбираем первый пункт, чтобы установить плагин. Запустим нашего бота и в консоль будет выведен порт для подключения, запоминаем его. В моём случае это 22355.

Переходим в браузер и пишем localhost:22355. Радар успешно работает.

Часть 14 (Web-инвентарь)

Для начала скачаем плагин, впишем в терминал npm install mineflayer-web-inventory.

const inventoryViewer = require('mineflayer-web-inventory')

inventoryViewer(bot)

После запуска бота пишем в браузере localhost:3000 и наблюдаем за инвентарём. Также можно изменить параметры плагина, используя следующий код.

let options = { port: PORT,webPath: PATH,express: EXPRESS,app: APP, http: HTTP,io: IO,startOnLoad: BOOLEAN,windowUpdateDebounceTime: INT}

inventoryViewer(bot, options)

 

Источник

Читайте также