]> git.lizzy.rs Git - signs_lib.git/blobdiff - api.lua
Locked Wood Signs
[signs_lib.git] / api.lua
diff --git a/api.lua b/api.lua
index 2527470fad6877b122db1fd7742fcc156c492fdb..aad4d3610ce17ad2d3403b24133d78a2cfcef729 100644 (file)
--- a/api.lua
+++ b/api.lua
@@ -159,7 +159,7 @@ local ctexcache = {}
 minetest.register_entity("signs_lib:text", {
        collisionbox = { 0, 0, 0, 0, 0, 0 },
        visual = "mesh",
-       mesh = "signs_lib_standard_wall_sign_entity.obj",
+       mesh = "signs_lib_standard_sign_entity_wall.obj",
        textures = {},
        static_save = false,
        backface_culling = false
@@ -763,6 +763,10 @@ function signs_lib.check_for_pole(pos, pointed_thing)
 
        if not pdef then return end
 
+       if signs_lib.check_for_ceiling(pointed_thing) or signs_lib.check_for_floor(pointed_thing) then
+               return false
+       end
+
        if type(pdef.check_for_pole) == "function" then
                local node = minetest.get_node(pos)
                local def = minetest.registered_items[node.name]
@@ -782,12 +786,14 @@ function signs_lib.check_for_horizontal_pole(pos, pointed_thing)
 
        if not pdef then return end
 
+       if signs_lib.check_for_ceiling(pointed_thing) or signs_lib.check_for_floor(pointed_thing) then
+               return false
+       end
+
        if type(pdef.check_for_horiz_pole) == "function" then
                local node = minetest.get_node(pos)
                local def = minetest.registered_items[node.name]
                return pdef.check_for_horiz_pole(pos, node, def, ppos, pnode, pdef)
-       elseif pdef.check_for_horiz_pole then
-               return true
        end
 end
 
@@ -809,6 +815,9 @@ end
 
 function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locked)
        local playername = placer:get_player_name()
+
+       local controls = placer:get_player_control()
+
        local signname = itemstack:get_name()
        local no_wall_name = string.gsub(signname, "_wall", "")
 
@@ -818,7 +827,7 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
        local pnode = minetest.get_node(ppos)
        local pdef = minetest.registered_items[pnode.name]
 
-       if def.allow_onpole and signs_lib.check_for_pole(pos, pointed_thing) then
+       if def.allow_onpole and signs_lib.check_for_pole(pos, pointed_thing) and not controls.sneak then
                local newparam2
                local lookdir = minetest.yaw_to_dir(placer:get_look_horizontal())
                if def.paramtype2 == "wallmounted" then
@@ -828,7 +837,7 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
                end
                local node = minetest.get_node(pos)
                minetest.swap_node(pos, {name = no_wall_name.."_onpole", param2 = newparam2})
-       elseif def.allow_onpole_horizontal and signs_lib.check_for_horizontal_pole(pos, pointed_thing) then
+       elseif def.allow_onpole_horizontal and signs_lib.check_for_horizontal_pole(pos, pointed_thing) and not controls.sneak then
                local newparam2
                local lookdir = minetest.yaw_to_dir(placer:get_look_horizontal())
                if def.paramtype2 == "wallmounted" then
@@ -838,12 +847,12 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
                end
                local node = minetest.get_node(pos)
                minetest.swap_node(pos, {name = no_wall_name.."_onpole_horiz", param2 = newparam2})
-       elseif def.allow_hanging and signs_lib.check_for_ceiling(pointed_thing) then
+       elseif def.allow_hanging and signs_lib.check_for_ceiling(pointed_thing) and not controls.sneak then
                local newparam2 = minetest.dir_to_facedir(placer:get_look_dir())
                local node = minetest.get_node(pos)
                minetest.swap_node(pos, {name = no_wall_name.."_hanging", param2 = newparam2})
-       elseif def.allow_yard and signs_lib.check_for_floor(pointed_thing) then
-               local newparam2 = minetest.dir_to_facedir(placer:get_look_dir())
+       elseif def.allow_yard and signs_lib.check_for_floor(pointed_thing) and not controls.sneak then
+               local newparam2 = minetest.dir_to_facedir(placer:get_look_dir())
                local node = minetest.get_node(pos)
                minetest.swap_node(pos, {name = no_wall_name.."_yard", param2 = newparam2})
        elseif def.paramtype2 == "facedir" and signs_lib.check_for_ceiling(pointed_thing) then
@@ -851,6 +860,7 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
        elseif def.paramtype2 == "facedir" and signs_lib.check_for_floor(pointed_thing) then
                minetest.swap_node(pos, {name = signname, param2 = 4})
        end
+
        if locked then
                local meta = minetest.get_meta(pos)
                meta:set_string("owner", playername)
@@ -1002,7 +1012,7 @@ function signs_lib.register_sign(name, raw_def)
                hanging_def.node_box = raw_def.hanging_node_box or raw_def.hanging_selection_box or hcbox
 
                hanging_def.groups.not_in_creative_inventory = 1
-               hanging_def.tiles[3] = raw_def.tiles[5] or "signs_lib_hangers.png"
+               hanging_def.tiles[3] = raw_def.tiles[4] or "signs_lib_hangers.png"
                hanging_def.tiles[4] = "signs_lib_blank.png"
                hanging_def.tiles[5] = "signs_lib_blank.png"
                hanging_def.tiles[6] = "signs_lib_blank.png"
@@ -1026,7 +1036,7 @@ function signs_lib.register_sign(name, raw_def)
                local ycbox = signs_lib.make_selection_boxes(35, 34.5, false, 0, -1.25, -19.69, true)
 
                ydef.selection_box = raw_def.yard_selection_box or ycbox
-               ydef.tiles[3] = raw_def.tiles[6] or "default_wood.png"
+               ydef.tiles[3] = raw_def.tiles[5] or "default_wood.png"
                ydef.tiles[4] = "signs_lib_blank.png"
                ydef.tiles[5] = "signs_lib_blank.png"
                ydef.tiles[6] = "signs_lib_blank.png"