Advertisement
CelticCoder

buildSupport

Jan 8th, 2024 (edited)
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 6.06 KB | None | 0 0
  1. os.loadAPI("findBlocks.lua")
  2. os.loadAPI("userInput.lua")
  3. slot = 1
  4. -- Function to build a floor
  5. function placeDown()
  6.     while not turtle.placeDown() do
  7.             if slot == 16 then
  8.                 slot = 1
  9.                 turtle.select(slot)
  10.                 print("Out of Materials")
  11.                 print("Please Insert Blocks")
  12.                 userInput.getUserInput("Type Anything to Continue")
  13.             else
  14.                 slot = slot + 1
  15.                 turtle.select(slot)
  16.             end
  17.     end
  18. end
  19.  
  20. function getBlocks(blockname)
  21.     slot = findBlocks.findBlock(blockname)
  22.     while slot == nil do
  23.         print("Please input more ")
  24.         print(blockname)
  25.         userInput.getUserInput("Type Anything to Continue")
  26.     end
  27.     return slot
  28. end
  29.  
  30. function smartPlaceDown(blockname)
  31.     local itemDetail = turtle.getItemDetail(slot)
  32.     if itemDetail and itemDetail.name ~= blockName then
  33.         slot = getBlocks(blockname)
  34.         if slot ~= nil then
  35.             turtle.select(slot)
  36.         end
  37.     end
  38.     while not turtle.placeDown() do
  39.         slot = getBlocks(blockname)
  40.         if slot ~= nil then
  41.             turtle.select(slot)
  42.         end
  43.     end
  44.     return slot
  45. end
  46.  
  47. function buildFloor(newlength, newwidth)
  48.     width = newwidth
  49.     length = newlength
  50.     for i = 1, length do
  51.         for j = 1, width do
  52.             placeDown()
  53.             if j < width then
  54.                 turtle.forward()
  55.             end
  56.         end
  57.         if i < length then
  58.             if i % 2 == 0 then
  59.                 turtle.turnLeft()
  60.                 turtle.forward()
  61.                 turtle.turnLeft()
  62.             else
  63.                 turtle.turnRight()
  64.                 turtle.forward()
  65.                 turtle.turnRight()
  66.             end
  67.         end
  68.     end
  69. end
  70.  
  71. function buildFloorBlock(newlength, newwidth, blockname)
  72.     width = newwidth
  73.     length = newlength
  74.     for i = 1, length do
  75.         for j = 1, width do
  76.             smartPlaceDown(blockname)
  77.             if j < width then
  78.                 turtle.forward()
  79.             end
  80.         end
  81.         if i < length then
  82.             if i % 2 == 0 then
  83.                 turtle.turnLeft()
  84.                 turtle.forward()
  85.                 turtle.turnLeft()
  86.             else
  87.                 turtle.turnRight()
  88.                 turtle.forward()
  89.                 turtle.turnRight()
  90.             end
  91.         end
  92.     end
  93. end
  94.  
  95. function buildWalls(newlength, newwidth, height)
  96.     width = newwidth - 2
  97.     length = newlength - 2
  98.     distance = 0
  99.     for i = 1, 4 do
  100.         if i % 2 == 1 then
  101.             distance = length
  102.         else
  103.             distance = width
  104.         end
  105.  
  106.         for j = 1, distance do
  107.             turtle.forward()
  108.             for k = 1, height do
  109.                 turtle.down()
  110.             end
  111.             buildSupportBeam(height)
  112.         end
  113.         turtle.forward()
  114.         turtle.turnRight()
  115.     end
  116. end
  117.  
  118. function buildWallsBlock(newlength, newwidth, height, blockname)
  119.     width = newwidth - 2
  120.     length = newlength - 2
  121.     distance = 0
  122.     for i = 1, 4 do
  123.         if i % 2 == 1 then
  124.             distance = length
  125.         else
  126.             distance = width
  127.         end
  128.  
  129.         for j = 1, distance do
  130.             turtle.forward()
  131.             for k = 1, height do
  132.                 turtle.down()
  133.             end
  134.             buildSupportBeamBlock(height, blockname)
  135.         end
  136.         turtle.forward()
  137.         turtle.turnRight()
  138.     end
  139. end
  140.  
  141. function buildSupportBeam(height)
  142.         turtle.up()
  143.         for j = 1, height do
  144.            placeDown()
  145.            if j < height then
  146.                 turtle.up()
  147.            end
  148.         end
  149. end
  150.  
  151. function buildSupportBeamBlock(height, blockname)
  152.         turtle.up()
  153.         for j = 1, height do
  154.            smartPlaceDown(blockname)
  155.            if j < height then
  156.                 turtle.up()
  157.            end
  158.         end
  159. end
  160.  
  161. function buildSupportBeams(height, orientation)
  162.         width = width - 1
  163.         length = length - 1
  164.         for i = 1, 4 do
  165.                 buildSupportBeam(height)
  166.                 if orientation == 0 then
  167.                     turtle.turnLeft()
  168.                 else
  169.                     turtle.turnRight()
  170.                 end
  171.  
  172.                 distance = 0
  173.                 if i % 2 == 1 and i ~= 4 then
  174.                     distance = length
  175.                 end
  176.                 if i % 2 == 0 and i ~= 4 then
  177.                     distance = width
  178.                 end
  179.  
  180.                 for j = 1, distance do
  181.                     turtle.forward()
  182.                 end
  183.                 for k = 1, height do
  184.                     turtle.down()
  185.                 end
  186.         end
  187.         if orientation == 0 then
  188.             turtle.turnLeft()
  189.             for l = 1, length do
  190.                 turtle.forward()
  191.             end
  192.             turtle.turnRight()
  193.         else
  194.             for l = 1, width do
  195.                 turtle.forward()
  196.             end
  197.  
  198.             turtle.turnRight()
  199.  
  200.             for m = 1, length do
  201.                 turtle.forward()
  202.             end
  203.  
  204.             turtle.turnRight()
  205.         end
  206. end
  207.  
  208. function buildSupportBeamsBlock(height, orientation, blockname)
  209.         width = width - 1
  210.         length = length - 1
  211.         for i = 1, 4 do
  212.                 buildSupportBeamBlock(height, blockname)
  213.                 if orientation == 0 then
  214.                     turtle.turnLeft()
  215.                 else
  216.                     turtle.turnRight()
  217.                 end
  218.  
  219.                 distance = 0
  220.                 if i % 2 == 1 and i ~= 4 then
  221.                     distance = length
  222.                 end
  223.                 if i % 2 == 0 and i ~= 4 then
  224.                     distance = width
  225.                 end
  226.  
  227.                 for j = 1, distance do
  228.                     turtle.forward()
  229.                 end
  230.                 for k = 1, height do
  231.                     turtle.down()
  232.                 end
  233.         end
  234.         if orientation == 0 then
  235.             turtle.turnLeft()
  236.             for l = 1, length do
  237.                 turtle.forward()
  238.             end
  239.             turtle.turnRight()
  240.         else
  241.             for l = 1, width do
  242.                 turtle.forward()
  243.             end
  244.  
  245.             turtle.turnRight()
  246.  
  247.             for m = 1, length do
  248.                 turtle.forward()
  249.             end
  250.  
  251.             turtle.turnRight()
  252.         end
  253. end
  254.  
  255. function setOrientation(newwidth)
  256.     orientation = 0
  257.     if newwidth % 2 == 1 then
  258.         orientation = 0
  259.     else
  260.         orientation = 1
  261.     end
  262. end
  263.  
  264. function fullBuild(newlength, newwidth, height)
  265.     turtle.up()
  266.     buildFloor(newwidth, newlength)
  267.     setOrientation(newwidth)
  268.     buildSupportBeams(height, orientation)
  269.     buildWalls(newlength, newwidth, height)
  270.     turtle.select(1)
  271. end
  272.  
  273. function fullBuildBlock(newlength, newwidth, height, blockname)
  274.     turtle.up()
  275.     buildFloorBlock(newwidth, newlength, blockname)
  276.     setOrientation(newwidth)
  277.     buildSupportBeamsBlock(height, orientation, blockname)
  278.     buildWallsBlock(newlength, newwidth, height, blockname)
  279. end
  280.  
  281. function fullBuildBlocks(newlength, newwidth, height, blockname, blockname2)
  282.     turtle.up()
  283.     buildFloorBlock(newwidth, newlength, blockname)
  284.     setOrientation(newwidth)
  285.     buildSupportBeamsBlock(height, orientation, blockname)
  286.     buildWallsBlock(newlength, newwidth, height, blockname2)
  287. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement