minecraft-clone / src /types /index.ts
TomatitoToho's picture
Upload src/types/index.ts with huggingface_hub
53a6209 verified
Raw
History Blame Contribute Delete
2.58 kB
// 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;
}