forked from mtcontrib/homedecor_modpack
Add hanging-from-the-ceiling sign
point at the ceiling while placing a regular sign and it becomes a ceiling- mounted one handing from a pair of short chains.
This commit is contained in:
parent
9be635cb5f
commit
f6e85db33d
@ -223,6 +223,13 @@ local signs = {
|
|||||||
{delta = {x = -0.399, y = 0.15, z = 0 }, yaw = math.pi / 2},
|
{delta = {x = -0.399, y = 0.15, z = 0 }, yaw = math.pi / 2},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local signs_hanging = {
|
||||||
|
{delta = {x = 0, y = 0.032, z = -0.05}, yaw = 0},
|
||||||
|
{delta = {x = -0.05, y = 0.032, z = 0 }, yaw = math.pi / -2},
|
||||||
|
{delta = {x = 0, y = 0.032, z = 0.05}, yaw = math.pi},
|
||||||
|
{delta = {x = 0.05, y = 0.032, z = 0 }, yaw = math.pi / 2},
|
||||||
|
}
|
||||||
|
|
||||||
local signs_yard = {
|
local signs_yard = {
|
||||||
{delta = {x = 0, y = 0.15, z = -0.05}, yaw = 0},
|
{delta = {x = 0, y = 0.15, z = -0.05}, yaw = 0},
|
||||||
{delta = {x = -0.05, y = 0.15, z = 0 }, yaw = math.pi / -2},
|
{delta = {x = -0.05, y = 0.15, z = 0 }, yaw = math.pi / -2},
|
||||||
@ -426,6 +433,8 @@ signs_lib.update_sign = function(pos, fields)
|
|||||||
local sign_info
|
local sign_info
|
||||||
if minetest.get_node(pos).name == "signs:sign_yard" then
|
if minetest.get_node(pos).name == "signs:sign_yard" then
|
||||||
sign_info = signs_yard[minetest.get_node(pos).param2 + 1]
|
sign_info = signs_yard[minetest.get_node(pos).param2 + 1]
|
||||||
|
elseif minetest.get_node(pos).name == "signs:sign_hanging" then
|
||||||
|
sign_info = signs_hanging[minetest.get_node(pos).param2 + 1]
|
||||||
elseif minetest.get_node(pos).name == "default:sign_wall" then
|
elseif minetest.get_node(pos).name == "default:sign_wall" then
|
||||||
sign_info = signs[minetest.get_node(pos).param2 + 1]
|
sign_info = signs[minetest.get_node(pos).param2 + 1]
|
||||||
else --if minetest.get_node(pos).name == "signs:sign_post" then
|
else --if minetest.get_node(pos).name == "signs:sign_post" then
|
||||||
@ -509,10 +518,8 @@ minetest.register_node(":default:sign_wall", {
|
|||||||
sign_info = signs_post[fdir + 1]
|
sign_info = signs_post[fdir + 1]
|
||||||
|
|
||||||
elseif wdir == 0 then
|
elseif wdir == 0 then
|
||||||
--how would you add sign to ceiling?
|
minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir})
|
||||||
minetest.add_item(above, "default:sign_wall")
|
sign_info = signs_hanging[fdir + 1]
|
||||||
itemstack:take_item()
|
|
||||||
return itemstack
|
|
||||||
elseif wdir == 1 then
|
elseif wdir == 1 then
|
||||||
minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir})
|
minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir})
|
||||||
sign_info = signs_yard[fdir + 1]
|
sign_info = signs_yard[fdir + 1]
|
||||||
@ -603,6 +610,58 @@ minetest.register_node(":signs:sign_yard", {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
minetest.register_node(":signs:sign_hanging", {
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
paramtype2 = "facedir",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
node_box = {type = "fixed", fixed = {
|
||||||
|
{-0.45, 0.3124, 0, 0.45, 0.5, 0},
|
||||||
|
{-0.45, -0.2875, -0.049, 0.45, 0.3125, 0.049}
|
||||||
|
}},
|
||||||
|
selection_box = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {-0.45, -0.275, -0.049, 0.45, 0.5, 0.049}
|
||||||
|
},
|
||||||
|
tiles = {
|
||||||
|
"signs_hanging_top.png",
|
||||||
|
"signs_hanging_bottom.png",
|
||||||
|
"signs_hanging_side.png",
|
||||||
|
"signs_hanging_side.png",
|
||||||
|
"signs_hanging_back.png",
|
||||||
|
"signs_hanging_front.png"
|
||||||
|
},
|
||||||
|
groups = {choppy=2, dig_immediate=2},
|
||||||
|
drop = "default:sign_wall",
|
||||||
|
|
||||||
|
on_construct = function(pos)
|
||||||
|
signs_lib.construct_sign(pos)
|
||||||
|
end,
|
||||||
|
on_destruct = function(pos)
|
||||||
|
signs_lib.destruct_sign(pos)
|
||||||
|
end,
|
||||||
|
on_receive_fields = function(pos, formname, fields, sender)
|
||||||
|
if fields and fields.text then
|
||||||
|
minetest.log("action", S("%s wrote \"%s\" to sign at %s"):format(
|
||||||
|
(sender:get_player_name() or ""),
|
||||||
|
fields.text,
|
||||||
|
minetest.pos_to_string(pos)
|
||||||
|
))
|
||||||
|
end
|
||||||
|
if minetest.is_protected(pos, sender:get_player_name()) then
|
||||||
|
minetest.record_protection_violation(pos,
|
||||||
|
sender:get_player_name())
|
||||||
|
return
|
||||||
|
end
|
||||||
|
if fields and fields.text then
|
||||||
|
signs_lib.update_sign(pos, fields)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
on_punch = function(pos, node, puncher)
|
||||||
|
signs_lib.update_sign(pos)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
minetest.register_node(":signs:sign_post", {
|
minetest.register_node(":signs:sign_post", {
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
sunlight_propagates = true,
|
sunlight_propagates = true,
|
||||||
|
BIN
signs_lib/textures/signs_hanging_back.png
Normal file
BIN
signs_lib/textures/signs_hanging_back.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 261 B |
BIN
signs_lib/textures/signs_hanging_bottom.png
Normal file
BIN
signs_lib/textures/signs_hanging_bottom.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 90 B |
BIN
signs_lib/textures/signs_hanging_front.png
Normal file
BIN
signs_lib/textures/signs_hanging_front.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 245 B |
BIN
signs_lib/textures/signs_hanging_side.png
Normal file
BIN
signs_lib/textures/signs_hanging_side.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 104 B |
BIN
signs_lib/textures/signs_hanging_top.png
Normal file
BIN
signs_lib/textures/signs_hanging_top.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 90 B |
Loading…
Reference in New Issue
Block a user