ecco7777

Automated Thaumcraft Infusion Altar

Aug 3rd, 2017
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.96 KB | None | 0 0
  1. function wrapP(peripheralName)
  2. if os.version()~="CraftOS 1.5" then
  3. if peripheralName==nil then
  4. print("Fehler")
  5. end
  6. local peripherals = peripheral.getNames()
  7. local i = 1
  8. while i < #peripherals and peripheral.getType(peripherals[i])~=peripheralName do
  9. i=i+1
  10. end
  11. if peripheral.getType(peripherals[i])==peripheralName then
  12. return peripheral.wrap(peripherals[i]),peripherals[i]
  13. else
  14. return nil
  15. end
  16. else
  17. local sides={"top","bottom","left","right","front","back"}
  18. for i=1,#sides do
  19. if peripheral.getType(sides[i])==peripheralName then
  20. return peripheral.wrap(sides[i]),sides[i]
  21. end
  22. end
  23. end
  24. end
  25.  
  26.  
  27. function wrapPs(peripheralName)
  28. periTab={}
  29. sideTab={}
  30. if peripheralName==nil then
  31. print("Fehler")
  32. end
  33. local peripherals = peripheral.getNames()
  34. local i2 = 1
  35. for i =1, #peripherals do
  36. if peripheral.getType(peripherals[i])==peripheralName then
  37. periTab[i2]=peripheral.wrap(peripherals[i])
  38. sideTab[i2]=peripherals[i]
  39. i2=i2+1
  40. end
  41. end
  42. if periTab~={} then
  43. return periTab,sideTab
  44. else
  45. return nil
  46. end
  47. end
  48.  
  49. crystalAspects={  iter = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "e02b869d0f5fae947df6187fa86c89ff",  },  tutamen = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "7efe695fcc02157c8d6b336a22951b18",  },  bestia = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "44b2fd6ee511aceb6d66d89ab0cc3ab3",  },  victus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "deb8b6eae28ee107f585558014b784ae",  },  metallum = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "07275fa65074555c50144eeaadcaa369",  },  gelum = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "6d1c371dc8953ab3b349d038149fbabf",  },  machina = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "e49f0a0b4c2005d70427b2cf0bb547c1",  },  tenebrae = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "d750071ba212a62216ff3509f819aa0a",  },  terra = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "bb9211b894dea99a6b674ebe63759333",  },  meto = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "438d48d3ad9a71d7c74b740d9af0d498",  },  potentia = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "3e4cde7bf9498dfb8d074b11fde2c2d8",  },  ordo = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "a77c4b35bbb1a4c84b15122dd52354bf",  },  sano = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "a552823dce9fa32a4d0a643fc6d80a2a",  },  corpus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "fc3b58c6d43b367885edb94a1c0b4a9e",  },  messis = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "edcfd189529c148e868fa75f723b8688",  },  humanus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "5e4a7da5863dfff7dbc5bc2613372aa6",  },  tempus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "f21dc7a7a65b31e1036f583ba9c63016",  },  herba = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "1c288c94a8a1868d12b5842efa3ad6af",  },  permutatio = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "363450adb133ce7c203fc43eadde8978",  },  pannus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "7adcf7ebaa90cc8cbb52edde554d096b",  },  fames = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "d78c7daa7e7404c74b5652b528b4bf98",  },  spiritus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "ae9bbd1dc25b4265679ff7f62e7bad22",  },  lux = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "1b9a468a86912077309e99d381993d22",  },  limus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "e2b2efb91662c9c82aea577feecb6a1e",  },  mortuus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "e58e5e079bc42dd22a42918b30a50949",  },  tempestas = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "74359249c0ceae36dbbcbbc6ac0aef32",  },  perfodio = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "932f023de69175bddc9e49726204eb26",  },  auram = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "74e597f80329c162890ae5c586baebd7",  },  fabrico = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "4bd51093dae3a8de9f013bdbb9f38e5b",  },  volatus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "b1863b99cb7c15b3c6a7a253c17d9129",  },  aqua = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "358c318e194980b0c0835a9f1ce41750",  },  venenum = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "4ff390fa1460fcfff17b3959c63622f9",  },  arbor = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "8003e0e23f094ccea997e06935a7f768",  },  exanimis = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "115fc0e04f597df5cb2f05075b640178",  },  vacuos = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "e17a8e072528e849045d2fc9292500b6",  },  ignis = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "ad5cc1bd74d2230c5c483e4c1bbc7948",  },  lucrum = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "045fd94215a5f119598e95d4961d508b",  },  sensus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "9edea0f9fa5a09fcd7ce93ca83f865ed",  },  aer = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "64630f917da3a7214b1ef2c91a90d090",  },  alienis = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "f4822536f3c421b0c4f7976181d1614d",  },  motus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "2dc5bd6dfbc37d3dda4f078312b78449",  },  vitreus = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "047206f1fafce8cdc716c9c822b1d2cb",  },  telum = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "3b3b1614a2b9152dcbf2b884ded1e3fc",  },  vinculum = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "100f092974acf71f2f081ac59d724f4c",  },  praecantatio = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "b06b63e28f76cf46121ac7ac9f195242",  },  vitium = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "8aeb0e0af059fc412dcfa2c42e983203",  },  cognitio = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "045aec975e8e153977a7dda8243425a7",  },  perditio = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "18add493aeeb97a3fe71cf8130fe8675",  },  instrumentum = {    id = "Thaumcraft:ItemCrystalEssence",    dmg = 0,    nbt_hash = "577749d66e4d1ca063910eb52c72de2b",  },}
  50.  
  51. args={...}
  52. pedestals=wrapPs("container_pedestal")
  53. mainPedestal=wrapP("dropper")
  54. jar=wrapP("tt_aspectContainer")
  55. me=wrapPs("tileinterface")
  56. meItems=2
  57. meAspects=1
  58.  
  59. function scan()
  60. recipe={}
  61. mainPedestal.pullItem("up",1)
  62. detail=mainPedestal.getStackInSlot(1)
  63. recipe[1]={id=detail.id,dmg=detail.dmg}
  64. if detail.nbt_hash~=nil then
  65. recipe[1].nbt_hash=detail.nbt_hash
  66. end
  67. mainPedestal.pushItem("up",1)
  68. i2=2
  69. for i=1,#pedestals do
  70. detail=pedestals[i].getStackInSlot(1)
  71. if detail~=nil then
  72. recipe[i2]={id=detail.id,dmg=detail.dmg}
  73. if detail.nbt_hash~=nil then
  74. recipe[i2].nbt_hash=detail.nbt_hash
  75. end
  76. i2=i2+1
  77. end
  78. end
  79. print("Speichern als:")
  80. name=io.read()
  81. fp=fs.open(name,'w')
  82. fp.write('recipe='..textutils.serialize(recipe))
  83. fp.close()
  84. fp=fs.open(name.."Aspects",'a')
  85. aspects=jar.getAspects()
  86. for i=1,#aspects do
  87. aspects[aspects[i]]=jar.getAspectCount(aspects[i])
  88. end
  89. fp.write('aspects='..textutils.serialize(aspects))
  90. fp.close()
  91. end
  92.  
  93. function abort()
  94. for i=1,#pedestals do
  95. pedestals[i].pushItem("down",1)
  96. end
  97. mainPedestal.pullItem("up",1)
  98. sleep(1)
  99. mainPedestal.pushItem("up",1)
  100. for i=1,#pedestals do
  101. pedestals[i].pullItem("down",1)
  102. end
  103. end
  104.  
  105. function craft(name)
  106. space=0
  107. for i=1,#pedestals do
  108. space=pedestals[i].getStackInSlot(1)
  109. end
  110. space=mainPedestal.getStackInSlot(1)
  111. if space==nil then
  112. shell.run(name)
  113. me[meItems].exportItem(recipe[1],'down',1)
  114. for i=2,#recipe do
  115. me[meItems].exportItem(recipe[i],'up',1)
  116. end
  117. getAspects(name)
  118. end
  119. end
  120.  
  121. function getAspects(name)
  122. print("debug1")
  123. shell.run(name.."Aspects")
  124. items=me[meAspects].getAvailableItems()
  125. gotAspects=true
  126. for i=1,#aspects do
  127. hasAspect=false
  128. for i2=1,#items do
  129. if items[i2].fingerprint.nbt_hash==crystalAspects[aspects[i]].nbt_hash then
  130. hasAspect=true
  131. print("debug2")
  132. if items[i2].size < aspects[aspects[i]] then
  133. hasAspect=false
  134. print(aspects[aspects[i]]-items[i2].size..aspects[i].." fehlen")
  135. end
  136. end
  137. end
  138. if hasAspect==false then
  139. gotAspects=false
  140. end
  141. end
  142. if gotAspects then
  143. for i=1,#aspects do
  144. for i2=1,aspects[aspects[i]] do
  145. me[meAspects].exportItem(crystalAspects[aspects[i]],"up",1)
  146. end
  147. end
  148. end
  149. end
  150.  
  151. if args[1]=="scan" then scan() end
  152. if args[1]=="abort" then abort() end
  153. if args[1]=="craft" then craft(args[2]) end
Add Comment
Please, Sign In to add comment