21 KiB
Mineflayer
| EN English | RU русский | ES Español | FR Français | TR Türkçe | ZH 中文 | BR Portuguese |
|---|
Создавайте ботов Minecraft с помощью мощного, стабильного и высокоуровневого JavaScript API, также можете использовать Python.
Первый раз используете Node.js? Начните с этого. Знаете Python? Посмотрите примеры на Python и попробуйте Mineflayer в Google Colab.
Возможности
- Поддержка 1.8, 1.9, 1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19 и 1.20.
- Поддержка энтити и их отслеживание.
- Вы можете полностью взаимодействовать с миром. Миллисекунды на поиск любого блока.
- Физика и управление.
- Атака энтити и использование транспортных средств.
- Взаимодействие с инвентарем.
- Взаимодействие с крафтом, сундуками, раздатчиками и чаровальными столами.
- Вы можете копать и строить.
- Мелкие функции, такие как отслеживание здоровья и погоды.
- Активация блоков и использование предметов.
- Взаимодействие с чатом.
Наши цели
Узнайте про наши текущие задачи.
Установка
Сначала установите Node.js >= 18 из nodejs.org, затем выполните:
npm install mineflayer
Чтобы обновить пакет mineflayer (или любой Node.js) и его зависимости, используйте npm update --depth 9999
Документация
| Ссылка | Описание |
|---|---|
| Обучение | Знакомство с Node.js и Mineflayer |
| ЧАВО | Появился вопрос? Найдите ответ здесь. |
| api_ru.md unstable_api.md |
Полное описание API |
| Обновления | Список изменений в обновлениях |
| Примеры | Примеры использования Mineflayer |
Сделать вклад в развитие Mineflayer
Прочитайте CONTRIBUTING_RU.md и prismarine-contribute
Использование
Видео
Обучающее видео, объясняющее базовый процесс настройки бота, можно найти здесь
Если Вы хотите узнать больше, посмотрите другие видео здесь, а также посмотреть исходный код ботов
Перед запуском
Если версия не указана, она будет выбрана автоматически, исходя из поддерживаемых сервером версии.
Без указания auth будет выбран вход через mojang.
Простой пример
const mineflayer = require('mineflayer')
const bot = mineflayer.createBot({
host: 'localhost', // айпи майнкрафт сервера
username: 'email@example.com', // ник бота
auth: 'microsoft' // для пираток нужно заменить на 'offline'
// port: 25565, // прописывайте, если порт не 25565
// version: false, // прописывайте, если нужна конкретная версия или снапшот (например: "1.8.9" или "1.16.5"), иначе версия будет выбрана автоматически
// password: '12345678' // прописывайте, если хотите использовать аутентификацию через пароль (может быть ненадёжно)
})
bot.on('chat', (username, message) => {
if (username === bot.username) return
bot.chat(message)
})
// Логирование ошибок и причин отключения от сервера:
bot.on('kicked', console.log)
bot.on('error', console.log)
Смотрите, что делает бот
Спасибо репозиторию prismarine-viewer, с помощью которого можно через браузер увидеть, что делает бот.
Установите его через npm install prismarine-viewer и добавьте это в код:
const { mineflayer: mineflayerViewer } = require('prismarine-viewer')
bot.once('spawn', () => {
mineflayerViewer(bot, { port: 3007, firstPerson: true }) // port - это порт сервера майнкрафт, если значение firstPerson: false, вы получите вид с высоты птичьего полета
})
После запуска, вы в прямом эфире сможете наблюдать за происходящим:
Больше примеров
| Пример | Описание |
|---|---|
| viewer | Отобразить через браузер вид от лица бота |
| pathfinder | Передвижение бота по координатам и не только |
| chest | Использование сундуков, печек, раздатчиков и чаровальных столов |
| digger | Пример для создания бота-шахтёра |
| discord | Создайте Discord бота |
| jumper | Научите бота передвигатся, прыгать, использовать средства пережвижения, а также атаковать |
| ansi | Отобразите чат вашего бота со всеми цветами, отображаемыми в вашем терминале |
| guard | Заставьте бота охранять определенную область от мобов |
| multiple-from-file | Добавьте текстовый файл с аккаунтами для запуска нескольких ботов |
Множество других примеров в данной папке
Модули
Большая часть разработки происходит внутри небольших пакетов npm, которые используются mineflayer.
Модули, из которых состоит Mineflayer:
| Модуль | Описание |
|---|---|
| minecraft-protocol | Парсинг пакетов Minecraft, аутентификация и шифрование |
| minecraft-data | Независимый от языка модуль, предоставляющий данные Minecraft для клиента и сервера |
| prismarine-physics | Взаимодействие с физикой |
| prismarine-chunk | Хранение чанков Minecraft |
| node-vec3 | Векторная обработка координат |
| prismarine-block | Взаимодействие с блоками и их данными |
| prismarine-chat | Парсер чата Minecraft (вырезано из Mineflayer) |
| node-yggdrasil | Библиотека для взаимодействия с системой аутентификации Mojang, известная как Yggdrasil |
| prismarine-world | Реализация миров для prismarine |
| prismarine-windows | Взаимодействие с GUI |
| prismarine-item | Взаимодействие с предметами и их данными |
| prismarine-nbt | Парсер NBT для node-minecraft-protocol |
| prismarine-recipe | Взаимодействие с рецептами крафта |
| prismarine-biome | Взаимодействие с биомами |
| prismarine-entity | Взаимодействие с сущностями |
Дебаг
Вы можете отлавливать ошибки с помощью переменной окружения DEBUG:
DEBUG="minecraft-protocol" node [...]
В Windows:
set DEBUG=minecraft-protocol
node your_script.js
Cторонние плагины:
Mineflayer поддерживает сторонние плагины. Любой желающий может создать плагин, который добавляет API ещё более высокого уровня поверх Mineflayer.
Наиболее обновлённые и полезные:
- pathfinder - Продвинутый A* поиск пути с множеством настраиваемых функций
- prismarine-viewer - Простой web клиент для просмотра чанков
- web-inventory - Веб клиент для взаимодействия с инвентарём
- statemachine - API для более сложного поведения бота
- Armor Manager - Автоматическое взаимодействие с бронёй
- Dashboard - Панель управления для бота
- PVP - Простой API для базовых PVP и PVE сражений
- Auto Eat - Автоматическое поедание пищи
- Auto Crystal - Автоматическое размещение и взрыв кристалов края
- Tool - Утилита для автоматического выбора инструмента/оружия с высокоуровневым API
- Hawkeye - Утилита для использования автоматического прицеливания из луков
- GUI - Взаимодействие с окнами по типу инвентаря, используя async/await
- Projectile - Получение необходимого угола запуска снарядов
- Movement - Плавные и реалистичные движения игрока, лучше всего подходящие для PvP
- Collect Block - API для простого способа для подбора блоков
Вы также можете изучить:
- radar - Веб радар, созданный с помощью
- auto-auth - Аутентификация на пиратских серверах
- Bloodhound - Отслеживание получаемого урона в пределах видимости
- tps - Получение TPS сервера
- panorama - Создание панорамных снимков вашего мира
- player-death-event - Создание события смерти игрока в Mineflayer.
Проекты, созданные с помощью Mineflayer
- Voyager - Открытый агент с большими языковыми моделями
- rom1504/rbot
- Darthfett/Helperbot
- vogonistic/voxel - Визуализация от первого лица бота, созданная с помощью voxel.js
- JonnyD/Skynet - Логирование активности игрока в онлайн-API
- MinecraftChat (последняя версия с открытым исходным кодом, созданная AlexKvazos) - Веб чат майнкрафт сервера
- Cheese Bot - Плагин с чистым GUI. Создан с помощью Node-Webkit. http://bot.ezcha.net/
- Chaoscraft - Бот Minecraft, использующий генетические алгоритмы, посмотрите эти видео
- hexatester/minetelegram - Мост между Minecraft и Telegram, созданный при помощи Mineflayer & Telegraf
- PrismarineJS/mineflayer-builder - Строит схемы в режиме выживания, сохраняя направление
- и многие другие - Все проекты, обнаруженные GitHub, в которых используется Mineflayer
Тестирование
Тестирование всего
Просто запустите:
npm test
Тестирование определённой версии
Запустите
npm run mocha_test -- -g <version>
где <version> означает версию, таких как 1.12, 1.15.2...
Тестирование определённой функции
Запустите
npm run mocha_test -- -g <test_name>
где <test_name> означает название проверки, таких как bed, useChests, rayTrace...
Пример
npm run mocha_test -- -g "1.18.1.*BlockFinder"
запустит тест BlockFinder на версии 1.18.1




