Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local y = 2
- local z = 0
- local i = 0
- local bedrock = 0
- local enderbox = 0
- local fuelSlot = 0
- local answer = "a"
- local function update(strMessage)
- term.clear()
- term.setCursorPos(1,1)
- if strMessage then
- print(strMessage)
- end
- end
- update("Welcome to core driller!")
- os.sleep(3)
- repeat
- update("Do you have an Ender Chest in slot 16 to offload resources?")
- answer=read()
- answer=string.lower(answer)
- until answer=="y" or answer=="n"
- if answer=="y" then
- enderbox = 16
- else
- enderbox = 0
- end
- repeat
- update("Do you have an Ender Chest for fuel in slot 15 for fuel?")
- answer=read()
- answer=string.lower(answer)
- until answer=="y" or answer=="n"
- if answer=="y" then
- fuelSlot = 15
- else
- fuelSlot = 0
- end
- repeat
- update("Do you have a bucket for fuel in slot 15?")
- answer=read()
- answer=string.lower(answer)
- until answer=="y" or answer=="n"
- if answer=="y" then
- bucket = 15
- else
- bucket = 0
- end
- turtle.select(1)
- local function tf() bedrock = 0 while not turtle.forward() do turtle.attack() turtle.dig() turtle.digUp() RefuelDigger(fuelSlot) end end
- local function fuel(slot)
- if slot == 0 then return end
- turtle.select(slot)
- if turtle.place() then
- if not turtle.refuel() then
- turtle.place()
- end
- end
- turtle.select(1)
- end
- local function loot()
- while turtle.suck() do
- FullStorage(enderbox)
- end
- while turtle.suckUp() do
- FullStorage(enderbox)
- end
- while turtle.suckDown() do
- FullStorage(enderbox)
- end
- end
- local function search()
- for i = 1, 4 do -- added wrapper loop
- local gooditem = true -- added because 4 checks
- for t = 1, 4 do
- turtle.select(t)
- if turtle.getItemCount(t) > 50 then
- turtle.drop(turtle.getItemCount(t)-1) -- added to discard trash
- end
- if not turtle.detect() or turtle.compare() then -- removed not
- gooditem = false --added
- fuel(bucket)
- break
- end
- end --added
- if gooditem then --added
- if turtle.getSelectedSlot() ~= 1 then
- turtle.select(1) -- Always want the items to stack.
- end
- FullStorage(enderbox) -- check we have room 1st!
- while turtle.suck() do FullStorage(enderbox) end
- turtle.dig()
- end
- turtle.turnRight()
- end
- end
- local function td()
- bedrock = 0
- local canGoDown = true
- while canGoDown do
- turtle.select(1) -- added so you don't fill inventory with junk.
- if not turtle.down() then
- RefuelDigger(fuelSlot)
- while turtle.suckDown() do FullStorage(enderbox) end
- if turtle.detectDown() and not turtle.digDown() then
- canGoDown = false
- else
- turtle.attackDown()
- end
- else
- bedrock = bedrock + 1
- FullStorage(enderbox)
- search() -- Simplify functionify so less clutter and we can read it.
- end
- end -- End of top while loop
- for z = 1, bedrock do -- Added bedrock counter
- while not turtle.up() do --- added sanity check
- turtle.attackUp()
- turtle.select(1) -- always stack items before dig
- turtle.digUp()
- RefuelDigger(fuelSlot) -- Maybe we ran out of gas looping up 10000 blocks?
- end
- end -- end of for loop
- tf()
- end -- end function
- function RefuelDigger(nSlot)
- if turtle.getFuelLevel() > 256 then
- return
- end
- if nSlot == 0 then
- if turtle.getFuelLevel() < 256 then
- for i=1,bedrock do
- while not turtle.up() do --- added sanity check
- turtle.attackUp()
- turtle.select(1) -- always stack items before dig
- turtle.digUp()
- end
- end
- while turtle.getFuelLevel() < 4000 do
- update("Waiting for fuel...")
- if turtle.refuel() then
- print("Fuel Level " .. turtle.getFuelLevel())
- end
- os.sleep(5)
- end
- for i=1,bedrock do
- while not turtle.down() do
- turtle.attackDown()
- turtle.select(1)
- turtle.digDown()
- end
- end
- end
- else
- FullStorage(enderbox)
- turtle.select(nSlot)
- if turtle.placeUp() then
- while turtle.getFuelLevel() < 1000 do
- turtle.suckUp()
- turtle.refuel()
- turtle.dropUp()
- end
- turtle.digUp()
- end
- end
- end
- function FullStorage(nSlot)
- update("Full check...")
- if nSlot > 0 then
- if turtle.getItemCount(nSlot-2) > 0 then
- turtle.select(nSlot)
- if turtle.placeUp() then
- for i = 5, nSlot-2 do
- turtle.select(i)
- turtle.dropUp()
- end
- turtle.select(nSlot)
- turtle.digUp()
- end
- end
- else
- if turtle.getItemCount(16) > 0 then
- for i=1,bedrock do
- while not turtle.up() do --- added sanity check
- turtle.attackUp()
- turtle.select(1) -- always stack items before dig
- turtle.digUp()
- end
- end
- while turtle.getItemCount(16) > 0 do
- os.sleep(1)
- end
- for i=1,bedrock do
- while not turtle.down() do
- turtle.attackDown()
- turtle.select(1)
- turtle.digDown()
- end
- end
- end
- end
- end
- local tn = turtle.turnRight
- local tCom = {tf,tf,tf,tf,td,tf,tf,tf,tf,td,tf,tf,tf,tf,td,tf,tf,tf,tf,td,tf,tf,tf,tf,td}
- local function arrayShift(tMyArray)
- for i=1,2 do
- table.insert(tMyArray,1,tMyArray[#tMyArray])
- table.remove(tMyArray,#tMyArray)
- end
- return tMyArray
- end
- local function myDoit(tArray,dir)
- if dir ~= 0 then
- for i=1,#tArray do
- tArray[i]()
- end
- else
- for i=#tArray,1, -1 do
- tArray[i]()
- end
- end
- end
- tf()
- for i=1,26 do
- myDoit(tCom,i%2)
- tCom = arrayShift(tCom)
- if i%2 == 0 then
- tn = turtle.turnLeft
- else
- tn = turtle.turnRight
- end
- tn()
- tf()
- tn()
- tf()
- end
- function empty(nSlot)
- update("Going to empty.")
- turtle.select(nSlot)
- if turtle.placeUp() then
- for i = 5, nSlot-2 do
- turtle.select(i)
- turtle.dropUp()
- end
- turtle.select(nSlot)
- turtle.digUp()
- end
- turtle.select(1)
- end
- if enderbox > 0 then
- empty(enderbox)
- end
Advertisement
Add Comment
Please, Sign In to add comment