Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local shouldOutput = false
- local width = 0
- local length = 0
- local function loadSettings()
- file = io.open( "settings.txt", "r" )
- while true do
- line = file:read()
- if line == nil then break end
- if line == "true" then
- shouldOutput = true
- else
- shouldOutput = false
- end
- line = file:read()
- if line == nil then break end
- width = tonumber(line)
- line = file:read()
- if line == nil then break end
- length = tonumber(line)
- file:close()
- return true
- end
- file:close()
- return false
- end
- local function createSettings()
- term.clear()
- term.setCursorPos( 1,1 )
- print( "Set the settings." )
- write( "Output Redstone on cycle: " )
- local str = string.lower( read() )
- if str == "1" or str == "yes" or str == "true" then
- shouldOutput = true
- else
- shouldOutput = false
- end
- write( "Rows: " )
- width = tonumber(read())
- write( "Trees: " )
- length = tonumber(read())
- file = io.open("settings.txt", "w")
- if file == nil then
- --error? could be locked
- return
- end
- if shouldOutput then
- file:write( "true" )
- file:write( "\n" )
- else
- file:write( "false" )
- file:write( "\n" )
- end
- file:write( width )
- file:write( "\n" )
- file:write( length )
- file:write( "\n" )
- file:close()
- term.clear()
- term.setCursorPos( 1,1 )
- print( "Ready to cycle" )
- end
- term.clear()
- term.setCursorPos( 1,1 )
- print( "Logger program starting..." )
- if fs.exists( "settings.txt" ) then
- if not loadSettings() then
- createSettings()
- end
- term.clear()
- term.setCursorPos( 1,1 )
- print( "Ready to cycle" )
- else
- createSettings()
- end
- rednet.open( "right" )
- local function tryMove( direction )
- if direction == "down" then
- if turtle.detectDown() then
- turtle.digDown()
- end
- while not turtle.down() do
- turtle.digDown()
- sleep(1)
- end
- end
- if direction == "forward" then
- if turtle.detect() then
- turtle.dig()
- end
- while not turtle.forward() do
- turtle.dig()
- sleep(1)
- end
- end
- if direction == "up" then
- if turtle.detectUp() then
- turtle.digUp()
- end
- while not turtle.up() do
- turtle.digUp()
- sleep(1)
- end
- end
- end
- local function plantTree()
- turtle.select(1)
- l = turtle.getItemCount(1)
- turtle.placeDown()
- t = turtle.getItemCount(1)
- if t == l then --must have not been able to place a sapling
- turtle.select(2)
- tryMove("down")
- if turtle.detectDown() then turtle.digDown() end
- turtle.placeDown()
- turtle.select(1)
- tryMove("up")
- turtle.placeDown()
- end
- turtle.select(9)
- end
- local function harvestTree()
- steps = 1
- tryMove("forward")
- while turtle.detectUp() do
- tryMove( "up" )
- steps = steps + 1
- end
- while steps > 2 do
- tryMove( "down" )
- steps = steps - 1
- end
- plantTree()
- end
- local function checkTree()
- if turtle.detect() then
- tryMove( "down" )
- harvestTree()
- else
- tryMove( "forward" )
- if not turtle.detectDown() then
- plantTree()
- end
- end
- end
- local function harvest()
- turtle.select(1)
- tryMove( "forward" )
- tryMove( "up" )
- checkTree()
- bump = false
- for w=1, width do
- for l=1, length do
- if l~=length then
- tryMove( "forward" )
- tryMove( "forward" )
- checkTree()
- end
- end
- if w~=width then
- if not bump then
- turtle.turnLeft()
- tryMove( "forward" )
- tryMove( "forward" )
- else
- turtle.turnRight()
- tryMove( "forward" )
- tryMove( "forward" )
- end
- checkTree()
- if bump then
- turtle.turnRight()
- else
- turtle.turnLeft()
- end
- bump = not bump
- end
- end
- --Return
- if not bump then
- turtle.turnLeft()
- tryMove( "forward" )
- turtle.turnLeft()
- for i = 1, length do
- tryMove( "forward" )
- tryMove( "forward" )
- if i~=length then
- tryMove( "forward" )
- end
- end
- else
- tryMove( "forward" )
- tryMove( "forward" )
- end
- turtle.turnLeft()
- if width == 1 then
- tryMove( "forward" )
- else
- for i=1, width - 1 do
- tryMove( "forward" )
- tryMove( "forward" )
- tryMove( "forward" )
- end
- if not bump then
- tryMove( "forward" )
- end
- end
- turtle.turnLeft()
- tryMove( "down" )
- turtle.select(9)
- --Drop off and resupply
- if shouldOutput then
- redstone.setOutput("left", true)
- output = true
- while output do
- for i=3, 9 do
- if turtle.getItemSpace( i ) ~= 64 then
- break
- elseif i==9 and turtle.getItemSpace( 9 ) == 64 then
- output = false
- end
- end
- sleep(0.5)
- end
- redstone.setOutput("left", false)
- end
- print( "Ready to cycle" )
- end
- while true do
- event, p1, p2 = os.pullEvent()
- if event == "rednet_message" and p2 == "startLoging" then
- harvest()
- end
- if event == "char" and p1 == "s" then
- createSettings()
- end
- if event == "char" and p1 == "r" then
- print("User overide, havest starting.")
- harvest()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement