DennouNeko

honey_build.lua

Oct 15th, 2013
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.49 KB | None | 0 0
  1. -- Honeycomb Builder by DennouNeko
  2. --
  3. -- Builds a "honeycomb cell" of fixed size, based on project from one of Hypnotized's
  4. -- YouTube videos.
  5. --
  6. -- Place wall material (logs) in slots 1-2, frame material in slots 3-4 (planks/slabs)
  7. -- and floor material (dirt/grass) in slots 5-13.
  8. -- Of course those are just suggestions. You can use any materials you want.
  9.  
  10. local args = {...}
  11. local swap = (args[1] == "left")
  12. local t = turtle
  13. local slot = 5
  14. local slota = 1
  15. local slotb = 3
  16.  
  17. function down(num)
  18.   if num == nil then num = 1 end
  19.   num = tonumber(num)
  20.  
  21.   for i = 1,num do
  22.     while not t.down() do
  23.     end
  24.   end
  25. end
  26.  
  27. function up(num)
  28.   if num == nil then num = 1 end
  29.  
  30.   for i = 1,num do
  31.     while not t.up() do
  32.     end
  33.   end
  34. end
  35.  
  36. function fwd(num)
  37.   if num == nil then num = 1 end
  38.   num = tonumber(num)
  39.  
  40.   for i = 1,num do
  41.     while not t.forward() do
  42.     end
  43.   end
  44. end
  45.  
  46. function step()
  47.   while t.getItemCount(slot) == 0 do
  48.     slot = slot + 1
  49.     t.select(slot)
  50.   end
  51.  
  52.   t.placeDown()
  53. end
  54.  
  55. function run_n(num)
  56.   step()
  57.   for i = 2,num do
  58.     fwd()
  59.     step()
  60.   end
  61. end
  62.  
  63. function row_up(left)
  64.   if left then
  65.     t.turnLeft()
  66.     fwd()
  67.     t.turnRight()
  68.     fwd()
  69.   else
  70.     t.turnRight()
  71.     fwd()
  72.     t.turnLeft()
  73.     fwd()
  74.   end
  75.   t.turnLeft()
  76.   t.turnLeft()
  77.   step()
  78. end
  79.  
  80. function row_dn(left)
  81.   t.turnRight()
  82.   t.turnRight()
  83.   if left then
  84.     fwd()
  85.     t.turnRight()
  86.     fwd()
  87.     t.turnLeft()
  88.   else
  89.     fwd()
  90.     t.turnLeft()
  91.     fwd()
  92.     t.turnRight()
  93.   end
  94.   step()
  95. end
  96.  
  97. function turn(left)
  98.   if left then
  99.     t.turnLeft()
  100.     fwd()
  101.     t.turnLeft()
  102.     step()
  103.   else
  104.     t.turnRight()
  105.     fwd()
  106.     t.turnRight()
  107.     step()
  108.   end
  109. end
  110.  
  111. function put_layer0(place)
  112.   local len = 14
  113.  
  114.   for i = 1,6 do
  115.     run_n(len)
  116.     row_up(not swap)
  117.     len = len + 2
  118.     run_n(len)
  119.     turn(swap)
  120.   end
  121.  
  122.   run_n(len)
  123.   turn(not swap)
  124.   run_n(len)
  125.   turn(swap)
  126.  
  127.   for i=1,6 do
  128.     run_n(len)
  129.     row_dn(not swap)
  130.     len = len - 2
  131.     run_n(len)
  132.     if i < 6 then
  133.       turn(swap)
  134.     else
  135.       if swap then
  136.         t.turnRight()
  137.         fwd(25)
  138.         t.turnRight()
  139.       else
  140.         t.turnLeft()
  141.         fwd(25)
  142.         t.turnLeft()
  143.       end
  144.     end
  145.   end
  146. end
  147.  
  148. function pilar(num)
  149.   for i = 1,num do
  150.     up(1)
  151.     step()
  152.   end
  153.   fwd()
  154.   down(num)
  155. end
  156.  
  157. function step_up1(left)
  158.   if left then
  159.     fwd()
  160.     t.turnLeft()
  161.     fwd()
  162.     t.turnRight()
  163.     step()
  164.   else
  165.     fwd()
  166.     t.turnRight()
  167.     fwd()
  168.     t.turnLeft()
  169.     step()
  170.   end
  171. end
  172.  
  173. function step_up2(left)
  174.   if left then
  175.     t.turnLeft()
  176.     fwd()
  177.     t.turnRight()
  178.     fwd()
  179.     step()
  180.   else
  181.     t.turnRight()
  182.     fwd()
  183.     t.turnLeft()
  184.     fwd()
  185.     step()
  186.   end
  187. end
  188.  
  189. function put_layer1()
  190.   slot = slota
  191.   t.select(slot)
  192.   up(1)
  193.   step()
  194.  
  195.   pilar(3)
  196.   step()
  197.   for i=3,14 do
  198.     fwd()
  199.     step()
  200.   end
  201.   if swap then
  202.     t.turnRight()
  203.     pilar(3)
  204.     t.turnLeft()
  205.     fwd()
  206.     t.turnRight()
  207.   else
  208.     t.turnLeft()
  209.     pilar(3)
  210.     t.turnRight()
  211.     fwd()
  212.     t.turnLeft()
  213.   end
  214.   step()
  215.  
  216.   for i = 1,5 do
  217.     fwd()
  218.     step()
  219.     step_up1(swap)
  220.   end
  221.  
  222.   pilar(3)
  223.   fwd(2)
  224.   step()
  225.   if swap then
  226.     t.turnRight()
  227.     pilar(3)
  228.     t.turnLeft()
  229.     fwd()
  230.   else
  231.     t.turnLeft()
  232.     pilar(3)
  233.     t.turnRight()
  234.     fwd()
  235.   end
  236.  
  237.   step()
  238.   for i = 1,5 do
  239.     fwd()
  240.     step()
  241.     step_up2(not swap)
  242.   end
  243.  
  244.   if swap then
  245.     t.turnRight()
  246.   else
  247.     t.turnLeft()
  248.   end
  249.  
  250.   pilar(3)
  251.   step()
  252.  
  253.   for i = 3,14 do
  254.     fwd()
  255.     step()
  256.   end
  257.  
  258.   if swap then
  259.     t.turnRight()
  260.     pilar(3)
  261.     t.turnLeft()
  262.     fwd()
  263.     t.turnRight()
  264.   else
  265.     t.turnLeft()
  266.     pilar(3)
  267.     t.turnRight()
  268.     fwd()
  269.     t.turnLeft()
  270.   end
  271.   step()
  272.  
  273.   for i = 1,5 do
  274.     fwd()
  275.     step()
  276.     step_up1(swap)
  277.   end
  278.  
  279.   pilar(3)
  280.   fwd(2)
  281.   step()
  282.   if swap then
  283.     t.turnRight()
  284.     pilar(3)
  285.     t.turnLeft()
  286.     fwd()
  287.   else
  288.     t.turnLeft()
  289.     pilar(3)
  290.     t.turnRight()
  291.     fwd()
  292.   end
  293.  
  294.   step()
  295.   for i = 1,4 do
  296.     fwd()
  297.     step()
  298.     step_up2(not swap)
  299.   end
  300.  
  301.   fwd()
  302.   step()
  303.  
  304.   if swap then
  305.     t.turnRight()
  306.     fwd()
  307.     t.turnLeft()
  308.     up(3)
  309.     fwd()
  310.     t.turnRight()
  311.   else
  312.     t.turnLeft()
  313.     fwd()
  314.     t.turnRight()
  315.     up(3)
  316.     fwd()
  317.     t.turnLeft()
  318.   end
  319. end
  320.  
  321. function put_layer2()
  322.   slot = slotb
  323.   t.select(slot)
  324.   up(1)
  325.   step()
  326.   for i = 2,14 do
  327.     fwd()
  328.     step()
  329.   end
  330.  
  331.   if swap then
  332.     t.turnRight()
  333.   else
  334.     t.turnLeft()
  335.   end
  336.  
  337.   step_up1(swap)
  338.  
  339.   for i = 1,5 do
  340.     fwd()
  341.     step()
  342.     step_up1(swap)
  343.   end
  344.  
  345.   for i = 1,3 do
  346.     fwd()
  347.     step()
  348.   end
  349.  
  350.   step_up2(not swap)
  351.   for i = 1,5 do
  352.     fwd()
  353.     step()
  354.     step_up2(not swap)
  355.   end
  356.  
  357.   if swap then
  358.     t.turnRight()
  359.   else
  360.     t.turnLeft()
  361.   end
  362.  
  363.   for i = 2,14 do
  364.     fwd()
  365.     step()
  366.   end
  367.  
  368.   if swap then
  369.     t.turnRight()
  370.   else
  371.     t.turnLeft()
  372.   end
  373.  
  374.   step_up1(swap)
  375.  
  376.   for i = 1,5 do
  377.     fwd()
  378.     step()
  379.     step_up1(swap)
  380.   end
  381.  
  382.   for i = 1,3 do
  383.     fwd()
  384.     step()
  385.   end
  386.   step_up2(not swap)
  387.  
  388.   for i = 1,5 do
  389.     fwd()
  390.     step()
  391.     step_up2(not swap)
  392.   end
  393. end
  394.  
  395. if swap then
  396.   t.turnLeft()
  397. else
  398.   t.turnRight()
  399. end
  400.  
  401. t.select(slot)
  402. put_layer0()
  403. put_layer1()
  404. put_layer2()
  405.  
  406. if swap then
  407.   t.turnRight()
  408.   -- fwd()
  409.   t.turnRight()
  410. else
  411.   t.turnLeft()
  412.   -- fwd()
  413.   t.turnLeft()
  414. end
  415.  
  416. fwd()
  417. down(5)
Advertisement
Add Comment
Please, Sign In to add comment