Created modules.lua, added functions to it
This commit is contained in:
parent
fdcc4f3eba
commit
c7cbc40159
104
Modules/modules.lua
Normal file
104
Modules/modules.lua
Normal 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
|
Loading…
Reference in New Issue
Block a user