Advertisement
Faited

ComputerCraft / No EnderChest

May 7th, 2022 (edited)
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local a = 0
  2. local b = 0
  3. local fuelNeed
  4. local inventory_full
  5. local item
  6. local turns = 0
  7. local pos = {}
  8. local xCur = 0
  9. local yCur = 0
  10. local xNew = 0
  11. local yNew = 0
  12. local xOld = 0
  13. local yOld = 0
  14. local turnsStorage
  15.  
  16. function track(xNew, yNew)
  17.    
  18.     if turns == 1 then
  19.     turtle.turnLeft()
  20.     turns = -1
  21.     end
  22.  
  23.     if turns == 2 then
  24.     turtle.turnLeft()
  25.     turtle.turnLeft()
  26.     turns = -2
  27.     end
  28.  
  29.     if turns == 3 then
  30.     turtle.turnRight()
  31.     turns = -3
  32.     end
  33.  
  34.     if (xNew - xCur) > 0
  35.     then
  36.         while (xCur ~= xNew)
  37.         do
  38.         xCur = xCur + 1
  39.         turtle.dig()
  40.         turtle.forward()
  41.         print("east")
  42.         end
  43.     end
  44.    
  45.     turtle.turnRight()
  46.  
  47.     if (yNew - yCur) > 0
  48.     then
  49.         while (yCur ~= yNew)
  50.         do
  51.         yCur = yCur + 1
  52.         turtle.dig()
  53.         turtle.forward()
  54.         print("north")
  55.         end
  56.     end
  57.    
  58.     turtle.turnRight()
  59.  
  60.     if (xNew - xCur) < 0
  61.     then
  62.         while (xCur ~= xNew)
  63.         do
  64.         xCur = xCur - 1
  65.         turtle.dig()
  66.         turtle.forward()
  67.         print("west")
  68.         end
  69.     end
  70.    
  71.     turtle.turnRight()
  72.  
  73.     if (yNew - yCur) < 0
  74.     then
  75.         while (yCur ~= yNew)
  76.         do
  77.         yCur = yCur - 1
  78.         turtle.dig()
  79.         turtle.forward()
  80.         print("south")
  81.         end
  82.     end
  83.    
  84.     turtle.turnRight()
  85.  
  86.     yCur = yNew
  87.     xCur = xNew
  88. end
  89.  
  90. local function LavaCheck()
  91.     blockCheck, blockData = turtle.inspect()
  92.     if blockData.name == "minecraft:lava"
  93.     then
  94.         turtle.select(1)
  95.         turtle.place()
  96.         turtle.refuel(1)
  97.     end
  98.    
  99.         blockCheck, blockData = turtle.inspectDown()
  100.     if blockData.name == "minecraft:lava"
  101.     then
  102.         turtle.select(1)
  103.         turtle.placeDown()
  104.         turtle.refuel(1)
  105.     end
  106.    
  107.         blockCheck, blockData = turtle.inspectUp()
  108.     if blockData.name == "minecraft:lava"
  109.     then
  110.         turtle.select(1)
  111.         turtle.placeUp()
  112.         turtle.refuel(1)
  113.     end
  114. end
  115.  
  116. local function Inventory()
  117.     inventory_full = turtle.getItemCount(16)
  118.     if inventory_full > 0
  119.     then
  120.         MyTurtle.WasteDisposal({"forge:cobblestone","forge:stone","forge:netherrack"})
  121.     end
  122.     inventory_full = turtle.getItemCount(16)
  123.     if inventory_full > 0
  124.     then
  125.         turnsStorage = turns
  126.         xOld = xCur
  127.         yOld = yCur
  128.         print("")      
  129.         track(0,0)
  130.         for i = 2,16
  131.         do
  132.             turtle.select(i)
  133.             if turtle.getItemCount() > 0
  134.             then
  135.                 if turtle.getFuelLevel() < 1000
  136.                 then
  137.                     fuelNeed = true
  138.                 else
  139.                     fuelNeed = false
  140.                 end
  141.                 item = turtle.getItemDetail()
  142.                 if item.name == "minecraft:coal" and fuelNeed == true
  143.                 then
  144.                     print("This is coal")
  145.                     turtle.refuel(64)
  146.                 end
  147.             end
  148.             turtle.dropDown()
  149.         end
  150.         track(xOld,yOld)
  151.        
  152.         if turns == -1 then
  153.             turtle.turnRight()
  154.             turns = 1
  155.         end
  156.  
  157.         if turns == -2 then
  158.             turtle.turnLeft()
  159.             turtle.turnLeft()
  160.             turns = 2
  161.         end
  162.  
  163.         if turns == -3 then
  164.             turtle.turnLeft()
  165.             turns = 3
  166.         end
  167.  
  168.         turtle.select(1)
  169.     end
  170. end
  171.  
  172. local function GravelCheck()
  173.     blockCheck, blockData = turtle.inspect()
  174.     while blockData.name == "minecraft:gravel" or blockData.name == "minecraft:sand"
  175.     do
  176.         blockCheck, blockData = turtle.inspect()
  177.         turtle.dig()
  178.         sleep(1)   
  179.     end
  180. end
  181.  
  182. MyTurtle = {}
  183.  
  184. ObjectList = {}
  185. BlockData = {Pos = {x = 0,y = 0,z = 0},name = "fillerBlock"}
  186. TurtleInfo = {Pos = {x = 0,y = 0,z = 0}, Rot = 0}
  187. TurtleMovement = {}
  188.  
  189. -- Necessary Math Function Do Not Touch
  190. function Round(num)
  191.     local mult = 10^(1 or 0)
  192.     return math.floor(num * mult + 0.5) / mult
  193. end
  194.  
  195. function dump(o)
  196.     if type(o) == 'table' then
  197.        local s = '{ '
  198.        for k,v in pairs(o) do
  199.           if type(k) ~= 'number' then k = '"'..k..'"' end
  200.           s = s .. '['..k..'] = ' .. dump(v) .. ','
  201.        end
  202.        return s .. '} '
  203.     else
  204.        return tostring(o)
  205.     end
  206.  end
  207. -- Necessary Math Function Do Not Touch
  208.  
  209. TurtleMove = {} -- Definitions for TurtleMove
  210.  
  211. function TurtleMove.forward()
  212.     turtle.dig()
  213.     turtle.forward()
  214.     TurtleInfo.Pos.x,TurtleInfo.Pos.y = TurtleInfo.Pos.x + Round(math.cos(TurtleInfo.Rot)), TurtleInfo.Pos.y + Round(math.sin(TurtleInfo.Rot))
  215.     table.insert(TurtleMovement,'f')
  216. -- x and y are changed with respect to the angle which considers x to be forward and y to be side to side
  217. end
  218.  
  219. function TurtleMove.lessforward()
  220.     turtle.dig()
  221.     turtle.forward()
  222.     TurtleInfo.Pos.x,TurtleInfo.Pos.y = TurtleInfo.Pos.x + Round(math.cos(TurtleInfo.Rot)), TurtleInfo.Pos.y + Round(math.sin(TurtleInfo.Rot))
  223. -- x and y are changed with respect to the angle which considers x to be forward and y to be side to side
  224. end
  225.  
  226. function TurtleMove.backward()
  227.     turtle.turnLeft()
  228.     turtle.turnLeft()
  229.     turtle.dig()
  230.     turtle.forward()
  231.     turtle.turnLeft()
  232.     turtle.turnLeft()
  233.     TurtleInfo.Pos.x,TurtleInfo.Pos.y = TurtleInfo.Pos.x + Round(math.cos(TurtleInfo.Rot)), TurtleInfo.Pos.y + Round(math.sin(TurtleInfo.Rot))
  234.     table.insert(TurtleMovement,'-f')
  235. end
  236.  
  237. function TurtleMove.lessbackward()
  238.     turtle.turnLeft()
  239.     turtle.turnLeft()
  240.     turtle.dig()
  241.     turtle.forward()
  242.     turtle.turnLeft()
  243.     turtle.turnLeft()
  244.     TurtleInfo.Pos.x,TurtleInfo.Pos.y = TurtleInfo.Pos.x + Round(math.cos(TurtleInfo.Rot)), TurtleInfo.Pos.y + Round(math.sin(TurtleInfo.Rot))
  245. end
  246.  
  247. function TurtleMove.left()
  248.     turtle.turnLeft()
  249.     turtle.dig()
  250.     turtle.forward()
  251.     turtle.turnLeft()
  252.     TurtleInfo.Pos.x,TurtleInfo.Pos.y = TurtleInfo.Pos.x + Round(math.cos(TurtleInfo.Rot)), TurtleInfo.Pos.y + Round(math.sin(TurtleInfo.Rot))
  253. end
  254.  
  255.  
  256. function TurtleMove.right()
  257.     turtle.turnRight()
  258.     turtle.dig()
  259.     turtle.forward()
  260.     turtle.turnLeft()
  261.     TurtleInfo.Pos.x,TurtleInfo.Pos.y = TurtleInfo.Pos.x + Round(math.cos(TurtleInfo.Rot)), TurtleInfo.Pos.y + Round(math.sin(TurtleInfo.Rot))
  262. end
  263.  
  264. function TurtleMove.up()
  265.     turtle.digUp()
  266.     turtle.up()
  267.     TurtleInfo.Pos.z = TurtleInfo.Pos.z + 1
  268.     table.insert(TurtleMovement,'u')
  269. end
  270.  
  271. function TurtleMove.lessup()
  272.     turtle.digUp()
  273.     turtle.up()
  274.     TurtleInfo.Pos.z = TurtleInfo.Pos.z + 1
  275. end
  276.  
  277. function TurtleMove.lessdown()
  278.     turtle.digDown()
  279.     turtle.down()
  280.     TurtleInfo.Pos.z = TurtleInfo.Pos.z - 1
  281. end
  282.  
  283.  
  284. function TurtleMove.down()
  285.     turtle.digDown()
  286.     turtle.down()
  287.     TurtleInfo.Pos.z = TurtleInfo.Pos.z - 1
  288.     table.insert(TurtleMovement,'-u')
  289. end
  290.  
  291. function TurtleMove.turnRight()
  292.     turtle.turnRight()
  293.     TurtleInfo.Rot = TurtleInfo.Rot + math.rad(90)
  294.     if TurtleInfo.Rot == math.rad(360)
  295.     then
  296.         TurtleInfo.Rot = 0
  297.     end
  298.     table.insert(TurtleMovement,'l')
  299. end
  300.  
  301. function TurtleMove.lessturnRight()
  302.     turtle.turnRight()
  303.     TurtleInfo.Rot = TurtleInfo.Rot + math.rad(90)
  304.     if TurtleInfo.Rot == math.rad(360)
  305.     then
  306.         TurtleInfo.Rot = 0
  307.     end
  308. end
  309.  
  310. function TurtleMove.turnLeft()
  311.     turtle.turnLeft()
  312.     TurtleInfo.Rot = TurtleInfo.Rot + math.rad(90)
  313.     if TurtleInfo.Rot == math.rad(360)
  314.     then
  315.         TurtleInfo.Rot = 0
  316.     end
  317.     table.insert(TurtleMovement,'-l')
  318. end
  319.  
  320. function TurtleMove.lessturnLeft()
  321.     turtle.turnLeft()
  322.     TurtleInfo.Rot = TurtleInfo.Rot + math.rad(90)
  323.     if TurtleInfo.Rot == math.rad(360)
  324.     then
  325.         TurtleInfo.Rot = 0
  326.     end
  327. end
  328.  
  329. function TurtleMove.align()
  330.     while(TurtleInfo.Rot ~= 0)
  331.     do
  332.         print(TurtleInfo.Rot)
  333.         TurtleMove.turnRight()
  334.     end
  335. end
  336.  
  337. function TurtleMove.reverse()
  338.     if TurtleMovement[#TurtleMovement] == 'f' then
  339.         TurtleMove.lessbackward()
  340.     elseif TurtleMovement[#TurtleMovement] == '-f' then
  341.         TurtleMove.lessforward()
  342.     elseif TurtleMovement[#TurtleMovement] == 'u' then
  343.         TurtleMove.lessdown()
  344.     elseif TurtleMovement[#TurtleMovement] == '-u' then
  345.         TurtleMove.lessup()
  346.     elseif TurtleMovement[#TurtleMovement] == 'l' then
  347.         TurtleMove.lessturnLeft()
  348.     elseif TurtleMovement[#TurtleMovement] == '-l' then
  349.         TurtleMove.lessturnRight()
  350.     end
  351.     table.remove(TurtleMovement,#TurtleMovement)
  352. end
  353.  
  354.  
  355. function MyTurtle.Search(blockInfo,tag)
  356.     if type(tag) == "string" then
  357.         for i,v in pairs(blockInfo.tags) do
  358.             if ((i == tag) and (v == true)) then
  359.                 return(true)
  360.             end
  361.         end
  362.     elseif type(tag) == "table" then
  363.         for i2,v2 in pairs(tag) do
  364.             local x = MyTurtle.Search(blockInfo,v2)
  365.             if x == true then return(true) end
  366.         end
  367.     end
  368. end
  369.  
  370.  
  371. function MyTurtle.hunt(tag)
  372.     local a, blockInfo = turtle.inspect()
  373.     if a == true then
  374.         return(MyTurtle.Search(blockInfo, tag))
  375.     end
  376. end
  377.  
  378. function MyTurtle.huntUp(tag)
  379.     local a, blockInfo = turtle.inspectUp()
  380.     if a == true then
  381.         return(MyTurtle.Search(blockInfo, tag))
  382.     end
  383. end
  384.  
  385. function MyTurtle.huntDown(tag)
  386.     local a, blockInfo = turtle.inspectDown()
  387.     if a == true then
  388.         return(MyTurtle.Search(blockInfo, tag))
  389.     end
  390. end
  391.  
  392. function MyTurtle.gatherOre(tag)
  393.     for i = 1,6 do
  394.         if i < 5 then
  395.             local x = MyTurtle.hunt(tag)
  396.             if x == true then
  397.                 TurtleMove.forward()
  398.                 print(TurtleMovement[#TurtleMovement])
  399.                 MyTurtle.gatherOre(tag)
  400.             end
  401.             TurtleMove.turnRight()
  402.             if i == 4 then
  403.                 for i = 1,4 do
  404.                     table.remove(TurtleMovement,#TurtleMovement)
  405.                 end
  406.             end
  407.         elseif i == 5 then
  408.             local x = MyTurtle.huntUp(tag)
  409.             if x == true then
  410.                 TurtleMove.up()
  411.                 print(TurtleMovement[#TurtleMovement])
  412.                 MyTurtle.gatherOre(tag)
  413.             end
  414.         elseif i == 6 then
  415.             local x = MyTurtle.huntDown(tag)
  416.             if x == true then
  417.                 TurtleMove.down()
  418.                 print(TurtleMovement[#TurtleMovement])
  419.                 MyTurtle.gatherOre(tag)
  420.             end
  421.         end
  422.     end
  423.     TurtleMove.reverse()
  424. end
  425.  
  426. function MyTurtle.WasteDisposal(tag)
  427.     for i = 1,16 do
  428.         turtle.select(i)
  429.         local a = turtle.getItemDetail(i,true)
  430.         if a ~= nil then
  431.             local x = MyTurtle.Search(a,tag)
  432.             if x == true then
  433.                 turtle.dropDown()
  434.             end
  435.         end
  436.     end
  437.     turtle.select(1)
  438. end
  439.  
  440. while true do
  441.     b = b + 1
  442.     if b == 2
  443.     then
  444.         b = 0
  445.         a = a + 1
  446.     end
  447.  
  448.     for i = 1,a,1
  449.     do
  450.         turtle.dig()
  451.         GravelCheck()
  452.         LavaCheck()
  453.         turtle.forward()
  454.             if  turns == 0 then xCur = xCur + 1 end
  455.             if  turns == 1 then yCur = yCur + 1 end
  456.             if  turns == 2 then xCur = xCur - 1 end
  457.             if  turns == 3 then yCur = yCur - 1 end
  458.         print("x: " .. xCur .. "\ny: " .. yCur .. "\n")
  459.         MyTurtle.gatherOre("forge:ores")
  460.         turtle.digDown()
  461.         turtle.digUp()
  462.         Inventory()
  463.  
  464.     end
  465.  
  466.     turtle.turnRight()
  467.     turns = turns + 1
  468.     if turns == 4 then turns = 0 end
  469. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement