Guest User

quarry

a guest
May 28th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.41 KB | None | 0 0
  1. tArgs = { ... }
  2. if #tArgs < 2 then
  3.  print("Usage: quarry <width> <length>")
  4.  return
  5. end
  6.  
  7. xParam = tonumber(tArgs[1])
  8. zParam = tonumber(tArgs[2])
  9.  
  10. homeX = 0
  11. homeY = 0
  12. homeZ = 0
  13.  
  14. x = 0
  15. y = 0
  16. z = 0
  17. facing = 0
  18.  
  19. lastX = 0
  20. lastY = 0
  21. lastZ = 0
  22. lastFacing = 0
  23.  
  24. function checkFuel()
  25.  while turtle.getFuelLevel() < 10 do
  26.   turtle.select(16)
  27.   turtle.refuel(1)
  28.   turtle.select(1)
  29.  end
  30.  if turtle.getItemCount(15) < 5 then
  31.   emptyInv()
  32.  end
  33. end
  34.  
  35. function forward()
  36.  while turtle.forward() == false do
  37.   checkFuel()
  38.   turtle.dig()
  39.   turtle.attack()
  40.  end
  41.  if facing == 0 then
  42.   z = z + 1
  43.  end
  44.  if facing == 1 then
  45.   x = x - 1
  46.  end
  47.  if facing == 2 then
  48.   z = z - 1
  49.  end
  50.  if facing == 3 then
  51.   x = x + 1
  52.  end
  53. end
  54.  
  55. function back()
  56.  while turtle.forward() == false do
  57.   checkFuel()
  58.   turtle.turnLeft()
  59.   turtle.turnLeft()
  60.   turtle.dig()
  61.   turtle.attack()
  62.   turtle.turnLeft()
  63.   turtle.turnLeft()
  64.  end
  65.  if facing == 0 then
  66.   z = z - 1
  67.  end
  68.  if facing == 1 then
  69.   x = x + 1
  70.  end
  71.  if facing == 2 then
  72.   z = z + 1
  73.  end
  74.  if facing == 3 then
  75.   x = x - 1
  76.  end
  77. end
  78.  
  79. function up()
  80.  while turtle.up() == false do
  81.   checkFuel()
  82.   turtle.digUp()
  83.   turtle.attackUp()
  84.  end
  85.  y = y + 1
  86. end
  87.  
  88. function down()
  89.  while turtle.down() == false do
  90.   checkFuel()
  91.   turtle.digDown()
  92.   turtle.attackDown()
  93.  end
  94.  y = y - 1
  95. end
  96.  
  97. function turnLeft()
  98.  turtle.turnLeft()
  99.  if facing == 0 then
  100.   facing = 3
  101.  else
  102.   facing = facing - 1
  103.  end
  104. end
  105.  
  106. function turnRight()
  107.  turtle.turnRight()
  108.  if facing == 3 then
  109.   facing = 0
  110.  else
  111.   facing = facing + 1
  112.  end
  113. end
  114.  
  115. function checkFull()
  116.  if turtle.getItemCount(15) > 0 then
  117.   emptyInv()
  118.   return
  119.  end
  120. end
  121.  
  122. function emptyInv()
  123.  lastX = x
  124.  lastY = y
  125.  lastZ = z
  126.  lastFacing = facing
  127.  while homeY > y do
  128.   up()
  129.  end
  130.  while homeY < y do
  131.   down()
  132.  end
  133.  while homeX > x do
  134.   while facing ~= 3 do
  135.    turnLeft()
  136.   end
  137.   forward()
  138.  end
  139.  while homeX < x do
  140.   while facing ~= 1 do
  141.    turnLeft()
  142.   end
  143.   forward()
  144.  end
  145.  while homeZ > z do
  146.   while facing ~= 0 do
  147.    turnLeft()
  148.   end
  149.   forward()
  150.  end
  151.  while homeZ < z do
  152.   while facing ~= 2 do
  153.    turnLeft()
  154.   end
  155.   forward()
  156.  end
  157.  while facing ~= 2 do
  158.   turnLeft()
  159.  end
  160.  for i = 1,15 do
  161.   turtle.select(i)
  162.   turtle.drop()
  163.  end
  164.  turtle.select(16)
  165.  if turtle.getItemCount(16) < 5 then
  166.   turnRight()
  167.   turtle.refuel()
  168.   turtle.suck()
  169.  end
  170.  turtle.select(1)
  171.  while lastX > x do
  172.   while facing ~= 3 do
  173.    turnLeft()
  174.   end
  175.   forward()
  176.  end
  177.  while lastX < x do
  178.   while facing ~= 1 do
  179.    turnLeft()
  180.   end
  181.   forward()
  182.  end
  183.  while lastZ > z do
  184.   while facing ~= 0 do
  185.    turnLeft()
  186.   end
  187.   forward()
  188.  end
  189.  while lastZ < z do
  190.   while facing ~= 2 do
  191.    turnLeft()
  192.   end
  193.   forward()
  194.  end
  195.  while lastY > y do
  196.   up()
  197.  end
  198.  while lastY < y do
  199.   down()
  200.  end
  201.  while facing ~= lastFacing do
  202.   turnLeft()
  203.  end
  204.  return
  205. end
  206.  
  207. function goHome()
  208.  while homeY > y do
  209.   up()
  210.  end
  211.  while homeY < y do
  212.   down()
  213.  end
  214.  while homeX > x do
  215.   while facing ~= 3 do
  216.    turnLeft()
  217.   end
  218.   forward()
  219.  end
  220.  while homeX < x do
  221.   while facing ~= 1 do
  222.    turnLeft()
  223.   end
  224.   forward()
  225.  end
  226.  while homeZ > z do
  227.   while facing ~= 0 do
  228.    turnLeft()
  229.   end
  230.   forward()
  231.  end
  232.  while homeZ < z do
  233.   while facing ~= 2 do
  234.    turnLeft()
  235.   end
  236.   forward()
  237.  end
  238.  while facing ~= 2 do
  239.   turnLeft()
  240.  end
  241.  for i = 1,15 do
  242.   turtle.select(i)
  243.   turtle.drop()
  244.  end
  245.  turnRight()
  246.  turnRight()
  247. end
  248.  
  249. function checkBedRock()
  250.  if turtle.detectDown() == true then
  251.   goHome()
  252.   return true
  253.  end
  254.  return false
  255. end
  256.  
  257. uselessVar = 0
  258.  
  259. function dig()
  260.   turtle.select(1)
  261.   while true do
  262.      for q = 1,xParam do
  263.       for p = 1,zParam-1 do
  264.        forward()
  265.        checkFull()
  266.       end
  267.       if q ~= xParam then
  268.        if facing == 0 then
  269.         turnRight()
  270.         forward()
  271.         turnRight()
  272.         checkFull()
  273.        else
  274.         turnLeft()
  275.         forward()
  276.         turnLeft()
  277.         checkFull()
  278.        end
  279.       end
  280.      end
  281.      while homeX > x do
  282.       while facing ~= 3 do
  283.        turnLeft()
  284.       end
  285.       forward()
  286.      end
  287.      while homeX < x do
  288.       while facing ~= 1 do
  289.        turnLeft()
  290.       end
  291.       forward()
  292.      end
  293.      while homeZ > z do
  294.       while facing ~= 0 do
  295.        turnLeft()
  296.       end
  297.       forward()
  298.      end
  299.      while homeZ < z do
  300.       while facing ~= 2 do
  301.        turnLeft()
  302.       end
  303.       forward()
  304.      end
  305.      while facing ~= 0 do
  306.       turnRight()
  307.      end
  308.      turtle.digDown()
  309.      if checkBedRock() == true then
  310.       break
  311.      end
  312.      down()
  313.   end
  314. end
  315. dig()
Add Comment
Please, Sign In to add comment