Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- tree
- -- Cut down a single tree directly in front of turtle
- -- Trees must be 1x1 trunks with no branches
- -- Program assumes turtle is pre-fueled
- -- Written by HarvDad, April 2014
- args = {...}
- nArgs = #args
- version = "tree: Rev 0.1"
- mission = "Cut down a single tree"
- usage = "tree"
- x = 0
- y = 0
- z = 0
- face = 0
- missionMessage = "Mission complete."
- abort = false
- local currentFuelLevel = turtle.getFuelLevel()
- -- The following 'face' directions are relative to the starting position of the turtle in this program
- north = 0
- west = 1
- south = 2
- east = 3
- areaCovered = 1
- currentSlot = 2
- materialSlot = 1
- maxSlot = 16
- nextTurn = "left"
- function setFace(f)
- if f == 0 then
- if face == 0 then return end
- if face == 1 then right() return end
- if face == 2 then right() right() return end
- if face == 3 then left() return end
- end
- if f == 1 then
- if face == 0 then left() return end
- if face == 1 then return end
- if face == 2 then right() return end
- if face == 3 then right() right() return end
- end
- if f == 2 then
- if face == 0 then left() left() return end
- if face == 1 then left() return end
- if face == 2 then return end
- if face == 3 then right() return end
- end
- if f == 3 then
- if face == 0 then right() return end
- if face == 1 then left() left() return end
- if face == 2 then left() return end
- if face == 3 then return end
- end
- end
- function forward()
- for i=1,10 do -- This loop trys to handle pests (mob) that might be in the way
- if turtle.forward() then
- break
- end
- turtle.attack()
- sleep(2)
- end
- areaCovered = areaCovered + 1
- if face == 0 then z = z+1 return end
- if face == 1 then x = x-1 return end
- if face == 2 then z = z-1 return end
- if face == 3 then x = x+1 return end
- end
- function left()
- if face == 0 then face = 1 turtle.turnLeft() return end
- if face == 1 then face = 2 turtle.turnLeft() return end
- if face == 2 then face = 3 turtle.turnLeft() return end
- if face == 3 then face = 0 turtle.turnLeft() return end
- print("function left\(\): Bad face value: ", face)
- end
- function right()
- if face == 0 then face = 3 turtle.turnRight() return end
- if face == 1 then face = 0 turtle.turnRight() return end
- if face == 2 then face = 1 turtle.turnRight() return end
- if face == 3 then face = 2 turtle.turnRight() return end
- print("function right\(\): Bad face value: ", face)
- end
- function up()
- for i=1,10 do
- if not turtle.up() then
- if turtle.detectUp() then
- digUp()
- else
- turtle.attackUp()
- sleep(2)
- end
- else
- break
- end
- end
- y = y+1
- end
- function down()
- for i=1,10 do
- if not turtle.down() then
- if turtle.detectDown() then
- digDown()
- else
- turtle.attackDown()
- sleep(2)
- end
- else
- break
- end
- end
- y = y-1
- end
- function chopTree()
- turtle.dig()
- forward()
- while turtle.detectUp() do
- turtle.digUp()
- turtle.up()
- end
- while not turtle.detectDown() do
- turtle.suckDown()
- turtle.down()
- end
- end
- function replantTree()
- if turtle.getItemCount(saplingSlot) > 0 then
- left()
- left()
- turtle.select(saplingSlot)
- turtle.place()
- left()
- left()
- end
- end
- -- Main program
- chopTree()
- replantTree()
- if abort then
- print("Mission aborted")
- end
- print(missionMessage)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement