import type { BlockRegistry } from "$/common/everything_registry.ts"; import type { SpriteRegion } from "$/common/constants.ts"; import type { OreJson } from "$/common/mod_data.ts"; // messages between the main thread and the chunk workers export type ToChunkWorker = | { type: "init"; // the blocks registry without its functions, indexed by numeric id blocks_registry: BlockRegistry[]; block_ids: Record; textures_info: Record; image: { width: number; height: number }; // mods' worldgen scripts and ores, so generation matches the server worldgen_scripts: { mod: string; url: string }[]; ores: OreJson[]; } | { type: "generate"; chunk_x: number; chunk_z: number; seed: string } | { type: "mesh"; chunk_x: number; chunk_z: number; version: number; padded_chunk: Uint32Array }; export type FromChunkWorker = | { type: "generated"; chunk_x: number; chunk_z: number; blocks: Uint32Array; // blocks that landed in other chunks (tree leaves), flattened as x, y, z, numeric id spills: Int32Array; } | { type: "meshed"; chunk_x: number; chunk_z: number; version: number; opaque_vertices: Float32Array; opaque_count: number; transparent_vertices: Float32Array; transparent_count: number; };