63 lines
1.4 KiB
Lua
63 lines
1.4 KiB
Lua
local api = stairsplus.api
|
|
|
|
local in_creative_inventory = stairsplus.settings.in_creative_inventory
|
|
|
|
api.passthrough_groups = {}
|
|
api.scale_groups = {}
|
|
api.ignore_groups = {}
|
|
|
|
function api.register_passthrough_group(group)
|
|
api.passthrough_groups[group] = true
|
|
end
|
|
|
|
function api.register_passthrough_groups(groups)
|
|
for _, group in ipairs(groups) do
|
|
api.register_passthrough_group(group)
|
|
end
|
|
end
|
|
|
|
function api.register_scale_group(group)
|
|
api.scale_groups[group] = true
|
|
end
|
|
|
|
function api.register_scale_groups(groups)
|
|
for _, group in ipairs(groups) do
|
|
api.register_scale_group(group)
|
|
end
|
|
end
|
|
|
|
function api.register_ignore_group(group)
|
|
api.ignore_groups[group] = true
|
|
end
|
|
|
|
function api.register_ignore_groups(groups)
|
|
for _, group in ipairs(groups) do
|
|
api.register_ignore_group(group)
|
|
end
|
|
end
|
|
|
|
function api.build_groups(node, shape)
|
|
local node_def = minetest.registered_nodes[node]
|
|
|
|
local groups = {
|
|
[("shape_%s"):format(shape)] = 1,
|
|
not_in_creative_inventory = in_creative_inventory and 1 or 0,
|
|
}
|
|
|
|
local shape_def = api.registered_shapes[shape]
|
|
|
|
for group, value in pairs(node_def.groups) do
|
|
if api.passthrough_groups[group] then
|
|
groups[group] = value
|
|
|
|
elseif api.scale_groups[group] then
|
|
groups[group] = (shape_def.eighths / 8) * value
|
|
|
|
elseif not api.ignore_groups[group] then
|
|
groups[shape_def.name_format:format(group)] = value
|
|
end
|
|
end
|
|
|
|
return groups
|
|
end
|