Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Mining Turtle Quarry Program Version 1.0
- local distance = 0
- -- Get quarry size
- print ("Height (downwards):")
- local height = tonumber(read())
- print ("")
- print ("Width (to the left):")
- local width = tonumber(read())
- print ("")
- print ("Length (straight ahead):")
- local length = tonumber(read())
- length = length - 1
- print ("")
- function emptyInventory()
- print("Emptying inventory...")
- for i=1,16 do
- turtle.select(i)
- turtle.drop()
- end
- turtle.select(1)
- print("Finished emptying inventory.")
- end
- function refuel()
- print("Refueling...")
- turtle.select(1)
- while true do
- if turtle.suck() == false then
- turtle.dropUp()
- break
- end
- turtle.refuel()
- turtle.dropUp()
- end
- print("Finished refueling.")
- emptyInventory()
- end
- function resupply(h)
- -- return home
- print("Returning home for resupply...")
- for i=1,h do
- turtle.up()
- end
- -- empty Inventory
- turtle.turnRight()
- turtle.turnRight()
- emptyInventory()
- -- refuel
- turtle.turnRight()
- refuel()
- -- get back
- turtle.turnRight()
- for i=1,h do
- turtle.down()
- end
- print("Finished resupply.")
- end
- -- loop
- for h=1,height do
- -- move to layer
- turtle.digDown()
- turtle.down()
- distance = distance + 1
- for w=1,width do
- -- dig line
- for l=1,length do
- turtle.dig()
- if l<length then
- if turtle.forward() == false then
- repeat
- turtle.dig()
- sleep(0.25) -- small sleep to allow for gravel/sand to fall.
- until turtle.forward() == true
- end
- distance = distance + 1
- end
- if l==length then
- if turtle.detect() == true then
- repeat
- turtle.dig()
- sleep(0.25) -- small sleep to allow for gravel/sand to fall.
- until turtle.detect() == false
- end
- end
- end
- -- move backwards
- for i=2,length do
- turtle.back()
- distance = distance - 1
- end
- -- move to next line
- if w<width then
- turtle.turnLeft()
- turtle.dig()
- if turtle.forward() == false then
- repeat
- turtle.dig()
- sleep(0.25) -- small sleep to allow for gravel/sand to fall.
- until turtle.forward() == true
- end
- distance = distance + 1
- turtle.turnRight()
- end
- -- dump unwanted items
- print("Dumping unwanted items...")
- for i=1,16 do
- local data = turtle.getItemDetail(i)
- if data then
- if data.name == "minecraft:cobblestone" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "minecraft:dirt" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "minecraft:diorite" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "minecraft:granite" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "minecraft:andesite" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "minecraft:gravel" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "byg:scoria_cobblestone" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "blockus:limestone" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "croptosis:potash" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "mysticalagriculture:inferium_essence" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "minecraft:flint" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "promenade:blunite" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "minecraft:cobbled_deepslate" then
- turtle.select(i)
- turtle.drop()
- end
- if data.name == "minecraft:tuff" then
- turtle.select(i)
- turtle.drop()
- end
- end
- end
- print("Finished dumping unwanted items.")
- turtle.select(1)
- -- check for refuel items
- print("Checking for refuel items...")
- for i=1,16 do
- turtle.select(i)
- if turtle.refuel(0) == true then
- print("Found refuel item.")
- turtle.refuel()
- end
- end
- turtle.select(1)
- print("Finished checking for refuel items.")
- end
- -- move to the right
- turtle.turnRight()
- for i=2,width do
- if turtle.forward() == false then
- repeat
- turtle.dig()
- sleep(0.25) -- small sleep to allow for gravel/sand to fall.
- until turtle.forward() == true
- end
- distance = distance - 1
- end
- turtle.turnLeft()
- -- check fuel
- local fuelForNextLayer = h + width * length + 10
- local currentFuelLevel = turtle.getFuelLevel()
- print("Remaining fuel: " .. currentFuelLevel)
- if currentFuelLevel < fuelForNextLayer then
- resupply(h)
- end
- -- check inventory space
- print("Checking inventory space...")
- local freeSlots = 0
- local inventorySpace = 1024
- for i=1,16 do
- turtle.select(i)
- inventorySpace = inventorySpace - turtle.getItemCount()
- if turtle.getItemCount() == 0 then
- freeSlots = freeSlots + 1
- end
- end
- print("Free slots: " .. freeSlots)
- print("Inventory space: " .. inventorySpace)
- turtle.select(1)
- if freeSlots < 5 then
- resupply(h)
- end
- if inventorySpace < 5 * 64 then
- resupply(h)
- end
- end
- -- move back to top
- for i=1,height do
- turtle.up()
- distance = distance - 1
- end
- turtle.turnRight()
- turtle.turnRight()
- emptyInventory()
- turtle.turnRight()
- turtle.turnRight()
- print("Finished digging.")
Add Comment
Please, Sign In to add comment