From 591b06aa193d4d5f5b50a33c92ee030a23a4b0ab Mon Sep 17 00:00:00 2001 From: sascham Date: Sun, 20 Dec 2020 13:31:55 +0000 Subject: [PATCH] Updated the file to support modules.lua and check fuel The app now checks if it has enough fuel and if not, it asks for more. Additionally it digs everythin in front of it, except for the last block. --- Tree_Farm/farmtree.lua | 121 ++++++++++++++++++++++------------------- 1 file changed, 66 insertions(+), 55 deletions(-) diff --git a/Tree_Farm/farmtree.lua b/Tree_Farm/farmtree.lua index 699fc6d..77da42e 100644 --- a/Tree_Farm/farmtree.lua +++ b/Tree_Farm/farmtree.lua @@ -1,71 +1,82 @@ --[[Tree Farming App by Al Sweigart Plants tree and cuts it down.]] -os.loadAPI('hare.lua') -- Load the hare module +os.loadAPI('modules.lua') -- Load the modules module local NUM_OF_TREES = 4 -local TREE_SAPLING = 'spruce' +local TREE_SAPLING = 'oak' -- Check if choptree program exists if not fs.exists('choptree.lua') then - error('You must install choptree app first') + error('You must install choptree app first') end while true do - -- First of all, wait a few minutes - os.sleep(300) - -- Check if turtle has enough fuel - if turtle.getFuelLevel() < (2 * (3 * NUM_OF_TREES)) then - hare.selectItem('minecraft:' .. TREE_SAPLING .. 'log') - turtle.refuel(2) - end - - -- Empty everything except for the saplings - for i = 1, 16 do - local item = turtle.getItemDetail(i) + -- First of all, wait a few minutes + os.sleep(300) - if item ~= nil and item['name'] ~= 'minecraft:' .. TREE_SAPLING .. '_sapling' then - turtle.select(i) - turtle.drop() - end - end + -- Sort all Items together + modules.sort_items() - - -- Check if we have saplings in our inventory - if not hare.selectItem('minecraft:' .. TREE_SAPLING .. '_sapling') then - error('Out of ' .. TREE_SAPLING .. ' saplings') - end - - -- Build a Loop, where we plant and cut trees - for i = 1, NUM_OF_TREES do - turtle.back() - turtle.back() - turtle.back() - turtle.turnRight() - blockExists, item = turtle.inspect() - if blockExists and item['name'] == 'minecraft:' .. TREE_SAPLING .. '_log' then - hare.selectEmtySlot() - shell.run('choptree.lua') -- Run Choptree - elseif blockExists and item['name'] ~= 'minecraft:' .. TREE_SAPLING .. '_sapling' then - print('Error! Wrong block') - elseif not blockExists then - turtle.forward() - local success, underneath = turtle.inspectDown() - if underneath['name'] ~= 'minecraft:dirt' and underneath['name'] ~= 'minecraft:grass_block' then - print('Error. No Dirt or Grass underneath to plant a tree. Found: ' .. underneath['name']) - turtle.back() - else - turtle.back() - hare.selectItem('minecraft:' .. TREE_SAPLING .. '_sapling') - turtle.place() - end - end - turtle.turnLeft() - end - -- Move forward to the chest again - for i = 1, (3 * NUM_OF_TREES) do - turtle.forward() + -- Empty everything except for the saplings + for i = 1, 16 do + local item = turtle.getItemDetail(i) + + if item ~= nil and item['name'] ~= 'minecraft:' .. TREE_SAPLING .. '_sapling' then + turtle.select(i) + turtle.drop() end - + end + + + -- Check if we have saplings in our inventory + if not modules.select_item('minecraft:' .. TREE_SAPLING .. '_sapling') then + error('Out of ' .. TREE_SAPLING .. ' saplings') + end + + -- Build a Loop, where we plant and cut trees + turtle.turnLeft() + turtle.turnLeft() + for i = 1, NUM_OF_TREES do + for j = 1, 3 do + check_fuel() + if i ~= 3 * NUM_OF_TREES then + turtle.dig() + end + turtle.forward() + end + turtle.turnLeft() + blockExists, item = turtle.inspect() + if blockExists and item['name'] == 'minecraft:' .. TREE_SAPLING .. '_log' then + modules.selectEmptySlot() + shell.run('choptree.lua') -- Run Choptree + elseif blockExists and item['name'] ~= 'minecraft:' .. TREE_SAPLING .. '_sapling' then + print('Error! Wrong block') + elseif not blockExists then + turtle.forward() + local success, underneath = turtle.inspectDown() + if underneath['name'] ~= 'minecraft:dirt' and underneath['name'] ~= 'minecraft:grass_block' then + print('Error. No Dirt or Grass underneath to plant a tree. Found: ' .. underneath['name']) + turtle.back() + else + turtle.back() + modules.selectItem('minecraft:' .. TREE_SAPLING .. '_sapling') + turtle.place() + end + end + turtle.turnRight() + end + + -- Move forward to the chest again + turtle.turnLeft() + turtle.turnLeft() + for i = 1, (3 * NUM_OF_TREES) do + check_fuel() + if i ~= 3 * NUM_OF_TREES then + turtle.dig() + end + turtle.foward() + end + end