--(( Settings ))--
local fuelcap = 50
--(( Variables ))--
local depth = 0
local items = {}
--(( Functions ))--
local function claim(slot)
items[slot] = true
end
-- side = "", "up", or "down"
local function isjunk(side)
side = side or ""
side = side:sub(1,1):upper() .. side:sub(2):lower()
for slot,value in pairs(items) do
turtle.select(slot)
if turtle["compare"..side]() then
return true
end
end
return false
end
local function refuel()
local fuel = turtle.getFuelLevel()
while fuel < fuelcap do
print("Searching for fuel..")
for slot = 1,16 do
if items[slot] ~= true then
turtle.select(slot)
if turtle.refuel(1) then return true end
end
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)
dir = dir or ""
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 down()
refuel()
while not turtle.down() do
if dig("down") == false then
return false
end
end
return true
end
local function up()
refuel()
while not turtle.up() do
if dig("up") == false then
return false
end
end
return true
end
local function checksides()
local turns = {turtle.turnRight,turtle.turnLeft,}
local turn = turns[math.random(1,#turns)]
for count = 1,4 do
if not isjunk() then
dig()
end
turn()
end
end
local function fill()
-- first try junk items
for slot,state in pairs(items) do
if state == true then
if turtle.getItemCount(slot) > 1 then
turtle.select(slot)
while not turtle.placeDown() do
turtle.attackDown()
end
return
end
end
end
-- then use storage
for slot = 1,16 do
if items[slot] ~= true then
if turtle.getItemCount(slot) > 0 then
turtle.select(slot)
if turtle.placeDown() then
return
end
end
end
end
end
local function mine()
local running = true
while running do
checksides()
if not down() then
print("Probably hit bedrock!")
running = false
else
depth = depth + 1
end
end
print("Heading back up...")
for count = 1,depth do
repeat until up()
end
fill()
end
claim(1)--stone
claim(2)--dirt
claim(3)--cobble/gravel
print("Commencing mining operation!")
mine()
Comments