diff --git a/builtin/misc_helpers.lua b/builtin/misc_helpers.lua index c9bc59c3a..38909ec1d 100644 --- a/builtin/misc_helpers.lua +++ b/builtin/misc_helpers.lua @@ -282,6 +282,20 @@ if minetest then minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) end end + + +-------------------------------------------------------------------------------- +--Wrapper for rotate_and_place() to check for sneak and assume Creative mode +--implies infinite stacks when performing a 6d rotation. +-------------------------------------------------------------------------------- + + + minetest.rotate_node = function(itemstack, placer, pointed_thing) + minetest.rotate_and_place(itemstack, placer, pointed_thing, + minetest.setting_getbool("creative_mode"), + {invert_wall = placer:get_player_control().sneak}) + return itemstack + end end -------------------------------------------------------------------------------- diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 122fbde99..76eea95cc 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1561,6 +1561,11 @@ minetest.rotate_and_place(itemstack, placer, pointed_thing, infinitestacks, orie force_facedir: if true, forcably reset the facedir to north when placing on the floor or ceiling +minetest.rotate_node(itemstack, placer, pointed_thing) +^ calls rotate_and_place() with infinitestacks set according to the state of + the creative mode setting, and checks for "sneak" to set the invert_wall + parameter. + Global objects: minetest.env - EnvRef of the server environment and world. ^ Any function in the minetest namespace can be called using the syntax