Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --SETTINGS DEFAULTS
- local stop=false
- local settings={}
- settings["miningTime"]=4
- settings["digDelay"]=1
- settings["reserveFuelLevel"]=10
- settings["chargeTime"]=30
- settings["debug"]=false
- local nextStep=nil
- function loadSettings()
- local file = fs.open("SnapBoxSettings","r")
- local data = file.readAll()
- file.close()
- settings=textutils.unserialize(data)
- end
- function saveSettings()
- local file = fs.open("SnapBoxSettings","w")
- file.write(textutils.serialize(settings))
- file.close()
- end
- function cleanUp()
- if nextStep=="chargeplacecharge" or nextStep=="chargedigcharge" then
- if settings["debug"]==true then
- print("charge deployed")
- end
- if turtle.getItemCount(3)==0 then
- if settings["debug"]==true then
- print("Fully deployed")
- end
- digCharge()
- elseif turtle.getItemCount(7)==0 then
- if settings["debug"]==true then
- print("bc producer deployed")
- end
- if turtle.detectDown()==false then
- if settings["debug"]==true then
- print("moving down one")
- end
- turtle.down()
- end
- turtle.select(7)
- turtle.digDown()
- turtle.down()
- turtle.select(6)
- turtle.digDown()
- turtle.down()
- turtle.select(5)
- turtle.digDown()
- turtle.forward()
- turtle.select(4)
- turtle.digDown()
- elseif turtle.getItemCount(6)==0 then
- if settings["debug"]==true then
- print("Energy bridge deployed")
- end
- if turtle.detectDown()==false then
- if settings["debug"]==true then
- print("moving down one")
- end
- turtle.down()
- end
- turtle.select(6)
- turtle.digDown()
- turtle.down()
- turtle.select(5)
- turtle.digDown()
- turtle.forward()
- turtle.select(4)
- turtle.digDown()
- elseif turtle.getItemCount(5)==0 then
- if settings["debug"]==true then
- print("IC2 consumer deployed")
- end
- if turtle.detectDown()==false then
- if settings["debug"]==true then
- print("moving down one")
- end
- turtle.down()
- end
- turtle.select(5)
- turtle.digDown()
- turtle.forward()
- turtle.select(4)
- turtle.digDown()
- elseif turtle.getItemCount(4)==0 then
- if settings["debug"]==true then
- print("solar panel deployed")
- end
- if turtle.detectDown()==false then
- if settings["debug"]==true then
- print("moving forward one")
- end
- turtle.forward()
- end
- turtle.select(4)
- turtle.digDown()
- end
- digChest()
- digMiningWell()
- elseif nextStep=="chargewaitforrefuel" then
- digCharge()
- digChest()
- digMiningWell()
- elseif nextStep=="placeminingwell" or nextStep=="digminingwell" then
- if turtle.getItemCount(2)==0 then
- digMiningWell()
- end
- elseif nextStep=="placechest" or nextStep=="digchest" then
- if turtle.getItemCount(1)==0 then
- digChest()
- end
- digMiningWell()
- elseif nextStep=="powerdown" or nextStep=="powerup" then
- if settings["debug"]==true then
- print("power deployed")
- end
- if turtle.getItemCount(4)==0 then
- if settings["debug"]==true then
- print("fully deployed")
- end
- digCharge()
- elseif turtle.getItemCount(5)==0 then
- if settings["debug"]==true then
- print("IC2 deployed")
- end
- if turtle.detectDown()==false then
- if settings["debug"]==true then
- print("moving down one")
- end
- turtle.down()
- end
- turtle.select(7)
- turtle.digDown()
- turtle.down()
- turtle.select(6)
- turtle.digDown()
- turtle.down()
- turtle.select(5)
- turtle.digDown()
- elseif turtle.getItemCount(6)==0 then
- if settings["debug"]==true then
- print("energy bridge deployed")
- end
- if turtle.detectDown()==false then
- if settings["debug"]==true then
- print("moving down one")
- end
- turtle.down()
- end
- turtle.select(6)
- turtle.digDown()
- turtle.down()
- turtle.select(5)
- turtle.digDown()
- elseif turtle.getItemCount(7)==0 then
- if settings["debug"]==true then
- print("bc deployed")
- end
- if turtle.detectDown()==false then
- if settings["debug"]==true then
- print("moving down one")
- end
- turtle.down()
- end
- turtle.select(5)
- turtle.digDown()
- end
- digChest()
- digMiningWell()
- end
- if settings["debug"]==true then
- print("finished cleanup")
- end
- setNextStep("topoff")
- end
- function checkStatus()
- if turtle.getItemCount(1)>0 then
- print("Ender Chest OK")
- else
- print("Please insert an Ender Chest into slot 1")
- while turtle.getItemCount(1)==0 do
- turtle.select(1)
- sleep(0.1)
- end
- end
- if turtle.getItemCount(2)>0 then
- print("Mining Well OK")
- else
- print("Please insert Mining Well into slot 2")
- while turtle.getItemCount(2)==0 do
- turtle.select(2)
- sleep(0.1)
- end
- end
- if turtle.getFuelLevel()~="unlimited" then
- if turtle.getItemCount(3)>0 then
- print("Charge Station OK")
- else
- print("Please insert Advanced Charge Station (or higher) into slot 3")
- while turtle.getItemCount(3)==0 do
- turtle.select(3)
- sleep(0.1)
- end
- end
- end
- if turtle.getItemCount(4)>0 then
- print("Solar Panel OK")
- else
- print("Please insert Ultimate Hybrid Solar Panel into slot 4")
- while turtle.getItemCount(4)==0 do
- turtle.select(4)
- sleep(0.1)
- end
- end
- if turtle.getItemCount(5)>0 then
- print("IC2 Consumer OK")
- else
- print("Please insert IC2 HV Consumer into slot 5")
- while turtle.getItemCount(5)==0 do
- turtle.select(5)
- sleep(0.1)
- end
- end
- if turtle.getItemCount(6)>0 then
- print("Energy Bridge OK")
- else
- print("Please insert Energy Bridge into slot 6")
- while turtle.getItemCount(6)==0 do
- turtle.select(6)
- sleep(0.1)
- end
- end
- if turtle.getItemCount(7)>0 then
- print("BC Producer OK")
- else
- print("Please insert BC Producer into slot 7")
- while turtle.getItemCount(7)==0 do
- turtle.select(7)
- sleep(0.1)
- end
- end
- if needsFuel() then
- if turtle.getItemCount(16)>0 then
- print("Fuel Level OK")
- else
- print("Please insert fuel in slot 16")
- while turtle.getItemCount(16)==0 do
- turtle.select(16)
- sleep(0.1)
- end
- end
- end
- end
- function needsFuel()
- local level=turtle.getFuelLevel()
- if level=="unlimited" or level>settings["reserveFuelLevel"] then
- return false
- else
- return true
- end
- end
- function moveForward()
- while turtle.detect() do
- turtle.dig()
- sleep(settings["digDelay"])
- end
- while turtle.forward()==false do
- turtle.dig()
- sleep(settings["digDelay"])
- turtle.attack()
- end
- end
- function topOff()
- if needsFuel()==true then
- setNextStep("chargeplacecharge")
- else
- setNextStep("placeminingwell")
- end
- end
- function placeCharge()
- turtle.select(4)
- while turtle.placeDown()==false do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- end
- turtle.back()
- turtle.select(5)
- while turtle.placeDown()==false do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- end
- turtle.up()
- turtle.select(6)
- while turtle.placeDown()==false do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- end
- turtle.up()
- turtle.select(7)
- while turtle.placeDown()==false do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- end
- turtle.up()
- turtle.select(3)
- while turtle.placeDown()==false do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- end
- end
- function digCharge()
- turtle.select(3)
- turtle.digDown()
- turtle.down()
- turtle.select(7)
- turtle.digDown()
- turtle.down()
- turtle.select(6)
- turtle.digDown()
- turtle.down()
- turtle.select(5)
- turtle.digDown()
- turtle.forward()
- turtle.select(4)
- turtle.digDown()
- end
- function placeChest()
- turtle.select(1)
- turtle.back()
- while turtle.place()==false do
- turtle.attack()
- turtle.dig()
- sleep(settings["digDelay"])
- end
- end
- function digChest()
- turtle.select(1)
- if turtle.getItemCount(1) > 0 then
- turtle.drop()
- end
- turtle.dig()
- turtle.forward()
- end
- function placeMiningWell()
- turtle.select(2)
- while turtle.placeDown()==false do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- end
- end
- function digMiningWell()
- turtle.select(2)
- if turtle.getItemCount(2) > 0 then
- turtle.drop()
- end
- turtle.digDown()
- end
- function setNextStep(next)
- if settings["debug"]==true then
- print("Set next step "..next)
- end
- local file=nil
- while file==nil do
- file=fs.open("SnapBoxStepTracker","w")
- end
- file.write(next)
- file.close()
- nextStep=next
- end
- function getNextStep()
- local file=fs.open("SnapBoxStepTracker","r")
- if file==nil then
- setNextStep("topoff")
- else
- local returnValue=file.readAll()
- file.close()
- setNextStep(returnValue)
- end
- end
- function powerUp()
- turtle.select(4)
- turtle.digDown()
- turtle.down()
- turtle.select(5)
- turtle.digDown()
- turtle.down()
- turtle.select(6)
- turtle.digDown()
- turtle.down()
- turtle.select(7)
- turtle.digDown()
- end
- function powerDown()
- turtle.select(7)
- while turtle.placeDown()==false and turtle.getItemCount(7)>0 do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- sleep(0.1)
- end
- turtle.up()
- turtle.select(6)
- while turtle.placeDown()==false and turtle.getItemCount(6)>0 do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- sleep(0.1)
- end
- turtle.up()
- turtle.select(5)
- while turtle.placeDown()==false and turtle.getItemCount(5)>0 do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- sleep(0.1)
- end
- turtle.up()
- turtle.select(4)
- while turtle.placeDown()==false and turtle.getItemCount(4)>0 do
- turtle.digDown()
- sleep(settings["digDelay"])
- turtle.attackDown()
- sleep(0.1)
- end
- end
- function checkResume()
- local file=fs.open("SnapBoxSettings","r")
- if file==nil then
- return false
- else
- file.close()
- return true
- end
- end
- function doNextStep()
- --is there a better way to do this?
- if nextStep=="topoff" then
- topOff()
- elseif nextStep=="chargeplacecharge" then
- placeCharge()
- setNextStep("chargewaitforrefuel")
- elseif nextStep=="chargewaitforrefuel" then
- sleep(settings["chargeTime"])
- setNextStep("chargedigcharge")
- elseif nextStep=="chargedigcharge" then
- digCharge()
- setNextStep("placeminingwell")
- elseif nextStep=="placeminingwell" then
- placeMiningWell()
- setNextStep("placechest")
- elseif nextStep=="placechest" then
- placeChest()
- setNextStep("powerdown")
- elseif nextStep=="powerdown" then
- powerDown()
- setNextStep("powerup")
- sleep(settings["miningTime"])
- elseif nextStep=="powerup" then
- powerUp()
- setNextStep("digchest")
- elseif nextStep=="digchest" then
- digChest()
- setNextStep("digminingwell")
- elseif nextStep=="digminingwell" then
- digMiningWell()
- setNextStep("moveforward")
- elseif nextStep=="moveforward" then
- moveForward()
- setNextStep("topoff")
- else
- print("Unknown Step - Something Went Wrong. Giving Up "..nextStep)
- return
- end
- end
- function getNextStep()
- local file=fs.open("SnapBoxStepTracker","r")
- if file==nil then
- setNextStep("topoff")
- else
- local returnValue=file.readAll()
- file.close()
- setNextStep(returnValue)
- end
- end
- function clearScreen()
- term.clear()
- term.setCursorPos(1,1)
- end
- --------MAIN PROGRAM
- clearScreen()
- --Check for a resume
- if checkResume()==false then
- --check to make sure it has all the items it needs
- checkStatus()
- --initial refuel
- turtle.select(16)
- turtle.refuel()
- turtle.select(1)
- nextStep="topoff"
- saveSettings()
- else
- print("Resuming")
- loadSettings()
- getNextStep()
- cleanUp()
- if settings["debug"]==true then
- fs.delete("SnapBoxSettings")
- fs.delete("SnapBoxStepTracker")
- return
- end
- end
- --main loop
- while stop==false do
- doNextStep()
- saveSettings()
- sleep(0.2)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement