Created modules.lua, added functions to it

This commit is contained in:
Sascha Martens 2020-11-09 20:45:05 +01:00
parent fdcc4f3eba
commit c7cbc40159

104
Modules/modules.lua Normal file
View File

@ -0,0 +1,104 @@
--[[Function Module program by Al Sweigart
Provides useful utility functions.]]
-- selectItem() selects the inventory
-- slot with the named item, returns
-- true if found and false if not
function selectItem(name)
-- check all inventory slots
local item
for slot = 1, 16 do
item = turtle.getItemDetail(slot)
if item ~= nil and item['name'] == name then
turtle.select(slot)
return true
end
end
return false -- couldn't find item
end
-- selectEmptySlot() selects inventory
-- slot that is empty, returns true if
-- found, false if no empty spaces
function selectEmptySlot()
-- loop through all slots
for slot = 1, 16 do
if turtle.getItemCount(slot) == 0 then
turtle.select(slot)
return true
end
end
return false -- couldn't find empty space
end
-- countInventory() returns the total
-- numer of items in the inventory
function countInventory()
local total = 0
for slot = 1, 16 do
total = total + turtle.getItem(slot)
end
return total
end
-- selectAndPlaceDown() selects a nonempty slot
-- and places a block from it under the turtle
function selectAndPlaceDown()
for slot = 1, 16 do
if turtle.getItemCount(slot) > 0 then
turtle.select(slot)
turtle.placeDown()
return
end
end
end
-- buildWall() creates a wall stretching
-- in front of the turtle
function buildWall(length, height)
if modules.countInventory() > length * height then
return false --not enough block
end
turtle.up()
local movingForward = true
for currentHeight = 1, height do
for currentLength = 1, length do
selectAndPlaceDown() -- Place the block
if movingForward and currentLength ~= length then
turtle.forward()
elseif not movingForward and currentLength ~= length then
turtle.back()
end
end
if currentHeight ~= height then
turtle.up()
end
movingForward = not movingForward
end
-- done building wall; move to end position
if movingForward then
-- turtle is near the start position
for currentLength = 1, length do
turtle.forward()
end
else
-- turtle is near the end position
turtle.forward()
end
-- move down to the ground
for currentHeight = 1, height do
turtle.down()
end
return true
end