Compare commits

..

2 commits

Author SHA1 Message Date
Emerson Rosen-Jones
139164077c feat: allow for custom limits
on PRODUCTS, can set an optional 3rd argument as limit override
2026-01-03 19:45:39 -05:00
Emerson Rosen-Jones
192f33c823 fix: remove syntax and logic errors 2026-01-03 19:42:51 -05:00

View file

@ -70,9 +70,9 @@ local PRODUCTS = {
{"minecraft:flint", CRUSHER_ADDR}, {"minecraft:flint", CRUSHER_ADDR},
{"minecraft:nether_bricks", CRUSHER_ADDR}, {"minecraft:nether_bricks", CRUSHER_ADDR},
{"minecraft:basalt", CRUSHER_ADDR}, {"minecraft:basalt", CRUSHER_ADDR},
{"create:crushed_raw_silver", WASHER_ADDR}, {"create:crushed_raw_silver", WASHER_ADDR, 16},
{"minecraft:calcite", CRUSHER_ADDR}, {"minecraft:calcite", CRUSHER_ADDR},
{"create:crushed_raw_nickel", WASHER_ADDR}, {"create:crushed_raw_nickel", WASHER_ADDR, 32},
{"tfmg:bauxite", CRUSHER_ADDR}, {"tfmg:bauxite", CRUSHER_ADDR},
} }
@ -204,9 +204,10 @@ end
function cycleItems (ticker, items) function cycleItems (ticker, items)
local makeRequest local makeRequest
makeRequest = function (item, amt, addr) makeRequest = function (item, amt, addr, limit_override)
local limit = 64 local limit = 64
if addr == MELTER_ADDR then limit = 9 end if addr == MELTER_ADDR then limit = 9 end
if limit_override ~= nil then limit = limit_override end
if amt < limit then return end if amt < limit then return end
local request = { local request = {
name = item, name = item,
@ -217,10 +218,10 @@ function cycleItems (ticker, items)
return makeRequest(item, amt - limit, addr) return makeRequest(item, amt - limit, addr)
end end
for _, pair in pairs(PRODUCTS) do for _, pair in pairs(PRODUCTS) do
local name, addr = pair[1], pair[2] local name, addr, limit = pair[1], pair[2], pair[3]
if items[name] ~= nil then if items[name] ~= nil then
local amt = items[name] local amt = items[name]
makeRequest(name, amt, addr) makeRequest(name, amt, addr, limit)
end end
end end
end end
@ -251,8 +252,10 @@ function getNumCraftable (ingredients, current_stock)
return result return result
end end
function adjustStock (current_stock, recipe, count) function adjustStock (current_stock, ingredients, count)
for _, ingredient in ipairs(recipe.ingredients) do if count == 0 then return end
local item, i_count
for _, ingredient in ipairs(ingredients) do
item, i_count = ingredient[1], ingredient[2] item, i_count = ingredient[1], ingredient[2]
current_stock[item] = current_stock[item] - (i_count * count) current_stock[item] = current_stock[item] - (i_count * count)
end end
@ -263,7 +266,7 @@ function craftRecipe (ticker, recipe, current_stock)
if recipe.limit ~= nil then if recipe.limit ~= nil then
count = math.min(count, recipe.limit) count = math.min(count, recipe.limit)
end end
adjustStock(current_stock, recipe, count) adjustStock(current_stock, recipe.ingredients, count)
local createRequest local createRequest
createRequest = function (recipe, i) createRequest = function (recipe, i)
if i == nil then i = 1 end if i == nil then i = 1 end