signs_lib/compat.lua
Vanessa Dannenberg 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

177 lines
3.7 KiB
Lua

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