1
0
mirror of https://github.com/mt-mods/basic_signs.git synced 2025-06-28 14:36:05 +02:00

3 Commits

Author SHA1 Message Date
9317f1563a add wide font variant of all signs
(with full yard/hanging/pole/wall detection as appropriate)
2019-09-15 03:19:10 -04:00
486423286a allow steel and locked signs to hang from a ceiling 2019-09-15 01:47:29 -04:00
2ccb449550 move hanging wooden sign back to signs_lib
(it's now handled by signs_lib's generic hanging-sign code)
2019-09-15 01:22:49 -04:00
4 changed files with 67 additions and 111 deletions

View File

@ -9,44 +9,70 @@ dofile(basic_signs.path .. "/crafting.lua")
local S, NS = dofile(basic_signs.path .. "/intllib.lua")
basic_signs.gettext = S
function basic_signs.determine_sign_type(pos, placer, itemstack, pointed_thing)
function basic_signs.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 basic_signs.determine_sign_type(pos, placer, itemstack, pointed_thing, widefont)
local playername = placer:get_player_name()
local pt_name = minetest.get_node(pointed_thing.under).name
local node = minetest.get_node(pos) -- since we're in after-place, this will be the wall sign itself
local widefont = widefont or ""
if minetest.is_protected(pointed_thing.under, playername) then
minetest.record_protection_violation(pointed_thing.under, playername)
return itemstack
end
local newparam2 = minetest.dir_to_facedir(placer:get_look_dir())
if minetest.registered_nodes[pt_name] and
minetest.registered_nodes[pt_name].on_rightclick and
not placer:get_player_control().sneak then
return minetest.registered_nodes[pt_name].on_rightclick(pos, node, placer, itemstack, pointed_thing)
elseif signs_lib.check_for_pole(pos, pointed_thing) then
minetest.swap_node(pos, {name = "default:sign_wall_wood_onpole", param2 = node.param2})
else
local lookdir = placer:get_look_dir()
print(dump(lookdir))
local newparam2 = minetest.dir_to_facedir(lookdir)
if node.param2 == 0 then
minetest.swap_node(pos, {name = "basic_signs:hanging_sign", param2 = newparam2})
elseif node.param2 == 1 then
minetest.swap_node(pos, {name = "basic_signs:yard_sign", param2 = newparam2})
minetest.swap_node(pos, {name = "default:sign_wall_wood"..widefont.."_onpole", param2 = node.param2})
elseif signs_lib.check_for_ceiling(pointed_thing) then
minetest.swap_node(pos, {name = "default:sign_wall_wood"..widefont.."_hanging", param2 = newparam2})
elseif basic_signs.check_for_floor(pointed_thing) then
minetest.swap_node(pos, {name = "basic_signs:yard_sign"..widefont, param2 = newparam2})
end
signs_lib.update_sign(pos)
end
if not creative.is_enabled_for(playername) then
itemstack:take_item()
end
return itemstack
end
local def
minetest.override_item("default:sign_wall_wood", {
after_place_node = basic_signs.determine_sign_type
})
def = table.copy(minetest.registered_items["default:sign_wall_wood"])
def.description = "Wooden wall sign (wide font)"
def.inventory_image = def.inventory_image.."^signs_lib_wide_font_overlay_inv.png"
def.wield_image = def.wield_image.."^signs_lib_wide_font_overlay_inv.png"
def.horiz_scaling = signs_lib.standard_hscale / 2
def.after_place_node = function(pos, placer, itemstack, pointed_thing)
basic_signs.determine_sign_type(pos, placer, itemstack, pointed_thing, "_widefont")
end
signs_lib.register_sign("default:sign_wall_wood_widefont", def)
def = table.copy(minetest.registered_items["default:sign_wall_steel"])
def.description = "Steel wall sign (wide font)"
def.inventory_image = def.inventory_image.."^signs_lib_wide_font_overlay_inv.png"
def.wield_image = def.wield_image.."^signs_lib_wide_font_overlay_inv.png"
def.horiz_scaling = signs_lib.standard_hscale / 2
signs_lib.register_sign("default:sign_wall_steel_widefont", def)
signs_lib.register_sign("basic_signs:sign_wall_locked", {
description = S("Locked Sign"),
tiles = {
@ -56,10 +82,18 @@ signs_lib.register_sign("basic_signs:sign_wall_locked", {
inventory_image = "basic_signs_sign_wall_locked_inv.png",
locked = true,
entity_info = "standard",
allow_hanging = true
})
minetest.register_alias("locked_sign:sign_wall_locked", "basic_signs:sign_wall_locked")
def = table.copy(minetest.registered_items["basic_signs:sign_wall_locked"])
def.description = S("Locked Sign (wide font)")
def.inventory_image = def.inventory_image.."^signs_lib_wide_font_overlay_inv.png"
def.wield_image = def.wield_image.."^signs_lib_wide_font_overlay_inv.png"
def.horiz_scaling = signs_lib.standard_hscale / 2
signs_lib.register_sign("basic_signs:sign_wall_locked_widefont", def)
-- array : color, translated color, default text color
local sign_colors = {
@ -93,12 +127,23 @@ for i, color in ipairs(sign_colors) do
mesh = "signs_lib_standard_wall_sign_entity.obj",
yaw = signs_lib.standard_yaw
},
allow_hanging = true
})
def = table.copy(minetest.registered_items["basic_signs:sign_wall_steel_"..color[1]])
def.description = S("Sign (@1, steel, wide font)", color[2])
def.horiz_scaling = signs_lib.standard_hscale / 2
def.inventory_image = def.inventory_image.."^signs_lib_wide_font_overlay_inv.png"
def.wield_image = def.wield_image.."^signs_lib_wide_font_overlay_inv.png"
signs_lib.register_sign("basic_signs:sign_wall_steel_widefont_"..color[1], def)
table.insert(signs_lib.lbm_restore_nodes, "signs:sign_wall_"..color[1])
minetest.register_alias("signs:sign_wall_"..color[1], "basic_signs:sign_wall_steel_"..color[1])
end
local wgroups = table.copy(signs_lib.standard_wood_groups)
wgroups.not_in_creative_inventory = 1
signs_lib.register_sign("basic_signs:yard_sign", {
description = "Wooden yard sign",
paramtype2 = "facedir",
@ -114,31 +159,19 @@ signs_lib.register_sign("basic_signs:yard_sign", {
mesh = "basic_signs_yard_sign_entity.obj",
yaw = signs_lib.standard_yaw
},
groups = wgroups,
drop = "default:sign_wall_wood",
allow_onpole = false
})
signs_lib.register_sign("basic_signs:hanging_sign", {
description = "Wooden sign, hanging",
paramtype2 = "facedir",
selection_box = signs_lib.make_selection_boxes(35, 32, false, 0, 3, -18.5, true),
mesh = "basic_signs_hanging_sign.obj",
tiles = {
"signs_lib_sign_wall_wooden.png",
"signs_lib_sign_wall_wooden_edges.png",
"basic_signs_ceiling_hangers.png"
},
inventory_image = "default_sign_wood.png",
entity_info = {
mesh = "basic_signs_hanging_sign_entity.obj",
yaw = signs_lib.standard_yaw
},
drop = "default:sign_wall_wood",
allow_onpole = false
})
def = table.copy(minetest.registered_items["basic_signs:yard_sign"])
def.description = "Wooden yard sign (wide font)"
def.inventory_image = def.inventory_image.."^signs_lib_wide_font_overlay_inv.png"
def.wield_image = def.wield_image.."^signs_lib_wide_font_overlay_inv.png"
def.wield_image = def.wield_image.."^signs_lib_wide_font_overlay_inv.png"
def.horiz_scaling = signs_lib.standard_hscale / 2
def.groups = wgroups
minetest.register_node("basic_signs:yard_sign_widefont", def)
table.insert(signs_lib.lbm_restore_nodes, "signs:sign_yard")
table.insert(signs_lib.lbm_restore_nodes, "signs:sign_hanging")
minetest.register_alias("signs:sign_yard", "basic_signs:yard_sign")
minetest.register_alias("signs:sign_hanging", "basic_signs:hanging_sign")

View File

@ -1,62 +0,0 @@
# 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

@ -1,15 +0,0 @@
# 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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 B