summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/item.lua12
-rw-r--r--games/minimal/mods/experimental/init.lua3
2 files changed, 10 insertions, 5 deletions
diff --git a/builtin/item.lua b/builtin/item.lua
index 756c1de6a..5cd28303a 100644
--- a/builtin/item.lua
+++ b/builtin/item.lua
@@ -148,11 +148,13 @@ function minetest.item_place_node(itemstack, placer, pointed_thing)
local dir = {x = under.x - above.x, y = under.y - above.y, z = under.z - above.z}
newnode.param2 = minetest.dir_to_wallmounted(dir)
-- Calculate the direction for furnaces and chests and stuff
- elseif def.paramtype2 == 'facedir' and placer then
- local playerpos = placer:getpos()
- local dir = {x = pos.x - playerpos.x, y = pos.y - playerpos.y, z = pos.z - playerpos.z}
- newnode.param2 = minetest.dir_to_facedir(dir)
- minetest.log("action", "facedir: " .. newnode.param2)
+ elseif def.paramtype2 == 'facedir' then
+ local placer_pos = placer:getpos()
+ if placer_pos then
+ local dir = {x = pos.x - placer_pos.x, y = pos.y - placer_pos.y, z = pos.z - placer_pos.z}
+ newnode.param2 = minetest.dir_to_facedir(dir)
+ minetest.log("action", "facedir: " .. newnode.param2)
+ end
end
-- Add node and update
diff --git a/games/minimal/mods/experimental/init.lua b/games/minimal/mods/experimental/init.lua
index fb3310246..5661a660f 100644
--- a/games/minimal/mods/experimental/init.lua
+++ b/games/minimal/mods/experimental/init.lua
@@ -447,6 +447,9 @@ minetest.register_node("experimental:tester_node_1", {
tile_images = {"wieldhand.png"},
groups = {oddly_breakable_by_hand=2},
sounds = default.node_sound_wood_defaults(),
+ -- This was known to cause a bug in minetest.item_place_node() when used
+ -- via minetest.env:place_node(), causing a placer with no position
+ paramtype2 = "facedir",
on_construct = function(pos)
experimental.print_to_everything("experimental:tester_node_1:on_construct("..minetest.pos_to_string(pos)..")")