--[[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 -- buildRoom() constructs four walls -- and a ceiling function buildRoom(length, width, height) if hare.countInventory() < (((length -1) * height * 2) + ((width -1) * height * 2)) then return false -- not enough blocks end -- build the four walls buildWall(length -1, height) turtle.turnRight() buildWall(width - 1, height) turtle.turnRight() buildWall(length - 1, height) turtle.turnRight() buildWall(width - 1, height) turtle.turnRight() return true end