Un módulo TypeScript optimizado para descargar versiones de Minecraft de manera eficiente y rápida.
- 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
- ✅ 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
npm install
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');
// Aumentar el número de descargas simultáneas (1-50)
downloader.setMaxConcurrentDownloads(20);
// Forzar re-descarga del manifiesto de versiones
downloader.clearCache();
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;
}
Mensajes de estado del proceso:
(message: string) => void
Notificación cuando un archivo se completa:
(filename: string, type: string) => void
Errores durante la descarga:
(error: Error) => void
Descarga finalizada:
(version: string) => void
Ejecuta el ejemplo mejorado:
npx ts-node src/test/improved-download.ts
Este ejemplo demuestra:
- Configuración de concurrencia
- Eventos detallados con emojis
- Medición de tiempo de descarga
- Manejo de errores
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 |
- 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)
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
minecraft/
├── versions/
│ └── 1.20.1/
│ ├── 1.20.1.json
│ └── 1.20.1.jar
├── libraries/
│ └── [librerías Java]
├── assets/
│ ├── indexes/
│ └── objects/
└── natives/
└── [librerías nativas]
- Fork el proyecto
- Crea una rama para tu feature
- Commit tus cambios
- Push a la rama
- Abre un Pull Request
LGPL-2.1 license - ver LICENSE para detalles.