Spaces:
Sleeping
Sleeping
| // Core type definitions for Minecraft Clone | |
| // ============ BLOCK TYPES ============ | |
| export enum BlockFace { | |
| BOTTOM = 0, | |
| TOP = 1, | |
| NORTH = 2, | |
| SOUTH = 3, | |
| WEST = 4, | |
| EAST = 5, | |
| } | |
| export interface BlockState { | |
| id: number; | |
| properties: Record<string, string>; | |
| } | |
| // ============ CHUNK TYPES ============ | |
| export interface ChunkPosition { | |
| x: number; | |
| z: number; | |
| } | |
| export interface ChunkData { | |
| position: ChunkPosition; | |
| blocks: Uint8Array; // CHUNK_WIDTH * CHUNK_HEIGHT * CHUNK_DEPTH | |
| heightMap: Uint16Array; // CHUNK_WIDTH * CHUNK_DEPTH | |
| dirty: boolean; | |
| meshVersion: number; | |
| } | |
| // ============ ITEM TYPES ============ | |
| export interface ItemStack { | |
| id: number; | |
| count: number; | |
| damage: number; | |
| nbt?: Record<string, unknown>; | |
| } | |
| // ============ ENTITY TYPES ============ | |
| export interface Entity { | |
| id: string; | |
| uuid: string; | |
| position: [number, number, number]; | |
| velocity: [number, number, number]; | |
| rotation: [number, number]; // yaw, pitch | |
| health: number; | |
| maxHealth: number; | |
| onGround: boolean; | |
| } | |
| // ============ PLAYER TYPES ============ | |
| export interface PlayerInventory { | |
| hotbar: (ItemStack | null)[]; | |
| main: (ItemStack | null)[]; | |
| armor: (ItemStack | null)[]; | |
| offhand: ItemStack | null; | |
| } | |
| export interface Player extends Entity { | |
| gamemode: 'survival' | 'creative' | 'adventure' | 'spectator'; | |
| inventory: PlayerInventory; | |
| selectedSlot: number; | |
| foodLevel: number; | |
| saturation: number; | |
| experience: number; | |
| experienceLevel: number; | |
| flying: boolean; | |
| sneaking: boolean; | |
| sprinting: boolean; | |
| } | |
| // ============ WORLD TYPES ============ | |
| export interface WeatherState { | |
| raining: boolean; | |
| thundering: boolean; | |
| rainTime: number; | |
| thunderTime: number; | |
| } | |
| export interface World { | |
| seed: number; | |
| time: number; // 0-24000 | |
| gameTime: number; | |
| spawnPoint: [number, number, number]; | |
| weather: WeatherState; | |
| dimension: 'overworld' | 'nether' | 'end'; | |
| } | |
| // ============ BIOME TYPES ============ | |
| export interface Biome { | |
| id: number; | |
| name: string; | |
| temperature: number; | |
| moisture: number; | |
| depth: number; | |
| scale: number; | |
| grassColor: string; | |
| foliageColor: string; | |
| waterColor: string; | |
| } | |
| // ============ VERTEX TYPES ============ | |
| export interface ChunkVertex { | |
| position: [number, number, number]; | |
| normal: [number, number, number]; | |
| uv: [number, number]; | |
| ao: number; // ambient occlusion | |
| light: number; // light level 0-15 | |
| } | |
| export interface ChunkMeshData { | |
| vertices: Float32Array; | |
| indices: Uint32Array; | |
| normals: Float32Array; | |
| uvs: Float32Array; | |
| colors: Float32Array; | |
| ao: Float32Array; | |
| } | |