1
0
mirror of https://github.com/mt-mods/signs_lib.git synced 2025-06-28 13:56:06 +02:00

Compare commits

...

7 Commits

Author SHA1 Message Date
dcdee22265 allow mods to pass a function or just true
to the pole and horiz pole check routines, in case they need
their own, custom checking routines, if the usual, simple
checks aren't good enough.

got rid of the allowed-poles table, as it's now obsolete

moved all existing special code into compat.lua, altered to
use this feature.
2019-09-22 03:19:31 -04:00
e4336e320c fix empty lines being skipped 2019-09-21 22:04:39 -04:00
d41e2ffd73 use a meta key to select wide-font mode
instead of using a separate node
add LBM to convert old nodes.
2019-09-21 21:42:46 -04:00
77987d12b9 detect streets:bigpole_tjunction
Treat T-junction as a vertical or horizontal pole (depending
on its orientation), if the sign could be placed flat against
the back or side of the junction.

In this instance, the "front" of the junction is the side with
the middle bit sticking out, and will just get a regular wall
signif targeted, as with any non-pole node.
2019-09-21 21:39:53 -04:00
dfece5275e rework horizontal pole detection slightly 2019-09-21 19:24:48 -04:00
6285d250d7 default "allow_onpole" to disabled
for consistency with other similar flags
2019-09-21 15:56:45 -04:00
9502812088 Add necessary bits to allow signs to be placed onto horizontal poles
(both wooden and steel signs)

only streets mod's "bigpole" supported for now.

Model changes:

To make a sign support horizontal mounting, make a single "_onpole"
model, with two copies of the pole mount, one rotated by 90°.  Make sure
the second copy appears has its own material entry, and that it is last
in the materials list in the exported .obj (`grep "g " file.obj` to
check).

When registered, signs_lib will set the "_onpole" and "_onpole_horiz"
tiles{} to reveal one mount or the other: entry 3 will expose the
vertical mount, entry 4 is the horizontal copy, with the opposite entry
being set to the "blank" image.
2019-09-21 15:45:48 -04:00
8 changed files with 849 additions and 186 deletions

318
api.lua
View File

@ -6,7 +6,6 @@ signs_lib.lbm_restore_nodes = {}
signs_lib.old_fenceposts = {} signs_lib.old_fenceposts = {}
signs_lib.old_fenceposts_replacement_signs = {} signs_lib.old_fenceposts_replacement_signs = {}
signs_lib.old_fenceposts_with_signs = {} signs_lib.old_fenceposts_with_signs = {}
signs_lib.allowed_poles = {}
-- Settings used for a standard wood or steel wall sign -- Settings used for a standard wood or steel wall sign
signs_lib.standard_lines = 6 signs_lib.standard_lines = 6
@ -31,6 +30,11 @@ signs_lib.standard_steel_sign_sounds = table.copy(minetest.registered_items["def
signs_lib.default_text_scale = {x=10, y=10} signs_lib.default_text_scale = {x=10, y=10}
signs_lib.old_widefont_signs = {}
signs_lib.block_list = {}
signs_lib.totalblocks = 0
signs_lib.standard_yaw = { signs_lib.standard_yaw = {
0, 0,
math.pi / -2, math.pi / -2,
@ -63,6 +67,20 @@ signs_lib.wall_fdir_to_back = {
{ 1, 0 }, { 1, 0 },
} }
signs_lib.fdir_flip_to_back = {
[0] = { 0, 2 },
[1] = { 2, 0 },
[2] = { 0, -2 },
[3] = { -2, 0 }
}
signs_lib.wall_fdir_flip_to_back = {
[2] = { 2, 0 },
[3] = { -2, 0 },
[4] = { 0, 2 },
[5] = { 0, -2 },
}
signs_lib.fdir_to_back_left = { signs_lib.fdir_to_back_left = {
[0] = { -1, 1 }, [0] = { -1, 1 },
[1] = { 1, 1 }, [1] = { 1, 1 },
@ -114,6 +132,25 @@ signs_lib.rotate_facedir_simple = {
[5] = 0 [5] = 0
} }
signs_lib.flip_facedir = {
[0] = 2,
[1] = 3,
[2] = 0,
[3] = 1,
[4] = 6,
[5] = 4,
[6] = 4
}
signs_lib.flip_walldir = {
[0] = 1,
[1] = 0,
[2] = 3,
[3] = 2,
[4] = 5,
[5] = 4
}
-- Initialize character texture cache -- Initialize character texture cache
local ctexcache = {} local ctexcache = {}
@ -205,30 +242,44 @@ function signs_lib.handle_rotation(pos, node, user, mode)
local def = minetest.registered_items[node.name] local def = minetest.registered_items[node.name]
if string.match(node.name, "_onpole") then if string.match(node.name, "_onpole") then
local newparam2 = signs_lib.rotate_walldir_simple[node.param2] or 4 if not string.match(node.name, "_horiz") then
local t = signs_lib.wall_fdir_to_back_left newparam2 = signs_lib.rotate_walldir_simple[node.param2] or 4
local t = signs_lib.wall_fdir_to_back_left
if def.paramtype2 ~= "wallmounted" then if def.paramtype2 ~= "wallmounted" then
newparam2 = signs_lib.rotate_facedir_simple[node.param2] or 0 newparam2 = signs_lib.rotate_facedir_simple[node.param2] or 0
t = signs_lib.fdir_to_back_left t = signs_lib.fdir_to_back_left
end
tpos = {
x = pos.x + t[node.param2][1],
y = pos.y,
z = pos.z + t[node.param2][2]
}
else
-- flip the sign to the other side of the horizontal pole
newparam2 = signs_lib.flip_walldir[node.param2] or 4
local t = signs_lib.wall_fdir_flip_to_back
if def.paramtype2 ~= "wallmounted" then
newparam2 = signs_lib.flip_facedir[node.param2] or 0
t = signs_lib.fdir_flip_to_back
end
tpos = {
x = pos.x + t[node.param2][1],
y = pos.y,
z = pos.z + t[node.param2][2]
}
end end
tpos = {
x = pos.x + t[node.param2][1],
y = pos.y,
z = pos.z + t[node.param2][2]
}
local node2 = minetest.get_node(tpos) local node2 = minetest.get_node(tpos)
local def2 = minetest.registered_items[node2.name] local def2 = minetest.registered_items[node2.name]
if not def2 or not def2.buildable_to then return true end -- undefined, or not buildable_to. if not def2 or not def2.buildable_to then return true end -- undefined, or not buildable_to.
minetest.set_node(tpos, {name = node.name, param2 = newparam2}) minetest.set_node(tpos, {name = node.name, param2 = newparam2})
minetest.get_meta(tpos):from_table(minetest.get_meta(pos):to_table()) minetest.get_meta(tpos):from_table(minetest.get_meta(pos):to_table())
minetest.remove_node(pos) minetest.remove_node(pos)
signs_lib.delete_objects(pos) signs_lib.delete_objects(pos)
elseif string.match(node.name, "_hanging") or string.match(node.name, "yard") then elseif string.match(node.name, "_hanging") or string.match(node.name, "yard") then
minetest.swap_node(tpos, { name = node.name, param2 = signs_lib.rotate_facedir_simple[node.param2] or 0 }) minetest.swap_node(tpos, { name = node.name, param2 = signs_lib.rotate_facedir_simple[node.param2] or 0 })
elseif minetest.registered_items[node.name].paramtype2 == "wallmounted" then elseif minetest.registered_items[node.name].paramtype2 == "wallmounted" then
@ -495,6 +546,8 @@ end
local function make_sign_texture(lines, pos) local function make_sign_texture(lines, pos)
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local meta = minetest.get_meta(pos)
local def = minetest.registered_items[node.name] local def = minetest.registered_items[node.name]
if not def or not def.entity_info then return end if not def or not def.entity_info then return end
@ -503,16 +556,21 @@ local function make_sign_texture(lines, pos)
local line_height local line_height
local char_width local char_width
local colorbgw local colorbgw
local widemult = 1
if meta:get_int("widefont") == 1 then
widemult = 0.5
end
if def.font_size and def.font_size == 31 then if def.font_size and def.font_size == 31 then
font_size = 31 font_size = 31
line_width = math.floor(signs_lib.avgwidth31 * def.chars_per_line) * def.horiz_scaling line_width = math.floor(signs_lib.avgwidth31 * def.chars_per_line) * (def.horiz_scaling * widemult)
line_height = signs_lib.lineheight31 line_height = signs_lib.lineheight31
char_width = signs_lib.charwidth31 char_width = signs_lib.charwidth31
colorbgw = signs_lib.colorbgw31 colorbgw = signs_lib.colorbgw31
else else
font_size = 15 font_size = 15
line_width = math.floor(signs_lib.avgwidth15 * def.chars_per_line) * def.horiz_scaling line_width = math.floor(signs_lib.avgwidth15 * def.chars_per_line) * (def.horiz_scaling * widemult)
line_height = signs_lib.lineheight15 line_height = signs_lib.lineheight15
char_width = signs_lib.charwidth15 char_width = signs_lib.charwidth15
colorbgw = signs_lib.colorbgw15 colorbgw = signs_lib.colorbgw15
@ -534,7 +592,7 @@ end
function signs_lib.split_lines_and_words(text) function signs_lib.split_lines_and_words(text)
if not text then return end if not text then return end
local lines = { } local lines = { }
for _, line in ipairs(text:split("\n")) do for _, line in ipairs(text:split("\n", true)) do
table.insert(lines, line:split(" ")) table.insert(lines, line:split(" "))
end end
return lines return lines
@ -548,27 +606,17 @@ function signs_lib.set_obj_text(pos, text)
signs_lib.spawn_entity(pos, make_sign_texture(split(text_ansi), pos)) signs_lib.spawn_entity(pos, make_sign_texture(split(text_ansi), pos))
end end
local function make_widefont_nodename(name)
if string.find(name, "_widefont") then return name end
if string.find(name, "_onpole") then
return string.gsub(name, "_onpole", "_widefont_onpole")
elseif string.find(name, "_hanging") then
return string.gsub(name, "_hanging", "_widefont_hanging")
else
return name.."_widefont"
end
end
function signs_lib.construct_sign(pos) function signs_lib.construct_sign(pos)
local form = "size[6,4]".. local form = "size[6,4]"..
"textarea[0,-0.3;6.5,3;text;;${text}]".. "textarea[0,-0.3;6.5,3;text;;${text}]"..
"background[-0.5,-0.5;7,5;signs_lib_sign_bg.jpg]" "background[-0.5,-0.5;7,5;signs_lib_sign_bg.jpg]"
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local wname = make_widefont_nodename(node.name) local def = minetest.registered_items[node.name]
local meta = minetest.get_meta(pos)
if minetest.registered_items[wname] then if def.allow_widefont then
local state = "off" local state = "off"
if string.find(node.name, "widefont") then state = "on" end if meta:get_int("widefont") == 1 then state = "on" end
form = form.."label[1,3.4;Use wide font]".. form = form.."label[1,3.4;Use wide font]"..
"image_button[1.1,3.7;1,0.6;signs_lib_switch_".. "image_button[1.1,3.7;1,0.6;signs_lib_switch_"..
state..".png;".. state..".png;"..
@ -578,7 +626,6 @@ function signs_lib.construct_sign(pos)
form = form.."button_exit[2,3.4;2,1;ok;"..S("Write").."]" form = form.."button_exit[2,3.4;2,1;ok;"..S("Write").."]"
end end
local meta = minetest.get_meta(pos)
meta:set_string("formspec", form) meta:set_string("formspec", form)
local i = meta:get_string("infotext") local i = meta:get_string("infotext")
if i == "" then -- it wasn't even set, so set it. if i == "" then -- it wasn't even set, so set it.
@ -628,21 +675,22 @@ function signs_lib.receive_fields(pos, formname, fields, sender)
signs_lib.update_sign(pos, fields) signs_lib.update_sign(pos, fields)
elseif fields.on or fields.off then elseif fields.on or fields.off then
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
local newname local meta = minetest.get_meta(pos)
local change
if fields.on and string.find(node.name, "widefont") then if fields.on and meta:get_int("widefont") == 1 then
newname = string.gsub(node.name, "_widefont", "") meta:set_int("widefont", 0)
elseif fields.off and not string.find(node.name, "widefont") then change = true
newname = make_widefont_nodename(node.name) elseif fields.off and meta:get_int("widefont") == 0 then
meta:set_int("widefont", 1)
change = true
end end
if newname then if change then
minetest.log("action", S("@1 flipped the wide-font switch to \"@2\" at @3", minetest.log("action", S("@1 flipped the wide-font switch to \"@2\" at @3",
(sender:get_player_name() or ""), (sender:get_player_name() or ""),
(fields.on and "off" or "on"), (fields.on and "off" or "on"),
minetest.pos_to_string(pos) minetest.pos_to_string(pos)
)) ))
minetest.swap_node(pos, {name = newname, param2 = node.param2})
signs_lib.construct_sign(pos) signs_lib.construct_sign(pos)
signs_lib.update_sign(pos, fields) signs_lib.update_sign(pos, fields)
end end
@ -700,17 +748,32 @@ function signs_lib.check_for_pole(pos, pointed_thing)
local pnode = minetest.get_node(ppos) local pnode = minetest.get_node(ppos)
local pdef = minetest.registered_items[pnode.name] local pdef = minetest.registered_items[pnode.name]
if (signs_lib.allowed_poles[pnode.name] if not pdef then return end
or (pdef and pdef.drawtype == "fencelike")
or string.find(pnode.name, "default:fence_") if type(pdef.check_for_pole) == "function" then
or string.find(pnode.name, "_post") local node = minetest.get_node(pos)
or string.find(pnode.name, "fencepost") local def = minetest.registered_items[node.name]
or string.find(pnode.name, "streets:streetlamp_basic_top") return pdef.check_for_pole(pos, node, def, ppos, pnode, pdef)
or (pnode.name == "streets:bigpole" and pnode.param2 < 4) elseif pdef.check_for_pole
or (pnode.name == "streets:bigpole" and pnode.param2 > 19 and pnode.param2 < 24) or pdef.drawtype == "fencelike"
) or string.find(pnode.name, "_post")
and or string.find(pnode.name, "fencepost") then
(pos.x ~= ppos.x or pos.z ~= ppos.z) then return true
end
end
function signs_lib.check_for_horizontal_pole(pos, pointed_thing)
local ppos = minetest.get_pointed_thing_position(pointed_thing)
local pnode = minetest.get_node(ppos)
local pdef = minetest.registered_items[pnode.name]
if not pdef then return end
if type(pdef.check_for_horiz_pole) == "function" then
local node = minetest.get_node(pos)
local def = minetest.registered_items[node.name]
return pdef.check_for_horiz_pole(pos, node, def, ppos, pnode, pdef)
elseif pdef.check_for_horiz_pole then
return true return true
end end
end end
@ -738,8 +801,7 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
local ppos = minetest.get_pointed_thing_position(pointed_thing) local ppos = minetest.get_pointed_thing_position(pointed_thing)
local pnode = minetest.get_node(ppos) local pnode = minetest.get_node(ppos)
local pdef = minetest.registered_items[pnode.name] local pdef = minetest.registered_items[pnode.name]
if def.allow_onpole 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 newparam2 local newparam2
local lookdir = minetest.yaw_to_dir(placer:get_look_horizontal()) local lookdir = minetest.yaw_to_dir(placer:get_look_horizontal())
if def.paramtype2 == "wallmounted" then if def.paramtype2 == "wallmounted" then
@ -749,6 +811,16 @@ function signs_lib.after_place_node(pos, placer, itemstack, pointed_thing, locke
end end
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = itemstack:get_name().."_onpole", param2 = newparam2}) minetest.swap_node(pos, {name = itemstack:get_name().."_onpole", param2 = newparam2})
elseif def.allow_onpole_horizontal and signs_lib.check_for_horizontal_pole(pos, pointed_thing) then
local newparam2
local lookdir = minetest.yaw_to_dir(placer:get_look_horizontal())
if def.paramtype2 == "wallmounted" then
newparam2 = minetest.dir_to_wallmounted(lookdir)
else
newparam2 = minetest.dir_to_facedir(lookdir)
end
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = itemstack:get_name().."_onpole_horiz", param2 = newparam2})
elseif def.allow_hanging and signs_lib.check_for_ceiling(pointed_thing) then elseif def.allow_hanging and signs_lib.check_for_ceiling(pointed_thing) then
local newparam2 = minetest.dir_to_facedir(placer:get_look_dir()) local newparam2 = minetest.dir_to_facedir(placer:get_look_dir())
local node = minetest.get_node(pos) local node = minetest.get_node(pos)
@ -769,7 +841,53 @@ function signs_lib.register_fence_with_sign()
minetest.log("warning", "[signs_lib] ".."Attempt to call no longer used function signs_lib.register_fence_with_sign()") minetest.log("warning", "[signs_lib] ".."Attempt to call no longer used function signs_lib.register_fence_with_sign()")
end end
local function register_sign(name, rdef) --[[
The main sign registration function
===================================
Example minimal recommended def for writable signs:
signs_lib.register_sign("foo:my_cool_sign", {
description = "Wooden cool sign",
inventory_image = "signs_lib_sign_cool_inv.png",
tiles = {
"signs_lib_sign_cool.png",
"signs_lib_sign_cool_edges.png"
},
number_of_lines = 2,
horiz_scaling = 0.8,
vert_scaling = 1,
line_spacing = 9,
font_size = 31,
x_offset = 7,
y_offset = 4,
chars_per_line = 40,
entity_info = "standard"
})
* default def assumes a wallmounted sign with on-pole being allowed.
*For signs that can support being on a pole, include in the def:
allow_onpole = true,
(defaults to disabled)
*For signs that can support being on a horizontal pole, include in the def:
allow_onpole_horizontal = true,
(defaults to disabled)
* onpole/onpole_horizontal are independent; one may be allowed without the other
* "standard" entity info implies the standard wood/steel sign model, in
wallmounted mode. For facedir signs using the standard model, use:
entity_info = {
mesh = "signs_lib_standard_wall_sign_entity.obj",
yaw = signs_lib.standard_yaw
},
]]--
function signs_lib.register_sign(name, rdef)
local def = table.copy(rdef) local def = table.copy(rdef)
if rdef.entity_info == "standard" then if rdef.entity_info == "standard" then
@ -832,9 +950,9 @@ local function register_sign(name, rdef)
minetest.register_node(":"..name, def) minetest.register_node(":"..name, def)
table.insert(signs_lib.lbm_restore_nodes, name) table.insert(signs_lib.lbm_restore_nodes, name)
if rdef.allow_onpole ~= false then local opdef = table.copy(def)
local opdef = table.copy(def) if rdef.allow_onpole or rdef.allow_onpole_horizontal then
local offset = 0.3125 local offset = 0.3125
if opdef.uses_slim_pole_mount then if opdef.uses_slim_pole_mount then
@ -859,16 +977,32 @@ local function register_sign(name, rdef)
end end
opdef.groups.not_in_creative_inventory = 1 opdef.groups.not_in_creative_inventory = 1
opdef.tiles[3] = "signs_lib_pole_mount.png"
opdef.mesh = string.gsub(opdef.mesh, ".obj$", "_onpole.obj") opdef.mesh = string.gsub(opdef.mesh, ".obj$", "_onpole.obj")
if opdef.entity_info then if opdef.entity_info then
opdef.entity_info.mesh = string.gsub(opdef.entity_info.mesh, ".obj$", "_onpole.obj") opdef.entity_info.mesh = string.gsub(opdef.entity_info.mesh, ".obj$", "_onpole.obj")
end end
end
-- setting one of item 3 or 4 to a texture and leaving the other "blank",
-- reveals either the vertical or horizontal pole mount part of the model
if rdef.allow_onpole then
opdef.tiles[3] = "signs_lib_pole_mount.png"
opdef.tiles[4] = "signs_lib_blank.png"
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
local ophdef = table.copy(opdef)
if rdef.allow_onpole_horizontal then
ophdef.tiles[3] = "signs_lib_blank.png"
ophdef.tiles[4] = "signs_lib_pole_mount.png"
minetest.register_node(":"..name.."_onpole_horiz", ophdef)
table.insert(signs_lib.lbm_restore_nodes, name.."_onpole_horiz")
end
if rdef.allow_hanging then if rdef.allow_hanging then
local hdef = table.copy(def) local hdef = table.copy(def)
@ -891,57 +1025,9 @@ local function register_sign(name, rdef)
minetest.register_node(":"..name.."_hanging", hdef) minetest.register_node(":"..name.."_hanging", hdef)
table.insert(signs_lib.lbm_restore_nodes, name.."_hanging") table.insert(signs_lib.lbm_restore_nodes, name.."_hanging")
end end
end
--[[
The main sign registration function
===================================
Example minimal recommended def for writable signs:
signs_lib.register_sign("foo:my_cool_sign", {
description = "Wooden cool sign",
inventory_image = "signs_lib_sign_cool_inv.png",
tiles = {
"signs_lib_sign_cool.png",
"signs_lib_sign_cool_edges.png"
},
number_of_lines = 2,
horiz_scaling = 0.8,
vert_scaling = 1,
line_spacing = 9,
font_size = 31,
x_offset = 7,
y_offset = 4,
chars_per_line = 40,
entity_info = "standard"
})
* default def assumes a wallmounted sign with on-pole being allowed.
*For signs that can't support onpole, include in the def:
allow_onpole = false,
* "standard" entity info implies the standard wood/steel sign model, in
wallmounted mode. For facedir signs using the standard model, use:
entity_info = {
mesh = "signs_lib_standard_wall_sign_entity.obj",
yaw = signs_lib.standard_yaw
},
]]--
function signs_lib.register_sign(name, rdef)
register_sign(name, rdef)
if rdef.allow_widefont then if rdef.allow_widefont then
table.insert(signs_lib.old_widefont_signs, name.."_widefont")
local wdef = table.copy(minetest.registered_items[name])
wdef.groups.not_in_creative_inventory = 1
wdef.horiz_scaling = wdef.horiz_scaling / 2
register_sign(name.."_widefont", wdef)
end end
end end
@ -991,8 +1077,22 @@ minetest.register_lbm({
end end
}) })
signs_lib.block_list = {} -- Convert widefont sign nodes to use one base node with meta flag to select wide mode
signs_lib.totalblocks = 0
minetest.register_lbm({
nodenames = signs_lib.old_widefont_signs,
name = "signs_lib:convert_widefont_signs",
label = "Convert widefont sign nodes",
run_at_every_load = false,
action = function(pos, node)
local basename = string.gsub(node.name, "_widefont", "")
minetest.swap_node(pos, {name = basename, param2 = node.param2})
local meta = minetest.get_meta(pos)
meta:set_int("widefont", 1)
signs_lib.delete_objects(pos)
signs_lib.update_sign(pos)
end
})
-- Maintain a list of currently-loaded blocks -- Maintain a list of currently-loaded blocks
minetest.register_lbm({ minetest.register_lbm({

176
compat.lua Normal file
View File

@ -0,0 +1,176 @@
local default_fences = {
"default:fence_wood",
"default:fence_acacia_wood",
"default:fence_aspen_wood",
"default:fence_junglewood",
"default:fence_pine_wood"
}
for _, n in ipairs(default_fences) do
minetest.override_item(n, {
check_for_pole = true
})
end
if minetest.get_modpath("streetspoles") then
local htj_north = {
[1] = true,
[3] = true,
[9] = true,
[11] = true,
[21] = true,
[23] = true
}
local htj_east = {
[0] = true,
[2] = true,
[16] = true,
[18] = true,
[20] = true,
[22] = true
}
local htj_south = {
[1] = true,
[3] = true,
[5] = true,
[7] = true,
[21] = true,
[23] = true
}
local htj_west = {
[0] = true,
[2] = true,
[12] = true,
[14] = true,
[20] = true,
[22] = true
}
local vtj_north = {
[8] = true,
[10] = true,
[13] = true,
[15] = true,
[17] = true,
[19] = true
}
local vtj_east = {
[4] = true,
[6] = true,
[8] = true,
[10] = true,
[17] = true,
[19] = true
}
local vtj_south = {
[4] = true,
[6] = true,
[13] = true,
[15] = true,
[17] = true,
[10] = true
}
local vtj_west = {
[4] = true,
[6] = true,
[8] = true,
[10] = true,
[13] = true,
[15] = true
}
minetest.override_item("streets:bigpole", {
check_for_pole = function(pos, node, def, ppos, pnode, pdef)
if pnode.param2 < 4
or (pnode.param2 > 19 and pnode.param2 < 24)
and (pos.x ~= ppos.x or pos.z ~= ppos.z) then
return true
end
end,
check_for_horiz_pole = function(pos, node, def, ppos, pnode, pdef)
if pnode.param2 > 3 and pnode.param2 < 12 then
if def.paramtype2 == "wallmounted" then
if node.param2 == 2 or node.param2 == 3 -- E/W
then return true
end
else
if node.param2 == 1 or node.param2 == 3 -- E/W
then return true
end
end
elseif pnode.param2 > 11 and pnode.param2 < 20 then
if def.paramtype2 == "wallmounted" then
if node.param2 == 4 or node.param2 == 5 then
return true
end
else
if node.param2 == 0 or node.param2 == 2 then
return true
end
end
end
end
})
minetest.override_item("streets:bigpole_tjunction", {
check_for_pole = function(pos, node, def, ppos, pnode, pdef)
if def.paramtype2 == "wallmounted" then
if (node.param2 == 4 and vtj_north[pnode.param2])
or (node.param2 == 2 and vtj_east[pnode.param2])
or (node.param2 == 5 and vtj_south[pnode.param2])
or (node.param2 == 3 and vtj_west[pnode.param2]) then
return true
end
else
if (node.param2 == 0 and vtj_north[pnode.param2])
or (node.param2 == 1 and vtj_east[pnode.param2])
or (node.param2 == 2 and vtj_south[pnode.param2])
or (node.param2 == 3 and vtj_west[pnode.param2]) then
return true
end
end
end,
check_for_horiz_pole = function(pos, node, def, ppos, pnode, pdef)
if def.paramtype2 == "wallmounted" then
if (node.param2 == 4 and htj_north[pnode.param2])
or (node.param2 == 2 and htj_east[pnode.param2])
or (node.param2 == 5 and htj_south[pnode.param2])
or (node.param2 == 3 and htj_west[pnode.param2]) then
return true
end
else
if (node.param2 == 0 and htj_north[pnode.param2])
or (node.param2 == 1 and htj_east[pnode.param2])
or (node.param2 == 2 and htj_south[pnode.param2])
or (node.param2 == 3 and htj_west[pnode.param2]) then
return true
end
end
end
})
end
if minetest.get_modpath("streetlamps") then
minetest.override_item("streets:streetlamp_basic_top_on", {
selection_box = {
type = "fixed",
fixed = {
{-0.3,-0.4,-0.3,0.3,0.5,0.3},
{-0.15,-0.4,-0.15,0.15,-1.55,0.15},
{-0.18,-1.55,-0.18,0.18,-2.5,0.18},
}
},
check_for_pole = true
})
end

View File

@ -1,3 +1,5 @@
default default
intllib? intllib?
screwdriver? screwdriver?
streetspoles?
streetlamps?

View File

@ -13,3 +13,4 @@ signs_lib.gettext = S
dofile(signs_lib.path.."/api.lua") dofile(signs_lib.path.."/api.lua")
dofile(signs_lib.path.."/encoding.lua") dofile(signs_lib.path.."/encoding.lua")
dofile(signs_lib.path.."/standard_signs.lua") dofile(signs_lib.path.."/standard_signs.lua")
dofile(signs_lib.path.."/compat.lua")

View File

@ -73,6 +73,62 @@ v -0.164063 0.125000 1.125000
v 0.164062 0.125000 1.125000 v 0.164062 0.125000 1.125000
v -0.164063 0.187500 1.125000 v -0.164063 0.187500 1.125000
v 0.164062 0.187500 1.125000 v 0.164062 0.187500 1.125000
v 0.187500 -0.125000 0.812500
v 0.187500 -0.125000 0.875000
v -0.187500 -0.125000 0.812500
v -0.187500 -0.125000 0.875000
v -0.187500 0.125000 0.812500
v 0.187500 0.125000 0.812500
v 0.187500 0.125000 0.875000
v -0.187500 0.125000 0.875000
v 0.187500 -0.125000 1.125000
v 0.187500 -0.125000 0.812500
v 0.125000 -0.125000 1.125000
v 0.125000 -0.125000 0.812500
v 0.187500 -0.164063 1.125000
v 0.187500 -0.164063 0.812500
v 0.125000 -0.164063 1.125000
v 0.125000 -0.164063 0.812500
v -0.125000 -0.125000 1.125000
v -0.125000 -0.125000 0.812500
v -0.187500 -0.125000 1.125000
v -0.187500 -0.125000 0.812500
v -0.125000 -0.164063 1.125000
v -0.125000 -0.164063 0.812500
v -0.187500 -0.164063 1.125000
v -0.187500 -0.164063 0.812500
v 0.187500 0.164062 1.125000
v 0.187500 0.164062 0.812500
v 0.125000 0.164062 1.125000
v 0.125000 0.164062 0.812500
v 0.187500 0.125000 1.125000
v 0.187500 0.125000 0.812500
v 0.125000 0.125000 1.125000
v 0.125000 0.125000 0.812500
v -0.125000 0.164062 1.125000
v -0.125000 0.164062 0.812500
v -0.187500 0.164062 1.125000
v -0.187500 0.164062 0.812500
v -0.125000 0.125000 1.125000
v -0.125000 0.125000 0.812500
v -0.187500 0.125000 1.125000
v -0.187500 0.125000 0.812500
v 0.187500 -0.164063 1.164063
v 0.187500 0.164062 1.164063
v 0.125000 -0.164063 1.164063
v 0.125000 0.164062 1.164063
v 0.187500 -0.164063 1.125000
v 0.187500 0.164062 1.125000
v 0.125000 -0.164063 1.125000
v 0.125000 0.164062 1.125000
v -0.125000 -0.164063 1.164063
v -0.125000 0.164062 1.164063
v -0.187500 -0.164063 1.164063
v -0.187500 0.164062 1.164063
v -0.125000 -0.164063 1.125000
v -0.125000 0.164062 1.125000
v -0.187500 -0.164063 1.125000
v -0.187500 0.164062 1.125000
vt 0.468750 0.812500 vt 0.468750 0.812500
vt 0.031250 0.812500 vt 0.031250 0.812500
vt 0.031250 0.187500 vt 0.031250 0.187500
@ -195,6 +251,110 @@ vt 0.453125 0.640625
vt 0.453125 0.593750 vt 0.453125 0.593750
vt 0.312500 0.593750 vt 0.312500 0.593750
vt 0.312500 0.640625 vt 0.312500 0.640625
vt 0.843750 0.507812
vt 0.703125 0.507812
vt 0.703125 0.093750
vt 0.843750 0.093750
vt 0.015625 0.507812
vt 0.015625 0.093750
vt 0.156250 0.093750
vt 0.156250 0.507812
vt 0.156250 0.031250
vt 0.703125 0.031250
vt 0.703125 0.578125
vt 0.156250 0.578125
vt 0.312500 0.640625
vt 0.312500 0.992188
vt 0.453125 0.992188
vt 0.453125 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.312500 0.992188
vt 0.312500 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.093750 0.992188
vt 0.093750 0.640625
vt 0.015625 0.992188
vt 0.015625 0.640625
vt 0.312500 0.640625
vt 0.312500 0.992188
vt 0.453125 0.992188
vt 0.453125 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.312500 0.992188
vt 0.312500 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.093750 0.992188
vt 0.093750 0.640625
vt 0.015625 0.992188
vt 0.015625 0.640625
vt 0.312500 0.640625
vt 0.312500 0.992188
vt 0.453125 0.992188
vt 0.453125 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.312500 0.992188
vt 0.312500 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.093750 0.992188
vt 0.093750 0.640625
vt 0.015625 0.992188
vt 0.015625 0.640625
vt 0.312500 0.640625
vt 0.312500 0.992188
vt 0.453125 0.992188
vt 0.453125 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.312500 0.992188
vt 0.312500 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.093750 0.992188
vt 0.093750 0.640625
vt 0.015625 0.992188
vt 0.015625 0.640625
vt 0.781250 0.664062
vt 0.781250 0.992188
vt 0.921875 0.992188
vt 0.921875 0.664062
vt 0.484375 0.664062
vt 0.484375 0.992188
vt 0.562500 0.992188
vt 0.562500 0.664062
vt 0.703125 0.992188
vt 0.703125 0.664062
vt 0.234375 0.593750
vt 0.234375 0.640625
vt 0.093750 0.640625
vt 0.093750 0.593750
vt 0.453125 0.640625
vt 0.453125 0.593750
vt 0.312500 0.593750
vt 0.312500 0.640625
vt 0.781250 0.664062
vt 0.781250 0.992188
vt 0.921875 0.992188
vt 0.921875 0.664062
vt 0.484375 0.664062
vt 0.484375 0.992188
vt 0.562500 0.992188
vt 0.562500 0.664062
vt 0.703125 0.992188
vt 0.703125 0.664062
vt 0.234375 0.593750
vt 0.234375 0.640625
vt 0.093750 0.640625
vt 0.093750 0.593750
vt 0.453125 0.640625
vt 0.453125 0.593750
vt 0.312500 0.593750
vt 0.312500 0.640625
vn 0.0000 0.0000 -1.0000 vn 0.0000 0.0000 -1.0000
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
@ -244,3 +404,37 @@ f 71/112/1 72/111/1 70/113/1 69/114/1
f 69/114/3 70/113/3 66/106/3 65/105/3 f 69/114/3 70/113/3 66/106/3 65/105/3
f 67/115/6 71/116/6 69/117/6 65/118/6 f 67/115/6 71/116/6 69/117/6 65/118/6
f 72/119/5 68/120/5 66/121/5 70/122/5 f 72/119/5 68/120/5 66/121/5 70/122/5
g sign_on_pole.001_Cube.002_pole_mount_horizontal
f 73/123/3 74/124/3 76/125/3 75/126/3
f 78/127/4 77/128/4 80/129/4 79/130/4
f 76/125/6 80/129/6 77/131/6 75/132/6
f 73/133/5 78/134/5 79/130/5 74/124/5
f 74/124/2 79/130/2 80/129/2 76/125/2
f 81/135/4 82/136/4 84/137/4 83/138/4
f 83/139/6 84/140/6 88/141/6 87/142/6
f 87/143/3 88/144/3 86/145/3 85/146/3
f 85/146/5 86/145/5 82/147/5 81/148/5
f 89/149/4 90/150/4 92/151/4 91/152/4
f 91/153/6 92/154/6 96/155/6 95/156/6
f 95/157/3 96/158/3 94/159/3 93/160/3
f 93/160/5 94/159/5 90/161/5 89/162/5
f 97/163/4 98/164/4 100/165/4 99/166/4
f 99/167/6 100/168/6 104/169/6 103/170/6
f 103/171/3 104/172/3 102/173/3 101/174/3
f 101/174/5 102/173/5 98/175/5 97/176/5
f 105/177/4 106/178/4 108/179/4 107/180/4
f 107/181/6 108/182/6 112/183/6 111/184/6
f 111/185/3 112/186/3 110/187/3 109/188/3
f 109/188/5 110/187/5 106/189/5 105/190/5
f 113/191/2 114/192/2 116/193/2 115/194/2
f 115/195/6 116/196/6 120/197/6 119/198/6
f 119/198/1 120/197/1 118/199/1 117/200/1
f 117/200/5 118/199/5 114/192/5 113/191/5
f 115/201/3 119/202/3 117/203/3 113/204/3
f 120/205/4 116/206/4 114/207/4 118/208/4
f 121/209/2 122/210/2 124/211/2 123/212/2
f 123/213/6 124/214/6 128/215/6 127/216/6
f 127/216/1 128/215/1 126/217/1 125/218/1
f 125/218/5 126/217/5 122/210/5 121/209/5
f 123/219/3 127/220/3 125/221/3 121/222/3
f 128/223/4 124/224/4 122/225/4 126/226/4

View File

@ -1,6 +1,6 @@
# Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden wall sign.blend' # Blender v2.79 (sub 0) OBJ File: 'basic_signs wooden sign.blend'
# www.blender.org # www.blender.org
o Cube.003_Cube o sign_on_pole_Cube.002
v 0.437500 -0.812500 -0.312500 v 0.437500 -0.812500 -0.312500
v 0.437500 -0.750000 -0.312500 v 0.437500 -0.750000 -0.312500
v 0.437500 -0.812500 0.312500 v 0.437500 -0.812500 0.312500
@ -17,40 +17,6 @@ v -0.437500 -0.812500 -0.312500
v -0.437500 -0.750000 -0.312500 v -0.437500 -0.750000 -0.312500
v -0.437500 -0.812500 0.312500 v -0.437500 -0.812500 0.312500
v -0.437500 -0.750000 0.312500 v -0.437500 -0.750000 0.312500
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
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
g Cube.003_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.003_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
o Cube.001
v -0.125000 -0.812500 -0.187500 v -0.125000 -0.812500 -0.187500
v -0.125000 -0.875000 -0.187500 v -0.125000 -0.875000 -0.187500
v -0.125000 -0.812500 0.187500 v -0.125000 -0.812500 0.187500
@ -107,6 +73,184 @@ v -0.164063 -1.125000 0.125000
v 0.164062 -1.125000 0.125000 v 0.164062 -1.125000 0.125000
v -0.164063 -1.125000 0.187500 v -0.164063 -1.125000 0.187500
v 0.164062 -1.125000 0.187500 v 0.164062 -1.125000 0.187500
v 0.187500 -0.812500 -0.125000
v 0.187500 -0.875000 -0.125000
v -0.187500 -0.812500 -0.125000
v -0.187500 -0.875000 -0.125000
v -0.187500 -0.812500 0.125000
v 0.187500 -0.812500 0.125000
v 0.187500 -0.875000 0.125000
v -0.187500 -0.875000 0.125000
v 0.187500 -1.125000 -0.125000
v 0.187500 -0.812500 -0.125000
v 0.125000 -1.125000 -0.125000
v 0.125000 -0.812500 -0.125000
v 0.187500 -1.125000 -0.164063
v 0.187500 -0.812500 -0.164063
v 0.125000 -1.125000 -0.164063
v 0.125000 -0.812500 -0.164063
v -0.125000 -1.125000 -0.125000
v -0.125000 -0.812500 -0.125000
v -0.187500 -1.125000 -0.125000
v -0.187500 -0.812500 -0.125000
v -0.125000 -1.125000 -0.164063
v -0.125000 -0.812500 -0.164063
v -0.187500 -1.125000 -0.164063
v -0.187500 -0.812500 -0.164063
v 0.187500 -1.125000 0.164062
v 0.187500 -0.812500 0.164062
v 0.125000 -1.125000 0.164062
v 0.125000 -0.812500 0.164062
v 0.187500 -1.125000 0.125000
v 0.187500 -0.812500 0.125000
v 0.125000 -1.125000 0.125000
v 0.125000 -0.812500 0.125000
v -0.125000 -1.125000 0.164062
v -0.125000 -0.812500 0.164062
v -0.187500 -1.125000 0.164062
v -0.187500 -0.812500 0.164062
v -0.125000 -1.125000 0.125000
v -0.125000 -0.812500 0.125000
v -0.187500 -1.125000 0.125000
v -0.187500 -0.812500 0.125000
v 0.187500 -1.164063 -0.164063
v 0.187500 -1.164063 0.164062
v 0.125000 -1.164063 -0.164063
v 0.125000 -1.164063 0.164062
v 0.187500 -1.125000 -0.164063
v 0.187500 -1.125000 0.164062
v 0.125000 -1.125000 -0.164063
v 0.125000 -1.125000 0.164062
v -0.125000 -1.164063 -0.164063
v -0.125000 -1.164063 0.164062
v -0.187500 -1.164063 -0.164063
v -0.187500 -1.164063 0.164062
v -0.125000 -1.125000 -0.164063
v -0.125000 -1.125000 0.164062
v -0.187500 -1.125000 -0.164063
v -0.187500 -1.125000 0.164062
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.843750 0.507812
vt 0.703125 0.507812
vt 0.703125 0.093750
vt 0.843750 0.093750
vt 0.015625 0.507812
vt 0.015625 0.093750
vt 0.156250 0.093750
vt 0.156250 0.507812
vt 0.156250 0.031250
vt 0.703125 0.031250
vt 0.703125 0.578125
vt 0.156250 0.578125
vt 0.312500 0.640625
vt 0.312500 0.992188
vt 0.453125 0.992188
vt 0.453125 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.312500 0.992188
vt 0.312500 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.093750 0.992188
vt 0.093750 0.640625
vt 0.015625 0.992188
vt 0.015625 0.640625
vt 0.312500 0.640625
vt 0.312500 0.992188
vt 0.453125 0.992188
vt 0.453125 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.312500 0.992188
vt 0.312500 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.093750 0.992188
vt 0.093750 0.640625
vt 0.015625 0.992188
vt 0.015625 0.640625
vt 0.312500 0.640625
vt 0.312500 0.992188
vt 0.453125 0.992188
vt 0.453125 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.312500 0.992188
vt 0.312500 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.093750 0.992188
vt 0.093750 0.640625
vt 0.015625 0.992188
vt 0.015625 0.640625
vt 0.312500 0.640625
vt 0.312500 0.992188
vt 0.453125 0.992188
vt 0.453125 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.312500 0.992188
vt 0.312500 0.640625
vt 0.234375 0.640625
vt 0.234375 0.992188
vt 0.093750 0.992188
vt 0.093750 0.640625
vt 0.015625 0.992188
vt 0.015625 0.640625
vt 0.781250 0.664062
vt 0.781250 0.992188
vt 0.921875 0.992188
vt 0.921875 0.664062
vt 0.484375 0.664062
vt 0.484375 0.992188
vt 0.562500 0.992188
vt 0.562500 0.664062
vt 0.703125 0.992188
vt 0.703125 0.664062
vt 0.234375 0.593750
vt 0.234375 0.640625
vt 0.093750 0.640625
vt 0.093750 0.593750
vt 0.453125 0.640625
vt 0.453125 0.593750
vt 0.312500 0.593750
vt 0.312500 0.640625
vt 0.781250 0.664062
vt 0.781250 0.992188
vt 0.921875 0.992188
vt 0.921875 0.664062
vt 0.484375 0.664062
vt 0.484375 0.992188
vt 0.562500 0.992188
vt 0.562500 0.664062
vt 0.703125 0.992188
vt 0.703125 0.664062
vt 0.234375 0.593750
vt 0.234375 0.640625
vt 0.093750 0.640625
vt 0.093750 0.593750
vt 0.453125 0.640625
vt 0.453125 0.593750
vt 0.312500 0.593750
vt 0.312500 0.640625
vt 0.843750 0.507812 vt 0.843750 0.507812
vt 0.703125 0.507812 vt 0.703125 0.507812
vt 0.703125 0.093750 vt 0.703125 0.093750
@ -211,44 +355,86 @@ vt 0.453125 0.640625
vt 0.453125 0.593750 vt 0.453125 0.593750
vt 0.312500 0.593750 vt 0.312500 0.593750
vt 0.312500 0.640625 vt 0.312500 0.640625
vn -1.0000 0.0000 0.0000
vn 1.0000 0.0000 0.0000
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 0.0000 1.0000 0.0000
g Cube.001_Cube.001_pole_mount vn 0.0000 -1.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 0.0000
vn -1.0000 0.0000 0.0000
g sign_on_pole_Cube.002_front-back
s off s off
f 17/19/7 18/20/7 20/21/7 19/22/7 f 8/1/1 4/2/1 2/3/1 6/4/1
f 22/23/8 21/24/8 24/25/8 23/26/8 f 3/5/2 7/6/2 5/7/2 1/8/2
f 20/21/9 24/25/9 21/27/9 19/28/9 g sign_on_pole_Cube.002_edges
f 17/29/10 22/30/10 23/26/10 18/20/10 f 13/9/3 14/10/3 10/11/3 9/12/3
f 18/20/11 23/26/11 24/25/11 20/21/11 f 11/13/4 12/14/4 16/15/4 15/16/4
f 25/31/8 26/32/8 28/33/8 27/34/8 f 11/13/5 9/17/5 10/18/5 12/14/5
f 27/35/9 28/36/9 32/37/9 31/38/9 f 13/9/6 15/16/6 16/15/6 14/10/6
f 31/39/7 32/40/7 30/41/7 29/42/7 g sign_on_pole_Cube.002_pole_mount
f 29/42/10 30/41/10 26/43/10 25/44/10 f 17/19/6 18/20/6 20/21/6 19/22/6
f 33/45/8 34/46/8 36/47/8 35/48/8 f 22/23/5 21/24/5 24/25/5 23/26/5
f 35/49/9 36/50/9 40/51/9 39/52/9 f 20/21/4 24/25/4 21/27/4 19/28/4
f 39/53/7 40/54/7 38/55/7 37/56/7 f 17/29/3 22/30/3 23/26/3 18/20/3
f 37/56/10 38/55/10 34/57/10 33/58/10 f 18/20/2 23/26/2 24/25/2 20/21/2
f 41/59/8 42/60/8 44/61/8 43/62/8 f 25/31/5 26/32/5 28/33/5 27/34/5
f 43/63/9 44/64/9 48/65/9 47/66/9 f 27/35/4 28/36/4 32/37/4 31/38/4
f 47/67/7 48/68/7 46/69/7 45/70/7 f 31/39/6 32/40/6 30/41/6 29/42/6
f 45/70/10 46/69/10 42/71/10 41/72/10 f 29/42/3 30/41/3 26/43/3 25/44/3
f 49/73/8 50/74/8 52/75/8 51/76/8 f 33/45/5 34/46/5 36/47/5 35/48/5
f 51/77/9 52/78/9 56/79/9 55/80/9 f 35/49/4 36/50/4 40/51/4 39/52/4
f 55/81/7 56/82/7 54/83/7 53/84/7 f 39/53/6 40/54/6 38/55/6 37/56/6
f 53/84/10 54/83/10 50/85/10 49/86/10 f 37/56/3 38/55/3 34/57/3 33/58/3
f 57/87/11 58/88/11 60/89/11 59/90/11 f 41/59/5 42/60/5 44/61/5 43/62/5
f 59/91/9 60/92/9 64/93/9 63/94/9 f 43/63/4 44/64/4 48/65/4 47/66/4
f 63/94/12 64/93/12 62/95/12 61/96/12 f 47/67/6 48/68/6 46/69/6 45/70/6
f 61/96/10 62/95/10 58/88/10 57/87/10 f 45/70/3 46/69/3 42/71/3 41/72/3
f 59/97/7 63/98/7 61/99/7 57/100/7 f 49/73/5 50/74/5 52/75/5 51/76/5
f 64/101/8 60/102/8 58/103/8 62/104/8 f 51/77/4 52/78/4 56/79/4 55/80/4
f 65/105/11 66/106/11 68/107/11 67/108/11 f 55/81/6 56/82/6 54/83/6 53/84/6
f 67/109/9 68/110/9 72/111/9 71/112/9 f 53/84/3 54/83/3 50/85/3 49/86/3
f 71/112/12 72/111/12 70/113/12 69/114/12 f 57/87/2 58/88/2 60/89/2 59/90/2
f 69/114/10 70/113/10 66/106/10 65/105/10 f 59/91/4 60/92/4 64/93/4 63/94/4
f 67/115/7 71/116/7 69/117/7 65/118/7 f 63/94/1 64/93/1 62/95/1 61/96/1
f 72/119/8 68/120/8 66/121/8 70/122/8 f 61/96/3 62/95/3 58/88/3 57/87/3
f 59/97/6 63/98/6 61/99/6 57/100/6
f 64/101/5 60/102/5 58/103/5 62/104/5
f 65/105/2 66/106/2 68/107/2 67/108/2
f 67/109/4 68/110/4 72/111/4 71/112/4
f 71/112/1 72/111/1 70/113/1 69/114/1
f 69/114/3 70/113/3 66/106/3 65/105/3
f 67/115/6 71/116/6 69/117/6 65/118/6
f 72/119/5 68/120/5 66/121/5 70/122/5
g sign_on_pole_Cube.002_pole_mount_horizontal
f 73/123/3 74/124/3 76/125/3 75/126/3
f 78/127/4 77/128/4 80/129/4 79/130/4
f 76/125/6 80/129/6 77/131/6 75/132/6
f 73/133/5 78/134/5 79/130/5 74/124/5
f 74/124/2 79/130/2 80/129/2 76/125/2
f 81/135/4 82/136/4 84/137/4 83/138/4
f 83/139/6 84/140/6 88/141/6 87/142/6
f 87/143/3 88/144/3 86/145/3 85/146/3
f 85/146/5 86/145/5 82/147/5 81/148/5
f 89/149/4 90/150/4 92/151/4 91/152/4
f 91/153/6 92/154/6 96/155/6 95/156/6
f 95/157/3 96/158/3 94/159/3 93/160/3
f 93/160/5 94/159/5 90/161/5 89/162/5
f 97/163/4 98/164/4 100/165/4 99/166/4
f 99/167/6 100/168/6 104/169/6 103/170/6
f 103/171/3 104/172/3 102/173/3 101/174/3
f 101/174/5 102/173/5 98/175/5 97/176/5
f 105/177/4 106/178/4 108/179/4 107/180/4
f 107/181/6 108/182/6 112/183/6 111/184/6
f 111/185/3 112/186/3 110/187/3 109/188/3
f 109/188/5 110/187/5 106/189/5 105/190/5
f 113/191/2 114/192/2 116/193/2 115/194/2
f 115/195/6 116/196/6 120/197/6 119/198/6
f 119/198/1 120/197/1 118/199/1 117/200/1
f 117/200/5 118/199/5 114/192/5 113/191/5
f 115/201/3 119/202/3 117/203/3 113/204/3
f 120/205/4 116/206/4 114/207/4 118/208/4
f 121/209/2 122/210/2 124/211/2 123/212/2
f 123/213/6 124/214/6 128/215/6 127/216/6
f 127/216/1 128/215/1 126/217/1 125/218/1
f 125/218/5 126/217/5 122/210/5 121/209/5
f 123/219/3 127/220/3 125/221/3 121/222/3
f 128/223/4 124/224/4 122/225/4 126/226/4

View File

@ -9,7 +9,9 @@ signs_lib.register_sign("default:sign_wall_wood", {
}, },
entity_info = "standard", entity_info = "standard",
allow_hanging = true, allow_hanging = true,
allow_widefont = true allow_widefont = true,
allow_onpole = true,
allow_onpole_horizontal = true
}) })
signs_lib.register_sign("default:sign_wall_steel", { signs_lib.register_sign("default:sign_wall_steel", {
@ -24,7 +26,9 @@ signs_lib.register_sign("default:sign_wall_steel", {
locked = true, locked = true,
entity_info = "standard", entity_info = "standard",
allow_hanging = true, allow_hanging = true,
allow_widefont = true allow_widefont = true,
allow_onpole = true,
allow_onpole_horizontal = true
}) })
minetest.register_alias("signs:sign_hanging", "default:sign_wall_wood_hanging") minetest.register_alias("signs:sign_hanging", "default:sign_wall_wood_hanging")

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B