Advertisement
jfmachine

sandgrav

Aug 3rd, 2023 (edited)
884
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.24 KB | None | 0 0
  1. local args = {...}
  2. w = tonumber(args[1])
  3. l = tonumber(args[2])
  4.  
  5. pos = {1, 0}
  6. dir = 1
  7. dirs = {
  8. {"forward", 0, 1},
  9. {"backward", 0, -1},
  10. {"left", -1, 0},
  11. {"right", 1, 0}
  12. }
  13. status = "mine"
  14. mc = 0
  15.  
  16. function load()
  17. end
  18.  
  19. function save()
  20. end
  21.  
  22. function printPos()
  23.     term.setCursorPos(1,1)
  24.     term.clear()
  25.     print(pos[1] .. " " .. pos[2])
  26.     print(dir)
  27. end
  28.  
  29. function forward()
  30.     if turtle.getFuelLevel() < 80 then
  31.         shell.run("mine/checkFuel.lua")
  32.     end
  33.     if turtle.detect() then
  34.         succ, data = turtle.inspect()
  35.         if data.name ~= "minecraft:sand" and data.name ~= "minecraft:gravel" then
  36.             while turtle.detectUp() do
  37.                 turtle.digUp()
  38.             end
  39.             turtle.up()
  40.             forward()
  41.         else
  42.             return
  43.         end
  44.     else
  45.         for i = 1, 2 do
  46.             pos[i] = pos[i] + dirs[dir][i+1]
  47.         end
  48.         if turtle.forward() then
  49.             return
  50.         else
  51.             for i = 1, 2 do
  52.                 pos[i] = pos[i] - dirs[dir][i+1]
  53.             end
  54.             forward()
  55.         end
  56.     end
  57. end
  58.  
  59. function turn(way)
  60.     ways = {
  61.     {3, 4},
  62.     {4, 3},
  63.     {1, 2},
  64.     {2, 1}
  65.     }
  66.     if way == "right" then
  67.         dir = ways[dir][2]
  68.         turtle.turnRight()
  69.     else
  70.         dir = ways[dir][1]
  71.         turtle.turnLeft()
  72.     end
  73. end
  74.  
  75. function mineDown()
  76.     if turtle.detectDown() then
  77.            succ, data = turtle.inspectDown()
  78.            while succ and (data.name == "minecraft:sand" or data.name == "minecraft:gravel") do
  79.                turtle.digDown()
  80.                shell.run("mine/checkFuel.lua")
  81.                turtle.down()
  82.                succ, data = turtle.inspectDown()
  83.            end
  84.     else
  85.         turtle.down()
  86.         mineDown()
  87.     end
  88. end
  89.  
  90. function mine()
  91.     if turtle.detect() then
  92.        succ, data = turtle.inspect()
  93.        if data.name == "minecraft:sand" or data.name == "minecraft:gravel" then
  94.            while turtle.detect() do
  95.                turtle.dig()
  96.                mc = mc + 1
  97.            end
  98.        end
  99.     end
  100. end
  101.  
  102. function move()
  103.     mine()
  104.     forward()
  105.     mine()
  106.     mineDown()
  107.     if mc >= 400 then
  108.         shell.run("mine/deposit.lua")
  109.         mc = 0
  110.     end
  111. end
  112.  
  113. function turnRow()
  114.     if dir == 1 then
  115.         turn("right")
  116.         curW = pos[1]
  117.         while curW == pos[1] do
  118.             printPos()
  119.             move()
  120.         end
  121.         turn("right")
  122.         dir = 2
  123.     else
  124.         turn("left")
  125.         curW = pos[1]
  126.         while curW == pos[1] do
  127.             printPos()
  128.             move()
  129.         end
  130.         turn("left")
  131.         dir = 1
  132.     end
  133. end
  134.  
  135. function hasReachedW()
  136.     if pos[1] == w then
  137.         return true
  138.     end
  139.     return false
  140. end
  141.  
  142. function hasReachedL()
  143.     if dir == 1 and pos[2] == l then
  144.         return true
  145.     elseif dir == 2 and pos[2] == 1 then
  146.         return true
  147.     end
  148.     return false
  149. end
  150.  
  151. function main()
  152.     while not hasReachedW() do
  153.         if pos[1] ~= 1 or hasReachedL() then
  154.             turnRow()
  155.         end
  156.         while not hasReachedL() do
  157.             move()
  158.         end
  159.         print("Reached L")
  160.     end
  161.     print("Reached W")
  162.     shell.run("mine/deposit.lua")
  163. end
  164.  
  165. main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement