Compare commits

..

2 commits

Author SHA1 Message Date
Emerson Rosen-Jones
04f6d66e56 feat: track item usage better 2026-01-03 19:26:39 -05:00
Emerson Rosen-Jones
528d5f7f80 feat: add nickel, bauxite, and silver 2026-01-03 19:16:40 -05:00

View file

@ -24,6 +24,10 @@ local KEEP_STOCKED = {
["minecraft:gravel"] = 0,
["minecraft:netherite_scrap"] = 4,
["minecraft:nether_bricks"] = 0,
["oreganized:silver_nugget"] = 4 * 64,
["tfmg:nickel_nugget"] = 4 * 64,
["tfmg:lithium_nugget"] = 64,
["tfmg:bauxite_powder"] = 4 * 64,
}
local GLOBAL_LIMS = {
@ -44,6 +48,10 @@ local LIMIT_EXCEPTIONS = {
lower = 0,
upper = 4,
},
["tfmg:lithium_nugget"] = {
lower = -1,
upper = 0,
},
}
-- if these exist, they will be used up
@ -61,6 +69,11 @@ local PRODUCTS = {
{"minecraft:brick", HAUNTER_ADDR},
{"minecraft:flint", CRUSHER_ADDR},
{"minecraft:nether_bricks", CRUSHER_ADDR},
{"minecraft:basalt", CRUSHER_ADDR},
{"create:crushed_raw_silver", WASHER_ADDR},
{"minecraft:calcite", CRUSHER_ADDR},
{"create:crushed_raw_nickel", WASHER_ADDR},
{"tfmg:bauxite", CRUSHER_ADDR},
}
-- these will be crafted when needed
@ -126,6 +139,27 @@ local RECIPES = {
},
addr = PRESS_ADDR,
},
["oreganized:silver_nugget"] = {
ingredients = {
{"oreganized:silver_nugget", 60},
{"minecraft:gravel", 24},
},
addr = PRESS_ADDR,
},
["tfmg:nickel_nugget"] = {
ingredients = {
{"tfmg:nickel_nugget", 64},
{"minecraft:gravel", 64},
},
addr = PRESS_ADDR,
},
["tfmg:bauxite_powder"] = {
ingredients = {
{"tfmg:bauxite_powder", 64},
{"minecraft:gravel", 64},
},
addr = PRESS_ADDR,
},
}
local SLEEP_T = 20
@ -217,11 +251,19 @@ function getNumCraftable (ingredients, current_stock)
return result
end
function craftRecipe (ticker, recipe, count)
if count == nil then count = 1 end
function adjustStock (current_stock, recipe, count)
for _, ingredient in ipairs(recipe.ingredients) do
item, i_count = ingredient[1], ingredient[2]
current_stock[item] = current_stock[item] - (i_count * count)
end
end
function craftRecipe (ticker, recipe, current_stock)
local count = getNumCraftable(recipe.ingredients, current_stock)
if recipe.limit ~= nil then
count = math.min(count, recipe.limit)
end
adjustStock(current_stock, recipe, count)
local createRequest
createRequest = function (recipe, i)
if i == nil then i = 1 end
@ -263,8 +305,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.ingredients, stock_amounts)
craftRecipe(ticker, recipe, count)
craftRecipe(ticker, recipe, stock_amounts)
elseif mode[1] == "export" then
local export_amt = export_amounts[item]
if export_amt == nil then export_amt = 0 end