Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function refuel()
- print("Starting Fuel: ", turtle.getFuelLevel())
- while turtle.getFuelLevel() < 32 do
- turtle.select(4)
- worked = turtle.refuel(1)
- if worked == false then
- print("Put fuel in my last slot and press enter")
- read()
- end
- end
- print("Ending Fuel: ", turtle.getFuelLevel())
- end
- function getRedstone()
- levels = {}
- levels.f = redstone.getAnalogInput("front")
- levels.b = redstone.getAnalogInput("back")
- levels.l = redstone.getAnalogInput("left")
- levels.r = redstone.getAnalogInput("right")
- temp = levels
- for _, level in pairs(temp) do
- print(level)
- -- If any level is greater than 0, return true immediately
- if level > 0 then
- levels.presant = true
- found = true
- break
- end
- end
- if found == false then
- levels.presant = false
- end
- -- If the loop completes, it means no level was greater than 0
- return levels
- end
- function redstoneOrient()
- levels = getRedstone()
- print("f:", levels.f, "b:", levels.b, "r:", levels.r, "l:", levels.l, "presant:", levels.presant)
- if levels.presant == true then
- if levels.l == 15 then
- print("I'm home")
- elseif levels.f == 15 then
- turtle.turnRight()
- elseif levels.b == 15 then
- turtle.turnLeft()
- elseif levels.r == 15 then
- turtle.turnRight()
- turtle.turnRight()
- end
- end
- return levels.presant
- end
- function searchString(bigString, searchString)
- if bigString ~= nil and searchString ~= nil then
- if bigString.match(bigString, searchString) == nil then
- return false
- else
- return true
- end
- else
- return false
- end
- end
- function inspect()
- tf, data = turtle.inspect()
- tfD, dataD = turtle.inspectDown()
- tfF, dataU = turtle.inspectUp()
- print(tf, data.name)
- print(tfD, dataD.name)
- print(tfU, dataU.name)
- results = {}
- results.f = data.name
- results.d = dataD.name
- results.u = dataU.name
- return results
- end
- function count(slotNumber)
- return turtle.getItemCount(slotNumber)
- end
- function mineDir(direction)
- results = inspect()
- if direction == "f" then
- if searchString(tostring(results.f), "bud") or searchString(tostring(results.f), "cluster") or searchString(tostring(results.f), "nil") then
- print("mineDir Front - Okay: mining", results.f)
- turtle.dig()
- return true
- else
- print("mineDir Front - Somethings wrong I shouldnt mine this", results.f)
- read()
- return false
- end
- end
- if direction == "d" then
- if searchString(tostring(results.d), "block") then
- print("mineDir Down - Okay: mining", results.d)
- turtle.digDown()
- return true
- elseif searchString(tostring(results.d), "budding") then
- return true
- else
- print("mineDir Down - Somethings wrong I shouldnt mine this", results.d)
- read()
- return false
- end
- end
- end
- function digF()
- return mineDir("f")
- end
- function digD()
- return mineDir("d")
- end
- function suck()
- turtle.select(1)
- turtle.suckDown()
- turtle.suckDown()
- turtle.suckDown()
- turtle.suckDown()
- turtle.suck()
- turtle.suck()
- turtle.suck()
- turtle.suck()
- end
- function orient()
- results = inspect()
- if redstoneOrient() == true then
- return true
- elseif searchString(tostring(results.f), "bud") == true then
- print("meme")
- read()
- return false
- else
- print("Im not home. HELP!")
- read()
- return false
- end
- end
- function mineCluster()
- turtle.select(5)
- result = digF()
- if result == false then
- print("mineCluster Front - Im not where im supposed to be. Crashing")
- temp = 0/0
- return false
- end
- moved = turtle.forward()
- while moved == false do
- turtle.select(5)
- result = digF()
- if result == false then
- print("mineCluster Front - Im not where im supposed to be. Crashing")
- temp = 0/0
- return false
- end
- moved = turtle.forward()
- end
- turtle.select(1)
- result = digD()
- if result == false then
- print("mineCluster Down - Im not where im supposed to be. Crashing")
- temp = 0/0
- return false
- end
- turtle.placeDown()
- turtle.back()
- turtle.turnLeft()
- end
- function mineClusters()
- mineCluster()
- mineCluster()
- mineCluster()
- mineCluster()
- end
- function chargeQuartz()
- itera = 0
- while count(5) > 2 and count(3) < 48 and itera < 20 do
- turtle.select(5)
- turtle.drop(1)
- turtle.select(3)
- worked = false
- timeout = 0
- while worked == false and timeout < 3 do -- suck and wait .2 seconds until charged recieved
- sleep(.2)
- worked = turtle.suck()
- timeout = timeout + .2
- end
- itera = itera+1
- end
- end
- function restoreBlocks()
- itera = 0
- while count(1) < 6 and itera < 10 and count(2) > 0 do
- if count(2) == 0 then
- print("I need more certus blocks in slot 2")
- read()
- end
- turtle.select(2)
- turtle.dropDown()
- turtle.select(3)
- turtle.dropDown()
- sleep(3)
- suck()
- itera = itera + 1
- end
- end
- function processItems()
- chargeQuartz()
- restoreBlocks()
- cleanupInv()
- end
- function cleanupInv()
- if count(3) > 45 then
- turtle.select(3)
- turtle.dropUp(count(3)-45)
- end
- turtle.select(5)
- if count(5) > 2 then
- turtle.dropUp(count(5)-2)
- end
- for i = 6, 16 do
- turtle.select(i)
- turtle.dropUp()
- end
- end
- suck()
- if orient() == true then
- while true do
- refuel()
- orient()
- suck()
- turtle.back()
- turtle.back()
- turtle.back()
- turtle.down()
- mineClusters()
- turtle.up()
- turtle.forward()
- turtle.forward()
- turtle.forward()
- processItems()
- print("Pausing 60 seconds for growth")
- sleep(60)
- end
- else
- print("I dont know where I am")
- end
Advertisement
Add Comment
Please, Sign In to add comment