more recipe schemata

This commit is contained in:
flux 2022-06-27 09:19:21 -07:00
parent 9cc83ce5cc
commit b2217af50e
3 changed files with 30 additions and 6 deletions

View File

@ -158,7 +158,7 @@ function api.register_single(node, shape, overrides, meta)
if not meta.allow_override_groups and overrides.groups then if not meta.allow_override_groups and overrides.groups then
stairsplus.log("warning", "removing group overrides from %s (was %s, will be %s)", stairsplus.log("warning", "removing group overrides from %s (was %s, will be %s)",
shaped_name, minetest.serialize(overrides.groups):sub(8), minetest.serialize(def.groups):sub(8) shaped_name, minetest.write_json(overrides.groups), minetest.write_json(def.groups)
) )
overrides.groups = nil overrides.groups = nil
end end

View File

@ -68,7 +68,7 @@ function api.register_craft_schema(schema)
error(problems) error(problems)
end end
stairsplus.log("info", "registering craft schema %s", minetest.serialize(schema):sub(#("return "))) stairsplus.log("info", "registering craft schema %s", minetest.write_json(schema))
table.insert(api.registered_recipe_schemas, schema) table.insert(api.registered_recipe_schemas, schema)
@ -138,7 +138,7 @@ local function register_for_schema(node, schema)
end end
end end
stairsplus.log("info", "registering recipe %s", minetest.serialize(recipe):sub(#("return "))) stairsplus.log("info", "registering recipe %s", minetest.write_json(recipe))
minetest.register_craft(recipe) minetest.register_craft(recipe)
end end
@ -148,7 +148,7 @@ function api.register_schema_crafts_for_node(node)
local shapes = api.get_shapes_hash(node) local shapes = api.get_shapes_hash(node)
for _, schema in ipairs(api.registered_recipe_schemas) do for _, schema in ipairs(api.registered_recipe_schemas) do
if has_the_right_shapes(schema, shapes) then if has_the_right_shapes(schema, shapes) then
stairsplus.log("verbose", "using schema %s", minetest.serialize(schema):sub(#("return "))) stairsplus.log("verbose", "using schema %s", minetest.write_json(schema))
register_for_schema(node, schema) register_for_schema(node, schema)
end end
end end

View File

@ -13,18 +13,24 @@ local valid_slice = {
[15] = true, [15] = true,
} }
local promotion = { local full_promotion = {
micro = "panel_8", micro = "panel_8",
panel = "slab_8", panel = "slab_8",
slab = "node", slab = "node",
} }
local half_promotion = {
micro = "panel",
panel = "slab",
}
local demotion = { local demotion = {
node = "slab", node = "slab",
slab = "panel", slab = "panel",
panel = "micro", panel = "micro",
} }
-- stack things on top of each other
for _, shape in ipairs({"micro", "panel", "slab"}) do for _, shape in ipairs({"micro", "panel", "slab"}) do
for _, slice1 in ipairs(slices) do for _, slice1 in ipairs(slices) do
local shape1 = ("%s_%s"):format(shape, slice1) local shape1 = ("%s_%s"):format(shape, slice1)
@ -51,7 +57,7 @@ for _, shape in ipairs({"micro", "panel", "slab"}) do
elseif slice3 == 16 then elseif slice3 == 16 then
register_craft_schema({ register_craft_schema({
output = ("%s"):format(promotion[shape]), output = ("%s"):format(full_promotion[shape]),
recipe = { recipe = {
{shape1}, {shape1},
{shape2}, {shape2},
@ -62,6 +68,24 @@ for _, shape in ipairs({"micro", "panel", "slab"}) do
end end
end end
-- stack things next to each other
for _, shape in ipairs({"micro", "panel"}) do
for _, slice in ipairs(slices) do
local shape1 = ("%s_%s"):format(shape, slice)
local def1 = api.registered_shapes[shape1]
local shape2 = ("%s_%s"):format(half_promotion[shape], slice)
local def2 = api.registered_shapes[shape2]
local n = math.floor(2 * def1.eighths / def2.eighths)
register_craft_schema({
output = ("%s %s"):format(shape2, n),
recipe = {
{shape1, shape1},
},
})
end
end
-- split in half horizontally -- split in half horizontally
register_craft_schema({ register_craft_schema({