UNPKG

@tendrock/database

Version:

A database lib under the Tendrock ecosystem for Minecraft Bedrock Edition Script API

66 lines (65 loc) 3.93 kB
import { Block, Entity, ItemStack, World } from "@minecraft/server"; import { GameObjectDatabase } from "../GameObjectDatabase"; import { DatabaseTypeBy, DatabaseTypeMap, NamespacedDatabaseManager } from "./NamespacedDatabaseManager"; import { TendrockDynamicPropertyValue } from "../NamespacedDynamicProperty"; import { SetMap } from "@tenolib/map"; import { BlockDatabase, EntityDatabase, ItemStackDatabase } from "../impl"; import { DatabaseTypes } from "../DatabaseTypes"; export type Constructor<T> = new (...args: any[]) => T; export type GameObjectType = Block | Entity | ItemStack | World | string; export declare class DatabaseManager { private _databaseManagerMap; private _isInitialized; private _whenReadyCallbackList; private _autoFlushTaskId; private _blockToDatabaseMap; private _itemToDatabaseMap; private _entityToDatabaseMap; private _changingEntityDatabaseBuffer; private _flushInterval; private _autoUpdateSourceEntity; private _autoFlush; constructor(); private _loadAndParseWorldDynamicPropertiesGenerator; private _loadWorldDynamicProperties; private _loadWorldDynamicPropertiesWhenWorldLoaded; private _getOrCreateNamespacedManager; protected _getNamespacedManager(namespace: string): NamespacedDatabaseManager | undefined; private _doReady; whenReady(callback: () => void): (() => void) | undefined; isReady(): boolean; getOrCreate<T extends Block | Entity | ItemStack | World | string>(namespace: string, gameObject: T): DatabaseTypeBy<T>; get<T extends Block | Entity | ItemStack | World | string>(namespace: string, gameObject: T): DatabaseTypeBy<T> | undefined; setData(namespace: string, gameObject: GameObjectType, identifier: string, value: TendrockDynamicPropertyValue): void; getData<T extends TendrockDynamicPropertyValue>(namespace: string, gameObject: GameObjectType, identifier: string): T; getDataInstance<T>(namespace: string, gameObject: GameObjectType, identifier: string, objectConstructor: Constructor<T>, options?: unknown): T | undefined; getDataInstanceIfPresent<T>(namespace: string, gameObject: GameObjectType, identifier: string): T | undefined; getDataInstanceOrCreate<T>(namespace: string, gameObject: GameObjectType, identifier: string, objectConstructor: Constructor<T>, options?: unknown): T; remove(namespace: string, gameObject: GameObjectType, clearData?: boolean): void; private _prepare; getDatabaseListByGameObject<T extends Block | Entity | ItemStack | World>(gameObject: T): DatabaseTypeBy<T>[]; getDatabaseList<T extends DatabaseTypes>(namespace: string, type: T): DatabaseTypeMap[T][]; setFlushInterval(interval: number, flush?: boolean): void; getFlushInterval(): number; setAutoFlush(value?: boolean): void; autoFlush(): boolean; setAutoUpdateSourceEntity(value?: boolean): void; autoUpdateSourceEntity(): boolean; protected flushDatabase(database: GameObjectDatabase<any>): Generator<void, void, void>; protected flushDatabaseSync(database: GameObjectDatabase<any>): void; protected flushAllDataGenerator(): Generator<void, void, void>; flushSync(): void; flush(): void; protected _startFlushWhenPlayerLeaveTask(): void; protected _clearFlushJobIfPresent(): void; protected _startAutoFlushTask(): void; _getBlockToDatabaseMap(runtimeId: string): SetMap<string, BlockDatabase>; _getEntityToDatabaseMap(runtimeId: string): SetMap<string, EntityDatabase>; _getItemToDatabaseMap(runtimeId: string): SetMap<string, ItemStackDatabase>; _setChangingEntityDatabaseBuffer(runtimeId: string, locationId: string, entityDatabase: EntityDatabase): void; _getChangingEntityDatabaseBuffer(runtimeId: string, locationId: string): { entityDatabase: EntityDatabase | undefined; cleanBuffer: () => void; }; } export declare const databaseManager: DatabaseManager;