diff --git a/Turtle/Turtle.lua b/Turtle/Turtle.lua index 244c6d5..eceb8c8 100644 --- a/Turtle/Turtle.lua +++ b/Turtle/Turtle.lua @@ -82,4 +82,74 @@ function Turtle:reverseArray(a) a2[#a -i + 1] = a[i] end return a2 +end + +function Turtle:isInInv(item, update) + assert(type(item) == "string", "item must be a string") + self:assertInvUpdate(update) + + local tag = self:resolveTag(item) + if (tag == "") then + for i = 1, 16 do + if self:checkItemName(item, i) == true then return true end + end + else + for i = 1, 16 do + if self:checkItemTag(tag, i) == true then return true end + end + end + return false +end + +function Turtle:resolveTag(item) + local tag = "" + if (item == "sapling") then + tag = "minecraft:saplings" + elseif (item == "log" or item == "wood") then + tag = "minecraft:logs" + elseif (item == "coal") then + tag = "minecraft:coals" + elseif (item == "seed") then + tag = "forge:seeds" + end + return tag +end + +function Turtle:checkItemName(name, slot) + assert(type(name) == "string", "tag must be a string") + assert(type(slot) == "number" and slot > 0 and slot <= 16, "slot must be between 1 and 16") + if self.inv[slot] == nil then + self:log("self.inv is empty at slot "..tostring(slot)) + return false + end + if self.inv[slot].name == nil then + self:log("no name found") + return false + end + if name == "any" then + return true + end + if self.inv[slot].name == name then + return true + else + return false + end +end + +function Turtle:checkItemTag(tag, slot) + assert(type(tag) == "string", "tag must be a string") + assert(type(slot) == "number" and slot > 0 and slot <= 16, "slot must be between 1 and 16") + if self.inv[slot] == nil then + self:log("self.inv is empty at slot "..tostring(slot)) + return false + end + if self.inv[slot].tags == nil then + self:log("no tags found") + return false + end + if self.inv[slot].tags[tag] == true then + return true + else + return false + end end \ No newline at end of file