1
0
mirror of https://github.com/mt-mods/basic_signs.git synced 2025-06-28 22:46:04 +02:00

10 Commits

Author SHA1 Message Date
29c8051b96 add minimum minetest version key for contentdb 2020-06-03 13:00:00 -04:00
896a1935a6 fix crash when placing old-named signs in non-wall position
(just needed more aliases to cover all the mounting options)
2019-10-12 11:22:28 -04:00
b862bf944a replace missing glass sign inv textures 2019-10-03 14:19:02 -04:00
d57d8e87b1 glass signs aren't supposed to be "locked"
also, fix textures on "sticks" on back of yard model
2019-09-26 14:26:03 -04:00
9da5a40bef add plastic sign (white) 2019-09-26 14:25:30 -04:00
d35bc1e515 Adapt to changes in signs_lib API
Requires signs_lib commit 38362152 (2019-09-25) or later

Use custom pole mount images for glass signs
Use custom model for yard version of glass signs
Move wooden yard sign back to signs_lib
2019-09-26 00:51:30 -04:00
c4f0b331c0 adjust for signs_lib's change of allow_onpole
(explicitly set them to `true`, as signs_lib now defaults to disabled)
2019-09-21 15:58:35 -04:00
2f6943495a allow placing signs on horizontal poles 2019-09-21 15:52:59 -04:00
7f4bf6daf1 Add glass and obsidian glass signs
requires signs_lib commit c66c1b7 or later
(otherwise the entity won't be visible from the back side).
2019-09-19 01:04:59 -04:00
7c235ec779 use signs_lib's wide-font API features where appropriate
move the wide mode for default wood and steel to signs_lib

requires signs_lib commit a5e711d3 or later
2019-09-15 16:16:36 -04:00
17 changed files with 140 additions and 217 deletions

View File

@ -136,3 +136,48 @@ minetest.register_craft( {
{ "steel:sheet_metal", "steel:sheet_metal", "steel:sheet_metal" }
},
})
minetest.register_craft( {
output = "basic_signs:sign_wall_glass 8",
recipe = {
{ "default:glass", "default:glass", "default:glass" },
{ "default:glass", "default:glass", "default:glass" },
{ "", "default:glass", "" }
},
})
minetest.register_craft( {
output = "basic_signs:sign_wall_obsidian_glass 8",
recipe = {
{ "default:obsidian_glass", "default:obsidian_glass", "default:obsidian_glass" },
{ "default:obsidian_glass", "default:obsidian_glass", "default:obsidian_glass" },
{ "", "default:obsidian_glass", "" }
},
})
minetest.register_craft( {
output = "basic_signs:sign_wall_glass 3",
recipe = {
{ "xpanes:pane_flat", "xpanes:pane_flat", "xpanes:pane_flat" },
{ "xpanes:pane_flat", "xpanes:pane_flat", "xpanes:pane_flat" },
{ "", "xpanes:pane_flat", "" }
},
})
minetest.register_craft( {
output = "basic_signs:sign_wall_obsidian_glass 3",
recipe = {
{ "xpanes:obsidian_pane_flat", "xpanes:obsidian_pane_flat", "xpanes:obsidian_pane_flat" },
{ "xpanes:obsidian_pane_flat", "xpanes:obsidian_pane_flat", "xpanes:obsidian_pane_flat" },
{ "", "xpanes:obsidian_pane_flat", "" }
},
})
minetest.register_craft( {
output = "basic_signs:sign_wall_plastic 3",
recipe = {
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
{ "basic_materials:plastic_sheet", "basic_materials:plastic_sheet", "basic_materials:plastic_sheet" },
{ "", "default:steel_ingot", "" }
},
})

209
init.lua
View File

@ -9,90 +9,92 @@ dofile(basic_signs.path .. "/crafting.lua")
local S, NS = dofile(basic_signs.path .. "/intllib.lua")
basic_signs.gettext = S
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"..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)
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 = {
"basic_signs_sign_wall_locked.png",
"signs_lib_sign_wall_steel_edges.png",
"signs_lib_sign_wall_steel_edges.png"
},
inventory_image = "basic_signs_sign_wall_locked_inv.png",
locked = true,
entity_info = "standard",
allow_hanging = true
allow_hanging = true,
allow_widefont = true,
allow_onpole = true,
allow_onpole_horizontal = true,
allow_yard = true,
})
signs_lib.register_sign("basic_signs:sign_wall_glass", {
description = S("Glass Sign"),
yard_mesh = "signs_lib_standard_sign_yard_two_sticks.obj",
tiles = {
{ name = "basic_signs_sign_wall_glass.png", backface_culling = true},
"basic_signs_sign_wall_glass_edges.png",
"basic_signs_pole_mount_glass.png",
nil,
"default_steel_block.png" -- the sticks on back of the yard sign model
},
inventory_image = "basic_signs_sign_wall_glass_inv.png",
default_color = "c",
entity_info = "standard",
sounds = default.node_sound_glass_defaults(),
groups = {cracky = 3, oddly_breakable_by_hand = 3},
allow_hanging = true,
allow_widefont = true,
allow_onpole = true,
allow_onpole_horizontal = true,
allow_yard = true,
use_texture_alpha = true,
})
signs_lib.register_sign("basic_signs:sign_wall_obsidian_glass", {
description = S("Obsidian Glass Sign"),
yard_mesh = "signs_lib_standard_sign_yard_two_sticks.obj",
tiles = {
{ name = "basic_signs_sign_wall_obsidian_glass.png", backface_culling = true},
"basic_signs_sign_wall_obsidian_glass_edges.png",
"basic_signs_pole_mount_obsidian_glass.png",
nil,
"default_steel_block.png" -- the sticks on back of the yard sign model
},
inventory_image = "basic_signs_sign_wall_obsidian_glass_inv.png",
default_color = "c",
entity_info = "standard",
sounds = default.node_sound_glass_defaults(),
groups = {cracky = 3},
allow_hanging = true,
allow_widefont = true,
allow_onpole = true,
allow_onpole_horizontal = true,
allow_yard = true,
use_texture_alpha = 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)
signs_lib.register_sign("basic_signs:sign_wall_plastic", {
description = S("Plastic Sign"),
yard_mesh = "signs_lib_standard_sign_yard_two_sticks.obj",
tiles = {
"basic_signs_sign_wall_plastic.png",
"basic_signs_sign_wall_plastic_edges.png",
"basic_signs_pole_mount_plastic.png",
nil,
"default_steel_block.png" -- the sticks on back of the yard sign model
},
inventory_image = "basic_signs_sign_wall_plastic_inv.png",
default_color = "0",
entity_info = "standard",
sounds = default.node_sound_leaves_defaults(),
groups = {snappy = 3, flammable = 2},
allow_hanging = true,
allow_widefont = true,
allow_onpole = true,
allow_onpole_horizontal = true,
allow_yard = true,
use_texture_alpha = true,
})
-- array : color, translated color, default text color
@ -114,64 +116,39 @@ for i, color in ipairs(sign_colors) do
description = S("Sign (@1, steel)", color[2]),
paramtype2 = "facedir",
selection_box = cbox,
mesh = "signs_lib_standard_wall_sign_facedir.obj",
mesh = "signs_lib_standard_facedir_sign_wall.obj",
tiles = {
"basic_signs_steel_"..color[1]..".png",
"signs_lib_sign_wall_steel_edges.png",
nil,
nil,
"default_steel_block.png"
},
inventory_image = "basic_signs_steel_"..color[1].."_inv.png",
groups = signs_lib.standard_steel_groups,
sounds = signs_lib.standard_steel_sign_sounds,
default_color = color[3],
entity_info = {
mesh = "signs_lib_standard_wall_sign_entity.obj",
mesh = "signs_lib_standard_sign_entity_wall.obj",
yaw = signs_lib.standard_yaw
},
allow_hanging = true
allow_hanging = true,
allow_widefont = true,
allow_onpole = true,
allow_onpole_horizontal = true,
allow_yard = 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)
minetest.register_alias("basic_signs:sign_wall_steel_"..color[1].."_onpole", "basic_signs:sign_steel_"..color[1].."_onpole")
minetest.register_alias("basic_signs:sign_wall_steel_"..color[1].."_onpole_horiz", "basic_signs:sign_steel_"..color[1].."_onpole_horiz")
minetest.register_alias("basic_signs:sign_wall_steel_"..color[1].."_hanging", "basic_signs:sign_steel_"..color[1].."_hanging")
minetest.register_alias("basic_signs:sign_wall_steel_"..color[1].."_yard", "basic_signs:sign_steel_"..color[1].."_yard")
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_"..color[1].."_onpole", "basic_signs:sign_steel_"..color[1].."_onpole")
minetest.register_alias("signs:sign_"..color[1].."_onpole_horiz", "basic_signs:sign_steel_"..color[1].."_onpole_horiz")
minetest.register_alias("signs:sign_"..color[1].."_hanging", "basic_signs:sign_steel_"..color[1].."_hanging")
minetest.register_alias("signs:sign_"..color[1].."_yard", "basic_signs:sign_steel_"..color[1].."_yard")
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",
selection_box = signs_lib.make_selection_boxes(35, 34.5, false, 0, -1.25, -19.69, true),
mesh = "basic_signs_yard_sign.obj",
tiles = {
"signs_lib_sign_wall_wooden.png",
"signs_lib_sign_wall_wooden_edges.png",
"default_wood.png"
},
inventory_image = "default_sign_wood.png",
entity_info = {
mesh = "basic_signs_yard_sign_entity.obj",
yaw = signs_lib.standard_yaw
},
groups = wgroups,
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")
minetest.register_alias("signs:sign_yard", "basic_signs:yard_sign")

1
mod.conf Normal file
View File

@ -0,0 +1 @@
min_minetest_version = 5.2.0

View File

@ -1,85 +0,0 @@
# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden yard sign.blend'
# www.blender.org
o Cube
v 0.437500 -0.250000 -0.000000
v 0.437500 -0.250000 -0.062500
v 0.437500 0.375000 0.000000
v 0.437500 0.375000 -0.062500
v -0.437500 -0.250000 -0.000000
v -0.437500 -0.250000 -0.062500
v -0.437500 0.375000 0.000000
v -0.437500 0.375000 -0.062500
v 0.437500 -0.250000 -0.000000
v 0.437500 -0.250000 -0.062500
v 0.437500 0.375000 0.000000
v 0.437500 0.375000 -0.062500
v -0.437500 -0.250000 -0.000000
v -0.437500 -0.250000 -0.062500
v -0.437500 0.375000 0.000000
v -0.437500 0.375000 -0.062500
v 0.062500 -0.500000 0.000000
v 0.062500 0.250000 0.000000
v 0.062500 -0.500000 0.062500
v 0.062500 0.250000 0.062500
v -0.062500 -0.500000 0.000000
v -0.062500 0.250000 0.000000
v -0.062500 -0.500000 0.062500
v -0.062500 0.250000 0.062500
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 0.000000 0.750000
vt 2.000000 0.750000
vt 2.000000 0.875000
vt 0.000000 0.875000
vt 0.000000 0.125000
vt 2.000000 0.125000
vt 2.000000 0.375000
vt 0.000000 0.375000
vt 2.000000 0.500000
vt 0.000000 0.500000
vt 0.812500 0.875000
vt 0.562500 0.875000
vt 0.562500 1.000000
vt 0.812500 1.000000
vt 0.125000 0.875000
vt 0.375000 0.875000
vt 0.375000 1.000000
vt 0.125000 1.000000
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_default_wood
f 17/19/5 18/20/5 20/21/5 19/22/5
f 19/23/2 20/24/2 24/25/2 23/26/2
f 23/26/6 24/25/6 22/27/6 21/28/6
f 21/28/1 22/27/1 18/20/1 17/19/1
f 19/29/3 23/30/3 21/31/3 17/32/3
f 24/33/4 20/34/4 18/35/4 22/36/4

View File

@ -1,15 +0,0 @@
# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden yard sign.blend'
# www.blender.org
o Plane
v 0.406250 -0.218750 -0.074219
v -0.406250 -0.218750 -0.074219
v 0.406250 0.343750 -0.074219
v -0.406250 0.343750 -0.074219
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.

After

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 913 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B