From e68905578f65c9fb486a4c9f8c9dd44bad830f0c Mon Sep 17 00:00:00 2001 From: Sascha Martens Date: Fri, 20 Nov 2020 22:35:04 +0100 Subject: [PATCH] Added a build_pipe app, which builds pipes. Additionally the fvcircles module checks for n iterations of building a circle --- Modules/fvcircles.lua | 19 +++++++++++++++---- Modules/modules.lua | 9 +++++---- Underwater_Base/build_pipe.lua | 2 +- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/Modules/fvcircles.lua b/Modules/fvcircles.lua index ef57e2b..721b88a 100644 --- a/Modules/fvcircles.lua +++ b/Modules/fvcircles.lua @@ -17,12 +17,12 @@ end function initial_full_circle_setup(omaterial, omaterial_count, imaterial, imaterial_count) -- Check if we have enough material if modules.count_inventory(omaterial) < omaterial_count then - error('Error! Not enough blocks of ' .. omaterial) + error('Error! Not enough blocks of ' .. omaterial .. '. You need ' .. omaterial_count .. omaterial) return false end if modules.count_inventory(imaterial) < imaterial_count then - error('Error! Not enough blocks of ' .. imaterial) + error('Error! Not enough blocks of ' .. imaterial .. '. You need ' .. imaterial_count .. imaterial) return false end @@ -31,10 +31,19 @@ end --fvcircle5 builds a vertical 5 by 5 circle --which are filled with another material -function fvcircle5(omaterial, imaterial) +function fvcircle5(omaterial, imaterial, times) + + -- times checks how often this function should be called + -- this is only for checking, if we have enough blocks in + -- our inventory + times = times or 1 + omatcount = 12 * times + imatcount = 9 * times + -- Start the initial Setup and place the turtle in -- the right position - fvcircles.initial_full_circle_setup(omaterial, 12, imaterial, 9) + fvcircles.initial_full_circle_setup(omaterial, omatcount, imaterial, imatcount) + -- First Row turtle.turnLeft() @@ -55,6 +64,8 @@ function fvcircle5(omaterial, imaterial) turtle.forward() modules.select_and_place_down(imaterial) turtle.forward() + modules.select_and_place_down(imaterial) + turtle.forward() modules.select_and_place_down(omaterial) turtle.up() end diff --git a/Modules/modules.lua b/Modules/modules.lua index c8c0f13..b1634c4 100644 --- a/Modules/modules.lua +++ b/Modules/modules.lua @@ -35,14 +35,14 @@ function select_emptySlot() end -- countInventory() returns the total --- numer of a given minecraft id item in the inventory -function count_inventory(minecraft_id) +-- number of a given minecraft id item in the inventory +function count_inventory(minecraft_id, times) local total = 0 for slot = 1, 16 do item = turtle.getItemDetail(slot) if item ~= nil and item['name'] == 'minecraft:' .. minecraft_id then - total = total + turtle.getItem(slot) + total = total + turtle.getItemCount(slot) end end return total @@ -52,7 +52,8 @@ end -- minecraft id and places a block from it under the turtle function select_and_place_down(minecraft_id) for slot = 1, 16 do - if turtle.getItemDetail(slot) == 'minecraft:' .. minecraft_id then + item = turtle.getItemDetail(slot) + if item ~= nil and item['name'] == 'minecraft:' .. minecraft_id then turtle.select(slot) turtle.placeDown() return diff --git a/Underwater_Base/build_pipe.lua b/Underwater_Base/build_pipe.lua index d622de8..9266a10 100644 --- a/Underwater_Base/build_pipe.lua +++ b/Underwater_Base/build_pipe.lua @@ -21,7 +21,7 @@ local imaterial = read() print("Building a " .. pipes .. " blocks long tunnel") for i = 1, pipes do turtle.down() - fvcircles.fvcircle5(omaterial, imaterial) + fvcircles.fvcircle5(omaterial, imaterial, pipes) end print("Done build the tunnel")