local robot = require("robot") local torch = require("torch") ---Moves forward n blocks. ---Waits if there is an obstruction ---@param n number how many block to go forward ---@param mine boolean|nil whether to mine block to go through ---@param place_torches boolean|nil whether to place torches in intervals local function forward(n, mine, place_torches) for i = 1, n do while true do local result, error = robot.forward() if result then break else if mine and error == "solid" then robot.swing() else print("Cannot move: " .. error) end end end -- place a torch every 11 blocks to keep the tunnel lit if i % 11 == 0 and place_torches then torch.place_torch(nil) end end end ---Move until it runs into a solid block. ---Waits if there is an entity obstrucion ---@return number n number of blocks moved. local function forward_until_solid() local moved = 0 while true do local result, error = robot.forward() if result then moved = moved + 1 else if error == "solid" then return moved end end end end return { forward = forward, forward_until_solid = forward_until_solid, }