Пишем бота на 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 (Подключение бота к серверу)

Первым делом необходимо подключить библиотеку.

const mineflayer = require("mineflayer");

У бота существует множество параметров. К примеру: host, port, username, password,version и auth. Мы будет пользоваться: host, port, username и version. host, отвечает за IP, на который будет заходить бот. В нашем случае это localhost. Параметр port, мы с вами узнали выше. Каждый раз, когда заходите на сервер port меняется. Username отвечает за то, какой никнейм будет у бота. В version, поставим 1.18.2. При установленном значении false , версия будет выбрана автоматически.

const mineflayer = require("mineflayer")

const bot = mineflayer.createBot({ host: "localhost", port: "4201", version: "1.18.2", username: "MyBot" })

Для того , чтобы бот зашёл на сервер в Терминале пишем команду: node mybot.js.

Часть 3 (Первые функции)

Научим нашего бота говорить. При появлении в мире, в чате появится сообщение : «Привет мир».

bot.once('spawn', function () { bot.chat('Привет мир!'); });

При вызове ивента 'spawn', вызывается метод chat и бот выводит сообщение в чат. Список ивентов и методов.

Часть 4 (Общение с ботом в чате)

Научим нашего бота отвечать на наши сообщения в чате.

bot.on('chat', function Hi (username,message) { if(username === "MyBot") return; if (message === "Ты бот?" && username === "Sergey") { setTimeout(() => bot.chat(username + " , нет я не бот"), 5000); } else { if(message !== "Ты бот?") return; setTimeout(() => bot.chat(username + " , я тебя не знаю"), 5000); }});

В данном случае используется ивент, но уже с двумя параметрами: username и message. Когда мы пишем в чат «Ты бот?» , бот проверяет сообщение и выводит текст «username (ник игрока) , я не бот». Отвечать бот на сообщения будет каждые 5 сек. Сделать это можно с помощью планирования вызова setTimeout().

Часть 5 (Следим за сервером от лица бота)

Чтобы следить за сервером от лица нам поможет библиотека: prismarine-viewer.

Устанавливаем её const mineflayerViewer = require('prismarine-viewer').mineflayer

Далее добавляем запуск Viewer на порте 3007. В дальнейшем мы будем подключаться именно через этот порт.

bot.once('spawn',() =>{ mineflayerViewer(bot,{ port:3007, firstPerson:true, viewDistance: "25"})})

После того , как бот подключится к серверу, мы переходим в браузер и пишем localhost:3007. Готово!

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

bot.on('chat',(username,message)=>{ if(username === bot.username) return switch (message){ case 'Спать': goToSleep() break case 'Вставай': wakeUp() break} }); bot.on('sleep',()=>{ bot.chat('Спокойной ночи') }); bot.on('wake',()=>{ bot.chat('Доброе утро') }); async function goToSleep() { const bed = bot.findBlock({ matching: block => bot.isABed(block) }) if (bed) { try { await bot.sleep(bed) bot.chat("Я сплю") } catch (err) { bot.chat(`Я не могу уснуть: ${err.message}`) } } else { bot.chat('По близости нет кровати') } } async function wakeUp() { try { await bot.wake() } catch (err) { bot.chat(`Я не могу проснуться: ${err.message}`) } }

По команде в чате «Спать», будет вызываться метод goToSleep(), бот ляжет на кровать и выведет в чат «Спокойной ночи». Если кровати не будет рядом, выводится сообщение «Поблизости нет кровати», а если рядом будут враждебные мобы , то «Я не могу уснуть: (причина)».

По команде в чате «Вставай», будет вызываться метод wakeUp и бот соответственно встанет с кровати и в чат выводится сообщение «Доброе утро».

Часть 7 (Выход бота с сервера)

Реализовать выход бота с сервера довольно просто. В этом нам поможет метод quit().

Приписываем к коду выше ещё один case и команду 'Выйди'. После того, как мы напишем в чат данное слово, бот сразу выйдет с сервера.

case 'Выйди': bot.quit() break

Часть 8 (Забираем предметы у бота из инвентаря)

По команде в чате «Drop», бот будет скидывать предметы, находящиеся в инвентаре. Если скидывать нечего, то в терминал выводится сообщение «У меня пусто»

bot.on('chat',function (username,message){ if(username === "MyBot") return; if (message === "Drop" && username === "Sergey"){ function tossNext(){ if(bot.inventory.items().length === 0) { console.log("У меня пусто") } else { const item = bot.inventory.items()[0] bot.tossStack(item,tossNext) } } tossNext() }});

Часть 9 (Autoclicker)

Для начала, подключаем библиотеку : npm install --save mineflayer-autoclicker. Используем уже известный нами ивент 'chat'. По команде «Start» запустится метод bot.autoclicker.start(), а по команде «Stop» bot.autoclicker.stop().

bot.on('spawn', function (){ bot.loadPlugin(require("mineflayer-autoclicker")) })bot.on('chat', function (usrername, message){ if(message === "Start") { bot.autoclicker.start() } if(message === "Stop") { bot.autoclicker.stop() } });

Cторонние плагины:

Mineflayer поддерживает сторонние плагины. С помощью них Вы можете добавить новые методы API:

  • pathfinder - Поиск пути с помощью координат

  • prismarine-viewer - Простой web клиент для отслеживания активного чанка

  • web-inventory - Веб клиент для взаимодействия с инвентарем

  • statemachine - API с более сложной структурой для ботов

  • Armor Manager - Автоматическое взаимодействие с экипировкой

  • Collect Block - Простой способ для подбора блоков

  • Dashboard - Панель управления для бота

Источник: https://habr.com/ru/post/695372/


Интересные статьи

Интересные статьи

Для авиаотрасли 2020 год стал худшим за всю историю ее существования. Из-за COVID-19 более чем на половину сократилось воздушное сообщение, количество маршрутов и общая выручка. Черный лебедь в белой ...
ВведениеДобрый день, уважаемые коллеги.В части 1 мы начали краткий обзор   вариантов   построения современных систем видеонаблюдения, место серверов и регистраторов в них.По отзыва...
Всем хочется получать пассивный доход. Поэтому и пришла идея написать правильного бота, способного зарабатывать на бирже. Как это сделать? К вашему вниманию подробный тут...
Продолжаем рассказывать вам об интересных работодателях в нашей рубрике «Где работать в ИТ». В новом выпуске — «Кавычки» — компания с новосибирскими корнями и полностью р...
Вступление Реальная реверберация происходит в рабочей камере, когда генерируемый звук отражается от стен, мебели, людей или любого другого объекта в сложном трехмерном пространстве. Естественный...