Advertisement
Gallent

Turtle imbuing 1

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