@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
206 lines (205 loc) • 9.01 kB
TypeScript
import LocalEnvironment from "./LocalEnvironment";
import { Readable } from "stream";
import Player from "./../minecraft/Player";
import ServerManager, { IServerVersion } from "./ServerManager";
import ServerConfigManager from "./ServerConfigManager";
import ServerMessage from "./ServerMessage";
import ServerPropertiesManager from "../minecraft/ServerPropertiesManager";
import NodeStorage from "./NodeStorage";
import MCWorld from "../minecraft/MCWorld";
import IFolder from "../storage/IFolder";
import { IMinecraftStartMessage as IMinecraftServerStart, IMinecraftStartMessage } from "../app/IMinecraftStartMessage";
import NodeFolder from "./NodeFolder";
import IActionSetData from "../actions/IActionSetData";
import IStorage from "../storage/IStorage";
import MinecraftDebugClient from "../debugger/MinecraftDebugClient";
import { IStatData, IDebugSessionInfo, IProfilerCaptureEvent } from "../debugger/IMinecraftDebugProtocol";
import { IBackupResult } from "./IWorldBackupData";
export declare enum DedicatedServerStatus {
stopped = 1,
deploying = 2,
launching = 3,
starting = 4,
started = 5
}
export interface OutputLine {
message: string;
received: number;
isInternal?: boolean;
}
export declare enum DedicatedServerBackupStatus {
none = 0,
suspendingSaveCommandIssued = 1,
suspendingQueryCommandIssued = 2,
suspendingQueryResultsPending = 3,
saveSuspended = 4,
copyingFiles = 5,
resumingSave = 6,
saveResumed = 7
}
export declare const MaxTimeToWaitForServerToStart = 5000;
export default class DedicatedServer {
#private;
serverPath: string;
name: string;
version?: IServerVersion;
updates: any[];
startConfigurationHash?: string;
outputLines: OutputLine[];
get opList(): string[];
set opList(newOps: string[]);
get port(): number;
/**
* Get the script debugger port for this server instance.
* The debug port is the base port + 12, ensuring each slot has a unique debug port.
* Slot 0: port 19132 -> debug port 19144
* Slot 1: port 19164 -> debug port 19176
* etc.
*/
get debugPort(): number;
get lastResult(): string;
set port(newPort: number);
get editorMode(): boolean;
set editorMode(value: boolean);
get defaultWorldFolder(): NodeFolder;
get behaviorPacksFolder(): NodeFolder;
get resourcePacksFolder(): NodeFolder;
/**
* Get the behavior packs storage (NodeStorage) for file watching purposes.
*/
get behaviorPacksStorage(): NodeStorage | undefined;
/**
* Get the default world storage (NodeStorage) for file watching purposes.
*/
get defaultWorldStorage(): NodeStorage | undefined;
/**
* Get the resource packs storage (NodeStorage) for file watching purposes.
*/
get resourcePacksStorage(): NodeStorage | undefined;
config: ServerConfigManager;
properties: ServerPropertiesManager;
deployCount: number;
constructor(name: string, dsm: ServerManager, env: LocalEnvironment, serverPath: string, worldBackupContainerFolder: IFolder);
get worldStoragePath(): string;
pushUpdates(additionalUpdates: any[]): void;
get gameTest(): string;
set gameTest(newGameTest: string);
get status(): DedicatedServerStatus;
get onServerStarting(): import("ste-events").IEvent<DedicatedServer, string>;
get onServerStopping(): import("ste-events").IEvent<DedicatedServer, string>;
get onServerStopped(): import("ste-events").IEvent<DedicatedServer, string>;
get onServerRefreshed(): import("ste-events").IEvent<DedicatedServer, string>;
get onServerOutput(): import("ste-events").IEvent<DedicatedServer, ServerMessage>;
get onServerGameEvent(): import("ste-events").IEvent<DedicatedServer, object>;
get onServerError(): import("ste-events").IEvent<DedicatedServer, string>;
get onServerStarted(): import("ste-events").IEvent<DedicatedServer, string>;
get onTestStarted(): import("ste-events").IEvent<DedicatedServer, string>;
get onTestFailed(): import("ste-events").IEvent<DedicatedServer, string>;
get onTestSucceeded(): import("ste-events").IEvent<DedicatedServer, string>;
get onPlayerConnected(): import("ste-events").IEvent<DedicatedServer, Player>;
get onPlayerDisconnected(): import("ste-events").IEvent<DedicatedServer, Player>;
get onDebugConnected(): import("ste-events").IEvent<DedicatedServer, IDebugSessionInfo>;
get onDebugDisconnected(): import("ste-events").IEvent<DedicatedServer, string>;
get onDebugStats(): import("ste-events").IEvent<DedicatedServer, {
tick: number;
stats: IStatData[];
}>;
get onDebugPaused(): import("ste-events").IEvent<DedicatedServer, string>;
get onDebugResumed(): import("ste-events").IEvent<DedicatedServer, void>;
get onProfilerCapture(): import("ste-events").IEvent<DedicatedServer, IProfilerCaptureEvent>;
get debugClient(): MinecraftDebugClient;
get debuggerEnabled(): boolean;
set debuggerEnabled(value: boolean);
get debuggerStreamingEnabled(): boolean;
set debuggerStreamingEnabled(value: boolean);
/**
* Get the managed world ID for this server.
* If set, backups will use the WorldBackupManager system.
*/
get managedWorldId(): string | undefined;
/**
* Set the managed world ID for this server.
* @param worldId The world ID from WorldBackupManager, or undefined to use legacy backups
*/
set managedWorldId(worldId: string | undefined);
/**
* Get the last backup result.
*/
get lastBackupResult(): IBackupResult | undefined;
handleCommandRequest(event: string, data: string): void;
runActionSet(actionSet: IActionSetData, requestId?: string): Promise<void>;
waitUntilStarted(): Promise<void>;
runCommandImmediate(command: string, tokenId?: string, maxWaitMs?: number): Promise<string | undefined>;
runCommand(command: string, requestId?: string, isInternal?: boolean): Promise<void>;
/**
* Run an internal command that doesn't show in logs.
* Used for implementation details like querytarget polling.
*/
runInternalCommand(command: string, requestId?: string): Promise<void>;
writeToServer(commandLine: string): Promise<void>;
ensureServerFolders(): Promise<void>;
restoreLatestBackupWorld(): Promise<boolean>;
/**
* Restore the latest backup using the new WorldBackupManager system.
*/
private restoreManagedWorld;
applyWorldSettings(mcworld: MCWorld, startInfo?: IMinecraftStartMessage): Promise<void>;
getStorageFromPath(path: string): Promise<IStorage | undefined>;
ensureWorld(startInfo?: IMinecraftStartMessage): Promise<void>;
ensureContentDeployed(startInfo?: IMinecraftStartMessage): Promise<void>;
startServer(restartIfAlreadyRunning: boolean, start: IMinecraftServerStart | undefined): Promise<void>;
executeNextCommand(): Promise<void>;
doRunningBackup(): Promise<void>;
doBackup(backupFileLine?: string): Promise<void>;
/**
* Create a backup using the new WorldBackupManager system.
* This provides better organization, deduplication, and export capabilities.
*/
private doManagedBackup;
stopServer(): Promise<void>;
private static readonly PID_FILE_NAME;
/**
* Kill stale bedrock_server processes left over from a previous crash.
* Uses a PID file in the slot directory instead of platform-specific process
* enumeration tools (wmic, PowerShell, pgrep), keeping this pure Node.js.
*/
private _killStaleProcesses;
private _writePidFile;
private _removePidFile;
private handleClose;
private getRecentStarts;
continueStopServer(): Promise<void>;
finalizeStopServer(): Promise<void>;
deploy(fromFolder: IFolder, isPatch: boolean, isReloadable?: boolean): Promise<void>;
directOutput(readable: Readable): Promise<void>;
handleServerStarted(line: string): void;
/**
* Connect to the Minecraft script debugger.
* The server should already be listening on the debug port after
* receiving the "script debugger listen <port>" command.
*/
connectDebugClient(): Promise<void>;
/**
* Disconnect the debug client if connected.
*/
disconnectDebugClient(): void;
/**
* Start polling for player positions.
* Uses /querytarget @a to get all player positions periodically.
*/
startPlayerPositionPolling(): void;
/**
* Stop player position polling.
*/
stopPlayerPositionPolling(): void;
/**
* Get player name from uniqueId by looking up connected players.
*/
getPlayerNameFromId(uniqueId: string): string | undefined;
handlePlayerConnected(player: Player): void;
handlePlayerDisconnected(player: Player): void;
getTestIdFromLine(line: string): string;
getPlayerIdFromLine(line: string): string;
getPlayerXuidFromLine(line: string): string;
directErrors(readable: Readable): Promise<void>;
}