49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
import { Identifier, SimpleRegistry } from './core';
|
|
import { BlockRegistry } from './block';
|
|
import { ItemRegistry } from './item';
|
|
|
|
/**
|
|
* Registry
|
|
*/
|
|
export abstract class Registry {
|
|
/**
|
|
* Block Registry
|
|
*/
|
|
static BLOCK = BlockRegistry.INSTANCE;
|
|
/**
|
|
* Item Registry
|
|
*/
|
|
static ITEM = ItemRegistry.INSTANCE;
|
|
|
|
/**
|
|
* Register Object
|
|
* @param registry Target Registry
|
|
* @param id ID
|
|
* @param obj Object
|
|
*/
|
|
static register<T>(registry: SimpleRegistry<T>, 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<T>(registry: SimpleRegistry<T>, id: Identifier): T {
|
|
return registry.get(id);
|
|
}
|
|
|
|
/**
|
|
* Get ID Of Object From Registry
|
|
* @param registry Target Registry
|
|
* @param obj Object
|
|
* @returns ID
|
|
*/
|
|
static getID<T>(registry: SimpleRegistry<T>, obj: T): Identifier {
|
|
return registry.getID(obj);
|
|
}
|
|
}
|