mineflayer-flowcraft
v0.1.0
Published
Scenario engine for Mineflayer using draw.io diagrams
Maintainers
Readme
FlowCraft — сценарный движок для Mineflayer на основе draw.io
Обзор
FlowCraft позволяет управлять ботом через блок‑схемы draw.io: события запускают цепочки действий, поддерживаются ветвления, циклы и переменные. Бот работает на базе Mineflayer, что обеспечивает стабильный высокоуровневый API.
Возможности
- Сценарии из диаграмм draw.io
- События: появление/смерть бота, открытие/закрытие окон и др.
- Цепочки действий с условиями (ДА/НЕТ), циклами и задержками
- Команды бота (инвентарь, хотбар, чат, действия)
- Переменные (создание, арифметика, подстановка в сообщения)
- Расширяемая система команд (классы от BaseCommand)
Требования
- Node.js LTS (16+)
Установка
npm iПример запуска (как библиотека)
const mineflayer = require('mineflayer');
const { FlowCraft } = require('flowcraft');
// Создаём оффлайн-бота (без подключения к серверу)
const bot = mineflayer.createBot({
host: 'localhost',
port: 25565,
username: 'FlowBot',
version: '1.19.2'
});
// Подключаем FlowCraft
new FlowCraft(bot, { scriptPath: 'script.drawio' });Как это работает
- При логине бот читает
script.drawio, извлекает «облака» (переменные) и сохраняет вbot.variable. - События (например, «Бот появился», «Бот умер», «Инвентарь открыт/закрыт») ищутся в диаграмме и превращаются в цепочку действий.
- Цепочка исполняется последовательно:
- строки интерпретируются как команды;
- поддерживаются задержки вида
кд: 1000(мс); - условия
если: ...с веткамиДА/НЕТ; - повторы
повторить: Nиповторить: бесконечно.
В бесконечных циклах обязательно используйте
кд:внутри тела, чтобы не перегружать сервер.
Диаграммы draw.io
- Событие задаётся узлом с текстом, содержащим название события (например,
Бот появился). - Рёбра без подписи — переход по цепочке.
- Узлы со значениями:
- команды (см. ниже);
- условие:
если: var == value→ дальше узлыДАиНЕТ; - цикл:
повторить: Nилиповторить: бесконечно; - задержка:
кд: 1000(мс).
- Облака (shape=cloud) для переменных:
имя = значение.
Команды (по умолчанию)
- Базовые:
выключитьсестьвстатьпкмкд: 1000— задержка в мс (внутренняя служебная команда)
- Инвентарь и хотбар:
слот: <number>— клик по слотухотбар: <0..8>— выбор слота хотбаразакрыть инвентарь
- Чат:
- Любая другая строка отправляется в чат, с подстановкой переменных вида
{name}
- Любая другая строка отправляется в чат, с подстановкой переменных вида
Переменные
- Объявление в облаках:
name = value - Арифметика:
name ++ numbername -- numbername ** numbername // number
- Подстановка в сообщениях:
Привет, {name}!
Примечания
- Для стабильной работы с бесконечными циклами добавляйте
кд:внутри тела цикла.
