Gallent

Turtle imbuing 1

Mar 16th, 2025 (edited)
603
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.32 KB | None | 0 0
  1. local target = peripheral.find("ars_nouveau:imbuement_chamber")
  2. local suck = turtle.suck
  3. local drop = turtle.drop
  4.  
  5. if target == nil then
  6.     turtle.turnLeft()
  7.     target = peripheral.find("ars_nouveau:imbuement_chamber")
  8.     if target == nil then print("Cannot find the listed target inventory") return end
  9. end
  10.  
  11. local materials = {
  12.     --insert valid ingredients here
  13.     ["minecraft:amethyst_shard"]=true,
  14.     ["minecraft:lapis_lazuli"]=true
  15. }
  16. local desiredResults = {
  17.     --Insert desired results here
  18.     ["ars_nouveau:source_gem"] = true
  19. }
  20.  
  21. local initTable = {
  22.     front=function() end,
  23.     left=function() turtle.turnLeft() end,
  24.     right=function() turtle.turnRight() end,
  25.     back=function ()
  26.         turtle.turnLeft()
  27.         turtle.turnLeft()
  28.     end,
  29.     top=function ()
  30.         suck=turtle.suckUp
  31.         drop=turtle.dropUp
  32.     end,
  33.     bottom=function ()
  34.         suck=turtle.suckDown
  35.         drop=turtle.dropDown
  36.     end
  37. }
  38.  
  39. initTable[peripheral.getName(target)]()
  40.  
  41. local matSlots = {}
  42. for i=1,16 do
  43.     if turtle.getItemDetail(i) ~= nil and
  44.     (materials[turtle.getItemDetail(i).name])
  45.     then
  46.         table.insert(matSlots,i)
  47.     end
  48. end
  49.  
  50. local resultCell=0
  51. local function emptyCheck()
  52.     for i=1,16 do
  53.         if turtle.getItemDetail(i) == nil then
  54.             if resultCell == 0 then resultCell=i end
  55.         elseif (desiredResults[turtle.getItemDetail(i).name] and turtle.getItemDetail(i).count < turtle.getItemDetail(i,true).maxCount) then
  56.             resultCell=i
  57.             break
  58.         end
  59.     end
  60.     return resultCell
  61. end
  62.  
  63. local function makeItem(currentSlot)
  64.     turtle.select(currentSlot)
  65.     emptyCheck()
  66.    
  67.     while true do
  68.         if target.getItemDetail(1) ~= nil and not materials[target.getItemDetail(1).name] then
  69.             turtle.select(resultCell)
  70.             suck(1)
  71.             local detail = turtle.getItemDetail(resultCell,true)
  72.             if not desiredResults[detail.name] or detail.count==detail.maxCount then emptyCheck() end
  73.             turtle.select(currentSlot)
  74.         end
  75.        
  76.         if target.getItemDetail(1) == nil then
  77.             local check = turtle.getItemDetail(currentSlot)
  78.             if check ~= nil and materials[check.name] then drop(1)
  79.                 else break
  80.             end
  81.         end
  82.     end
  83. end
  84.  
  85. for _,v in pairs(matSlots) do
  86.     makeItem(v)
  87. end
Advertisement
Add Comment
Please, Sign In to add comment