local args = { ... }
local levels = 5
local safemode = true
if #args ~= 0 then
if tonumber(args[1]) == nil then
error("input must be a number")
else
levels = tonumber(args[1])
end
if tonumber(args[2]) == nil then
safemode = false
end
end
local BUILDINGBLOCK = { [1] = "minecraft:cobblestone", [2] = "minecraft:cobbled_deepslate" }
local LIGHTING = { [1] = "minecraft:torch" }
local TORCHDISTANCE = 7
local HOLEDISTANCE = 5
local levelCounter = 0
local holeCounter = 0
local torchCounter = 0
local function selectItem(blockGroup)
local function isItem(itemName)
local details = turtle.getItemDetail()
if details ~= nil then
if details.name == itemName then
return true
end
end
return false
end
local function itereateAllFields(itemName)
if isItem(itemName) then return true end
for i = 1, 16, 1 do
turtle.select(i)
if isItem(itemName) then return true end
end
end
if blockGroup.lastIndex ~= nil then
if itereateAllFields(blockGroup[blockGroup.lastIndex]) then return true end
end
for groupIndex = 1, #blockGroup, 1 do
if itereateAllFields(blockGroup[groupIndex]) then return true end
end
error("Item not found in List: " .. textutils.serialise(blockGroup))
end
local function digHole()
if not turtle.inspect() then return false end
for i = 1, 4, 1 do
while not turtle.forward() do
turtle.dig()
end
end
turtle.back()
turtle.back()
turtle.back()
turtle.back()
end
local function digLevel()
while not turtle.forward() do
turtle.dig()
end
selectItem(BUILDINGBLOCK)
turtle.placeDown()
if safemode then
turtle.turnRight()
selectItem(BUILDINGBLOCK)
turtle.place()
turtle.turnLeft()
turtle.turnLeft()
selectItem(BUILDINGBLOCK)
turtle.place()
turtle.turnRight()
end
while not turtle.up() do
turtle.digUp()
end
selectItem(BUILDINGBLOCK)
turtle.placeUp()
end
local function digSection()
digLevel()
if holeCounter >= HOLEDISTANCE then
turtle.turnLeft()
digHole()
turtle.turnRight()
turtle.turnRight()
digHole()
turtle.turnLeft()
holeCounter = 0
end
if turtle.inspectDown() then return error("not safe") end
turtle.down()
if turtle.inspectUp() then return error("not safe") end
if torchCounter >= TORCHDISTANCE then
turtle.turnRight()
turtle.turnRight()
selectItem(LIGHTING)
turtle.place()
turtle.turnLeft()
turtle.turnLeft()
torchCounter = 0
end
end
while levelCounter < levels do
digSection()
levelCounter = levelCounter + 1
holeCounter = holeCounter + 1
torchCounter = torchCounter + 1
end