Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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 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
- return false
- 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
- blockGroup.lastIndex = groupIndex
- 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
Advertisement
Add Comment
Please, Sign In to add comment