Advertisement
MrFreeZX

OC CompactStockPile

Sep 26th, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.99 KB | None | 0 0
  1. numberOfItems = 3
  2. itemList = {"minecraft:planks", 0, 500,
  3.             "minecraft:stick", 0, 2000,
  4.             "appliedenergistics2:item.ItemMultiMaterial", 20, 32
  5.             }
  6.  
  7. lastCrafts = {}
  8.  
  9. local component = require("component")
  10. local me_controller = component.me_interface
  11.  
  12. function table_invert(t)
  13.    local s={}
  14.    for k,v in pairs(t) do
  15.      s[v]=k
  16.      print(k)
  17.      --print(k .. " = " .. v)
  18.    end
  19.    return s
  20. end
  21.  
  22. function getItemAE(itemName, dmgValue)
  23.     local me_controller = component.me_interface
  24.     local item = me_controller.getItemsInNetwork({name = itemName})
  25.     if item.n >=1 then
  26.         for i = 1, item.n do
  27.             if item[i].damage == dmgValue then
  28.                 return item[i]
  29.             end
  30.         end
  31.     else
  32.         print("no item "  .. itemName .. " found")
  33.     end
  34.     print("error item " .. itemName .. " : " .. dmgValue .. " not found")
  35.     return nil
  36. end
  37.  
  38. function getCraftableAE(itemName, dmgValue)
  39.     local me_controller = component.me_interface
  40.     local craftables = me_controller.getCraftables({name = itemName})
  41.     if craftables.n >=1 then
  42.         for i = 1, craftables.n do
  43.             if craftables[i].getItemStack().damage == dmgValue then
  44.                 return craftables[i]
  45.             end
  46.         end
  47.     else
  48.         print("no craftable "  .. itemName .. " found")
  49.     end
  50.     print("error craftable " .. itemName .. " : " .. dmgValue .. " not found")
  51.     return nil
  52. end
  53.  
  54. function tryCraftAE(itemListIndex, itemName, itemDmgValue, craftNbrRequested)
  55.     if lastCrafts[itemListIndex] == nil or lastCrafts[itemListIndex].isDone() == true then
  56.         local craftables = getCraftableAE(itemName, itemDmgValue)
  57.         lastCrafts[itemListIndex] = craftables.request(craftNbrRequested)
  58.     end
  59. end
  60. while true do
  61.     for i = 1, numberOfItems do
  62.         local itemName = itemList[i*3-2]
  63.         local itemDmgValue = itemList[i*3-1]
  64.         local minItemInStock = itemList[i*3]
  65.        
  66.         local item = getItemAE(itemName, itemDmgValue)
  67.         if item ~= nil then
  68.             local itemCount = item.size
  69.             if itemCount < minItemInStock then
  70.                 tryCraftAE(i, itemName, itemDmgValue, minItemInStock-itemCount)
  71.             end
  72.         end
  73.     end
  74.     os.sleep(5)
  75. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement