

function sgetBlockAt(x, y, z, radius)
  print("coords " .. x .. "," .. y .. "," .. z)
  --io.read()
  local sqrt3 = math.sqrt(3)
  local r = radius
  --x = x - r
  --y = y - r
  --z = z - r
  local dist = math.sqrt(x*x + y*y + z*z)
  if dist >= r then
    local offsets = {{1, 0, 0},{-1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}}
    local i
    for i = 1,6 do
     local offset = offsets[i]
     local dx, dy, dz = offset[1], offset[2], offset[3] 
     local nx, ny, nz = x+dx,y+dy,z+dz
     local pdist = math.sqrt(nx*nx + ny*ny + nz*nz)
     if pdist < r and pdist + sqrt3 >= r then
       return 1
     end
    end
  end
  return nil
end

provider = {
  ["getDimensions"] = getDimensions,
  ["getNumMaterials"] = getNumMaterials,
  ["getBlockAt"] = getBlockAt
}

function prov(radius)
	local provider = {
		["sizeX"] = radius * 2 + 1,
		["sizeY"] = radius * 2 + 1,
		["sizeZ"] = radius * 2 + 1,
		["startX"] = 0 - radius,
		["startY"] = 0 - radius,
		["startZ"] = 0 - radius,
		["numMaterials"] = 1,
		["getBlockAt"] = function(x, y, z)
			return sgetBlockAt(x, y, z, radius)
		end
	}
	return provider	
end


