mirror of
https://github.com/minetest-mods/moreblocks.git
synced 2024-11-16 07:20:18 +01:00
134 lines
2.9 KiB
Lua
134 lines
2.9 KiB
Lua
local api = stairsplus.api
|
|
local register_craft_schema = api.register_craft_schema
|
|
|
|
local slices = {1, 2, 4, 8, 12, 14, 15}
|
|
|
|
local valid_slice = {
|
|
[1] = true,
|
|
[2] = true,
|
|
[4] = true,
|
|
[8] = true,
|
|
[12] = true,
|
|
[14] = true,
|
|
[15] = true,
|
|
}
|
|
|
|
local full_promotion = {
|
|
micro = "panel_8",
|
|
panel = "slab_8",
|
|
slab = "node",
|
|
}
|
|
|
|
local half_promotion = {
|
|
micro = "panel",
|
|
panel = "slab",
|
|
}
|
|
|
|
local demotion = {
|
|
node = "slab",
|
|
slab = "panel",
|
|
panel = "micro",
|
|
}
|
|
|
|
-- stack things on top of each other
|
|
for _, shape in ipairs({"micro", "panel", "slab"}) do
|
|
for _, slice1 in ipairs(slices) do
|
|
local shape1 = ("%s_%s"):format(shape, slice1)
|
|
local def1 = api.registered_shapes[shape1]
|
|
|
|
for _, slice2 in ipairs(slices) do
|
|
local shape2 = ("%s_%s"):format(shape, slice2)
|
|
local def2 = api.registered_shapes[shape2]
|
|
|
|
local slice3 = slice1 + slice2
|
|
|
|
if valid_slice[slice3] then
|
|
local shape3 = ("%s_%s"):format(shape, slice3)
|
|
local def3 = api.registered_shapes[shape3]
|
|
local n = math.floor((def1.eighths + def2.eighths) / def3.eighths)
|
|
|
|
register_craft_schema({
|
|
output = ("%s %s"):format(shape3, n),
|
|
recipe = {
|
|
{shape1},
|
|
{shape2},
|
|
},
|
|
})
|
|
|
|
elseif slice3 == 16 then
|
|
register_craft_schema({
|
|
output = ("%s"):format(full_promotion[shape]),
|
|
recipe = {
|
|
{shape1},
|
|
{shape2},
|
|
},
|
|
})
|
|
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
|
|
|
|
register_craft_schema({
|
|
output = "slab_8 6",
|
|
recipe = {{"node", "node", "node"}},
|
|
})
|
|
|
|
for _, shape in ipairs({"micro", "panel", "slab"}) do
|
|
for _, slice1 in ipairs({2, 4, 8}) do
|
|
local slice2 = slice1 / 2
|
|
local shape1 = ("%s_%s"):format(shape, slice1)
|
|
local shape2 = ("%s_%s"):format(shape, slice2)
|
|
local def1 = api.registered_shapes[shape1]
|
|
local def2 = api.registered_shapes[shape2]
|
|
local n = math.floor(3 * def1.eighths / def2.eighths)
|
|
|
|
register_craft_schema({
|
|
output = ("%s %s"):format(shape2, n),
|
|
recipe = {
|
|
{shape1, shape1, shape1},
|
|
},
|
|
})
|
|
end
|
|
end
|
|
|
|
-- split in half vertically
|
|
|
|
for _, shape in ipairs({"panel", "slab"}) do
|
|
for _, slice in ipairs(slices) do
|
|
local shape1 = ("%s_%s"):format(shape, slice)
|
|
local shape2 = ("%s_%s"):format(demotion[shape], slice)
|
|
local def1 = api.registered_shapes[shape1]
|
|
local def2 = api.registered_shapes[shape2]
|
|
local n = math.floor(3 * def1.eighths / def2.eighths)
|
|
|
|
register_craft_schema({
|
|
output = ("%s %s"):format(shape2, n),
|
|
recipe = {
|
|
{shape1},
|
|
{shape1},
|
|
{shape1},
|
|
},
|
|
})
|
|
end
|
|
end
|