]> git.lizzy.rs Git - signs_lib.git/commitdiff
allow placement of "facedir" signs flat on floor
authorVanessa Dannenberg <vanessa.e.dannenberg@gmail.com>
Thu, 19 Sep 2019 00:12:31 +0000 (20:12 -0400)
committerVanessa Dannenberg <vanessa.e.dannenberg@gmail.com>
Thu, 19 Sep 2019 00:12:31 +0000 (20:12 -0400)
(and on ceiling, if hanging isn't available)
mimics the way wallmounted signs behave

api.lua

diff --git a/api.lua b/api.lua
index 8eb9d2ade58bedc55a24799b6176d4696cba46bc..ca389912724ae34b5fa5cab8d9b73142d4b211de 100644 (file)
--- a/api.lua
+++ b/api.lua
@@ -722,6 +722,14 @@ function signs_lib.check_for_ceiling(pointed_thing)
        end
 end
 
+function signs_lib.check_for_floor(pointed_thing)
+       if pointed_thing.above.x == pointed_thing.under.x
+         and pointed_thing.above.z == pointed_thing.under.z
+         and pointed_thing.above.y > pointed_thing.under.y then
+               return true
+       end
+end
+
 function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locked)
        local playername = placer:get_player_name()
        local def = minetest.registered_items[itemstack:get_name()]
@@ -737,6 +745,10 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
                local newparam2 = minetest.dir_to_facedir(placer:get_look_dir())
                local node = minetest.get_node(pos)
                minetest.swap_node(pos, {name = itemstack:get_name().."_hanging", param2 = newparam2})
+       elseif def.paramtype2 == "facedir" and signs_lib.check_for_ceiling(pointed_thing) then
+               minetest.swap_node(pos, {name = itemstack:get_name(), param2 = 6})
+       elseif def.paramtype2 == "facedir" and signs_lib.check_for_floor(pointed_thing) then
+               minetest.swap_node(pos, {name = itemstack:get_name(), param2 = 4})
        end
        if locked then
                local meta = minetest.get_meta(pos)