# MayAternos

Módulo para crear bots de Minecraft 24/7 con movimientos aleatorios y comportamientos anti-detección usando MinePlayer (mineflayer).

## 🚀 Características

- ✅ Creación de bots individuales o múltiples
- ✅ Movimientos aleatorios naturales
- ✅ Sistema de reconexión automática
- ✅ Comportamientos anti-detección
- ✅ Chat aleatorio configurable
- ✅ Configuración personalizable
- ✅ Manejo de errores robusto
- ✅ Soporte para múltiples versiones de Minecraft

## 📦 Instalación

```bash
npm install @soymaycol/mayaternos
```

## 🎯 Uso Básico

### Crear un bot simple

```javascript
const MayAternos = require('@soymaycol/mayaternos');

const botManager = new MayAternos({
    host: 'tu-servidor.aternos.me',
    port: 25565,
    username: 'MiBot',
    version: '1.19.2'
});

const bot = botManager.createBot();
```

### Crear múltiples bots

```javascript
const MayAternos = require('@soymaycol/mayaternos');

const botManager = new MayAternos({
    host: 'tu-servidor.aternos.me',
    port: 25565,
    username: 'Bot',
    version: '1.19.2'
});

// Crear 3 bots: Bot_1, Bot_2, Bot_3
const bots = botManager.createMultipleBots(3);
```

## ⚙️ Configuración Avanzada

### Opciones disponibles

```javascript
const options = {
    // Configuración del servidor
    host: 'localhost',              // IP del servidor
    port: 25565,                    // Puerto del servidor
    username: 'Bot',                // Nombre del bot
    version: '1.19.2',              // Versión de Minecraft
    auth: 'offline',                // Tipo de autenticación
    
    // Configuración de reconexión
    reconnectDelay: 3000,           // Delay entre reconexiones (ms)
    maxReconnectAttempts: -1,       // Máximo intentos (-1 = ilimitado)
    
    // Configuración de movimientos
    movementInterval: 5000,         // Intervalo entre movimientos (ms)
    randomMovement: true,           // Habilitar movimientos aleatorios
    
    // Configuración de chat
    chatInterval: 30000,            // Intervalo entre mensajes (ms)
    randomChat: false,              // Habilitar chat aleatorio
    chatMessages: ['Hola', 'Como están?'], // Mensajes aleatorios
    
    // Configuración de logging
    verbose: true                   // Mostrar logs detallados
};

const botManager = new MayAternos(options);
```

### Ejemplo completo con configuración personalizada

```javascript
const MayAternos = require('@soymaycol/mayaternos');

const botManager = new MayAternos({
    host: 'mi-servidor.aternos.me',
    port: 25565,
    username: 'GuardianBot',
    version: '1.19.2',
    auth: 'offline',
    
    // Configuración de comportamientos
    movementInterval: 8000,
    randomMovement: true,
    randomChat: true,
    chatMessages: [
        'Hola a todos!',
        'Que tal están?',
        'Buenas tardes',
        'Saludos!',
        'Todo bien por aquí'
    ],
    chatInterval: 45000,
    
    // Configuración de reconexión
    reconnectDelay: 5000,
    maxReconnectAttempts: 10,
    
    verbose: true
});

const bot = botManager.createBot();
```

## 🎮 Métodos Principales

### Crear bots

```javascript
// Crear bot individual
const bot = botManager.createBot();

// Crear bot con configuración específica
const bot = botManager.createBot({
    username: 'BotEspecial',
    host: 'otro-servidor.com'
});

// Crear múltiples bots
const bots = botManager.createMultipleBots(5);

// Crear múltiples bots con configuración base
const bots = botManager.createMultipleBots(3, {
    username: 'Worker',
    randomChat: true
});
```

### Gestionar bots

```javascript
// Obtener todos los bots
const allBots = botManager.getBots();

// Obtener bot por nombre
const bot = botManager.getBotByName('MiBot');

// Obtener estado de todos los bots
const status = botManager.getBotsStatus();
console.log(status);

// Desconectar bot específico
botManager.disconnectBot('MiBot');

// Desconectar todos los bots
botManager.disconnectAll();
```

## 🤖 Comportamientos Anti-Detección

El módulo incluye varios comportamientos para evitar la detección como bot:

### Movimientos Aleatorios
- Caminar en direcciones aleatorias
- Saltar ocasionalmente
- Correr esporádicamente
- Agacharse aleatoriamente
- Parar movimientos ocasionalmente

### Comportamientos Naturales
- Movimiento de cabeza aleatorio
- Mirar hacia bloques cercanos
- Interacción con el entorno
- Intervalos de tiempo variables

### Configuración de Movimientos

```javascript
const botManager = new MayAternos({
    // Intervalo base entre movimientos
    movementInterval: 5000,
    
    // Habilitar movimientos aleatorios
    randomMovement: true,
    
    // El sistema añade aleatoriedad adicional automáticamente
});
```

## 📊 Monitoreo y Logging

### Habilitar logs detallados

```javascript
const botManager = new MayAternos({
    verbose: true  // Mostrar logs detallados
});
```

### Eventos disponibles

```javascript
// Los bots emiten eventos estándar de mineflayer
bot.on('login', () => {
    console.log('Bot conectado');
});

bot.on('spawn', () => {
    console.log('Bot spawneado');
});

bot.on('death', () => {
    console.log('Bot murió');
});

bot.on('kicked', (reason) => {
    console.log('Bot kickeado:', reason);
});
```

## 🔧 Ejemplo de Uso Práctico

```javascript
const MayAternos = require('@soymaycol/mayaternos');

// Configuración para servidor de Aternos
const botManager = new MayAternos({
    host: 'MiServidor.aternos.me',
    port: 25565,
    username: 'Vigilante',
    version: '1.19.2',
    auth: 'offline',
    
    // Movimientos cada 3-8 segundos
    movementInterval: 3000,
    randomMovement: true,
    
    // Chat cada 2-5 minutos
    randomChat: true,
    chatInterval: 120000,
    chatMessages: [
        'Todo tranquilo por aquí',
        'Vigilando el servidor',
        'Saludos!',
        'Buenas!'
    ],
    
    // Reconexión automática
    reconnectDelay: 5000,
    maxReconnectAttempts: -1,
    
    verbose: true
});

// Crear bot principal
const mainBot = botManager.createBot();

// Crear bots adicionales después de 30 segundos
setTimeout(() => {
    const additionalBots = botManager.createMultipleBots(2, {
        username: 'Helper'
    });
}, 30000);

// Manejar cierre limpio
process.on('SIGINT', () => {
    console.log('Cerrando todos los bots...');
    botManager.disconnectAll();
    process.exit(0);
});
```

## 🔄 Manejo de Errores y Reconexión

El módulo incluye manejo robusto de errores:

- **Reconexión automática**: Los bots se reconectan automáticamente si se desconectan
- **Manejo de muerte**: Los bots respawnean automáticamente al morir
- **Límite de intentos**: Configurable para evitar bucles infinitos
- **Delays variables**: Evita spam de conexiones

```javascript
const botManager = new MayAternos({
    reconnectDelay: 5000,           // 5 segundos entre intentos
    maxReconnectAttempts: 10,       // Máximo 10 intentos
    verbose: true                   // Ver logs de reconexión
});
```

## 📋 Requisitos

- Node.js 14.0.0 o superior
- Conexión a internet estable
- Servidor de Minecraft compatible

## 🎯 Casos de Uso

- Mantener servidores de Aternos activos 24/7
- Vigilancia automática de servidores
- Pruebas de carga y estabilidad
- Presencia automática en servidores

## ⚠️ Consideraciones

- Úsalo responsablemente y respeta las reglas del servidor
- Algunos servidores pueden tener políticas contra bots
- Configura intervalos realistas para evitar detección
- Monitorea el uso de recursos del servidor
