Advertisement
King0fGamesYami

Turtle Quarry Beta

Apr 16th, 2015
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.78 KB | None | 0 0
  1. local tArgs = {...}
  2.  
  3. local tNotBreak = {
  4.     ["minecraft:bedrock"] = true,
  5.     ["minecraft:chest"] = true,
  6.     ["minecraft:ender_chest"] = true,
  7. }
  8.  
  9. local tFuel = {
  10.     ["minecraft:coal_block"] = true,
  11.     ["minecraft:coal"] = true,
  12.     ["minecraft:lava_bucket"] = true,
  13.     ["minecraft:planks"] = true,
  14. }
  15.  
  16. local tJunkItems = {
  17.     ["minecraft:stone"] = true,
  18.     ["minecraft:dirt"] = true,
  19.     ["minecraft:sand"] = true,
  20.     ["minecraft:gravel"] = true,
  21.     ["mineraft:sandstone"] = true,
  22.     ["minecraft:cobblestone"] = true,
  23. }
  24.  
  25. local x, y, z, bucket = 8, 8, 8
  26.  
  27. for i = 1, #tArgs, 2 do
  28.     if tArgs[ i ]:lower() == "break" then
  29.         local file = fs.open( tArgs[ i + 1 ], "r" )
  30.         local data = file.readAll()
  31.         file.close()
  32.         for item in data:gmatch( "[^\r\n]+" ) do
  33.             tNotBreak[ item ] = not tNotBreak[ item ]
  34.         end
  35.     elseif tArgs[ i ]:lower() == "fuel" then
  36.         local file = fs.open( tArgs[ i + 1 ], "r" )
  37.         local data = file.readAll()
  38.         file.close()
  39.         for item in data:gmatch( "[^\r\n]+" ) do
  40.             tFuel[ item ] = not tFuel[ item ]
  41.         end
  42.     elseif tArgs[ i ]:lower() == "junk" then
  43.         local file = fs.open( tArgs[ i + 1 ], "r" )
  44.         local data = file.readAll()
  45.         file.close()
  46.         for item in data:gmatch( "[^\r\n]+" ) do
  47.             tJunkItems[ item ] = not tJunkItems[ item ]
  48.         end
  49.     elseif tArgs[ i ]:lower() == "x" then
  50.         x = tonumber( tArgs[ i + 1 ] )
  51.     elseif tArgs[ i ]:lower() == "y" then
  52.         y = tonumber( tArgs[ i + 1 ] )
  53.     elseif tArgs[ i ]:lower() == "z" then
  54.         z = tonumber( tArgs[ i + 1 ] )
  55.     end
  56. end
  57.  
  58. for i = 1, 16 do
  59.     local t = turtle.getItemDetail( i )
  60.     if t then
  61.         if t.name == "minecraft:bucket" then
  62.             bucket = i
  63.         end
  64.     end
  65. end
  66.  
  67. local function safeDig()
  68.     local b, t = turtle.inspect()
  69.     if not b or tNotBreak[ t.name ] then
  70.         --Don't dig it
  71.     elseif t.name == "minecraft:lava" and bucket then
  72.         turtle.select( bucket )
  73.         turtle.place()
  74.         turtle.refuel( 1 )
  75.         return true
  76.     else
  77.         --dig
  78.         return turtle.dig()
  79.     end
  80. end
  81.  
  82. local function safeDigUp()
  83.     local b, t = turtle.inspectUp()
  84.     if not b or tNotBreak[ t.name ] then
  85.         --Don't dig it
  86.     elseif t.name == "minecraft:lava" and bucket then
  87.         turtle.select( bucket )
  88.         turtle.placeUp()
  89.         turtle.refuel( 1 )
  90.         return true
  91.     else
  92.         --dig
  93.         return turtle.digUp()
  94.     end
  95. end
  96.  
  97. local function safeDigDown()
  98.     local b, t = turtle.inspectDown()
  99.     if not b or tNotBreak[ t.name ] then
  100.         --Don't dig it
  101.     elseif t.name == "minecraft:lava" and bucket then
  102.         turtle.select( bucket )
  103.         turtle.placeDown()
  104.         turtle.refuel( 1 )
  105.         return true
  106.     else
  107.         --dig
  108.         return turtle.digDown()
  109.     end
  110. end
  111.  
  112. local function checkInventory()
  113.     for i = 1, 16 do
  114.         local t = turtle.getItemDetail( i )
  115.         if t then
  116.             if tJunkItems[ t.name ] then
  117.                 --we don't want it
  118.                 turtle.select( i )
  119.                 turtle.drop()
  120.             elseif tFuel[ t.name ] and turtle.getFuelLevel() < turtle.getFuelLimit() / 2 then
  121.                 turtle.select( i )
  122.                 turtle.refuel( 1 )
  123.             end
  124.         end
  125.     end
  126. end
  127.  
  128. local function column()
  129.     for i = 1, y do
  130.         local down = 1
  131.         while safeDigDown() or not turtle.detectDown() do
  132.             while not turtle.down() do turtle.attackDown() end
  133.             safeDig()
  134.             turtle.turnRight()
  135.             safeDig()
  136.             turtle.turnRight()
  137.             turtle.turnRight()
  138.             safeDig()
  139.             turtle.turnRight()
  140.             down = down + 1
  141.             if down == z then
  142.                 break
  143.             end
  144.         end
  145.         for i = down, 1, -1 do
  146.             turtle.up()
  147.         end
  148.         repeat safeDig() until turtle.forward()
  149.         repeat safeDig() until turtle.forward()
  150.     end
  151. end
  152.  
  153. local function main()
  154.     for i = 1, x do
  155.         column()
  156.         turtle.turnRight()
  157.         safeDig()
  158.         while not turtle.forward() do turtle.attack() end
  159.         turtle.turnRight()
  160.         turtle.forward()
  161.         column()
  162.         turtle.turnLeft()
  163.         safeDig()
  164.         while not turtle.forward() do turtle.attack() end
  165.         turtle.turnLeft()
  166.     end
  167. end
  168.  
  169. parallel.waitForAny( main, function() while true do sleep( 10 ) checkInventory() end end )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement