@tendrock/database
Version:
A database lib under the Tendrock ecosystem for Minecraft Bedrock Edition Script API
45 lines (44 loc) • 2.63 kB
TypeScript
import { Block, Entity, ItemStack, World } from "@minecraft/server";
import { BlockDatabase, EntityDatabase, ItemStackDatabase, WorldDatabase } from "../impl";
import { GameObjectDatabase } from "../GameObjectDatabase";
import { BetterSet } from "@tenolib/map";
import { DatabaseManager } from "./DatabaseManager";
import { DatabaseTypes } from "../DatabaseTypes";
export type DatabaseTypeBy<T> = T extends (string | Block) ? BlockDatabase : T extends Entity ? EntityDatabase : T extends ItemStack ? ItemStackDatabase : WorldDatabase;
export type DatabaseFactory<T extends Block | Entity | ItemStack | World | string> = {
create(namespace: string, manager: NamespacedDatabaseManager, gameObject: T, initialIdList?: [string, string][]): InstanceType<DatabaseFactory<T>>;
} & (new (...args: any[]) => any);
export type DatabaseTypeMap = {
[DatabaseTypes.Entity]: EntityDatabase;
[DatabaseTypes.Block]: BlockDatabase;
[DatabaseTypes.Item]: ItemStackDatabase;
[DatabaseTypes.World]: WorldDatabase;
};
export declare class NamespacedDatabaseManager {
protected readonly namespace: string;
private readonly _parentManager;
private _blockDatabaseMap;
private _itemDatabaseMap;
private _entityDatabaseMap;
private _worldDatabase;
private _blockInitialIdListMap;
private _worldInitialIdList;
private _isFlushing;
private _dirtyDatabaseList;
private _dirtyDatabaseBuffer;
protected constructor(namespace: string, _parentManager: DatabaseManager);
static _create(runtimeId: string, namespace: string, parentManager: DatabaseManager): NamespacedDatabaseManager;
_markDirty(runtimeId: string, dataBase: GameObjectDatabase<any>): void;
_addBlockDataId(runtimeId: string, lid: string, propertyId: string, dataId: string): void;
_addWorldDataId(runtimeId: string, propertyId: string, dataId: string): void;
private _prepare;
getOrCreate<T extends Block | Entity | ItemStack | World | string>(gameObject: T): DatabaseTypeBy<T>;
get<T extends Block | Entity | ItemStack | World | string>(gameObject: T): DatabaseTypeBy<T> | undefined;
getDatabaseList<T extends DatabaseTypes>(type: T): DatabaseTypeMap[T][];
getWorldDatabase(): DatabaseTypeBy<World> | undefined;
remove<T extends Block | Entity | ItemStack | World | string>(gameObject: T, clearData?: boolean): void;
_addDatabase<T extends Block | Entity | ItemStack | World | string>(runtimeId: string, database: DatabaseTypeBy<T>): void;
_beginFlush(runtimeId: string): void;
_endFlush(runtimeId: string): void;
getDirtyDatabaseList(): BetterSet<GameObjectDatabase<any>>;
}