Make default and locked wooden signs old-style wallmounted
instead of using 6d facedir Caveat: this breaks worlds that used signs_lib, in the sense that many (if not most) default and wooden locked wall signs in areas that were affected by signs_lib will have to be fixed using the screwdriver. The intent of this commit is to make signs_lib behave the same way default signs always have in the past, instead of forcing 6dfacedir on everyone. This sucks, but it had to be done sooner or later. when this mod was first written, wallmounted nodeboxes weren't possible. This change ONLY affects the default wooden wall signs and locked wooden wall signs. Metal signs, yard signs, signs on fenceposts, and hanging signs are not affected.
@ -14,7 +14,24 @@ signs_lib = {}
|
||||
|
||||
signs_lib.modpath = minetest.get_modpath("signs_lib")
|
||||
|
||||
signs_lib.wall_sign_model = {
|
||||
signs_lib.regular_wall_sign_model = {
|
||||
nodebox = {
|
||||
type = "wallmounted",
|
||||
wall_side = { -0.5, -0.25, -0.4375, -0.4375, 0.375, 0.4375 },
|
||||
wall_bottom = { -0.4375, -0.5, -0.25, 0.4375, -0.4375, 0.375 },
|
||||
wall_top = { -0.4375, 0.4375, -0.375, 0.4375, 0.5, 0.25 }
|
||||
},
|
||||
textpos = {
|
||||
nil,
|
||||
nil,
|
||||
{delta = {x = 0.43, y = 0.07, z = 0 }, yaw = math.pi / -2},
|
||||
{delta = {x = -0.43, y = 0.07, z = 0 }, yaw = math.pi / 2},
|
||||
{delta = {x = 0, y = 0.07, z = 0.43 }, yaw = 0},
|
||||
{delta = {x = 0, y = 0.07, z = -0.43 }, yaw = math.pi},
|
||||
}
|
||||
}
|
||||
|
||||
signs_lib.metal_wall_sign_model = {
|
||||
nodebox = {
|
||||
type = "fixed",
|
||||
fixed = {-0.4375, -0.25, 0.4375, 0.4375, 0.375, 0.5}
|
||||
@ -536,7 +553,11 @@ signs_lib.update_sign = function(pos, fields, owner)
|
||||
elseif signnode.name == "signs:sign_hanging" then
|
||||
sign_info = signs_lib.hanging_sign_model.textpos[minetest.get_node(pos).param2 + 1]
|
||||
elseif string.find(signnode.name, "sign_wall") then
|
||||
sign_info = signs_lib.wall_sign_model.textpos[minetest.get_node(pos).param2 + 1]
|
||||
if signnode.name == "default:sign_wall" then
|
||||
sign_info = signs_lib.regular_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1]
|
||||
else
|
||||
sign_info = signs_lib.metal_wall_sign_model.textpos[minetest.get_node(pos).param2 + 1]
|
||||
end
|
||||
else -- ...it must be a sign on a fence post.
|
||||
sign_info = signs_lib.sign_post_model.textpos[minetest.get_node(pos).param2 + 1]
|
||||
end
|
||||
@ -607,8 +628,11 @@ function signs_lib.determine_sign_type(itemstack, placer, pointed_thing, locked)
|
||||
minetest.add_node(above, {name = "signs:sign_hanging", param2 = fdir})
|
||||
elseif wdir == 1 and signname == "default:sign_wall" then
|
||||
minetest.add_node(above, {name = "signs:sign_yard", param2 = fdir})
|
||||
else -- it must be a wooden or metal wall sign.
|
||||
elseif signname ~= "default:sign_wall" then -- it must be a metal wall sign.
|
||||
minetest.add_node(above, {name = signname, param2 = fdir})
|
||||
else -- it must be a default or locked wooden wall sign
|
||||
minetest.add_node(above, {name = signname, param2 = wdir }) -- note it's wallmounted here!
|
||||
print(dump(wdir))
|
||||
if locked then
|
||||
local meta = minetest.get_meta(above)
|
||||
local owner = placer:get_player_name()
|
||||
@ -649,12 +673,12 @@ minetest.register_node(":default:sign_wall", {
|
||||
inventory_image = "default_sign_wall.png",
|
||||
wield_image = "default_sign_wall.png",
|
||||
node_placement_prediction = "",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
drawtype = "nodebox",
|
||||
node_box = signs_lib.wall_sign_model.nodebox,
|
||||
tiles = {"signs_top.png", "signs_bottom.png", "signs_side.png", "signs_side.png", "signs_back.png", "signs_front.png"},
|
||||
node_box = signs_lib.regular_wall_sign_model.nodebox,
|
||||
tiles = {"signs_wall_sign.png"},
|
||||
groups = sign_groups,
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
@ -770,19 +794,12 @@ minetest.register_node(":locked_sign:sign_wall_locked", {
|
||||
inventory_image = "signs_locked_inv.png",
|
||||
wield_image = "signs_locked_inv.png",
|
||||
node_placement_prediction = "",
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
drawtype = "nodebox",
|
||||
node_box = signs_lib.wall_sign_model.nodebox,
|
||||
tiles = {
|
||||
"signs_top_locked.png",
|
||||
"signs_bottom_locked.png",
|
||||
"signs_side_locked.png",
|
||||
"signs_side.png",
|
||||
"signs_back.png",
|
||||
"signs_front_locked.png"
|
||||
},
|
||||
node_box = signs_lib.regular_wall_sign_model.nodebox,
|
||||
tiles = { "signs_wall_sign_locked.png" },
|
||||
groups = sign_groups,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
return signs_lib.determine_sign_type(itemstack, placer, pointed_thing, true)
|
||||
@ -829,7 +846,7 @@ for _, color in ipairs(sign_colors) do
|
||||
sunlight_propagates = true,
|
||||
paramtype2 = "facedir",
|
||||
drawtype = "nodebox",
|
||||
node_box = signs_lib.wall_sign_model.nodebox,
|
||||
node_box = signs_lib.metal_wall_sign_model.nodebox,
|
||||
tiles = {
|
||||
"signs_metal_tb.png",
|
||||
"signs_metal_tb.png",
|
||||
|
Before Width: | Height: | Size: 100 B |
Before Width: | Height: | Size: 357 B |
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 453 B |
Before Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 100 B |
BIN
signs_lib/textures/signs_wall_sign.png
Normal file
After Width: | Height: | Size: 608 B |
BIN
signs_lib/textures/signs_wall_sign_locked.png
Normal file
After Width: | Height: | Size: 643 B |