const mineflayer = require('mineflayer');
// Создаем бота
const bot = mineflayer.createBot({
host: 'localhost', // IP сервера
port: 25565, // Порт сервера
username: 'Bot', // Имя бота
version: '1.16.5' // Версия Minecraft
});
let mode = 'build'; // Режим работы бота
// Слушаем событие "spawn", когда бот появляется в мире
bot.on('spawn', () => {
console.log('Бот появился в мире');
setInterval(() => {
checkHealth();
if (mode === 'build') {
buildBlocks();
} else {
gatherResources();
}
}, 10000); // Каждые 10 секунд
});
// Функция для проверки здоровья бота
function checkHealth() {
if (bot.health < 5) {
console.log('Здоровье низкое, возвращаемся к спавну');
bot.chat('Я возвращаюсь к спавну!');
bot.navigate.to(bot.spawnPoint); // Возвращаемся к спавну
}
}
// Функция для строительства блоков
async function buildBlocks() {
const startX = bot.entity.position.x; // Начальная позиция X
const startY = bot.entity.position.y; // Начальная позиция Y
const startZ = bot.entity.position.z; // Начальная позиция Z
// Убедимся, что у бота есть блоки в инвентаре
const item = bot.inventory.items().find(i => i.name === 'stone'); // Измените на нужный тип блока
if (!item) {
console.log('У бота нет блоков для строительства');
return;
}
for (let i = 0; i < 10; i++) {
const targetPosition = bot.entity.position.offset(0, i, 0); // Позиция для строительства
await placeBlock(targetPosition, item); // Ставим блок
}
}
// Функция для установки блока
function placeBlock(position, item) {
return new Promise((resolve, reject) => {
bot.placeBlock(bot.blockAt(position), new mineflayer.Vec3(0, 1, 0), (err) => {
if (err) {
console.error(`Ошибка при установке блока: ${err}`);
reject(err);
} else {
console.log(`Блок установлен на позиции (${position.x}, ${position.y}, ${position.z})`);
resolve();
}
});
});
}
// Функция для сбора ресурсов
async function gatherResources() {
const block = bot.findBlock({
matching: ['stone', 'dirt'], // Блоки, которые мы хотим собирать
maxDistance: 16
});
if (block) {
console.log(`Собираем блок: ${block.name}`);
await bot.dig(block);
} else {
console.log('Нет доступных блоков для сбора');
}
}
// Случайное перемещение
function moveRandomly() {
const x = Math.floor(Math.random() * 10) - 5; // Случайное смещение по X
const z = Math.floor(Math.random() * 10) - 5; // Случайное смещение по Z
const targetPosition = bot.entity.position.offset(x, 0, z);
bot.navigate.to(targetPosition);
}
// Переключение режимов
bot.on('chat', (username, message) => {
if (username === bot.username) return; // Игнорируем сообщения от самого бота
if (message === 'toggle') {
mode = (mode === 'build') ? 'gather' : 'build';
bot.chat(`Режим переключен на: ${mode}`);
}
});
// Обработка ошибок
bot.on('error', (err) => {
console.error(`Ошибка бота: ${err}`);
});
bot.on('end', () => {
console.log('Бот отключен');
});
// Запускаем случайное перемещение каждые 15 секунд
setInterval(moveRandomly, 15000);
*Изменено добыча блоков работает, не работает строительство
Поиск блоков:Выбор действия:строительство:обновления состояния нейросети: