Compare commits
2 commits
28e72b142f
...
31ebbb66c0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
31ebbb66c0 | ||
|
|
1576d95ae1 |
1 changed files with 30 additions and 16 deletions
|
|
@ -40,20 +40,32 @@ local PRODUCTS = {
|
|||
-- these will be crafted when needed
|
||||
local RECIPES = {
|
||||
["minecraft:iron_nugget"] = {
|
||||
{"minecraft:iron_nugget", 60},
|
||||
{"minecraft:gravel", 24},
|
||||
ingredients = {
|
||||
{"minecraft:iron_nugget", 60},
|
||||
{"minecraft:gravel", 24},
|
||||
},
|
||||
addr = PRESS_ADDR,
|
||||
},
|
||||
["minecraft:gold_nugget"] = {
|
||||
{"minecraft:gold_nugget", 64},
|
||||
{"minecraft:gravel", 64},
|
||||
ingredients = {
|
||||
{"minecraft:gold_nugget", 64},
|
||||
{"minecraft:gravel", 64},
|
||||
},
|
||||
addr = PRESS_ADDR,
|
||||
},
|
||||
["create:zinc_nugget"] = {
|
||||
{"create:zinc_nugget", 64},
|
||||
{"minecraft:gravel", 32},
|
||||
ingredients = {
|
||||
{"create:zinc_nugget", 64},
|
||||
{"minecraft:gravel", 32},
|
||||
},
|
||||
addr = PRESS_ADDR,
|
||||
},
|
||||
["create:copper_nugget"] = {
|
||||
{"create:copper_nugget", 63},
|
||||
{"minecraft:gravel", 18},
|
||||
ingredients = {
|
||||
{"create:copper_nugget", 63},
|
||||
{"minecraft:gravel", 18},
|
||||
},
|
||||
addr = PRESS_ADDR,
|
||||
},
|
||||
}
|
||||
|
||||
|
|
@ -109,7 +121,7 @@ function cycleItems (ticker, items)
|
|||
}
|
||||
ticker.requestFiltered(addr, request)
|
||||
os.sleep(1)
|
||||
return makeRequest(item, amt - limit)
|
||||
return makeRequest(item, amt - limit, addr)
|
||||
end
|
||||
for _, pair in pairs(PRODUCTS) do
|
||||
local name, addr = pair[1], pair[2]
|
||||
|
|
@ -129,10 +141,10 @@ function getAmounts (storage_f)
|
|||
return result
|
||||
end
|
||||
|
||||
function getNumCraftable (recipe, current_stock)
|
||||
function getNumCraftable (ingredients, current_stock)
|
||||
local result = nil
|
||||
local item, count
|
||||
for _, ingredient in ipairs(recipe) do
|
||||
for _, ingredient in ipairs(ingredients) do
|
||||
item, count = ingredient[1], ingredient[2]
|
||||
if current_stock[item] == nil then return 0 end
|
||||
local num = math.floor(current_stock[item] / count)
|
||||
|
|
@ -142,23 +154,25 @@ function getNumCraftable (recipe, current_stock)
|
|||
result = math.min(result, num)
|
||||
end
|
||||
end
|
||||
if result == nil then result = 0 end
|
||||
return result
|
||||
end
|
||||
|
||||
function craftRecipe (ticker, recipe, count)
|
||||
if count == nil then count = 1 end
|
||||
local createRequest
|
||||
createRequest = function (recipe)
|
||||
local ingredient = table.remove(recipe)
|
||||
createRequest = function (recipe, i)
|
||||
if i == nil then i = 1 end
|
||||
local ingredient = recipe.ingredients[i]
|
||||
if ingredient == nil then return end
|
||||
local item = {
|
||||
name = ingredient[1],
|
||||
_requestCount = ingredient[2],
|
||||
}
|
||||
return item, createRequest(recipe)
|
||||
return item, createRequest(recipe, i + 1)
|
||||
end
|
||||
while count > 0 do
|
||||
ticker.requestFiltered(PRESS_ADDR, createRequest(recipe))
|
||||
ticker.requestFiltered(recipe.addr, createRequest(recipe))
|
||||
os.sleep(1)
|
||||
count = count - 1
|
||||
end
|
||||
|
|
@ -187,7 +201,7 @@ function run (ticker, export_storage, current_modes)
|
|||
if mode[1] == "recipe" then
|
||||
-- make as many recipes as you can with current stock
|
||||
local recipe = RECIPES[item]
|
||||
local count = getNumCraftable(recipe, stock_amounts)
|
||||
local count = getNumCraftable(recipe.ingredients, stock_amounts)
|
||||
craftRecipe(ticker, recipe, count)
|
||||
elseif mode[1] == "export" then
|
||||
local export_amt = export_amounts[item]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue