mirror of
https://github.com/artegoser/pimi-launcher-core.git
synced 2024-11-05 13:13:57 +03:00
243 lines
5.9 KiB
TypeScript
243 lines
5.9 KiB
TypeScript
/// <reference types="node" />
|
|
|
|
declare module "minecraft-launcher-core" {
|
|
type OS = "windows" | "osx" | "linux";
|
|
|
|
interface IOverrides {
|
|
minArgs?: number;
|
|
minecraftJar?: string;
|
|
versionJson?: string;
|
|
gameDirectory?: string;
|
|
directory?: string;
|
|
natives?: string;
|
|
assetRoot?: string;
|
|
assetIndex?: string;
|
|
libraryRoot?: string;
|
|
cwd?: string;
|
|
detached?: boolean;
|
|
classes?: Array<string>;
|
|
maxSockets?: number;
|
|
url?: {
|
|
meta?: string;
|
|
resources?: string;
|
|
mavenForge?: string;
|
|
defaultRepoForge?: string;
|
|
fallbackMaven?: string;
|
|
};
|
|
fw?: {
|
|
baseUrl?: string;
|
|
version?: string;
|
|
sh1?: string;
|
|
size?: number;
|
|
};
|
|
}
|
|
|
|
interface ILauncherOptions {
|
|
/**
|
|
* Path or URL to the client package zip file.
|
|
*/
|
|
clientPackage?: string;
|
|
/**
|
|
* if true PiMi will remove the client package zip file after its finished extracting.
|
|
*/
|
|
removePackage?: boolean;
|
|
/**
|
|
* Path to installer being executed.
|
|
*/
|
|
installer?: string;
|
|
/**
|
|
* Path where you want the launcher to work in.
|
|
* This will usually be your .minecraft folder
|
|
*/
|
|
root: string;
|
|
/**
|
|
* OS override for minecraft natives
|
|
*
|
|
* @default will autodetect
|
|
*/
|
|
os?: OS;
|
|
/**
|
|
* Array of custom Minecraft arguments.
|
|
*/
|
|
customLaunchArgs?: Array<string>;
|
|
/**
|
|
* Array of custom Java arguments
|
|
*/
|
|
customArgs?: Array<string>;
|
|
/**
|
|
* Array of game argument feature flags
|
|
*/
|
|
features?: Array<string>;
|
|
/**
|
|
* minecraft version info
|
|
*/
|
|
version: {
|
|
/**
|
|
* Actual version.
|
|
*
|
|
* @example '1.16.4'
|
|
*/
|
|
number: string;
|
|
/**
|
|
* type of release, usually `release` or `snapshot`
|
|
*/
|
|
type: "release" | "snapshot" | string;
|
|
/**
|
|
* The name of the folder, jar file, and version json in the version folder.
|
|
*
|
|
* ` PiMi will look in the `versions` folder for this name
|
|
* @example '1.16.4-fabric'
|
|
*/
|
|
custom?: string;
|
|
};
|
|
memory: {
|
|
/**
|
|
* Min amount of memory being used by Minecraft.
|
|
*/
|
|
max: string | number;
|
|
/**
|
|
* Max amount of memory being used by Minecraft.
|
|
*/
|
|
min: string | number;
|
|
};
|
|
/**
|
|
* Path to Forge Jar.
|
|
*
|
|
* Versions below 1.13 should be the "universal" jar while versions above 1.13+ should be the "installer" jar
|
|
*/
|
|
forge?: string;
|
|
/**
|
|
* Path to the JRE executable file, will default to java if not entered.
|
|
*/
|
|
javaPath?: string;
|
|
server?: {
|
|
/**
|
|
* Host url to the server, don't include the port.
|
|
*/
|
|
host: string;
|
|
/**
|
|
* Port of the host url
|
|
*
|
|
* @default 25565
|
|
*/
|
|
port?: string;
|
|
};
|
|
proxy?: {
|
|
/**
|
|
* Host url to the proxy, don't include the port.
|
|
*/
|
|
host: string;
|
|
/**
|
|
* Username for the proxy.
|
|
*
|
|
* @default 8080
|
|
*/
|
|
port?: string;
|
|
/**
|
|
* Username for the proxy.
|
|
*/
|
|
username?: string;
|
|
/**
|
|
* Password for the proxy.
|
|
*/
|
|
password?: string;
|
|
};
|
|
/**
|
|
* Timeout on download requests.
|
|
*/
|
|
timeout?: number;
|
|
window?: {
|
|
width?: number;
|
|
height?: number;
|
|
fullscreen?: boolean;
|
|
};
|
|
quickPlay?: {
|
|
type: "singleplayer" | "multiplayer" | "realms" | "legacy";
|
|
identifier: string;
|
|
path?: string;
|
|
};
|
|
overrides?: IOverrides;
|
|
authorization: Promise<IUser>;
|
|
/**
|
|
* Path of json cache.
|
|
*/
|
|
cache?: string;
|
|
}
|
|
|
|
interface IUser {
|
|
access_token: string;
|
|
client_token: string;
|
|
uuid: string;
|
|
name: string;
|
|
user_properties: Partial<any>;
|
|
meta?: {
|
|
type: "mojang" | "msa";
|
|
demo?: boolean;
|
|
};
|
|
}
|
|
|
|
interface IProfile {
|
|
id: number;
|
|
name: string;
|
|
}
|
|
|
|
interface IAuthenticator {
|
|
/**
|
|
* @param username email if using a password, else the username
|
|
* @param password password for mojang account
|
|
*/
|
|
getAuth(username: string, password?: string): Promise<IUser>;
|
|
/**
|
|
*
|
|
* @param access_token Token being checked if it can be used to login with (online mode)
|
|
* @param client_token Client token being checked to see if there was a change of client (online mode)
|
|
*/
|
|
validate(
|
|
access_token: string,
|
|
client_token: string
|
|
): Promise<boolean | Partial<any>>;
|
|
/**
|
|
*
|
|
* @param access_token Token being checked if it can be used to login with (online mode)
|
|
* @param client_token Client token being checked to see if there was a change of client (online mode)
|
|
*/
|
|
refreshAuth(access_token: string, client_token: string): Promise<IUser>;
|
|
/**
|
|
*
|
|
* @param access_token Token being checked if it can be used to login with (online mode)
|
|
* @param client_token Client token being checked to see if there was a change of client (online mode)
|
|
*/
|
|
invalidate(
|
|
access_token: string,
|
|
client_token: string
|
|
): Promise<boolean | Partial<any>>;
|
|
/**
|
|
* @param username email if using a password, else the username
|
|
* @param password password for mojang account
|
|
*/
|
|
signOut(
|
|
username: string,
|
|
password: string
|
|
): Promise<boolean | Partial<any>>;
|
|
changeApiUrl(url: string): void;
|
|
}
|
|
|
|
import { EventEmitter } from "events";
|
|
import { ChildProcessWithoutNullStreams } from "child_process";
|
|
|
|
export class Client extends EventEmitter {
|
|
launch(
|
|
options: ILauncherOptions
|
|
): Promise<ChildProcessWithoutNullStreams | null>;
|
|
protected printVersion(): void;
|
|
protected createRootDirectory(): void;
|
|
protected createGameDirectory(): void;
|
|
protected extractPackage(): Promise<void>;
|
|
protected getModifyJson(): Promise<any>;
|
|
protected startMinecraft(
|
|
launchArguments: string[]
|
|
): ChildProcessWithoutNullStreams;
|
|
}
|
|
|
|
export const Authenticator: IAuthenticator;
|
|
}
|