Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --(( Settings ))--
- local fuelcap = 120
- local shaftoffset = 5
- local junk = {
- "minecraft:stone",
- "minecraft:cobblestone",
- "minecraft:dirt",
- "minecraft:grass",
- "minecraft:gravel",
- --"minecraft:sand",
- "chisel:marble1",
- "chisel:marble2",
- "chisel:limestone1",
- "chisel:limestone2",
- "chisel:basalt1",
- "chisel:basalt2",
- }
- local fuel = {
- "minecraft:coal",
- "minecraft:charcoal",
- "minecraft:planks",
- "minecraft:wood",
- }
- --(( Variables ))--
- local depth = 0
- --(( Functions ))--
- local function selectfromlist(list)
- for slot=1,16 do
- local data = turtle.getItemDetail(slot)
- if data then
- for _,block in ipairs(list) do
- if block == data.name then
- turtle.select(slot)
- return true
- end
- end
- end
- end
- return false
- end
- local function selectfuel()
- return selectfromlist(fuel)
- end
- local function selectjunk()
- return selectfromlist(junk)
- end
- -- side = "", "up", or "down"
- local function isvaluable()
- local succ,data = turtle.inspect()
- if not succ then
- return false
- end
- for _,block in ipairs(junk) do
- if data.name == block then
- return false
- end
- end
- return true
- end
- local function refuel()
- local fuel = turtle.getFuelLevel()
- while fuel < fuelcap do
- print("Searching for fuel...")
- if selectfuel() and turtle.refuel(1) then
- return true
- end
- print("No fuel found. Press SPACE to search again!")
- local key
- repeat _,key=os.pullEvent("key")
- until key==keys.space
- end
- end
- local function dig(dir)
- if not dir or dir == "forward" then
- dir = ""
- end
- dir = dir:sub(1,1):upper() .. dir:sub(2):lower()
- turtle.select(1)
- if not turtle["detect"..dir]() then return true end
- while not turtle["dig"..dir]() do
- if not turtle["attack"..dir]() then
- return false
- end
- end
- return true
- end
- local function move(dir)
- refuel()
- while not turtle[dir]() do
- if dig(dir) == false then
- return false
- end
- end
- return true
- end
- local function down()
- if move("down") then
- depth = depth + 1
- return true
- end
- return false
- end
- local function up()
- if move("up") then
- depth = depth - 1
- return true
- end
- return false
- end
- local function forward()
- return move("forward")
- end
- local function checksides()
- local turns = {turtle.turnRight,turtle.turnLeft}
- local turn = turns[math.random(1,#turns)]
- for count = 1,4 do
- if isvaluable() then
- dig()
- end
- turn()
- end
- end
- local function mine()
- -- go down little first
- repeat until down()
- repeat until down()
- if selectjunk() then
- turtle.placeUp()
- end
- -- down to bottom
- while true do
- checksides()
- if not down() then
- print("Bedrock after " .. depth .. " blocks!")
- break
- end
- end
- -- up to miss bedrock noise
- for i=1,5 do
- repeat until up()
- end
- -- move to next shaft
- for i=1,shaftoffset do
- repeat until forward()
- end
- -- up to surface
- while depth > 0 do
- checksides()
- repeat until up()
- end
- -- fill hole
- if selectjunk() then
- turtle.placeDown()
- end
- end
- local function formatTime(sec)
- if sec > 60 then
- return math.floor(sec/60).." min "..math.floor(sec%60).." sec"
- end
- return math.floor(sec) .. " sec"
- end
- print("Commencing mining operation!")
- local start = os.clock()
- mine()
- local took = os.clock() - start
- print("Operation complete! Took " .. formatTime(took))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement