1
0
mirror of https://github.com/mt-mods/basic_signs.git synced 2025-06-28 22:46:04 +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") local S, NS = dofile(basic_signs.path .. "/intllib.lua")
basic_signs.gettext = S 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 playername = placer:get_player_name()
local pt_name = minetest.get_node(pointed_thing.under).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 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 if minetest.is_protected(pointed_thing.under, playername) then
minetest.record_protection_violation(pointed_thing.under, playername) minetest.record_protection_violation(pointed_thing.under, playername)
return itemstack return itemstack
end end
local newparam2 = minetest.dir_to_facedir(placer:get_look_dir())
if minetest.registered_nodes[pt_name] and if minetest.registered_nodes[pt_name] and
minetest.registered_nodes[pt_name].on_rightclick and minetest.registered_nodes[pt_name].on_rightclick and
not placer:get_player_control().sneak then not placer:get_player_control().sneak then
return minetest.registered_nodes[pt_name].on_rightclick(pos, node, placer, itemstack, pointed_thing) return minetest.registered_nodes[pt_name].on_rightclick(pos, node, placer, itemstack, pointed_thing)
elseif signs_lib.check_for_pole(pos, pointed_thing) then elseif signs_lib.check_for_pole(pos, pointed_thing) then
minetest.swap_node(pos, {name = "default:sign_wall_wood_onpole", param2 = node.param2}) minetest.swap_node(pos, {name = "default:sign_wall_wood"..widefont.."_onpole", param2 = node.param2})
else elseif signs_lib.check_for_ceiling(pointed_thing) then
local lookdir = placer:get_look_dir() minetest.swap_node(pos, {name = "default:sign_wall_wood"..widefont.."_hanging", param2 = newparam2})
print(dump(lookdir)) elseif basic_signs.check_for_floor(pointed_thing) then
local newparam2 = minetest.dir_to_facedir(lookdir) minetest.swap_node(pos, {name = "basic_signs:yard_sign"..widefont, param2 = newparam2})
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})
end end
signs_lib.update_sign(pos) signs_lib.update_sign(pos)
end
if not creative.is_enabled_for(playername) then if not creative.is_enabled_for(playername) then
itemstack:take_item() itemstack:take_item()
end end
return itemstack return itemstack
end end
local def
minetest.override_item("default:sign_wall_wood", { minetest.override_item("default:sign_wall_wood", {
after_place_node = basic_signs.determine_sign_type 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", { signs_lib.register_sign("basic_signs:sign_wall_locked", {
description = S("Locked Sign"), description = S("Locked Sign"),
tiles = { tiles = {
@ -56,10 +82,18 @@ signs_lib.register_sign("basic_signs:sign_wall_locked", {
inventory_image = "basic_signs_sign_wall_locked_inv.png", inventory_image = "basic_signs_sign_wall_locked_inv.png",
locked = true, locked = true,
entity_info = "standard", entity_info = "standard",
allow_hanging = true
}) })
minetest.register_alias("locked_sign:sign_wall_locked", "basic_signs:sign_wall_locked") 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 -- array : color, translated color, default text color
local sign_colors = { local sign_colors = {
@ -93,12 +127,23 @@ for i, color in ipairs(sign_colors) do
mesh = "signs_lib_standard_wall_sign_entity.obj", mesh = "signs_lib_standard_wall_sign_entity.obj",
yaw = signs_lib.standard_yaw 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]) 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]) minetest.register_alias("signs:sign_wall_"..color[1], "basic_signs:sign_wall_steel_"..color[1])
end end
local wgroups = table.copy(signs_lib.standard_wood_groups)
wgroups.not_in_creative_inventory = 1
signs_lib.register_sign("basic_signs:yard_sign", { signs_lib.register_sign("basic_signs:yard_sign", {
description = "Wooden yard sign", description = "Wooden yard sign",
paramtype2 = "facedir", paramtype2 = "facedir",
@ -114,31 +159,19 @@ signs_lib.register_sign("basic_signs:yard_sign", {
mesh = "basic_signs_yard_sign_entity.obj", mesh = "basic_signs_yard_sign_entity.obj",
yaw = signs_lib.standard_yaw yaw = signs_lib.standard_yaw
}, },
groups = wgroups,
drop = "default:sign_wall_wood", drop = "default:sign_wall_wood",
allow_onpole = false allow_onpole = false
}) })
signs_lib.register_sign("basic_signs:hanging_sign", { def = table.copy(minetest.registered_items["basic_signs:yard_sign"])
description = "Wooden sign, hanging", def.description = "Wooden yard sign (wide font)"
paramtype2 = "facedir", def.inventory_image = def.inventory_image.."^signs_lib_wide_font_overlay_inv.png"
selection_box = signs_lib.make_selection_boxes(35, 32, false, 0, 3, -18.5, true), def.wield_image = def.wield_image.."^signs_lib_wide_font_overlay_inv.png"
mesh = "basic_signs_hanging_sign.obj", def.wield_image = def.wield_image.."^signs_lib_wide_font_overlay_inv.png"
tiles = { def.horiz_scaling = signs_lib.standard_hscale / 2
"signs_lib_sign_wall_wooden.png", def.groups = wgroups
"signs_lib_sign_wall_wooden_edges.png", minetest.register_node("basic_signs:yard_sign_widefont", def)
"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
})
table.insert(signs_lib.lbm_restore_nodes, "signs:sign_yard") 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_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