Пишем бота на JavaScript для Minecraft (1.8-1.18) / Часть 1-9
Почти каждый человек, играющий в Minecraft, мечтал, чтобы ресурсы в игре были бесконечными или за него их добывал кто-то другой. С помощью библиотеки Mineflayer и Node.js, можно создать бота.
Mineflayer
Mineflayer — высокоуровневое API написанное на Node. js. Официальная документация.
Часть 1 (Установка и настройка)
Скачиваем Node. js с официального сайта и прописывайте npm install mineflayer в консоль, чтобы установить API.
Далее необходимо создать mybot. js файл, где и будет храниться код для нашего бота.
Редактировать данный файл можно в любой среде разработке, но я рекомендую воспользоваться WebStorm.
Заходим в Minecraft, создаём новый мир и открываем его для сети. В чате появилось сообщение с нашим портом. Запоминаем его, так как он нам пригодится.
Часть 2 (Подключение бота к серверу)
Первым делом необходимо подключить библиотеку.
У бота существует множество параметров. К примеру: host, port, username, password,version и auth. Мы будет пользоваться: host, port, username и version. host, отвечает за IP, на который будет заходить бот. В нашем случае это localhost. Параметр port, мы с вами узнали выше. Каждый раз, когда заходите на сервер port меняется. Username отвечает за то, какой никнейм будет у бота. В version, поставим 1.18.2. При установленном значении false, версия будет выбрана автоматически.
Для того, чтобы бот зашёл на сервер в Терминале пишем команду: node mybot.js.
Часть 3 (Первые функции)
Научим нашего бота говорить. При появлении в мире, в чате появится сообщение: «Привет мир».
При вызове ивента «spawn», вызывается метод chat и бот выводит сообщение в чат. Список ивентов и методов.
Часть 4 (Общение с ботом в чате)
Научим нашего бота отвечать на наши сообщения в чате.
В данном случае используется ивент, но уже с двумя параметрами: username и message. Когда мы пишем в чат «Ты бот?», бот проверяет сообщение и выводит текст «username (ник игрока), я не бот». Отвечать бот на сообщения будет каждые 5 сек. Сделать это можно с помощью планирования вызова setTimeout().
Часть 5 (Следим за сервером от лица бота)
Чтобы следить за сервером от лица нам поможет библиотека: prismarine-viewer.
Устанавливаем её const mineflayerViewer = require(«prismarine-viewer»).mineflayer
Далее добавляем запуск Viewer на порте 3007. В дальнейшем мы будем подключаться именно через этот порт.
После того, как бот подключится к серверу, мы переходим в браузер и пишем localhost:3007. Готово!
Часть 6 (Взаимодействие с кроватью)
По команде в чате «Спать», будет вызываться метод goToSleep(), бот ляжет на кровать и выведет в чат «Спокойной ночи». Если кровати не будет рядом, выводится сообщение «Поблизости нет кровати», а если рядом будут враждебные мобы, то «Я не могу уснуть: (причина)».
По команде в чате «Вставай», будет вызываться метод wakeUp и бот соответственно встанет с кровати и в чат выводится сообщение «Доброе утро».
Часть 7 (Выход бота с сервера)
Реализовать выход бота с сервера довольно просто. В этом нам поможет метод quit() .
Приписываем к коду выше ещё один case и команду «Выйди». После того, как мы напишем в чат данное слово, бот сразу выйдет с сервера.
Часть 8 (Забираем предметы у бота из инвентаря)
По команде в чате «Drop», бот будет скидывать предметы, находящиеся в инвентаре. Если скидывать нечего, то в терминал выводится сообщение «У меня пусто»
Часть 9 (Autoclicker)
Для начала, подключаем библиотеку : npm install --save mineflayer-autoclicker. Используем уже известный нами ивент «chat». По команде «Start» запустится метод bot.autoclicker.start(), а по команде «Stop» bot.autoclicker.stop().
Cторонние плагины:
Mineflayer поддерживает сторонние плагины. С помощью них Вы можете добавить новые методы API:
- pathfinder — Поиск пути с помощью координат
- prismarine-viewer — Простой web клиент для отслеживания активного чанка
- web-inventory — Веб клиент для взаимодействия с инвентарем
- statemachine — API с более сложной структурой для ботов
- Armor Manager — Автоматическое взаимодействие с экипировкой
- Collect Block — Простой способ для подбора блоков
- Dashboard — Панель управления для бота