import { Identifier, SimpleRegistry } from './core'; import { BlockRegistry, CustomBlock } from './block'; import { ItemRegistry, CustomItem, BlockItem } from './item'; /** * Registry */ export abstract class Registry { /** * Block Registry */ static BLOCK: SimpleRegistry = BlockRegistry.INSTANCE; /** * Item Registry */ static ITEM: SimpleRegistry = ItemRegistry.INSTANCE; /** * Register Object * @param registry Target Registry * @param id ID * @param obj Object */ static register(registry: SimpleRegistry, id: Identifier, obj: T): T { registry.register(id, obj); return obj; } /** * Get Object From Registry * @param registry Target Registry * @param id ID * @returns Object */ static get(registry: SimpleRegistry, id: Identifier): T { return registry.get(id); } /** * Get ID Of Object From Registry * @param registry Target Registry * @param obj Object * @returns ID */ static getID(registry: SimpleRegistry, obj: T): Identifier { return registry.getID(obj); } }