Advertisement
Link712011

crafting

Aug 12th, 2017
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.86 KB | None | 0 0
  1. local component = require('component')
  2. local robot = require('robot')
  3.  
  4. local inventory = require('inventory')
  5.  
  6. local crafting = {}
  7.  
  8. local function free_crafting_table()
  9.     local slot
  10.  
  11.     slot = 1
  12.     while slot <= 11 do
  13.         if slot ~= 4 and slot ~= 8 then
  14.             if component.inventory_controller.getStackInInternalSlot(slot) and not inventory.push_item_after_slot(slot, true) then
  15.                 return false
  16.             end
  17.         end
  18.         slot = slot + 1
  19.     end
  20.     return true
  21. end
  22. crafting.free_crafting_table = free_crafting_table
  23.  
  24. local function move_item_out_of_crafting_table(item, meta, search_from)
  25.     local slot
  26.     local data
  27.     local retslot
  28.  
  29.     slot = 1
  30.     while slot <= 11 do
  31.         if slot ~= 4 and slot ~= 8 then
  32.             data = component.inventory_controller.getStackInInternalSlot(slot)
  33.  
  34.             if data and data.name == item and (not meta or data.damage == meta) then
  35.                 retslot = inventory.push_item_after_slot(slot, true, search_from)
  36.  
  37.                 if not retslot then
  38.                     return false
  39.                 end
  40.             end
  41.         end
  42.         slot = slot + 1
  43.     end
  44.     return retslot
  45. end
  46. crafting.move_item_out_of_crafting_table = move_item_out_of_crafting_table
  47.  
  48. local function place_item_for_craft(item, to, meta, amount)
  49.     local craft = {}
  50.  
  51.     if not amount then
  52.         amount = 1
  53.     end
  54.     craft[1] = 1
  55.     craft[2] = 2
  56.     craft[3] = 3
  57.     craft[4] = 5
  58.     craft[5] = 6
  59.     craft[6] = 7
  60.     craft[7] = 9
  61.     craft[8] = 10
  62.     craft[9] = 11
  63.     if to > 9 then
  64.         print("ERROR: place_item_for_craft: slot can't be > than 9")
  65.         os.exit()
  66.     end
  67.     if inventory.select_item_out_of_workbench(item, meta) and robot.transferTo(craft[to], amount) then
  68.         return true
  69.     end
  70.     return false
  71. end
  72. crafting.place_item_for_craft = place_item_for_craft
  73.  
  74. local function prepare_craft(patern)
  75.     local i
  76.     local retval
  77.  
  78.     i = 1
  79.     free_crafting_table()
  80.     retval = true
  81.     while i <= 9 do
  82.         if retval and patern[i] and patern[i]['item'] then
  83.             retval = place_item_for_craft(patern[i]['item'], i, patern[i]['meta'], patern[i]['amount'])
  84.         elseif retval and patern[i] then
  85.             retval = place_item_for_craft(patern[i], i)
  86.         end
  87.         i = i + 1
  88.     end
  89.     return retval
  90. end
  91. crafting.prepare_craft = prepare_craft
  92.  
  93. local function craft_bloc(bloc_size, item, meta)
  94.     if bloc_size == 9 then
  95.         while   place_item_for_craft(item, 1, meta) and
  96.                 place_item_for_craft(item, 2, meta) and
  97.                 place_item_for_craft(item, 3, meta) and
  98.                 place_item_for_craft(item, 4, meta) and
  99.                 place_item_for_craft(item, 5, meta) and
  100.                 place_item_for_craft(item, 6, meta) and
  101.                 place_item_for_craft(item, 7, meta) and
  102.                 place_item_for_craft(item, 8, meta) and
  103.                 place_item_for_craft(item, 9, meta) do
  104.             os.sleep(0.1)
  105.         end
  106.     elseif bloc_size == 4 then
  107.         while   place_item_for_craft(item, 1, meta) and
  108.                 place_item_for_craft(item, 2, meta) and
  109.                 place_item_for_craft(item, 4, meta) and
  110.                 place_item_for_craft(item, 5, meta) do
  111.             os.sleep(0.1)
  112.         end
  113.     end
  114.     return component.crafting.craft()
  115. end
  116. crafting.craft_bloc = craft_bloc
  117.  
  118. local function compact_item_to_bloc(bloc_size, item, meta)
  119.     local amount
  120.  
  121.     amount = inventory.item_amount(item, meta)
  122.     if amount >= bloc_size and free_crafting_table() then
  123.         craft_bloc(bloc_size, item, meta)
  124.         inventory.clean_inventory()
  125.     end
  126. end
  127. crafting.compact_item_to_bloc = compact_item_to_bloc
  128.  
  129. local function compact_all_items_blocs()
  130.     compact_item_to_bloc(9, "minecraft:dye", 4)
  131.     inventory.repack_item("minecraft:dye", 4)
  132.     compact_item_to_bloc(9, "minecraft:coal", 0)
  133.     inventory.repack_item("minecraft:coal", 0)
  134.     compact_item_to_bloc(9, "minecraft:redstone")
  135.     inventory.repack_item("minecraft:redstone")
  136.     compact_item_to_bloc(4, "minecraft:quartz")
  137.     inventory.repack_item("minecraft:quartz")
  138.     compact_item_to_bloc(4, "minecraft:glowstone_dust")
  139.     inventory.repack_item("minecraft:glowstone_dust")
  140. end
  141. crafting.compact_all_items_blocs = compact_all_items_blocs
  142.  
  143. crafting.craft = component.crafting.craft
  144. return crafting
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement