Advertisement
King0fGamesYami

[BETA]1.64+Miner

Sep 28th, 2014
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.35 KB | None | 0 0
  1. local whitelist = {
  2.     ["minecraft:gold_ore"] = true,
  3.     ["minecraft:iron_ore"] = true,
  4.     ["minecraft:diamond_ore"] = true,
  5.     ["minecraft:diamond"] = true,
  6.     ["minecraft:emerald_ore"] = true,
  7.     ["minecraft:emerald"] = true,
  8.     ["minecraft:coal_ore"] = true,
  9.     ["minecraft:lapis_ore"] = true,
  10.     ["minecraft:dye"] = true,
  11.     ["minecraft:redstone_ore"] = true,
  12.     ["minecraft:lit_redstone_ore"] = true,
  13.     ["minecraft:redstone"] = true,
  14.     ["minecraft:quartz_ore"] = true,
  15.     ["minecraft:quartz"] = true,
  16. }
  17.  
  18. local loot = {
  19.     ["minecraft:saddle"] = true,
  20.     ["minecraft:iron_ingot"] = true,
  21.     ["minecraft:bread"] = true,
  22.     ["minecraft:wheat"] = true,
  23.     ["minecraft:gunpowder"] = true,
  24.     ["minecraft:string"] = true,
  25.     ["minecraft:bucket"] = true,
  26.     ["minecraft:golden_apple"] = true,
  27.     ["minecraft:redstone"] = true,
  28.     ["minecraft:record_13"] = true,
  29.     ["minecraft:record_cat"] = true,
  30.     ["minecraft:name_tag"] = true,
  31.     ["minecraft:iron_horse_armor"] = true,
  32.     ["minecraft:golden_horse_armor"] = true,
  33.     ["minecraft:diamond_horse_armor"] = true,
  34.     ["minecraft:enchanted_book"] = true,
  35. }
  36.  
  37. local isFuel = {
  38.     ["minecraft:coal"] = true,
  39.     ["minecraft:coal_block"] = true,
  40.     ["minecraft:lava_bucket"] = true,
  41.     ["minecraft:reeds"] = true,
  42.     ["minecraft:log"] = true,
  43.     ["minecraft:logs2"] = true,
  44.     ["minecraft:planks"] = true,
  45.     ["minecraft:sapling"] = true,
  46.     ["minecraft:leaves"] = true,
  47.     ["minecraft:wool"] = true,
  48.     ["minecraft:oak_stairs"] = true,
  49.     ["minecraft:chest"] = true,
  50.     ["minecraft:crafting_table"] = true,
  51.     ["minecraft:sign"] = true,
  52.     ["minecraft:wooden_door"] = true,
  53.     ["minecraft:ladder"] = true,
  54.     ["minecraft:wooden_pressure_plate"] = true,
  55.     ["minecraft:reeds"] = true,
  56.     ["minecraft:fence"] = true,
  57.     ["minecraft:trapdoor"] = true,
  58.     ["minecraft:fence_gate"] = true,
  59.     ["minecraft:double_wooden_slab"] = true,
  60.     ["minecraft:wooden_slab"] = true,
  61.     ["minecraft:spruce_stairs"] = true,
  62.     ["minecraft:birch_stairs"] = true,
  63.     ["minecraft:jungle_stairs"] = true,
  64.     ["minecraft:leaves2"] = true,
  65.     ["minecraft:acacia_stairs"] = true,
  66.     ["minecraft:dark_oak_stairs"] = true,
  67.     ["minecraft:carpet"] = true,
  68.     ["minecraft:spruce_fence_gate"] = true,
  69.     ["minecraft:birch_fence_gate"] = true,
  70.     ["minecraft:jungle_fence_gate"] = true,
  71.     ["minecraft:dark_oak_fence_gate"] = true,
  72.     ["minecraft:acacia_fence_gate"] = true,
  73.     ["minecraft:spruce_fence"] = true,
  74.     ["minecraft:birch_fence"] = true,
  75.     ["minecraft:jungle_fence"] = true,
  76.     ["minecraft:dark_oak_fence"] = true,
  77.     ["minecraft:acacia_fence"] = true,
  78.     ["minecraft:spruce_door"] = true,
  79.     ["minecraft:birch_door"] = true,
  80.     ["minecraft:jungle_door"] = true,
  81.     ["minecraft:acacia_door"] = true,
  82.     ["minecraft:dark_oak_door"] = true,
  83.     ["minecraft:stick"] = true,
  84.     ["minecraft:bowl"] = true,
  85.     ["minecraft:wooden_door"] = true,
  86.     ["minecraft:boat"] = true,
  87.     ["minecraft:paper"] = true,
  88.    
  89. }
  90.  
  91. local continue = true
  92. local time
  93.  
  94. if fs.exists( ".tLog" ) then
  95.     fs.delete( ".tLog" )
  96. end
  97.  
  98. do
  99.     print( 'Please enter a time length to mine, in hour:minute:second format' )
  100.     local input = read()
  101.     local hours, minutes, seconds = input:match( "(%d*):?(%d*):?(%d*)" )
  102.     hours = hours or 0
  103.     minutes = minutes or 0
  104.     seconds = seconds or 0
  105.     time = (hours * 3600) + (minutes * 60) + seconds
  106. end
  107.  
  108. local _print = print
  109. local function print( ... )
  110.     local file = fs.open( ".tLog", "a" )
  111.     file.writeLine( table.concat( { ... } ) )
  112.     file.close()
  113.     return _print( ... )
  114. end
  115.  
  116. local bucket, fuel
  117. for i = 1, 16 do
  118.     local item = turtle.getItemDetail( i )
  119.     if item and item.name == "minecraft:bucket" then
  120.         bucket = i
  121.         print( "[finder]: bucket found!  Slot " .. i )
  122.     elseif item and isFuel[ item.name ] then
  123.         fuel = i
  124.         print( "[finder]: fuel found!  Slot " .. i )
  125.     end
  126. end
  127.  
  128. local search = {}
  129. search.front = function()
  130.     local ok, block = turtle.inspect()
  131.     print( "[search-front]: " .. (ok and ("block: " .. block.name .. " detected") or "no block detected" ) )
  132.     if ok and whitelist[ block.name ] then
  133.         turtle.dig()
  134.         while not turtle.forward() do turtle.dig() end
  135.         return search.front(), turtle.back(), search.left()
  136.     elseif ok and block.name == "minecraft:lava" then
  137.         turtle.select( bucket )
  138.         turtle.place()
  139.         turtle.refuel()
  140.         turtle.forward()
  141.         return search.front(), turtle.back(), search.left()
  142.     end
  143.     return search.left()
  144. end
  145. search.left = function()
  146.     turtle.turnLeft()
  147.     local ok, block = turtle.inspect()
  148.     print( "[search-left]: " .. (ok and ("block: " .. block.name .. " detected") or "no block detected" ) )
  149.     if ok and whitelist[ block.name ] then
  150.         turtle.dig()
  151.         while not turtle.forward() do turtle.dig() end
  152.         return search.front(), turtle.back(), turtle.turnRight(), search.right()
  153.     elseif ok and block.name == "minecraft:lava" then
  154.         turtle.select( bucket )
  155.         turtle.place()
  156.         turtle.refuel()
  157.         turtle.forward()
  158.         return search.front(), turtle.back(), turtle.turnRight(), search.right()
  159.     end
  160.     return turtle.turnRight(), search.right()
  161. end
  162. search.right = function()
  163.     turtle.turnRight()
  164.     local ok, block = turtle.inspect()
  165.     print( "[search-right]: " .. (ok and ("block: " .. block.name .. " detected") or "no block detected" ) )
  166.     if ok and whitelist[ block.name ] then
  167.         turtle.dig()
  168.         while not turtle.forward() do turtle.dig() end
  169.         return search.front(), turtle.back(), turtle.turnLeft(), search.up()
  170.     elseif ok and block.name == "minecraft:lava" then
  171.         turtle.select( bucket )
  172.         turtle.place()
  173.         turtle.refuel()
  174.         turtle.forward()
  175.         return search.front(), turtle.back(), turtle.turnLeft(), search.up()
  176.     end
  177.     return turtle.turnLeft(), search.up()
  178. end
  179. search.up = function()
  180.     local ok, block = turtle.inspectUp()
  181.     print( "[search-up]: " .. (ok and ("block: " .. block.name .. " detected") or "no block detected" ) )
  182.     if ok and whitelist[ block.name ] then
  183.         turtle.digUp()
  184.         while not turtle.up() do turtle.digUp() end
  185.         return search.front(), turtle.down(), search.down()
  186.     elseif ok and block.name == "minecraft:lava" then
  187.         turtle.select( bucket )
  188.         turtle.placeUp()
  189.         turtle.refuel()
  190.         turtle.up()
  191.         return search.front(), turtle.down(), search.down()
  192.     end
  193.     return search.down()
  194. end
  195. search.down = function()
  196.     local ok, block = turtle.inspectDown()
  197.     print( "[search-down]: " .. (ok and ("block: " .. block.name .. " detected") or "no block detected" ) )
  198.     if ok and whitelist[ block.name ] then
  199.         turtle.digDown()
  200.         turtle.down()
  201.         return search.front(), turtle.up()
  202.     elseif ok and block.name == "minecraft:lava" then
  203.         turtle.select( bucket )
  204.         turtle.placeDown()
  205.         turtle.down()
  206.         return search.front(), turtle.up()
  207.     end
  208. end
  209.  
  210. local function manager()
  211.     while true do
  212.         print( "[manager]: starting checkup" )
  213.         for i = 1, 16 do
  214.             local item = turtle.getItemDetail( i )
  215.             if item and not whitelist[ item.name ] and not isFuel[ item.name ] then
  216.                 if item.name ~= "minecraft:bucket" then
  217.                     print( "[manager]: useless item detected: " .. item.name )
  218.                     turtle.select( i )
  219.                     turtle.drop()
  220.                     print( "[manager]: dropped useless item" )
  221.                 end
  222.             end
  223.         end
  224.         if turtle.getFuelLevel() < turtle.getFuelLimit() / 10 then
  225.             print( "[manager]: fuel level low" )
  226.             turtle.select( fuel )
  227.             if not turtle.refuel() then
  228.                 print( "[manager]: fuel source depleted" )
  229.                 local found
  230.                 for i = 1, 16 do
  231.                     local item = turtle.getItemDetail( i )
  232.                     if item and isFuel[ item.name ] then
  233.                         fuel, found = i, true
  234.                         print( "[manager]: new fuel source " .. item.name .. ", in slot " .. i )
  235.                         break
  236.                     end
  237.                 end
  238.                 if not found then
  239.                     print( "[manager]: no fuel source detected" )
  240.                     continue = false
  241.                     print( "[manager]: fuel reserves depleted: stopping..." )
  242.                 end
  243.             end
  244.         end
  245.         sleep( 60 )
  246.     end
  247. end
  248.  
  249. local function timeChecker()
  250.     local id
  251.     if time > 0 then
  252.         print( "[timeChecker]: starting time for " .. time .. " seconds" )
  253.         id = os.startTimer( time )
  254.     end
  255.     while true do
  256.         local event = {os.pullEvent()}
  257.         if event[ 1 ] == "timer" and event[ 2 ] == id then
  258.             print( "[timeChecker]: time is up!" )
  259.             continue = false
  260.         end
  261.     end
  262. end
  263.  
  264. local function branch()
  265.     print( "[branch]: starting" )
  266.     search.front()
  267.     local gone = 0
  268.     for i = 1, 16 do
  269.         while not turtle.forward() do turtle.dig() end
  270.         search.front()
  271.         gone = gone + 1
  272.         if not continue then
  273.             break
  274.         end
  275.     end
  276.     print( "[branch]: completed" )
  277.     repeat
  278.         if turtle.back() then
  279.             gone = gone - 1
  280.         end
  281.     until gone == 0
  282.     print( "[branch]: returned" )
  283. end
  284.  
  285. local function main()
  286.     print( "[main]: starting" )
  287.     local gone = 1
  288.     while continue do
  289.         for i = 1, 4 do
  290.             while not turtle.forward() do turtle.dig() end
  291.             search.front()
  292.         end
  293.         gone = gone + 1
  294.         turtle.turnRight()
  295.         print( "[main]: starting right branch" )
  296.         branch()
  297.         turtle.turnLeft()
  298.         if not continue then break end
  299.         turtle.turnLeft()
  300.         print( "[main]: starting left branch" )
  301.         branch()
  302.         turtle.turnRight()
  303.     end
  304.     print( "[main]: completed" )
  305.     repeat
  306.         if turtle.back() then
  307.             gone = gone - 1
  308.         end
  309.     until gone == 0
  310.     print( "[main]: returned" )
  311. end
  312.  
  313. local mainCaller = function()
  314.     local status, err = pcall( main )
  315.     if not status then
  316.         if term.isColor() then term.setTextColor( colors.red ) end
  317.         print( "[mainCaller]: " .. err )
  318.         error()
  319.     end
  320. end
  321.  
  322. local managerCaller = function()
  323.     local status, err = pcall( manager )
  324.     if not status then
  325.         if term.isColor() then term.setTextColor( colors.red ) end
  326.         print( "[managerCaller]: " .. err )
  327.         error()
  328.     end
  329. end
  330. parallel.waitForAny( timeChecker, mainCaller, managerCaller )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement