public override byte GetBlockAt(int px, int y, int pz)
{
if (y < 0 || y >= ChunkY) return KnownBlocks.Error;
int X, Z;
Vector3i local = Global2Local(new Vector3i(px, y, pz), out X, out Z);
Chunk c = GetChunk(X, Z);
if (c == null) return KnownBlocks.Error;
return c.Blocks[local.X, local.Y, local.Z];
}