@cubiclauncher/neox-core
v1.0.3
Published
Minecraft downloader optimizado con descargas concurrentes, verificación de archivos y caché inteligente
Readme
Neox Minecraft Downloader - Versión Mejorada
Un módulo TypeScript optimizado para descargar versiones de Minecraft de manera eficiente y rápida.
🚀 Características Principales
Mejoras de Rendimiento
- Descargas Concurrentes: Hasta 15 archivos simultáneos (configurable)
- Verificación de Archivos: Evita re-descargas innecesarias verificando hashes SHA1
- Caché de Manifiestos: Cachea la lista de versiones por 5 minutos
- Reintentos Automáticos: 3 intentos con backoff exponencial
- Streaming Optimizado: Mejor manejo de memoria para archivos grandes
Funcionalidades
- ✅ Descarga de client JAR
- ✅ Descarga de librerías Java
- ✅ Descarga de assets del juego
- ✅ Descarga de librerías nativas
- ✅ Verificación de integridad con SHA1
- ✅ Progreso detallado en tiempo real
- ✅ Manejo robusto de errores
📦 Instalación
npm install🎯 Uso Básico
import { MinecraftDownloader } from '@cubiclauncher/neox-core';
const downloader = new MinecraftDownloader('./minecraft');
// Configurar listeners de eventos
downloader.on('progress', (progress) => {
console.log(`${progress.type}: ${progress.percent}%`);
});
downloader.on('status', (message) => {
console.log(message);
});
downloader.on('complete', (version) => {
console.log(`¡Descarga completada para ${version}!`);
});
// Descargar una versión
await downloader.download('1.20.1');⚡ Configuración Avanzada
Ajustar Concurrencia
// Aumentar el número de descargas simultáneas (1-50)
downloader.setMaxConcurrentDownloads(20);Limpiar Caché
// Forzar re-descarga del manifiesto de versiones
downloader.clearCache();📊 Eventos Disponibles
progress
Información detallada del progreso de descarga:
{
version: string;
percent: number;
type: 'client' | 'library' | 'asset' | 'native';
currentFile?: string;
totalFiles?: number;
downloadedFiles?: number;
totalSize?: number;
downloadedSize?: number;
}status
Mensajes de estado del proceso:
(message: string) => voidfile-complete
Notificación cuando un archivo se completa:
(filename: string, type: string) => voiderror
Errores durante la descarga:
(error: Error) => voidcomplete
Descarga finalizada:
(version: string) => void🧪 Ejemplo Completo
Ejecuta el ejemplo mejorado:
npx ts-node src/test/improved-download.tsEste ejemplo demuestra:
- Configuración de concurrencia
- Eventos detallados con emojis
- Medición de tiempo de descarga
- Manejo de errores
📈 Mejoras de Rendimiento
Antes vs Después
| Característica | Versión Anterior | Versión Mejorada | |----------------|------------------|------------------| | Descargas | Secuenciales | Concurrentes (15 simultáneas) | | Verificación | Sin verificación | SHA1 automático | | Caché | Sin caché | 5 minutos | | Reintentos | Sin reintentos | 3 intentos automáticos | | Progreso | Básico | Detallado con bytes | | Memoria | Alta | Optimizada |
Beneficios Esperados
- 3-5x más rápido en conexiones rápidas
- Menos uso de ancho de banda (evita re-descargas)
- Mayor confiabilidad (reintentos automáticos)
- Mejor experiencia de usuario (progreso detallado)
🔧 Configuración de Red
El módulo incluye configuraciones optimizadas:
- Timeout de 30 segundos por archivo
- Chunks de 1MB para streaming
- Backoff exponencial en reintentos
- Control de concurrencia para evitar sobrecarga
📁 Estructura de Archivos
minecraft/
├── versions/
│ └── 1.20.1/
│ ├── 1.20.1.json
│ └── 1.20.1.jar
├── libraries/
│ └── [librerías Java]
├── assets/
│ ├── indexes/
│ └── objects/
└── natives/
└── [librerías nativas]🤝 Contribuir
- Fork el proyecto
- Crea una rama para tu feature
- Commit tus cambios
- Push a la rama
- Abre un Pull Request
📄 Licencia
MIT License - ver LICENSE para detalles.
