bcash8

Infinite Miner V2 (no gps)

Jan 4th, 2022 (edited)
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.58 KB | None | 0 0
  1. local ENDERCHEST = "enderstorage:ender_chest"
  2. local refuelLevel = 2000
  3. local ores = {
  4.     ["minecraft:coal_ore"] = true,
  5.     ["minecraft:redstone_ore"] = true,
  6.     ["minecraft:gold_ore"] = true,
  7.     ["minecraft:iron_ore"] = true,
  8.     ["minecraft:diamond_ore"] = true,
  9.     ["minecraft:lapis_ore"] = true,
  10.     ["minecraft:emerald_ore"] = true,
  11.     ["mekanism:tin_ore"] = true,
  12.     ["mekanism:lead_ore"] = true,
  13.     ["mekanism:copper_ore"] = true,
  14.     ["create:zinc_ore"] = true,
  15.     ["immersiveengineering:ore_nickel"] = true,
  16.     ["powah:uraninite_raw"] = true,
  17.     ["darkerdepths:silver_ore"] = true,
  18.     ["forbidden_arcanus:arcane_crystal_ore"] = true,
  19.     ["mysticalworld:quicksilver_ore"] = true,
  20.     ["mysticalworld:saphire_ore"] = true,
  21.     ["druidcraft:fiery_glass_ore"] = true,
  22.     ["immersiveengineering:ore_silver"] = true,
  23.     ["mekanism:fluorite_ore"] = true,
  24.     ["mekanism:uranium_ore"] = true,
  25.     ["forbidden_arcanus:ruinstone"] = true,
  26.     ["forbidden_arcanus:xpetrified_ore"] = true,
  27.     ["mekanism:osmium_ore"] = true
  28. }
  29.  
  30. local garbage = {
  31.     ["minecraft:cobblestone"] = true,
  32.     ["minecraft:gravel"] = true,
  33.     ["minecraft:dirt"] = true,
  34.     ["minecraft:granite"] = true,
  35.     ["minecraft:diorite"] = true,
  36.     ["quark:cobbled_deepslate"] = true,
  37. }
  38.  
  39. local distanceSinceLastInvCheck = 0
  40.  
  41. function placeUp()
  42.     repeat turtle.digUp() until turtle.placeUp()
  43.     return true
  44. end
  45.  
  46. function forward()
  47.     repeat turtle.dig() until turtle.forward()
  48.     distanceSinceLastInvCheck = distanceSinceLastInvCheck + 1
  49.     return true
  50. end
  51.  
  52. function back()
  53.     if not turtle.back() then
  54.         turtle.turnRight()
  55.         turtle.turnRight()
  56.         forward()
  57.         turtle.turnRight()
  58.         turtle.turnRight()
  59.     end
  60.     return true
  61. end
  62.  
  63. function right()
  64.     turtle.turnRight()
  65.     return true
  66. end
  67.  
  68. function left()
  69.     turtle.turnLeft()
  70.     return true
  71. end
  72.  
  73. function up()
  74.     repeat turtle.digUp() until turtle.up()
  75.     distanceSinceLastInvCheck = distanceSinceLastInvCheck + 1
  76.     return true
  77. end
  78.  
  79. function down()
  80.     repeat turtle.digDown() until turtle.down()
  81.     distanceSinceLastInvCheck = distanceSinceLastInvCheck + 1
  82.     return true
  83. end
  84.  
  85. function putDownChest()
  86.     print("Placing Chest")
  87.     for i = 1, 16 do
  88.         local data = turtle.getItemDetail(i)
  89.         if data then
  90.             if data.name == ENDERCHEST then
  91.                 turtle.select(i)
  92.                 placeUp()
  93.             end
  94.         end
  95.     end
  96. end
  97.  
  98. function findChest()
  99.     print("Finding Chest")
  100.     local worked, d = turtle.inspectUp()
  101.     if worked then
  102.         if d.name == ENDERCHEST then
  103.             turtle.digUp()
  104.             return true
  105.         end
  106.     end
  107.  
  108.     for i = 1, 16 do
  109.         local data = turtle.getItemDetail(i)
  110.         if data then
  111.             if data.name == ENDERCHEST then
  112.                 return i
  113.             end
  114.         end
  115.     end
  116.  
  117.     return false
  118. end
  119.  
  120. function checkBlock(side)
  121.     side = side or 0
  122.     local fun = turtle.inspect
  123.     if side == 1 then
  124.         fun = turtle.inspectUp
  125.     elseif side == 2 then
  126.         fun = turtle.inspectDown
  127.     end
  128.  
  129.     local worked, data = fun()
  130.     if worked then
  131.         if ores[data.name] then
  132.             return data.name
  133.         end
  134.     end
  135.     return false
  136. end
  137.  
  138. function scan(n)
  139.     n = n or 1
  140.     if n > 100 then
  141.         return
  142.     end
  143.  
  144.     --forward
  145.     if checkBlock() then
  146.         forward()
  147.         scan(n+1)
  148.         back()
  149.     end
  150.  
  151.     --up
  152.     if checkBlock(1) then
  153.         up()
  154.         scan(n+1)
  155.         down()
  156.     end
  157.  
  158.     --down
  159.     if checkBlock(2) then
  160.         down()
  161.         scan(n+1)
  162.         up()
  163.     end
  164.  
  165.     --left
  166.     left()
  167.     if checkBlock() then
  168.         forward()
  169.         scan(n+1)
  170.         back()
  171.     end
  172.     right()
  173.  
  174.     --right
  175.     right()
  176.     if checkBlock() then
  177.         forward()
  178.         scan(n+1)
  179.         back()
  180.     end
  181.     left()
  182. end
  183.  
  184. function sortInv()
  185.     local emptySlots = 0
  186.     for i = 1, 16 do
  187.         print("Testing Slot " .. i)
  188.         local firstItem = turtle.getItemDetail(i)
  189.         if firstItem then
  190.             for b = i + 1, 16 do
  191.                 local secondItem = turtle.getItemDetail(b)
  192.                 if secondItem then
  193.                     if secondItem.name == firstItem.name then
  194.                         print("Slot " .. i .. " and slot " .. b .. " match... transfering")
  195.                         turtle.select(b)
  196.                         turtle.transferTo(i)
  197.                     end
  198.                 end
  199.             end
  200.  
  201.             if garbage[firstItem.name] then
  202.                 print(firstItem.name .. " is garbage. Dumping")
  203.                 turtle.select(i)
  204.                 turtle.dropUp()
  205.             elseif firstItem.name == "minecraft:coal" then
  206.                 if turtle.getFuelLevel() < refuelLevel then
  207.                     print("Refueling")
  208.                     turtle.select(i)
  209.                     turtle.refuel()
  210.                 end
  211.             end
  212.         else
  213.             emptySlots = emptySlots + 1
  214.         end
  215.     end
  216.  
  217.     if emptySlots < 5 then
  218.         putDownChest()
  219.         for i = 1, 16 do
  220.             turtle.select(i)
  221.             turtle.dropUp()
  222.         end
  223.         findChest()
  224.     end
  225.     turtle.select(1)
  226. end
  227.  
  228. function main()
  229.     if not findChest() then error("NO CHEST FOUND AHHHHH") end
  230.     while true do
  231.         if distanceSinceLastInvCheck > 20 then
  232.             sortInv()
  233.             distanceSinceLastInvCheck = 0
  234.         end
  235.  
  236.         forward()
  237.         scan()
  238.         up()
  239.         scan()
  240.         forward()
  241.         scan()
  242.         down()
  243.         scan()
  244.     end
  245. end
  246.  
  247. main()
Add Comment
Please, Sign In to add comment