Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --By xXxMoNkEyMaNxXx doz elsez endz
- local arg={
- ender=false,
- }
- local argtypes={
- ender="boolean",
- }
- for parameter,value in table.concat({...}," "):gmatch'%-([%w_]+) ([^ ]+)' do
- local argtype=argtypes[parameter]
- if argtype=="string" then
- arg[parameter]=tostring(value) or arg[parameter]
- elseif argtype=="number" then
- arg[parameter]=tonumber(value) or arg[parameter]
- elseif argtype=="boolean" then
- arg[parameter]=value=="true" or value~="false" and arg[parameter] or false
- elseif argtype=="peripheral" then
- arg[parameter]=peripheral.wrap(value) or arg[parameter]
- end
- end
- local lookDirs={{0,0,1},{-1,0,0},{0,0,-1},{1,0,0}}
- local rot=4
- local pos={0,0,0}
- local chestPos={0,0,0,1}
- local function lua(v,i,n)
- return (v+i-1)%n+1
- end
- turtle.select(1)
- local inventory={slot=1,protected={1,2}}
- function inventory.select(slot)
- if turtle.select(slot) then
- inventory.slot=slot
- return slot
- end
- end
- local actions={s=inventory.select}
- function inventory.unProtected(slot)
- for _,ip in next,inventory.protected do
- if slot==ip then
- return false
- end
- end
- return true
- end
- function inventory.isFull(roomLeft)--Return true if all slots are occupied. (send true to make sure they have no room)
- --print'asd'
- for i=1,16 do
- if inventory.unProtected(i) then
- if turtle.getItemCount(i)==0 then
- return false
- elseif roomLeft and turtle.getItemSpace(i)>0 then
- return false
- end
- end
- end
- return true
- end
- function inventory.isEmpty()
- for i=1,16 do
- if inventory.unProtected(i) and turtle.getItemCount(i)>0 then
- return false
- end
- end
- return true
- end
- function inventory.empty(f)--Choose which way you want to drop.
- f=f or turtle.drop
- local allDropped=true
- for i=1,16 do
- if inventory.unProtected(i) and inventory.select(i) then
- allDropped=allDropped and f(turtle.getItemCount(i))
- end
- end
- inventory.select(3)
- return allDropped
- end
- function inventory.defineSlot(slotNumber,slotName,slotEvents)
- --depleted
- end
- local function placeNewChest()
- if chestPos then
- chestPos={chestPos[1]+3,chestPos[2],chestPos[3],chestPos[4]}
- actions.goTo(chestPos,"xzy")
- actions.turnTo(chestPos[4])
- inventory.select(2)
- actions.pf(true)
- actions.goTo({chestPos[1]-1},"x")
- actions.turnTo(chestPos[4])
- actions.pf(true)
- else
- chestPos={0,0,0,1}
- actions.goTo({0,0,0},"xzy")
- actions.turnTo(1)
- inventory.select(2)
- actions.pf(true)
- end
- end
- local function unload()
- --print'Inventory full, unloading.'
- if arg.ender then
- local wayRot=rot
- actions.turnTo(2)
- actions.s(2)
- actions.pf()
- inventory.empty()
- actions.s(2)
- actions.df()
- actions.turnTo(wayRot)
- else
- local wayPoint={pos[1],pos[2],pos[3],rot}
- if chestPos then
- actions.goTo(chestPos,"xzy")
- actions.turnTo(chestPos[4])
- else
- placeNewChest()
- end
- if not inventory.empty() then
- repeat
- placeNewChest()
- until inventory.empty()
- end
- actions.goTo(wayPoint,"yzx")
- actions.turnTo(wayPoint[4])
- end
- end
- --[[
- Select: s#
- Turn: tl#,tr#
- Dig: df,du,dd
- Go: gu#,gd#,gf#,gb#
- Place: pf,pu,pd
- --]]
- --turn
- function actions.tr(n)
- for i=1,n do
- if turtle.turnRight() then
- rot=lua(rot,1,4)
- end
- end
- end
- function actions.tl(n)
- for i=1,n do
- if turtle.turnLeft() then
- rot=lua(rot,-1,4)
- end
- end
- end
- function actions.turnTo(dir)
- local n=(dir-rot+2)%4-2
- if n>0 then
- actions.tr(n)
- elseif n<0 then
- actions.tl(-n)
- end
- end
- --dig
- function actions.df()
- while turtle.detect() do
- if inventory.isFull() then
- unload()
- end
- if turtle.dig() then
- return true
- end
- end
- end
- function actions.du()
- while turtle.detectUp() do
- if inventory.isFull() then
- unload()
- end
- if turtle.digUp() then
- return true
- end
- end
- end
- function actions.dd()
- while turtle.detectDown() do
- if inventory.isFull() then
- unload()
- end
- if turtle.digDown() then
- return true
- end
- end
- end
- --place
- function actions.pf(force)
- if turtle.detect() and force then
- turtle.dig()
- end
- if turtle.getItemCount(inventory.slot)<=1 then
- print("I'm out of items in slot "..inventory.slot.." and can't place infront of me, HELP ME I'M DUMB!")
- --repeat actions.tl(4) until turtle.getItemCount(inventory.slot)>1
- end
- turtle.place()
- end
- function actions.pu(force)
- if turtle.detectUp() and force then
- turtle.digUp()
- end
- if turtle.getItemCount(inventory.slot)<=1 then
- print("I'm out of items in slot "..inventory.slot.." and can't place above me, HELP ME I'M DUMB!")
- --repeat actions.tl(4) until turtle.getItemCount(inventory.slot)>1
- end
- turtle.placeUp()
- end
- function actions.pd(force)
- if turtle.detectDown() and force then
- turtle.digDown()
- end
- if turtle.getItemCount(inventory.slot)<=1 then
- print("I'm out of items in slot "..inventory.slot.." and can't place below me, HELP ME I'M DUMB!")
- --if inventory.slot==2 then--HARDCODING
- repeat actions.tl(4) until turtle.getItemCount(inventory.slot)>1
- --end
- end
- turtle.placeDown()
- end
- --go
- function actions.gf(n,force)
- for i=1,n do
- repeat
- if turtle.detect() then --and force
- turtle.dig()
- else
- turtle.attack()
- end
- until turtle.forward()
- pos[1]=pos[1]+lookDirs[rot][1]
- pos[3]=pos[3]+lookDirs[rot][3]
- end
- end
- function actions.gb(n)
- for i=1,n do
- repeat until turtle.back()
- pos[1]=pos[1]-lookDirs[rot][1]
- pos[3]=pos[3]-lookDirs[rot][3]
- end
- end
- function actions.gu(n,force)
- for i=1,n do
- repeat
- if turtle.detectUp() then --and force
- turtle.digUp()
- else
- turtle.attackUp()
- end
- until turtle.up()
- pos[2]=pos[2]+1
- end
- end
- function actions.gd(n,force)
- for i=1,n do
- repeat
- if turtle.detectDown() then --and force
- turtle.digDown()
- else
- turtle.attackDown()
- end
- until turtle.down()
- pos[2]=pos[2]-1
- end
- end
- function actions.goTo(location,axisOrder)
- axisOrder=axisOrder or "xyz"
- for a in axisOrder:gmatch'[xyz]' do
- if a=="x" then
- if location[1]>pos[1] then
- actions.turnTo(4)
- actions.gf(location[1]-pos[1],true)
- elseif location[1]<pos[1] then
- actions.turnTo(2)
- actions.gf(pos[1]-location[1],true)
- end
- elseif a=="y" then
- if location[2]>pos[2] then
- actions.gu(location[2]-pos[2],true)
- elseif location[2]<pos[2] then
- actions.gd(pos[2]-location[2],true)
- end
- elseif a=="z" then
- if location[3]>pos[3] then
- actions.turnTo(1)
- actions.gf(location[3]-pos[3],true)
- elseif location[3]<pos[3] then
- actions.turnTo(3)
- actions.gf(pos[3]-location[3],true)
- end
- end
- end
- end
- actions.col="df gf du dd"--Dig out the 1x3x1 column infront of the turtle.
- local function seq(commands)
- for c,n in commands:gmatch'(%a+)(%d*)' do
- local ac=actions[c]
- local tac=type(ac)
- if tac=="function" then
- ac(tonumber(n) or 1)
- elseif tac=="string" then
- seq(ac)
- end
- end
- end
- --[[
- actions.goTo{3,1,-1}
- print(unpack(pos))
- actions.goTo{0,0,0}
- print(unpack(pos))
- actions.turnTo(0)
- --]]
- ---[==[
- if arg.ender then
- seq'gu tr gf tl'
- else
- seq'tr s2 pf gu gf tl gb pd gf'
- end
- while true do
- --[=[ This sequence digs 22 3x3 columns, placing a torch every 11 blocks.
- seq[[
- col tl col s1 pd col tr
- col tr col col tl
- col tl col col tr
- col tr col col tl
- col tl col col tr
- col tr col col tl
- col tl col col tr
- col tr col col tl
- col tl col col tr
- col tr col col tl
- col tl col col tr
- col tr col s1 pd col tl
- col tl col col tr
- col tr col col tl
- col tl col col tr
- col tr col col tl
- col tl col col tr
- col tr col col tl
- col tl col col tr
- col tr col col tl
- col tl col col tr
- col tr col col tl
- ]]
- --]=]
- --[=[ This one does a 16x3 tunnel.
- seq[[
- col tl col col s1 pd col col col col col col col col col col col s1 pd col col tr
- col tr col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col tr
- col tr col col col col col col col s1 pd col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col tl
- ]]
- --]=]
- --[=[ This one does a 38x3 tunnel.
- seq[[
- col tl col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col tr
- col tr col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tr
- col tr col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tl
- ]]
- --]=]
- ---[=[ This one does a 192x3 tunnel. (optimal within error!)
- seq[[
- col tl col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col tr
- col tr col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tr
- col tr col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col col col col s1 pd col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tl
- col tl col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tr
- col tr col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col col tl
- ]]
- --]=]
- end
- --]==]
Advertisement
Add Comment
Please, Sign In to add comment