| | |
| | | |
| | | local function get_meta_type(name, metaname) |
| | | local def = wrench.registered_nodes[name] |
| | | if not def or not def.metas or not def.metas[metaname] then |
| | | return nil |
| | | end |
| | | return def.metas[metaname] |
| | | return def and def.metas and def.metas[metaname] or nil |
| | | end |
| | | |
| | | local function get_pickup_name(name) |
| | |
| | | local data = itemstack:get_meta():get_string("data") |
| | | data = (data ~= "" and data) or itemstack:get_metadata() |
| | | data = minetest.deserialize(data) |
| | | if not data then |
| | | minetest.remove_node(pos) |
| | | minetest.log("error", placer:get_player_name().." wanted to place ".. |
| | | name.." at "..minetest.pos_to_string(pos).. |
| | | ", but it had no data.") |
| | | minetest.log("verbose", "itemstack: "..itemstack:to_string()) |
| | | return true |
| | | end |
| | | minetest.set_node(pos, {name = data.name, param2 = node.param2}) |
| | | for name, value in pairs(data.metas) do |
| | | local meta_type = get_meta_type(data.name, name) |
| | |
| | | return |
| | | end |
| | | local meta = minetest.get_meta(pos) |
| | | if def.owned then |
| | | if def.owned and not minetest.check_player_privs(placer, "protection_bypass") then |
| | | local owner = meta:get_string("owner") |
| | | if owner and owner ~= player_name then |
| | | minetest.log("action", player_name.. |