UNPKG

minecraft-core-master

Version:

Núcleo avanzado para launchers de Minecraft. Descarga, instala y ejecuta versiones de Minecraft, assets, librerías, Java y loaders de forma automática y eficiente.

195 lines (194 loc) 6.21 kB
import { EventEmitter } from "node:events"; export interface LauncherEvents { 'status': (message: string) => void; 'progress': (data: { type: string; message: string; }) => void; 'phase-start': (phase: string) => void; 'phase-end': (phase: string, time: number) => void; 'speed': (data: { phase: string; time: number; [key: string]: any; }) => void; 'debug': (data: { type: string; [key: string]: any; }) => void; 'launch-start': (data: any) => void; 'launch-complete': (data: any) => void; 'launch-failed': (data: any) => void; 'game-started': (data: any) => void; 'game-exit': (data: any) => void; 'game-error': (message: string) => void; 'stdout': (output: string) => void; 'stderr': (output: string) => void; 'exit': (data: { code?: number; signal?: string; }) => void; 'error': (error: Error) => void; } export interface LauncherOptions { /** Carpeta raíz donde está instalado Minecraft (Root folder where Minecraft is installed) */ gameRoot: string; /** Versión de Minecraft a lanzar (Minecraft version to launch) */ version: string; /** Ruta del ejecutable de Java (Path to Java executable) */ java?: string; /** Configuración de memoria para la JVM (JVM memory configuration) */ memory?: { /** Memoria mínima (Minimum memory) */ min?: string; /** Memoria máxima (Maximum memory) */ max?: string; }; /** Configuración de la ventana del juego (Game window configuration) */ window?: { /** Ancho de la ventana (Window width) */ width?: number; /** Alto de la ventana (Window height) */ height?: number; /** Si debe iniciarse en pantalla completa (Whether to start in fullscreen) */ fullscreen?: boolean; }; /** Sobrescrituras de rutas y archivos del juego (Overrides for game paths and files) */ override?: { /** Directorio donde se ejecuta el juego (Directory where the game runs) */ gameDirectory?: string; /** Ruta del JAR de Minecraft (Minecraft JAR path) */ minecraftJar?: string; /** Archivo JSON de versión personalizado (Custom version JSON file) */ versionJson?: string; /** Carpeta de assets (Assets folder) */ assetRoot?: string; /** Índice de assets (Assets index) */ assetIndex?: string; /** Carpeta de librerías (Libraries folder) */ libraryRoot?: string; /** Carpeta de nativos (Natives folder) */ natives?: string; /** Carpeta base de esta versión (Base folder of this version) */ directory?: string; }; /** Configuración de proxy para la conexión a Internet (Proxy configuration for internet connection) */ proxy?: { /** Host del proxy (Proxy host) */ host: string; /** Puerto del proxy (Proxy port) */ port: number; /** Usuario opcional (Optional username) */ username?: string; /** Contraseña opcional (Optional password) */ password?: string; /** Tipo de proxy (Proxy type) */ type?: "socks4" | "socks5" | "http"; }; /** Información del usuario (User information) */ user: User; /** Habilitación o deshabilitación de features opcionales (Enable or disable optional features) */ features?: Record<string, boolean>; /** Nombre del launcher a mostrar en logs o interfaz (Launcher name to display in logs or UI) */ launcherName?: string; /** Versión del launcher (Launcher version) */ launcherVersion?: string; /** Forzar sandbox de Java (Enforce Java sandbox) */ enforceSandbox?: boolean; /** Habilitar debug detallado (Enable detailed debug) */ enableDebug?: boolean; /** Habilitar métricas de velocidad y fases (Enable speed and phase metrics) */ enableSpeedMetrics?: boolean; /** Argumentos personalizados de la JVM (Custom JVM arguments) */ JVM_ARGS?: string[]; /** Argumentos personalizados del juego (Custom game arguments) */ MC_ARGS?: Record<string, string | boolean | number>; } export interface User { access_token?: string; client_token?: string; uuid?: string; name?: string; user_profiles?: string; meta?: { online?: boolean; type?: string; }; } export interface AssetIndex { id: string; sha1: string; size: number; totalSize: number; url: string; } export interface VersionManifest { id: string; mainClass: string; arguments?: { game: Argument[]; jvm: Argument[]; } | undefined; minecraftArguments?: string | undefined; libraries: Library[]; inheritsFrom?: string | undefined; jar?: string | undefined; assets?: string | undefined; assetIndex?: AssetIndex | undefined; type?: string | undefined; minimumLauncherVersion?: number; releaseTime?: string; time?: string; } export interface Argument { rules?: Rule[]; value: string | string[]; } export interface Rule { action: "allow" | "disallow"; os?: { name?: string; version?: string; arch?: string; }; features?: Record<string, boolean>; } export interface Library { name: string; downloads: { artifact?: { path: string; url: string; sha1: string; size: number; }; classifiers?: { [key: string]: { path: string; url: string; sha1: string; size: number; }; }; }; rules?: Rule[]; extract?: { exclude: string[]; }; natives?: { [key: string]: string; }; checksums?: string[]; } export interface LaunchResult { emitter: EventEmitter; pid?: number; kill: () => boolean; stats: { totalTime: number; phaseTimes: Record<string, number>; classpathCount: number; libraryCount: number; }; } export declare function ArgumentsBuilder(options: LauncherOptions): Promise<LaunchResult>;