2023-03-10 20:00:37 -05:00

68 lines
1.8 KiB
Lua

-- LUALOCALS < ---------------------------------------------------------
local minetest, nodecore, pairs, string, type
= minetest, nodecore, pairs, string, type
local string_sub
= string.sub
-- LUALOCALS > ---------------------------------------------------------
local suff = "_glued"
local overlay = "^nc_optics_glued.png"
nodecore.register_on_register_item(function(name, def)
if not (def.groups and def.groups.optic_gluable
and def.groups.optic_gluable > 0) then return end
if string_sub(name, -#suff) == suff then return end
local gluedname = name .. suff
if minetest.registered_items[gluedname] then return end
local oldcheck = def.optic_check
local optic_check = oldcheck and function(pos, node, ...)
local tn = {
name = node.name,
param = node.param,
param2 = node.param2
}
if string_sub(tn.name, -#suff) == suff then
tn.name = string_sub(tn.name, 1, -#suff - 1)
end
local nn = oldcheck(pos, tn, ...)
return nn and nn .. suff
end
local tiles = {}
for k, v in pairs(def.tiles or {}) do
if type(v) == "string" then
tiles[k] = v .. overlay
else
tiles[k] = nodecore.underride({name = v.name .. overlay}, v)
end
end
local gluedef = nodecore.underride({
description = "Glued " .. def.description,
groups = {
optic_gluable = 0
},
optic_check = optic_check,
tiles = tiles
}, def)
gluedef.on_rightclick = nil
minetest.register_item(gluedname, gluedef)
end)
nodecore.register_craft({
label = "glue optic",
action = "pummel",
wield = {name = "nc_tree:eggcorn"},
consumewield = 1,
indexkeys = "group:optic_gluable",
duration = 2,
nodes = {{
match = {groups = {optic_gluable = true}, stacked = false}
}},
after = function(pos, data)
data.node.name = data.node.name .. suff
return minetest.swap_node(pos, data.node)
end
})