Add new `supported_node_facedir` group and apply it to item frames

This group acts similarly to `supported_node`: it checks whether the
node behind is airlike (in which case the node is dropped as an item).
This change should fix item frames not placing on chests and similar
blocks, as reported by Bear123 on Discord.
This commit is contained in:
Mikita Wiśniewski 2024-05-14 12:06:27 +07:00
parent 3b1c55c234
commit 997fe6ecc4
2 changed files with 12 additions and 1 deletions

View File

@ -94,5 +94,16 @@ function minetest.check_single_for_falling(pos)
end
end
if get_item_group(node.name, "supported_node_facedir") ~= 0 then
local dir = facedir_to_dir(node.param2)
if dir then
local def = registered_nodes[get_node(vector.add(pos, dir)).name]
if def and def.drawtype == "airlike" then
drop_attached_node(pos)
return true
end
end
end
return false
end

View File

@ -638,7 +638,7 @@ function mcl_itemframes.create_base_definitions()
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
groups = { dig_immediate = 3, deco_block = 1, dig_by_piston = 1, container = 1, attached_node_facedir = 1 },
groups = { dig_immediate = 3, deco_block = 1, dig_by_piston = 1, container = 1, supported_node_facedir = 1 },
sounds = mcl_sounds.node_sound_defaults(),
node_placement_prediction = "",