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.
This commit is contained in:
sascham 2020-12-20 13:31:55 +00:00
parent 58f282e0bf
commit 591b06aa19

View File

@ -1,71 +1,82 @@
--[[Tree Farming App by Al Sweigart --[[Tree Farming App by Al Sweigart
Plants tree and cuts it down.]] 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 NUM_OF_TREES = 4
local TREE_SAPLING = 'spruce' local TREE_SAPLING = 'oak'
-- Check if choptree program exists -- Check if choptree program exists
if not fs.exists('choptree.lua') then if not fs.exists('choptree.lua') then
error('You must install choptree app first') error('You must install choptree app first')
end end
while true do while true do
-- First of all, wait a few minutes -- First of all, wait a few minutes
os.sleep(300) os.sleep(300)
-- Check if turtle has enough fuel
if turtle.getFuelLevel() < (2 * (3 * NUM_OF_TREES)) then -- Sort all Items together
hare.selectItem('minecraft:' .. TREE_SAPLING .. 'log') modules.sort_items()
turtle.refuel(2)
-- 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
end
-- 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 -- Check if we have saplings in our inventory
turtle.select(i) if not modules.select_item('minecraft:' .. TREE_SAPLING .. '_sapling') then
turtle.drop() error('Out of ' .. TREE_SAPLING .. ' saplings')
end 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 end
turtle.turnLeft()
blockExists, item = turtle.inspect()
-- Check if we have saplings in our inventory if blockExists and item['name'] == 'minecraft:' .. TREE_SAPLING .. '_log' then
if not hare.selectItem('minecraft:' .. TREE_SAPLING .. '_sapling') then modules.selectEmptySlot()
error('Out of ' .. TREE_SAPLING .. ' saplings') 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 end
turtle.turnRight()
end
-- Build a Loop, where we plant and cut trees -- Move forward to the chest again
for i = 1, NUM_OF_TREES do turtle.turnLeft()
turtle.back() turtle.turnLeft()
turtle.back() for i = 1, (3 * NUM_OF_TREES) do
turtle.back() check_fuel()
turtle.turnRight() if i ~= 3 * NUM_OF_TREES then
blockExists, item = turtle.inspect() turtle.dig()
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()
end end
turtle.foward()
end
end end