diff --git a/mods/bg_api/wrappers.lua b/mods/bg_api/wrappers.lua index c22e6fc..437adce 100644 --- a/mods/bg_api/wrappers.lua +++ b/mods/bg_api/wrappers.lua @@ -34,28 +34,40 @@ end local events = blockgame.events.namespace("api") -function blockgame.register_node (name, def, modname) - -- TODO: take full name and then extract modname and base name from that, that'll probably be easier to maintain. - -- (if no modname is provided, still assume it like what is being done currently.) - local modname = modname or minetest.get_current_modname() - local full_name = modname .. ":" .. name +function blockgame.register_node (fullname, def) + -- make sure the right names are used in the right contexts, by manually extracting them here. + -- this makes `blockgame.register_node` more flexible/reliable. + local modname + local basename - def.description = def.description or capitalize(name) + local colon_pos = string.find(fullname, ":") + if colon_pos then + modname = string.sub(fullname, 1, colon_pos - 1) + basename = string.sub(fullname, colon_pos + 1) + else + modname = minetest.get_current_modname() + basename = fullname + fullname = modname .. ":" .. basename + end + + def.description = def.description or capitalize(basename) def.tiles = def.tiles or { - modname .. "_" .. name .. ".png", + modname .. "_" .. basename .. ".png", } events.broadcast("before_register_node", { - name = name, + name = fullname, def = def, mod = modname, + basename = basename }) - minetest.register_node(full_name, def) + minetest.register_node(fullname, def) events.broadcast("after_register_node", { - name = name, + name = fullname, def = def, mod = modname, + basename = basename }) end diff --git a/mods/bg_tree/node_leaves.lua b/mods/bg_tree/node_leaves.lua index d4cecc9..21b24dd 100644 --- a/mods/bg_tree/node_leaves.lua +++ b/mods/bg_tree/node_leaves.lua @@ -81,7 +81,7 @@ local function after_place_stack (pos) local below = pos + blockgame.vector.dirs.down if check_decompose(below) then local node = minetest.get_node(pos) - local below_node = minetest.get_node(pos) + local below_node = minetest.get_node(below) local def = minetest.registered_nodes[node.name] local below_def = minetest.registered_nodes[below_node.name]