create a generic hanging sign feature and

move basic_signs' hanging wooden sign back to here, use it.
This commit is contained in:
Vanessa Dannenberg 2019-09-15 01:23:40 -04:00
parent f6673dc0f1
commit 78418de9c9
5 changed files with 121 additions and 2 deletions

37
api.lua
View File

@ -611,6 +611,14 @@ function signs_lib.check_for_pole(pos, pointed_thing)
end end
end end
function signs_lib.check_for_ceiling(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) function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locked)
local playername = placer:get_player_name() local playername = placer:get_player_name()
local def = minetest.registered_items[itemstack:get_name()] local def = minetest.registered_items[itemstack:get_name()]
@ -622,6 +630,10 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
if (def.allow_onpole ~= false) and signs_lib.check_for_pole(pos, pointed_thing) then if (def.allow_onpole ~= false) and signs_lib.check_for_pole(pos, pointed_thing) then
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = itemstack:get_name().."_onpole", param2 = node.param2}) minetest.swap_node(pos, {name = itemstack:get_name().."_onpole", param2 = node.param2})
elseif def.allow_hanging and signs_lib.check_for_ceiling(pointed_thing) then
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})
end end
if locked then if locked then
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
@ -711,13 +723,13 @@ function signs_lib.register_sign(name, rdef)
end end
def.paramtype = rdef.paramtype or "light" def.paramtype = rdef.paramtype or "light"
def.paramtype2 = rdef.paramtype2 or "wallmounted"
def.drawtype = rdef.drawtype or "mesh" def.drawtype = rdef.drawtype or "mesh"
def.mesh = rdef.mesh or "signs_lib_standard_wall_sign.obj" def.mesh = rdef.mesh or "signs_lib_standard_wall_sign.obj"
def.wield_image = rdef.wield_image or def.inventory_image def.wield_image = rdef.wield_image or def.inventory_image
def.drop = rdef.drop or name def.drop = rdef.drop or name
def.sounds = rdef.sounds or signs_lib.standard_wood_sign_sounds def.sounds = rdef.sounds or signs_lib.standard_wood_sign_sounds
def.on_rotate = rdef.on_rotate or signs_lib.wallmounted_rotate def.on_rotate = rdef.on_rotate or signs_lib.wallmounted_rotate
def.paramtype2 = rdef.paramtype2 or "wallmounted"
if rdef.on_rotate then if rdef.on_rotate then
def.on_rotate = rdef.on_rotate def.on_rotate = rdef.on_rotate
@ -780,6 +792,29 @@ function signs_lib.register_sign(name, rdef)
minetest.register_node(":"..name.."_onpole", opdef) minetest.register_node(":"..name.."_onpole", opdef)
table.insert(signs_lib.lbm_restore_nodes, name.."_onpole") table.insert(signs_lib.lbm_restore_nodes, name.."_onpole")
end end
if rdef.allow_hanging then
local hdef = table.copy(def)
hdef.paramtype2 = "facedir"
hdef.selection_box = rdef.selection_box or signs_lib.make_selection_boxes(35, 32, false, 0, 3, -18.5, true)
hdef.node_box = rdef.node_box or rdef.selection_box or hdef.selection_box
hdef.groups.not_in_creative_inventory = 1
hdef.tiles[3] = "signs_lib_hangers.png"
hdef.mesh = string.gsub(hdef.mesh, ".obj$", "_hanging.obj")
hdef.on_rotate = nil
if hdef.entity_info then
hdef.entity_info.mesh = string.gsub(hdef.entity_info.mesh, ".obj$", "_hanging.obj")
hdef.entity_info.yaw = signs_lib.standard_yaw
end
minetest.register_node(":"..name.."_hanging", hdef)
table.insert(signs_lib.lbm_restore_nodes, name.."_hanging")
end
end end
-- restore signs' text after /clearobjects and the like, the next time -- restore signs' text after /clearobjects and the like, the next time

View File

@ -0,0 +1,15 @@
# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden hanging sign.blend'
# www.blender.org
o Plane
v 0.406250 -0.281250 -0.042969
v -0.406250 -0.281250 -0.042969
v 0.406250 0.281250 -0.042969
v -0.406250 0.281250 -0.042969
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vn 0.0000 -0.0000 -1.0000
g Plane_Plane_None
s off
f 1/1/1 2/2/1 4/3/1 3/4/1

View File

@ -0,0 +1,62 @@
# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden hanging sign.blend'
# www.blender.org
o Cube
v 0.437500 -0.312500 0.031250
v 0.437500 -0.312500 -0.031250
v 0.437500 0.312500 0.031250
v 0.437500 0.312500 -0.031250
v -0.437500 -0.312500 0.031250
v -0.437500 -0.312500 -0.031250
v -0.437500 0.312500 0.031250
v -0.437500 0.312500 -0.031250
v 0.437500 -0.312500 0.031250
v 0.437500 -0.312500 -0.031250
v 0.437500 0.312500 0.031250
v 0.437500 0.312500 -0.031250
v -0.437500 -0.312500 0.031250
v -0.437500 -0.312500 -0.031250
v -0.437500 0.312500 0.031250
v -0.437500 0.312500 -0.031250
v 0.500000 0.312500 -0.000000
v 0.500000 0.500000 0.000000
v -0.500000 0.312500 -0.000000
v -0.500000 0.500000 0.000000
vt 0.468750 0.812500
vt 0.031250 0.812500
vt 0.031250 0.187500
vt 0.468750 0.187500
vt 0.531250 0.812500
vt 0.968750 0.812500
vt 0.968750 0.187500
vt 0.531250 0.187500
vt 0.234375 0.000000
vt 0.234375 1.000000
vt 0.015625 1.000000
vt 0.015625 -0.000000
vt 0.609375 -0.000000
vt 0.609375 1.000000
vt 0.390625 1.000000
vt 0.390625 -0.000000
vt 0.765625 0.000000
vt 0.765625 1.000000
vt 1.000000 0.812500
vt 1.000000 1.000000
vt 0.000000 1.000000
vt -0.000000 0.812500
vn 0.0000 0.0000 -1.0000
vn 0.0000 -0.0000 1.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 1.0000 0.0000
vn 1.0000 -0.0000 0.0000
vn -1.0000 -0.0000 0.0000
g Cube_Cube_front-back
s off
f 8/1/1 4/2/1 2/3/1 6/4/1
f 3/5/2 7/6/2 5/7/2 1/8/2
g Cube_Cube_edges
f 13/9/3 14/10/3 10/11/3 9/12/3
f 11/13/4 12/14/4 16/15/4 15/16/4
f 11/13/5 9/17/5 10/18/5 12/14/5
f 13/9/6 15/16/6 16/15/6 14/10/6
g Cube_Cube_hangers
f 19/19/1 20/20/1 18/21/1 17/22/1

View File

@ -7,7 +7,8 @@ signs_lib.register_sign("default:sign_wall_wood", {
"signs_lib_sign_wall_wooden.png", "signs_lib_sign_wall_wooden.png",
"signs_lib_sign_wall_wooden_edges.png", "signs_lib_sign_wall_wooden_edges.png",
}, },
entity_info = "standard" entity_info = "standard",
allow_hanging = true,
}) })
signs_lib.register_sign("default:sign_wall_steel", { signs_lib.register_sign("default:sign_wall_steel", {
@ -23,6 +24,12 @@ signs_lib.register_sign("default:sign_wall_steel", {
entity_info = "standard" entity_info = "standard"
}) })
minetest.register_alias("signs:sign_hanging", "default:sign_wall_wood_hanging")
minetest.register_alias("basic_signs:hanging_sign", "default:sign_wall_wood_hanging")
table.insert(signs_lib.lbm_restore_nodes, "signs:sign_hanging")
table.insert(signs_lib.lbm_restore_nodes, "basic_signs:hanging_sign")
-- insert the old wood sign-on-fencepost into signs_lib's conversion LBM -- insert the old wood sign-on-fencepost into signs_lib's conversion LBM
table.insert(signs_lib.old_fenceposts_with_signs, "signs:sign_post") table.insert(signs_lib.old_fenceposts_with_signs, "signs:sign_post")

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B