minetest-mm/mods/roads/infrastructure/nodes.lua

1440 lines
47 KiB
Lua
Raw Normal View History

2020-10-26 17:38:53 +01:00
-- **************************************************************************************************** MATERIALS
-- Asphalt block
minetest.register_alias("infrastructure:asphalt", "streets:asphalt")
-- Concrete block
minetest.register_alias("infrastructure:concrete", "technic:concrete")
-- Concrete fence
minetest.register_alias("infrastructure:fence_concrete", "prefab:concrete_fence")
-- Galvanized steel block
minetest.register_node("infrastructure:galvanized_steel", {
description = "Galvanized steel",
tiles = {"infrastructure_galvanized_steel.png"},
drawtype = "normal",
paramtype = "light",
groups = {cracky = 2},
})
minetest.register_alias("galvanized_steel", "infrastructure:galvanized_steel")
-- Galvanized steel fence
minetest.register_node("infrastructure:fence_galvanized_steel", {
description = "Galvanized steel fence",
drawtype = "fencelike",
tiles = {"infrastructure_galvanized_steel.png"},
paramtype = "light",
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8},
},
groups = {cracky = 2},
})
-- **************************************************************************************************** PRECAST CONCRETE
-- Concrete seperating wall
minetest.register_node("infrastructure:precast_concrete_seperating_wall", {
description = "Precast concrete seperating wall",
tiles = {"infrastructure_concrete.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
node_box = {
type = "fixed",
fixed = {
{-5/16, -1/2, -7/16, 5/16, -1/4, 7/16},
{-1/16, -1/4, -7/16, 1/16, 1/2, 7/16},
{-3/16, -1/2, -5/16, 3/16, 0, -1/4},
{-3/16, -1/2, 1/4, 3/16, 0, 5/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-5/16, -1/2, -7/16, 5/16, -1/4, 7/16},
{-1/16, -1/4, -7/16, 1/16, 1/2, 7/16},
{-3/16, -1/2, -5/16, 3/16, 0, -1/4},
{-3/16, -1/2, 1/4, 3/16, 0, 5/16}
}
}
})
-- Concrete cylinder
minetest.register_node("infrastructure:precast_concrete_cylinder", {
description = "Precast concrete cylinder",
tiles = {"infrastructure_concrete.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
walkable = false,
climbable = true,
node_box = {
type = "fixed",
fixed = {
{3/8, -1/2, -1/2, 1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, -3/8, 1/2, 1/2},
{-1/2, -1/2, 3/8, 1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, 1/2, 1/2, -3/8}
}
},
selection_box = {
type = "fixed",
fixed = {
{3/8, -1/2, -1/2, 1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, -3/8, 1/2, 1/2},
{-1/2, -1/2, 3/8, 1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, 1/2, 1/2, -3/8}
}
}
})
-- Concrete grid paver
minetest.register_node("infrastructure:precast_concrete_grid_paver", {
description = "Precast concrete grid paver",
tiles = {
"infrastructure_grid_paver_top.png",
"infrastructure_grid_paver_bottom.png",
"infrastructure_concrete.png",
"infrastructure_concrete.png",
"infrastructure_concrete.png",
"infrastructure_concrete.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
node_box = {
type = "fixed",
fixed = {
{-1/2, -1/2, -1/2, 1/2, -1/2, 1/2},
{-1/2, -1/2 + 1/128, -1/2, 1/2, -1/2 + 1/128, 1/2},
{-1/2, -1/2 + 2/128, -1/2, 1/2, -1/2 + 2/128, 1/2},
{-1/2, -1/2 + 3/128, -1/2, 1/2, -1/2 + 3/128, 1/2},
{-1/2, -1/2 + 4/128, -1/2, 1/2, -1/2 + 4/128, 1/2},
{-1/2, -1/2 + 5/128, -1/2, 1/2, -1/2 + 5/128, 1/2},
{-1/2, -1/2 + 6/128, -1/2, 1/2, -1/2 + 6/128, 1/2},
{-1/2, -1/2 + 7/128, -1/2, 1/2, -1/2 + 7/128, 1/2},
{-1/2, -1/2 + 8/128, -1/2, 1/2, -1/2 + 8/128, 1/2},
}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2 + 8/128, 1/2}
},
after_place_node = function(pos)
pos.y = pos.y - 1
local node = minetest.get_node(pos)
if (node.name == "default:dirt_with_grass") then
pos.y = pos.y + 1
local node = minetest.get_node(pos)
node.name = "infrastructure:precast_concrete_grid_paver_with_grass"
minetest.swap_node(pos, node)
end
end
})
minetest.register_node("infrastructure:precast_concrete_grid_paver_with_grass", {
description = "Precast concrete grid paver with grass",
tiles = {
"infrastructure_grid_paver_top.png",
"infrastructure_grid_paver_bottom.png",
"infrastructure_grid_paver_grass.png",
"infrastructure_grid_paver_grass.png",
"infrastructure_grid_paver_grass.png",
"infrastructure_grid_paver_grass.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2,not_in_creative_inventory = 1},
drop = "infrastructure:precast_concrete_grid_paver",
node_box = {
type = "fixed",
fixed = {
{-1/2, -1/2, -1/2, 1/2, -1/2, 1/2},
{-1/2, -1/2 + 1/128, -1/2, 1/2, -1/2 + 1/128, 1/2},
{-1/2, -1/2 + 2/128, -1/2, 1/2, -1/2 + 2/128, 1/2},
{-1/2, -1/2 + 3/128, -1/2, 1/2, -1/2 + 3/128, 1/2},
{-1/2, -1/2 + 4/128, -1/2, 1/2, -1/2 + 4/128, 1/2},
{-1/2, -1/2 + 5/128, -1/2, 1/2, -1/2 + 5/128, 1/2},
{-1/2, -1/2 + 6/128, -1/2, 1/2, -1/2 + 6/128, 1/2},
{-1/2, -1/2 + 7/128, -1/2, 1/2, -1/2 + 7/128, 1/2},
{-1/2, -1/2 + 8/128, -1/2, 1/2, -1/2 + 8/128, 1/2},
{-3/8, -1/2, 1/4, -1/8, 0, 1/4},
{1/8, -1/2, 1/4, 3/8, 0, 1/4},
{-1/8, -1/2, 0, 1/8, 0, 0},
{-3/8, -1/2, -1/4, -1/8, 0, -1/4},
{1/8, -1/2, -1/4, 3/8, 0, -1/4},
{1/4, -1/2, -3/8, 1/4, 0, -1/8},
{1/4, -1/2, 1/8, 1/4, 0, 3/8},
{0, -1/2, -1/8, 0, 0, 1/8},
{-1/4, -1/2, -3/8, -1/4, 0, -1/8},
{-1/4, -1/2, 1/8, -1/4, 0, 3/8}
}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2 + 8/128, 1/2}
},
on_punch = function(pos, node)
local node = minetest.get_node(pos)
node.name = "infrastructure:precast_concrete_grid_paver"
minetest.swap_node(pos, node)
end
})
-- **************************************************************************************************** STEEL STRUCTURES
-- Truss
minetest.register_node("infrastructure:truss", {
description = "Truss",
tiles = {"infrastructure_truss.png"},
drawtype = "nodebox",
paramtype = "light",
groups = {cracky = 2},
node_box = {
type = "fixed",
fixed = {
{1/2, -1/2, -1/2, 1/2, 1/2, 1/2},
{-1/2, 1/2, -1/2, 1/2, 1/2, 1/2},
{-1/2, -1/2, 1/2, 1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, -1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, 1/2, -1/2, 1/2},
{-1/2, -1/2, -1/2, 1/2, 1/2, -1/2}
}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, 1/2, 1/2}
}
})
-- Wire netting
minetest.register_node("infrastructure:wire_netting", {
description = "Wire netting",
tiles = {"infrastructure_wire_netting.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
node_box = {
type = "fixed",
fixed = {-1/2, -1/2, 0, 1/2, 1/2, 0}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/8, 1/2, 1/2, 1/8}
}
})
-- Razor wire
minetest.register_node("infrastructure:razor_wire", {
description = "Razor wire",
tiles = {"infrastructure_razor_wire.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
node_box = {
type = "fixed",
fixed = {
{-1/2, 1/2, -1/2, 1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, 1/2, -1/2, 1/2},
{-1/2, -1/2, 1/2, 1/2, 1/2, 1/2},
{-1/2, -1/2, -1/2, 1/2, 1/2, -1/2}
}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, 1/2, 1/2}
},
walkable = false,
damage_per_second = 8
})
-- Drainage channel grating
minetest.register_node("infrastructure:drainage_channel_grating", {
description = "Truss",
tiles = {
"infrastructure_drainage_channel_grating.png",
"infrastructure_drainage_channel_grating.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
node_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 0, -3/8, 1/2}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 0, -3/8, 1/2}
}
})
-- Louver
minetest.register_node("infrastructure:louver_opened", {
description = "Louver",
tiles = {"infrastructure_galvanized_steel.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
node_box = {
type = "fixed",
fixed = {
{-1/2, 7/16, 0, 1/2, 1/2, 1/2},
{-1/2, -1/16, 0, 1/2, 0, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/2, 7/16, 0, 1/2, 1/2, 1/2},
{-1/2, -1/16, 0, 1/2, 0, 1/2}
}
},
on_punch = function(pos, node)
minetest.swap_node(pos, {name = "infrastructure:louver_closed", param2 = node.param2})
end
})
minetest.register_node("infrastructure:louver_closed", {
tiles = {"infrastructure_galvanized_steel.png"},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
drop = "infrastructure:louver_opened",
node_box = {
type = "fixed",
fixed = {
{-1/2, 1/16, 7/16, 1/2, 1/2, 1/2},
{-1/2, -7/16, 7/16, 1/2, 0, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/2, 1/16, 7/16, 1/2, 1/2, 1/2},
{-1/2, -7/16, 7/16, 1/2, 0, 1/2}
}
},
on_punch = function(pos, node)
minetest.swap_node(pos, {name = "infrastructure:louver_opened", param2 = node.param2})
end
})
minetest.register_alias("infrastructure:louver", "infrastructure:louver_opened")
-- Riffled sheet
minetest.register_node("infrastructure:riffled_sheet", {
description = "Riffled sheet",
tiles = {"infrastructure_riffled_sheet.png"},
inventory_image = "infrastructure_riffled_sheet.png",
wield_image = "infrastructure_riffled_sheet.png",
drawtype = "nodebox",
paramtype = "light",
groups = {cracky = 2, oddly_breakable_by_hand = 1},
node_box = {
type = "fixed",
fixed = {-1/2, -1/2, -1/2, 1/2, -1/2 + 0.001, 1/2}
},
selection_box = {
type = "fixed",
fixed = {-1/2, -1/4, -1/2, 1/2, -1/2 + 0.01, 1/2}
}
})
-- Corrugated sheet
minetest.register_node("infrastructure:corrugated_sheet", {
description = "corrugated sheet",
tiles = {"infrastructure_corrugated_sheet.png"},
inventory_image = "infrastructure_corrugated_sheet.png",
wield_image = "infrastructure_corrugated_sheet.png",
drawtype = "raillike",
paramtype = "light",
groups = {cracky = 2, oddly_breakable_by_hand = 1},
})
-- **************************************************************************************************** ADVANCED ITEMS
-- Displacement
function displacement(pos, placer)
local displaced_node = minetest.get_node(pos)
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
pos.y = pos.y - 1
local node = minetest.get_node(pos)
if string.find(node.name, "slab_") then
if (string.find(node.name, "_1")
and not (string.find(node.name, "_14")
or string.find(node.name, "_15")))
or string.find(node.name, "_2")
or (string.find(node.name, "_quarter") and not string.find(node.name, "_three_quarter"))
or string.find(node.name, "_two_sides")
or string.find(node.name, "_three_sides")
or string.find(node.name, "_displacement_3") then
pos.y = pos.y + 1
minetest.set_node(pos, {name = displaced_node.name.."_displacement_3", param2 = fdir})
elseif string.find(node.name, "_three_quarter") or string.find(node.name, "_displacement_1") then
pos.y = pos.y + 1
minetest.set_node(pos, {name = displaced_node.name.."_displacement_1", param2 = fdir})
elseif not (string.find(node.name, "_14")
or string.find(node.name, "_15"))
or string.find(node.name, "_displacement_2") then
pos.y = pos.y + 1
minetest.set_node(pos, {name = displaced_node.name.."_displacement_2", param2 = fdir})
end
end
end
-- Raised pavement marker yellow/yellow
minetest.register_node("infrastructure:marker_yellow_yellow", {
description = "Raised pavement marker with yellow & yellow retroreflectors",
tiles = {
"infrastructure_marker_top_yellow_yellow.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_side_yellow.png",
"infrastructure_marker_side_yellow.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3},
walkable = false,
light_source = MARKER_LIGHT_RANGE,
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/8, -1/16, -3/8, 1/8},
{-1/16, -1/2, -1/8, 1/16, -7/16, 1/8},
{1/16, -1/2, -1/8, 1/8, -3/8, 1/8},
{-1/16, -7/16, -1/16, 1/16, -3/8, 1/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/8, -1/16, -3/8, 1/8},
{-1/16, -1/2, -1/8, 1/16, -7/16, 1/8},
{1/16, -1/2, -1/8, 1/8, -3/8, 1/8},
{-1/16, -7/16, -1/16, 1/16, -3/8, 1/16}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:marker_yellow_yellow_displacement_"..tostring(i), {
tiles = {
"infrastructure_marker_top_yellow_yellow.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_side_yellow.png",
"infrastructure_marker_side_yellow.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3, not_in_creative_inventory = 1},
walkable = false,
light_source = MARKER_LIGHT_RANGE,
sunlight_propagates = true,
drop = "infrastructure:marker_yellow_yellow",
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/8, -1/16, -3/8 - i/4, 1/8},
{-1/16, -1/2 - i/4, -1/8, 1/16, -7/16 - i/4, 1/8},
{1/16, -1/2 - i/4, -1/8, 1/8, -3/8 - i/4, 1/8},
{-1/16, -7/16 - i/4, -1/16, 1/16, -3/8 - i/4, 1/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/8, -1/16, -3/8 - i/4, 1/8},
{-1/16, -1/2 - i/4, -1/8, 1/16, -7/16 - i/4, 1/8},
{1/16, -1/2 - i/4, -1/8, 1/8, -3/8 - i/4, 1/8},
{-1/16, -7/16 - i/4, -1/16, 1/16, -3/8 - i/4, 1/16}
}
}
})
end
-- Raised pavement marker red/yellow
minetest.register_node("infrastructure:marker_red_yellow", {
description = "Raised pavement marker with red & yellow retroreflectors",
tiles = {
"infrastructure_marker_top_red_yellow.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_side_yellow.png",
"infrastructure_marker_side_red.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3},
walkable = false,
light_source = MARKER_LIGHT_RANGE,
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/8, -1/16, -3/8, 1/8},
{-1/16, -1/2, -1/8, 1/16, -7/16, 1/8},
{1/16, -1/2, -1/8, 1/8, -3/8, 1/8},
{-1/16, -7/16, -1/16, 1/16, -3/8, 1/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/8, -1/16, -3/8, 1/8},
{-1/16, -1/2, -1/8, 1/16, -7/16, 1/8},
{1/16, -1/2, -1/8, 1/8, -3/8, 1/8},
{-1/16, -7/16, -1/16, 1/16, -3/8, 1/16}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:marker_red_yellow_displacement_"..tostring(i), {
tiles = {
"infrastructure_marker_top_red_yellow.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_bottom_side.png",
"infrastructure_marker_side_yellow.png",
"infrastructure_marker_side_red.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3, not_in_creative_inventory = 1},
walkable = false,
light_source = MARKER_LIGHT_RANGE,
sunlight_propagates = true,
drop = "infrastructure:marker_red_yellow",
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/8, -1/16, -3/8 - i/4, 1/8},
{-1/16, -1/2 - i/4, -1/8, 1/16, -7/16 - i/4, 1/8},
{1/16, -1/2 - i/4, -1/8, 1/8, -3/8 - i/4, 1/8},
{-1/16, -7/16 - i/4, -1/16, 1/16, -3/8 - i/4, 1/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/8, -1/16, -3/8 - i/4, 1/8},
{-1/16, -1/2 - i/4, -1/8, 1/16, -7/16 - i/4, 1/8},
{1/16, -1/2 - i/4, -1/8, 1/8, -3/8 - i/4, 1/8},
{-1/16, -7/16 - i/4, -1/16, 1/16, -3/8 - i/4, 1/16}
}
}
})
end
-- Retroreflective delineators
minetest.register_node("infrastructure:delineator", {
description = "Retroreflective delineator",
tiles = {
"infrastructure_concrete.png",
"infrastructure_concrete.png",
"infrastructure_delineator_wrapper_right.png",
"infrastructure_delineator_wrapper_left.png",
"infrastructure_delineator_retroreflector_yellow.png",
"infrastructure_delineator_retroreflector_red.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3},
light_source = DELINEATOR_LIGHT_RANGE,
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/8, 1/8, 1/2, -1/16},
{-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
{-1/8, -1/2, 1/16, 1/8, 1/2, 1/8}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/8, 1/8, 1/2, -1/16},
{-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
{-1/8, -1/2, 1/16, 1/8, 1/2, 1/8}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
minetest.register_node("infrastructure:delineator_guardrail", {
description = "Retroreflective delineator for guardrail",
tiles = {
"infrastructure_concrete.png",
"infrastructure_concrete.png",
"infrastructure_delineator_wrapper_right.png",
"infrastructure_delineator_wrapper_left.png",
"[combine:32x32:0,12=infrastructure_delineator_retroreflector_yellow.png:0,-20=infrastructure_delineator_retroreflector_yellow.png",
"[combine:32x32:0,12=infrastructure_delineator_retroreflector_red.png:0,-20=infrastructure_delineator_retroreflector_red.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3},
light_source = DELINEATOR_LIGHT_RANGE,
sunlight_propagates = true,
node_box = {
type = "fixed",
fixed = {
{-1/8, -3/8, -1/32, 1/8, 1/8, 1/32},
{1/8, -5/8, -1/16, 3/16, -1/4, 1/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -3/8, -1/32, 1/8, 1/8, 1/32},
{1/8, -5/8, -1/16, 3/16, -1/4, 1/16}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:delineator_displacement_"..tostring(i), {
tiles = {
"infrastructure_concrete.png",
"infrastructure_concrete.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_delineator_wrapper_right.png:0,"..tostring(i * 8 - 32).."=infrastructure_delineator_wrapper_right.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_delineator_wrapper_left.png:0,"..tostring(i * 8 - 32).."=infrastructure_delineator_wrapper_left.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_delineator_retroreflector_yellow.png:0,"..tostring(i * 8 - 32).."=infrastructure_delineator_retroreflector_yellow.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_delineator_retroreflector_red.png:0,"..tostring(i * 8 - 32).."=infrastructure_delineator_retroreflector_red.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3, not_in_creative_inventory = 1},
light_source = DELINEATOR_LIGHT_RANGE,
sunlight_propagates = true,
drop = "infrastructure:delineator",
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/8, 1/8, 1/2 - i/4, -1/16},
{-1/16, -1/2 - i/4, -1/16, 1/16, 1/2 - i/4, 1/16},
{-1/8, -1/2 - i/4, 1/16, 1/8, 1/2 - i/4, 1/8}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/8, 1/8, 1/2 - i/4, -1/16},
{-1/16, -1/2 - i/4, -1/16, 1/16, 1/2 - i/4, 1/16},
{-1/8, -1/2 - i/4, 1/16, 1/8, 1/2 - i/4, 1/8}
}
}
})
minetest.register_node("infrastructure:delineator_guardrail_displacement_"..tostring(i), {
tiles = {
"infrastructure_concrete.png",
"infrastructure_concrete.png",
"[combine:32x32:0,"..tostring(12 + i * 8).."=infrastructure_delineator_wrapper_right.png:0,"..tostring(i * 8 - 20).."=infrastructure_delineator_wrapper_right.png",
"[combine:32x32:0,"..tostring(12 + i * 8).."=infrastructure_delineator_wrapper_left.png:0,"..tostring(i * 8 - 20).."=infrastructure_delineator_wrapper_left.png",
"[combine:32x32:0,"..tostring(12 + i * 8).."=infrastructure_delineator_retroreflector_yellow.png:0,"..tostring(i * 8 - 20).."=infrastructure_delineator_retroreflector_yellow.png",
"[combine:32x32:0,"..tostring(12 + i * 8).."=infrastructure_delineator_retroreflector_red.png:0,"..tostring(i * 8 - 20).."=infrastructure_delineator_retroreflector_red.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 3, not_in_creative_inventory = 1},
light_source = DELINEATOR_LIGHT_RANGE,
sunlight_propagates = true,
drop = "infrastructure:delineator_guardrail",
node_box = {
type = "fixed",
fixed = {
{-1/8, -3/8 - i/4, -1/32, 1/8, 1/8 - i/4, 1/32},
{1/8, -5/8 - i/4, -1/16, 3/16, -1/4 - i/4, 1/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -3/8 - i/4, -1/32, 1/8, 1/8 - i/4, 1/32},
{1/8, -5/8 - i/4, -1/16, 3/16, -1/4 - i/4, 1/16}
}
}
})
end
-- Wire rope safety barrier
minetest.register_node("infrastructure:wire_rope_safety_barrier", {
description = "Wire rope safety barrier",
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_wire_rope_safety_barrier_back.png",
"infrastructure_wire_rope_safety_barrier_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
light_source = 1,
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/16, 1/8, -1/4, 1/16},
{-1/8, -1/2, -1/16, -1/16, -3/16, 1/16},
{1/16, -1/2, -1/16, 1/8, 1/16, 1/16},
{-1/8, -1/8, -1/16, 1/8, 0, 1/16},
{-1/8, -1/8, -1/16, -1/16, 1/2, 1/16},
{-1/8, 1/8, -1/16, 1/8, 1/4, 1/16},
{1/16, 1/8, -1/16, 1/8, 1/2, 1/16},
{-1/32, 1/4, -1/2, 1/32, 5/16, 1/2},
{-1/32, 0, -1/2, 1/32, 1/16, 1/2},
{-1/32, -1/4, -1/2, 1/32, -3/16, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/16, 1/8, 1/2, 1/16},
{-1/32, 1/4, -1/2, 1/32, 5/16, 1/2},
{-1/32, 0, -1/2, 1/32, 1/16, 1/2},
{-1/32, -1/4, -1/2, 1/32, -3/16, 1/2}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:wire_rope_safety_barrier_displacement_"..tostring(i), {
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_wire_rope_safety_barrier_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_wire_rope_safety_barrier_back.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_wire_rope_safety_barrier_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_wire_rope_safety_barrier_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2, not_in_creative_inventory = 1},
light_source = 1,
drop = "infrastructure:wire_rope_safety_barrier",
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/16, 1/8, -1/4 - i/4, 1/16},
{-1/8, -1/2 - i/4, -1/16, -1/16, -3/16 - i/4, 1/16},
{1/16, -1/2 - i/4, -1/16, 1/8, 1/16 - i/4, 1/16},
{-1/8, -1/8 - i/4, -1/16, 1/8, 0 - i/4, 1/16},
{-1/8, -1/8 - i/4, -1/16, -1/16, 1/2 - i/4, 1/16},
{-1/8, 1/8 - i/4, -1/16, 1/8, 1/4 - i/4, 1/16},
{1/16, 1/8 - i/4, -1/16, 1/8, 1/2 - i/4, 1/16},
{-1/32, 1/4 - i/4, -1/2, 1/32, 5/16 - i/4, 1/2},
{-1/32, 0 - i/4, -1/2, 1/32, 1/16 - i/4, 1/2},
{-1/32, -1/4 - i/4, -1/2, 1/32, -3/16 - i/4, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/16, 1/8, 1/2 - i/4, 1/16},
{-1/32, 1/4 - i/4, -1/2, 1/32, 5/16 - i/4, 1/2},
{-1/32, 0 - i/4, -1/2, 1/32, 1/16 - i/4, 1/2},
{-1/32, -1/4 - i/4, -1/2, 1/32, -3/16 - i/4, 1/2}
}
}
})
end
-- Cable barrier terminal
minetest.register_node("infrastructure:cable_barrier_terminal", {
description = "Cable barrier terminal",
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_cable_barrier_terminal_back.png",
"infrastructure_cable_barrier_terminal_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
light_source = 1,
node_box = {
type = "fixed",
fixed = {
{-1/4, -1/2, -1/2, 1/4, -3/8, 1/2},
{-1/4, -3/8, -1/4, 1/4, 1/2, -1/8},
{-1/4, -3/8, -1/8, -3/16, 0, 1/8},
{3/16, -3/8, -1/8, 1/4, 0, 1/8},
{-1/16, 7/32, -3/8, 1/16, 11/32, 1/4},
{-1/16, -1/32, -3/8, 1/16, 3/32, 1/4},
{-1/16, -9/32, -3/8, 1/16, -5/32, 1/4},
{-1/32, 1/4, 0, 1/32, 5/16, 1/2},
{-1/32, 0, 0, 1/32, 1/16, 1/2},
{-1/32, -1/4, 0, 1/32, -3/16, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/4, -1/2, -1/2, 1/4, -3/8, 1/2},
{-1/4, -3/8, -1/4, 1/4, 1/2, -1/8},
{-1/4, -3/8, -1/8, -3/16, 0, 1/8},
{3/16, -3/8, -1/8, 1/4, 0, 1/8},
{-1/16, 7/32, -3/8, 1/16, 11/32, 1/4},
{-1/16, -1/32, -3/8, 1/16, 3/32, 1/4},
{-1/16, -9/32, -3/8, 1/16, -5/32, 1/4},
{-1/32, 1/4, 0, 1/32, 5/16, 1/2},
{-1/32, 0, 0, 1/32, 1/16, 1/2},
{-1/32, -1/4, 0, 1/32, -3/16, 1/2}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:cable_barrier_terminal_displacement_"..tostring(i), {
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_cable_barrier_terminal_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_cable_barrier_terminal_back.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_cable_barrier_terminal_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_cable_barrier_terminal_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2, not_in_creative_inventory = 1},
light_source = 1,
drop = "infrastructure:cable_barrier_terminal",
node_box = {
type = "fixed",
fixed = {
{-1/4, -1/2 - i/4, -1/2, 1/4, -3/8 - i/4, 1/2},
{-1/4, -3/8 - i/4, -1/4, 1/4, 1/2 - i/4, -1/8},
{-1/4, -3/8 - i/4, -1/8, -3/16, 0 - i/4, 1/8},
{3/16, -3/8 - i/4, -1/8, 1/4, 0 - i/4, 1/8},
{-1/16, 7/32 - i/4, -3/8, 1/16, 11/32 - i/4, 1/4},
{-1/16, -1/32 - i/4, -3/8, 1/16, 3/32 - i/4, 1/4},
{-1/16, -9/32 - i/4, -3/8, 1/16, -5/32 - i/4, 1/4},
{-1/32, 1/4 - i/4, 0, 1/32, 5/16 - i/4, 1/2},
{-1/32, 0 - i/4, 0, 1/32, 1/16 - i/4, 1/2},
{-1/32, -1/4 - i/4, 0, 1/32, -3/16 - i/4, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/4, -1/2 - i/4, -1/2, 1/4, -3/8 - i/4, 1/2},
{-1/4, -3/8 - i/4, -1/4, 1/4, 1/2 - i/4, -1/8},
{-1/4, -3/8 - i/4, -1/8, -3/16, 0 - i/4, 1/8},
{3/16, -3/8 - i/4, -1/8, 1/4, 0 - i/4, 1/8},
{-1/16, 7/32 - i/4, -3/8, 1/16, 11/32 - i/4, 1/4},
{-1/16, -1/32 - i/4, -3/8, 1/16, 3/32 - i/4, 1/4},
{-1/16, -9/32 - i/4, -3/8, 1/16, -5/32 - i/4, 1/4},
{-1/32, 1/4 - i/4, 0, 1/32, 5/16 - i/4, 1/2},
{-1/32, 0 - i/4, 0, 1/32, 1/16 - i/4, 1/2},
{-1/32, -1/4 - i/4, 0, 1/32, -3/16 - i/4, 1/2}
}
}
})
end
-- Corrugated guide rail
minetest.register_node("infrastructure:corrugated_guide_rail", {
description = "Corrugated guide rail",
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_corrugated_guide_rail_side.png",
"infrastructure_corrugated_guide_rail_side.png",
"infrastructure_corrugated_guide_rail_back.png",
"infrastructure_corrugated_guide_rail_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
light_source = 1,
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/8, 1/8, 1/2, -1/16},
{-1/16, -1/2, -1/16, 1/16, 1/2, 1/16},
{-1/8, -1/2, 1/16, 1/8, 1/2, 1/8},
{-1/2, 1/4, -1/4, 1/2, 3/8, -1/8},
{-1/2, 1/8, -3/8, 1/2, 1/4, -1/4},
{-1/2, 0, -1/4, 1/2, 1/8, -1/8},
{-1/2, -1/8, -3/8, 1/2, 0, -1/4},
{-1/2, -1/4, -1/4, 1/2, -1/8, -1/8}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8},
{-1/2, 1/4, -1/4, 1/2, 3/8, -1/8},
{-1/2, 1/8, -3/8, 1/2, 1/4, -1/4},
{-1/2, 0, -1/4, 1/2, 1/8, -1/8},
{-1/2, -1/8, -3/8, 1/2, 0, -1/4},
{-1/2, -1/4, -1/4, 1/2, -1/8, -1/8}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:corrugated_guide_rail_displacement_"..tostring(i), {
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_corrugated_guide_rail_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_corrugated_guide_rail_side.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_corrugated_guide_rail_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_corrugated_guide_rail_side.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_corrugated_guide_rail_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_corrugated_guide_rail_back.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_corrugated_guide_rail_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_corrugated_guide_rail_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2, not_in_creative_inventory = 1},
light_source = 1,
drop = "infrastructure:corrugated_guide_rail",
node_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/8, 1/8, 1/2 - i/4, -1/16},
{-1/16, -1/2 - i/4, -1/16, 1/16, 1/2 - i/4, 1/16},
{-1/8, -1/2 - i/4, 1/16, 1/8, 1/2 - i/4, 1/8},
{-1/2, 1/4 - i/4, -1/4, 1/2, 3/8 - i/4, -1/8},
{-1/2, 1/8 - i/4, -3/8, 1/2, 1/4 - i/4, -1/4},
{-1/2, 0 - i/4, -1/4, 1/2, 1/8 - i/4, -1/8},
{-1/2, -1/8 - i/4, -3/8, 1/2, 0 - i/4, -1/4},
{-1/2, -1/4 - i/4, -1/4, 1/2, -1/8 - i/4, -1/8}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/8, -1/2 - i/4, -1/8, 1/8, 1/2 - i/4, 1/8},
{-1/2, 1/4 - i/4, -1/4, 1/2, 3/8 - i/4, -1/8},
{-1/2, 1/8 - i/4, -3/8, 1/2, 1/4 - i/4, -1/4},
{-1/2, 0 - i/4, -1/4, 1/2, 1/8 - i/4, -1/8},
{-1/2, -1/8 - i/4, -3/8, 1/2, 0 - i/4, -1/4},
{-1/2, -1/4 - i/4, -1/4, 1/2, -1/8 - i/4, -1/8}
}
}
})
end
-- Energy absorbing terminal
minetest.register_node("infrastructure:energy_absorbing_terminal", {
description = "Energy absorbing terminal",
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_energy_absorbing_terminal_back.png",
"infrastructure_energy_absorbing_terminal_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
node_box = {
type = "fixed",
fixed = {
{-1/2, -1/4, 1/8, 0, 1/2, 1/4},
{-3/8, -1/4, 1/4, -1/8, 3/8, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/2, -1/4, 1/8, 0, 1/2, 1/4},
{-3/8, -1/4, 1/4, -1/8, 3/8, 1/2}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
minetest.register_node("infrastructure:energy_absorbing_terminal_inversed", {
description = "Energy absorbing terminal inversed",
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_energy_absorbing_terminal_back.png",
"infrastructure_energy_absorbing_terminal_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
node_box = {
type = "fixed",
fixed = {
{0, -1/4, 1/8, 1/2, 1/2, 1/4},
{1/8, -1/4, 1/4, 3/8, 3/8, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{0, -1/4, 1/8, 1/2, 1/2, 1/4},
{1/8, -1/4, 1/4, 3/8, 3/8, 1/2}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:energy_absorbing_terminal_displacement_"..tostring(i), {
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_energy_absorbing_terminal_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_energy_absorbing_terminal_back.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_energy_absorbing_terminal_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_energy_absorbing_terminal_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2, not_in_creative_inventory = 1},
light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
drop = "infrastructure:energy_absorbing_terminal",
node_box = {
type = "fixed",
fixed = {
{-1/2, -1/4 - i/4, 1/8, 0, 1/2 - i/4, 1/4},
{-3/8, -1/4 - i/4, 1/4, -1/8, 3/8 - i/4, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/2, -1/4 - i/4, 1/8, 0, 1/2 - i/4, 1/4},
{-3/8, -1/4 - i/4, 1/4, -1/8, 3/8 - i/4, 1/2}
}
}
})
minetest.register_node("infrastructure:energy_absorbing_terminal_inversed_displacement_"..tostring(i), {
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_galvanized_steel.png:0,"..tostring(i * 8 - 32).."=infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_energy_absorbing_terminal_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_energy_absorbing_terminal_back.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_energy_absorbing_terminal_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_energy_absorbing_terminal_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2, not_in_creative_inventory = 1},
light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
drop = "infrastructure:energy_absorbing_terminal_inversed",
node_box = {
type = "fixed",
fixed = {
{0, -1/4 - i/4, 1/8, 1/2, 1/2 - i/4, 1/4},
{1/8, -1/4 - i/4, 1/4, 3/8, 3/8 - i/4, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{0, -1/4 - i/4, 1/8, 1/2, 1/2 - i/4, 1/4},
{1/8, -1/4 - i/4, 1/4, 3/8, 3/8 - i/4, 1/2}
}
}
})
end
-- Fitch barrel
minetest.register_node("infrastructure:fitch_barrel", {
description = "Fitch barrel",
tiles = {
"infrastructure_fitch_barrel_top.png",
"infrastructure_fitch_barrel_bottom.png",
"infrastructure_fitch_barrel_side.png",
"infrastructure_fitch_barrel_side.png",
"infrastructure_fitch_barrel_side.png",
"infrastructure_fitch_barrel_side.png"
},
drawtype = "nodebox",
paramtype = "light",
groups = {cracky = 2},
light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
node_box = {
type = "fixed",
fixed = {-3/8, -1/2, -3/8, 3/8, 1/2, 3/8}
},
selection_box = {
type = "fixed",
fixed = {-3/8, -1/2, -3/8, 3/8, 1/2, 3/8}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:fitch_barrel_displacement_"..tostring(i), {
tiles = {
"infrastructure_fitch_barrel_top.png",
"infrastructure_fitch_barrel_bottom.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_fitch_barrel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_fitch_barrel_side.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_fitch_barrel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_fitch_barrel_side.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_fitch_barrel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_fitch_barrel_side.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_fitch_barrel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_fitch_barrel_side.png"
},
drawtype = "nodebox",
paramtype = "light",
groups = {cracky = 2, not_in_creative_inventory = 1},
light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
drop = "infrastructure:fitch_barrel",
node_box = {
type = "fixed",
fixed = {-3/8, -1/2 - i/4, -3/8, 3/8, 1/2 - i/4, 3/8}
},
selection_box = {
type = "fixed",
fixed = {-3/8, -1/2 - i/4, -3/8, 3/8, 1/2 - i/4, 3/8}
}
})
end
-- Crowd control barricade
minetest.register_node("infrastructure:crowd_control_barricade", {
description = "Crowd control barricade",
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_crowd_control_barricade_back.png",
"infrastructure_crowd_control_barricade_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
light_source = 1,
node_box = {
type = "fixed",
fixed = {
{-1/2, -1/4, 0, 1/2, 1/2, 0},
{-7/16, -1/2, -1/32, -3/8, 1/8, 1/32},
{3/8, -1/2, -1/32, 7/16, 1/8, 1/32},
{-7/16, -1/2, -1/4, -3/8, -7/16, 1/4},
{3/8, -1/2, -1/4, 7/16, -7/16, 1/4}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/2, -1/4, 0, 1/2, 1/2, 0},
{-7/16, -1/2, -1/32, -3/8, 1/8, 1/32},
{3/8, -1/2, -1/32, 7/16, 1/8, 1/32},
{-7/16, -1/2, -1/4, -3/8, -7/16, 1/4},
{3/8, -1/2, -1/4, 7/16, -7/16, 1/4}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:crowd_control_barricade_"..tostring(i), {
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_crowd_control_barricade_back.png:0,"..tostring(i * 8 - 32).."=infrastructure_crowd_control_barricade_back.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_crowd_control_barricade_front.png:0,"..tostring(i * 8 - 32).."=infrastructure_crowd_control_barricade_front.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2, not_in_creative_inventory = 1},
light_source = 1,
drop = "infrastructure:crowd_control_barricade",
node_box = {
type = "fixed",
fixed = {
{-1/2, -1/4 - i/4, 0, 1/2, 1/2 - i/4, 0},
{-7/16, -1/2 - i/4, -1/32, -3/8, 1/8 - i/4, 1/32},
{3/8, -1/2 - i/4, -1/32, 7/16, 1/8 - i/4, 1/32},
{-7/16, -1/2 - i/4, -1/4, -3/8, -7/16 - i/4, 1/4},
{3/8, -1/2 - i/4, -1/4, 7/16, -7/16 - i/4, 1/4}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/2, -1/4 - i/4, 0, 1/2, 1/2 - i/4, 0},
{-7/16, -1/2 - i/4, -1/32, -3/8, 1/8 - i/4, 1/32},
{3/8, -1/2 - i/4, -1/32, 7/16, 1/8 - i/4, 1/32},
{-7/16, -1/2 - i/4, -1/4, -3/8, -7/16 - i/4, 1/4},
{3/8, -1/2 - i/4, -1/4, 7/16, -7/16 - i/4, 1/4}
}
}
})
end
-- Anti-dazzling panel
minetest.register_node("infrastructure:anti_dazzling_panel", {
description = "Anti-dazzling panel",
tiles = {
"infrastructure_anti_dazzling_panel_top_bottom.png",
"infrastructure_anti_dazzling_panel_top_bottom.png",
"infrastructure_anti_dazzling_panel_side.png",
"infrastructure_anti_dazzling_panel_side.png",
"infrastructure_anti_dazzling_panel_side.png",
"infrastructure_anti_dazzling_panel_side.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
light_source = 1,
node_box = {
type = "fixed",
fixed = {
{-1/4, -1/2, 0, 1/4, 1/2, 0},
{-1/8, -1/2, -1/16, 1/8, -3/8, 1/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/4, -1/2, 0, 1/4, 1/2, 0},
{-1/8, -1/2, -1/16, 1/8, -3/8, 1/16}
}
},
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
minetest.register_node("infrastructure:anti_dazzling_panel_displacement_"..tostring(i), {
tiles = {
"infrastructure_anti_dazzling_panel_top_bottom.png",
"infrastructure_anti_dazzling_panel_top_bottom.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_anti_dazzling_panel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_anti_dazzling_panel_side.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_anti_dazzling_panel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_anti_dazzling_panel_side.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_anti_dazzling_panel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_anti_dazzling_panel_side.png",
"[combine:32x32:0,"..tostring(i * 8).."=infrastructure_anti_dazzling_panel_side.png:0,"..tostring(i * 8 - 32).."=infrastructure_anti_dazzling_panel_side.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2, not_in_creative_inventory = 1},
light_source = 1,
drop = "infrastructure:anti_dazzling_panel",
node_box = {
type = "fixed",
fixed = {
{-1/4, -1/2 - i/4, 0, 1/4, 1/2 - i/4, 0},
{-1/8, -1/2 - i/4, -1/16, 1/8, -3/8 - i/4, 1/16}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/4, -1/2 - i/4, 0, 1/4, 1/2 - i/4, 0},
{-1/8, -1/2 - i/4, -1/16, 1/8, -3/8 - i/4, 1/16}
}
}
})
end
-- Traffic cone
local cbox = {
type = "fixed",
fixed = { -0.25, -0.5, -0.25, 0.25, 0.4065, 0.25 }
}
minetest.register_node("infrastructure:traffic_cone", {
description = "Traffic cone",
tiles = { "infrastructure_traffic_cone.png" },
drawtype = "mesh",
mesh = "infrastructure_traffic_cone.obj",
paramtype = "light",
groups = {cracky = 2},
walkable = false,
light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
collision_box = cbox,
selection_box = cbox,
after_place_node = function(pos, placer)
displacement(pos, placer)
end
})
for i = 1, 3 do
local cbox = {
type = "fixed",
fixed = { -0.25, -0.5 - i/4, -0.25, 0.25, 0.4065 - i/4, 0.25 }
}
minetest.register_node("infrastructure:traffic_cone_displacement_"..tostring(i), {
tiles = { "infrastructure_traffic_cone.png" },
drawtype = "mesh",
mesh = "infrastructure_traffic_cone_i"..i..".obj",
paramtype = "light",
groups = {cracky = 2, not_in_creative_inventory = 1},
walkable = false,
light_source = ENERGY_ABSORBING_TERMINAL_LIGHT_RANGE,
drop = "infrastructure:traffic_cone",
collision_box = cbox,
selection_box = cbox,
})
end
-- Noise barrier
minetest.register_node("infrastructure:noise_barrier", {
description = "Noise barrier",
tiles = {
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_galvanized_steel.png",
"infrastructure_noise_barrier.png",
"infrastructure_noise_barrier.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2},
light_source = 1,
node_box = {
type = "fixed",
fixed = {
{-1/2, -1/2, 5/16, 1/2, 1/2, 7/16},
{-1/2, -1/2, 1/4, 1/2, -7/16, 1/2},
{-1/2, 7/16, 1/4, 1/2, 1/2, 1/2},
{-1/2, -1/2, 1/4, -7/16, 1/2, 1/2},
{7/16, -1/2, 1/4, 1/2, 1/2, 1/2}
}
},
selection_box = {
type = "fixed",
fixed = {
{-1/2, -1/2, 1/4, 1/2, 1/2, 1/2},
}
}
})