This repository has been archived on 2023-11-26. You can view files and clone it, but cannot push or open issues or pull requests.
ScriptCraft/scriptcraft/src/main/ts/src/minecraft/registry.ts

49 lines
1.1 KiB
TypeScript

import { Identifier, SimpleRegistry } from './core';
import { CustomBlock } from './block';
import { CustomItem, BlockItem } from './item';
/**
* Registry
*/
export abstract class Registry {
/**
* Block Registry
*/
static BLOCK: SimpleRegistry<CustomBlock>;
/**
* Item Registry
*/
static ITEM: SimpleRegistry<CustomItem | BlockItem>;
/**
* 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);
}
}