import { ClientWorld } from "../client/client_world.ts"; import { Tile } from "../client/components/dimension.ts"; import { ItemStack } from "../client/inventory.ts"; export class EverythingRegistry { static #registries = new Map(); static register(registry_name: string, key: string, value: T) { this.#registries.set(`${registry_name}__${key}`, value); } static get(registry_name: string, key: string): T { return this.#registries.get(`${registry_name}__${key}`) as T; } } export interface TileRegistry { texture_id: string | ((tile: Tile) => string); has_collision: boolean; on_create?(world: ClientWorld, tile: Tile): void; on_click?(world: ClientWorld, tile: Tile): void; on_interact?(world: ClientWorld, tile: Tile): void; on_tick?(world: ClientWorld, tile: Tile, tick_delta: number): void; on_second?(world: ClientWorld, tile: Tile, second_delta: number): void; } export interface ItemRegistry { texture_id: string | ((item: ItemStack) => string); on_create?(item: ItemStack): void; get_lore?(item: ItemStack): string; }