Здравствуйте, уважаемые читатели Хабра! Продолжаем писать бота для 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)
ссылка на оригинал статьи https://habr.com/ru/post/701056/
Добавить комментарий