@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
102 lines (101 loc) • 3.91 kB
TypeScript
/**
* VirtualFolderStorage
*
* A storage implementation that creates a virtual folder structure from multiple
* real folders. This is used to expose the dedicated server's content (behavior_packs,
* resource_packs, world) as a unified storage.
*
* The virtual storage maps named paths to real folders:
* - /behavior_packs/ -> development_behavior_packs folder
* - /resource_packs/ -> development_resource_packs folder
* - /world/ -> worlds/defaultWorld folder
*/
import IFolder from "./IFolder";
import IFile from "./IFile";
import IStorage from "./IStorage";
import StorageBase from "./StorageBase";
import FolderBase from "./FolderBase";
export interface IVirtualFolderMapping {
/** The virtual path name (e.g., "behavior_packs") */
virtualName: string;
/** The real folder to map to this virtual path */
realFolder: IFolder;
}
/**
* A virtual folder that delegates to real folders based on a mapping.
* This creates a unified view of multiple storage locations.
*/
export default class VirtualFolderStorage extends StorageBase implements IStorage {
rootFolder: VirtualRootFolder;
private _mappings;
constructor(mappings?: IVirtualFolderMapping[]);
/**
* Add a folder mapping to the virtual storage.
* @param mapping The mapping to add
*/
addMapping(mapping: IVirtualFolderMapping): void;
/**
* Remove a folder mapping from the virtual storage.
* @param virtualName The virtual name to remove
*/
removeMapping(virtualName: string): void;
/**
* Get all current mappings.
*/
getMappings(): IVirtualFolderMapping[];
getAvailable(): Promise<boolean>;
getUsesPollingBasedUpdating(): boolean;
incrementalScanForChanges(): Promise<void>;
}
/**
* The root folder of a VirtualFolderStorage.
* Maps virtual folder names to real folder implementations.
*/
declare class VirtualRootFolder extends FolderBase implements IFolder {
private _storage;
private _virtualFolders;
private _name;
folders: {
[name: string]: IFolder | undefined;
};
files: {
[name: string]: IFile | undefined;
};
get name(): string;
get parentFolder(): IFolder | null;
get storage(): IStorage;
get fullPath(): string;
get extendedPath(): string;
constructor(storage: VirtualFolderStorage);
addVirtualSubfolder(name: string, realFolder: IFolder): void;
removeVirtualSubfolder(name: string): void;
ensureFolder(name: string): IFolder;
ensureFile(_name: string): IFile;
exists(): Promise<boolean>;
ensureExists(): Promise<boolean>;
load(_force?: boolean): Promise<Date>;
saveAll(_force?: boolean): Promise<boolean>;
moveTo(_newStorageRelativePath: string): Promise<boolean>;
rename(_newName: string): Promise<boolean>;
deleteThisFolder(): Promise<boolean>;
deleteFile(_name: string): Promise<boolean>;
deleteFileFromRelativePath(_path: string): Promise<boolean>;
createFile(_name: string): Promise<IFile>;
deleteAllFolderContents(): Promise<boolean>;
removeFolder(_name: string): boolean;
getFolderFromRelativePathLocal(relativePath: string): IFolder | undefined;
getFolderByIndex(index: number): IFolder | undefined;
getSortedFolderKeys(): string[];
getSortedFileKeys(): string[];
ensureFolderFromRelativePath(relativePath: string): Promise<IFolder>;
ensureFileFromRelativePath(_relativePath: string): Promise<IFile>;
setStructureFromFileList(_fileList: string[]): Promise<void>;
clearAllManagers(): void;
getFolderRelativePath(_toFolder: IFolder): string | undefined;
folderExists(name: string): boolean;
fileExists(_name: string): boolean;
getFileFromRelativePath(relativePath: string): Promise<IFile | undefined>;
getFolderFromRelativePath(relativePath: string): Promise<IFolder | undefined>;
scanForChanges(): Promise<void>;
}
export {};