awesome8digger

Torch Placer ComputerCraft

Feb 22nd, 2021 (edited)
2,053
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.91 KB | None | 0 0
  1. torchName = "minecraft:torch"
  2.  
  3. args = { ... }
  4.  
  5. if #args < 2 then
  6.     print("Usage: placeTorches <width> <length> <left or right>(default right)")
  7.     return
  8. end
  9.  
  10. if (args[3] == "left") then
  11.     rightSide = false
  12. elseif (args[3] == "right") then
  13.     rightSide = true
  14. else
  15.     print("Agrument 3 Unrecognized: must be either 'left' or 'right'")
  16.     return
  17. end
  18.  
  19. function forward(dist)
  20.     refuelTo(dist)
  21.     for i = 1, dist do
  22.         while turtle.forward() == false do
  23.             if turtle.dig() == false then
  24.                 turtle.attack()
  25.             end
  26.         end
  27.     end
  28. end
  29.  
  30. function up(dist)
  31.     refuelTo(dist)
  32.     for i = 1, dist do
  33.         while turtle.up() == false do
  34.             if turtle.digUp() == false then
  35.                 turtle.attackUp()
  36.             end
  37.         end
  38.     end
  39. end
  40.  
  41. function down(dist)
  42.     refuelTo(dist)
  43.     for i = 1, dist do
  44.         while turtle.down() == false do
  45.             if turtle.digDown() == false then
  46.                 turtle.attackDown()
  47.             end
  48.         end
  49.     end
  50. end
  51.  
  52. function selectTorches()
  53.     for i = 1, 16 do
  54.         if turtle.getItemCount(i) ~= 0 then
  55.             if turtle.getItemDetail(i).name == torchName then
  56.                 turtle.select(i)
  57.                 return i
  58.             end
  59.         end
  60.     end
  61.     return -1
  62. end
  63.  
  64. function refuelTo(level)
  65.     turtle.select(1)
  66.     while turtle.getFuelLevel() < level do
  67.         if turtle.refuel(1) == false then
  68.             print("No Fuel! Add more to continue.")
  69.             while turtle.refuel(1) == false do
  70.                 os.sleep(5)
  71.             end
  72.         end
  73.     end
  74. end
  75.  
  76. function placeTorch()
  77.     if selectTorches() == -1 then
  78.         print("No Torches Left! Add more to continue.")
  79.         while selectTorches() == -1 do
  80.             os.sleep(5)
  81.         end
  82.     end
  83.     while turtle.placeDown() == false do
  84.         if turtle.digDown() == false then
  85.             turtle.attackDown()
  86.         end
  87.     end
  88. end
  89.  
  90. function placeLine(torches)
  91.     forward(7)
  92.     placeTorch()
  93.     for i = 1, (torches - 1) do
  94.         forward(14)
  95.         placeTorch()
  96.     end
  97. end
  98.  
  99. function torchesInLength(length)
  100.     return math.floor((length - 8) / 14) + 1
  101. end
  102.  
  103. function columnsInWidth(width)
  104.     return math.floor((width - 1) / 7) + 1
  105. end
  106.  
  107. function placeArea(columns, torches, right)
  108.     for i = 1, columns do
  109.         placeLine(torches)
  110.  
  111.         if i == columns then
  112.             return
  113.         end
  114.  
  115.         if right == true then
  116.             turtle.turnRight()
  117.             forward(7)
  118.             turtle.turnRight()
  119.         else
  120.             turtle.turnLeft()
  121.             forward(7)
  122.             turtle.turnLeft()
  123.         end
  124.     right = (not right)
  125.     end
  126. end
  127.  
  128. torchLength = torchesInLength(tonumber(arg[1]))
  129. torchColumns = columnsInWidth(tonumber(arg[2]))
  130.  
  131. refuelTo(tonumber(arg[2]))
  132. up(1)
  133. placeArea(torchColumns, torchLength, rightSide)
  134. print("Complete!")
Add Comment
Please, Sign In to add comment