NovaCore-Engine es el motor interno que potencia StepLauncher. Es un proceso Java independiente que expone toda la lógica de Minecraft —instalación, descarga, lanzamiento, gestión de instancias— a través de una API HTTP local y un WebSocket de eventos en tiempo real.
La idea es simple: tu launcher o aplicación habla con el engine a través de HTTP y WebSocket. El engine se encarga de todo lo pesado. Vos solo consumís los eventos y mostrás lo que está pasando en pantalla.
El cliente Node.js incluido @novastepstudios/novacore-engine-client te conecta al engine en segundos, con soporte completo para TypeScript a través de los tipos incluidos.
El engine corre como un proceso Java separado de tu aplicación. Internamente levanta dos servicios:
- HTTP en el puerto 7878 — endpoints REST para instalar, lanzar, crear instancias, consultar versiones y más.
- WebSocket en el puerto 7879 — eventos en tiempo real: progreso de descargas, logs del juego, errores, etc.
Tu código (Node.js, Electron, Java puro, o lo que quieras) se conecta a esos puertos y controla todo desde ahí. No hay dependencias raras, es solo HTTP y WebSocket estándar.
Tu app / Launcher
│
├── HTTP :7878 → instalar, lanzar, instancias, versiones...
└── WS :7879 → progreso, logs, eventos en tiempo real
│
novacore-engine.jar (proceso Java en background)
│
Mojang APIs + Sistema de archivos local
| Componente | Versión mínima | Para qué |
|---|---|---|
| Java | 21+ | Correr el engine |
| Node.js | 18+ | Usar el cliente JS/TS |
| Gradle | 8+ | Compilar el engine (solo si lo compilás vos) |
cd core
# Linux / macOS
./gradlew jar
# Windows
gradlew.bat jar
# Oh
./build.batEl JAR queda en core/build/libs/novacore-engine.jar.
cd client
npm installEditá client/src/examples/config.js con la ruta al JAR y tus directorios. Después:
npm run example:sysinfo # Info del sistema y versiones disponibles
npm run example:instances # Crear y gestionar instancias
npm run example:install # Instalar una versión de Minecraft
npm run example:launch # Lanzar Minecraft vanilla
npm run example:advanced # Opciones avanzadas de lanzamiento
npm run example:full # Flujo completo: instalar y lanzarLa documentación completa está en la carpeta docs/:
| Documento | Qué cubre |
|---|---|
| Arquitectura | Cómo está estructurado el engine por dentro |
| Compilar el Engine | Guía paso a paso para compilar el JAR |
| API HTTP | Todos los endpoints con ejemplos de request/response |
| Eventos WebSocket | Todos los eventos que emite el engine |
| Cliente Node.js | Cómo integrar el cliente en tu proyecto |
| Instancias | Sistema de gestión de instancias |
| Instalación | Cómo funciona el sistema de instalación |
| Lanzamiento | Opciones de lanzamiento, auth, JVM, GC |
| Integración con Java | Usar el engine desde Java puro |
| Referencia de Tipos | Todas las interfaces TypeScript |
NovaCore-Engine/
├── core/ # Engine Java (el backend)
│ ├── build.gradle
│ └── src/main/java/dev/novastep/core/
│ ├── Main.java # Entry point y startup
│ ├── server/ # HTTP server + handlers por endpoint
│ ├── websocket/ # EventBroadcaster (servidor WebSocket)
│ ├── minecraft/ # Instalación, lanzamiento, instancias
│ ├── downloader/ # Descarga concurrente con sesiones
│ ├── log/ # Logger interno con rotación
│ └── util/ # SystemResources y utilidades
│
├── client/ # Cliente Node.js
│ ├── package.json
│ ├── minecraft-core.d.ts # Tipos TypeScript completos
│ └── src/
│ ├── CoreProcess.js # Spawnea y gestiona el proceso Java
│ ├── CoreClient.js # Cliente HTTP + WebSocket
│ └── examples/ # Ejemplos listos para correr
│
└── docs/ # Documentación completa
- El engine solo escucha en
localhostpor diseño. No está pensado para exponerse a la red. - Los puertos 7878 y 7879 son configurables si tenés conflictos con otros procesos.
- El sistema de
sharedPathte permite que múltiples instancias compartan assets y librerías sin duplicar archivos en disco.
