sf = require("structure") local pf = require("pathfinding") local im = require("inventorymanager") local origin = vector.new(-15,235,120) function build(x,y,z) store = {height = 0} grocerylist = {} for h = 1,8 do store[h] = {width = 0} for w = 1,8 do store[h][w] = {depth = 0} for d = 1,8 do bool, data = sf.blockat(x+w,z+d,y+h) if bool then store[h][w][d] = data store[h][w].depth = d grocerylist[store[h][w][d]] = (grocerylist[store[h][w][d]] or 0)+1 end end if store[h][w].depth>0 then store[h].width = w end end if store[h].width>0 then store.height = h end end if store.height==0 then --print("cell at",x,y,z,"is done") removechunk(x,y,z) return true end flag = false for k,v in pairs(grocerylist) do if im.count(k) < v then print("not enough "..k.." need "..v.." of it") flag = true end end if turtle.getFuelLevel() < 2000 then print("too lazy for that") flag = true end if flag then pf.to(vector.new(pf.home.x,position.y+8,pf.home.z)) pf.returnHome() return false end pf.to(origin + vector.new(x+1,y+8,z+1)) for h = 1,8 do print(store[h].width) for w = 1,store[h].width do print(store[h][w].depth) for d = 1,store[h][w].depth do if store[h][w][d] then pf.to(origin+vector.new(x+w,y+h,z+d)) im.select(store[h][w][d]) turtle.placeDown() end end end end removechunk(x,y,z) return true end function removechunk(x,y,z) --::success:: local file = fs.open("tobuild","r") local rest = {} line = file.readLine() while line do table.insert(rest,line) line = file.readLine() end file.close() file = fs.open("tobuild","w") str = tostring(vector.new(x,y,z)) for _,v in ipairs(rest) do if v ~= str then file.writeLine(v) end end file.close() end function stringtovec(str) parts = {} for part in string.gmatch(str, "([^,]+)") do table.insert(parts, part) end return vector.new(unpack(parts)) end --pf.to(origin) file=fs.open("tobuild","r") chunk = file.readLine() file.close() print(chunk) vec = stringtovec(chunk) X1,Y1,Z1 = vec.x,vec.y,vec.z print(X1,Y1,Z1) while build(X1,Y1,Z1) do -- term.clear() print(X1,Y1,Z1) file = fs.open("tobuild","r") chunk = file.readLine() vec = stringtovec(chunk) X1,Y1,Z1 = vec.x,vec.y,vec.z file.close() --term.clear() sleep(0) end pf.returnHome()