204 lines
No EOL
6.4 KiB
Lua
204 lines
No EOL
6.4 KiB
Lua
--[[
|
|
## StreetsMod 2.0 ##
|
|
Submod: accessories
|
|
Optional: true
|
|
]]
|
|
|
|
minetest.register_node(":streets:delineator", {
|
|
description = "Delineator",
|
|
tiles = { "streets_delineator_top.png", "streets_delineator_top.png", "streets_delineator_left.png", "streets_delineator_right.png", "streets_delineator_back.png", "streets_delineator_front.png" },
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = { snappy = 2 },
|
|
light_source = 2,
|
|
sunlight_propagates = true,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{ -0.125, -0.5, -0.0625, 0.125, 0.4375, 0.0625 }, -- Body
|
|
{ 0, 0.4375, -0.0625, 0.125, 0.5, 0.0625 }, -- Top
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{ -0.125, -0.5, -0.0625, 0.125, 0.5, 0.0625 }, -- Body
|
|
}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "streets:delineator 10",
|
|
recipe = {
|
|
{ "dye:orange", "default:steel_ingot", "dye:orange" },
|
|
{ "dye:white", "default:steel_ingot", "dye:black" }
|
|
}
|
|
})
|
|
|
|
minetest.register_node("streets:fence_chainlink", {
|
|
description = "Chainlink Fence",
|
|
paramtype = "light",
|
|
drawtype = "nodebox",
|
|
tiles = { "streets_fence_chainlink.png" },
|
|
sunlight_propagates = true,
|
|
groups = { snappy = 1, wall = 1 },
|
|
node_box = {
|
|
type = "connected",
|
|
fixed = { { -1 / 32, -0.5, -1 / 32, 1 / 32, 0.5, 1 / 32 } },
|
|
connect_front = { { 0, -0.5, -0.5, 0, 0.5, 0 } }, -- z-
|
|
connect_back = { { 0, -0.5, 0, 0, 0.5, 0.5 } }, -- z+
|
|
connect_left = { { -0.5, -0.5, 0, 0, 0.5, 0 } }, -- x-
|
|
connect_right = { { 0, -0.5, 0, 0.5, 0.5, 0 } }, -- x+
|
|
},
|
|
selection_box = {
|
|
type = "connected",
|
|
fixed = { { -1 / 16, -0.5, -1 / 16, 1 / 16, 0.5, 1 / 16 } },
|
|
connect_front = { { 0, -0.5, -0.5, 0, 0.5, 0 } }, -- z-
|
|
connect_back = { { 0, -0.5, 0, 0, 0.5, 0.5 } }, -- z+
|
|
connect_left = { { -0.5, -0.5, 0, 0, 0.5, 0 } }, -- x-
|
|
connect_right = { { 0, -0.5, 0, 0.5, 0.5, 0 } }, -- x+
|
|
},
|
|
connects_to = { "group:wall", "group:stone", "group:wood", "group:tree", "group:concrete" },
|
|
sound = default.node_sound_stone_defaults()
|
|
})
|
|
|
|
local function toggleDoor(pos, node, player, action)
|
|
local name = player:get_player_name()
|
|
if minetest.is_protected(pos, name) and not minetest.check_player_privs(name, { protection_bypass = true }) then
|
|
minetest.record_protection_violation(pos, name)
|
|
return
|
|
end
|
|
local newnode = node
|
|
if action == "close" then
|
|
newnode.name = node.name:gsub("open", "closed")
|
|
elseif action == "open" then
|
|
newnode.name = node.name:gsub("closed", "open")
|
|
end
|
|
minetest.swap_node(pos, newnode)
|
|
local upper_pos = streets.copytable(pos)
|
|
upper_pos.y = upper_pos.y + 1
|
|
local upper_node = minetest.get_node(upper_pos)
|
|
if (upper_node.name == "streets:fence_chainlink_door_closed" and action == "open")
|
|
or (upper_node.name == "streets:fence_chainlink_door_open" and action == "close") then
|
|
toggleDoor(upper_pos, upper_node, player, action)
|
|
end
|
|
local under_pos = streets.copytable(pos)
|
|
under_pos.y = under_pos.y - 1
|
|
local under_node = minetest.get_node(under_pos)
|
|
if (under_node.name == "streets:fence_chainlink_door_closed" and action == "open")
|
|
or (under_node.name == "streets:fence_chainlink_door_open" and action == "close") then
|
|
toggleDoor(under_pos, under_node, player, action)
|
|
end
|
|
end
|
|
|
|
minetest.register_node("streets:fence_chainlink_door_open", {
|
|
description = "Chainlink Fence Door (Locked)",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
tiles = { "streets_fence_chainlink_door.png" },
|
|
sunlight_propagates = true,
|
|
groups = { snappy = 1, wall = 1, not_in_creative_inventory = 1 },
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{ -16 / 32, -0.5, -1 / 32, -14 / 32, 0.5, 1 / 32 },
|
|
{ 14 / 32, -0.5, -1 / 32, 16 / 32, 0.5, 1 / 32 },
|
|
{ -15 / 32, -0.5, 0, -15 / 32, 0.5, 0.5 },
|
|
{ 15 / 32, -0.5, 0, 15 / 32, 0.5, 0.5 }
|
|
},
|
|
},
|
|
sound = default.node_sound_stone_defaults(),
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
toggleDoor(pos, node, player, "close")
|
|
end,
|
|
drop = "streets:fence_chainlink_door_closed",
|
|
})
|
|
|
|
minetest.register_node("streets:fence_chainlink_door_closed", {
|
|
description = "Chainlink Fence Door (Locked)",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
drawtype = "nodebox",
|
|
tiles = { "streets_fence_chainlink_door.png" },
|
|
sunlight_propagates = true,
|
|
groups = { snappy = 1, wall = 1 },
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{ -16 / 32, -0.5, -1 / 32, -14 / 32, 0.5, 1 / 32 },
|
|
{ 14 / 32, -0.5, -1 / 32, 16 / 32, 0.5, 1 / 32 },
|
|
{ -15 / 32, -0.5, 0, 15 / 32, 0.5, 0 }
|
|
},
|
|
},
|
|
sound = default.node_sound_stone_defaults(),
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
toggleDoor(pos, node, player, "open")
|
|
end,
|
|
})
|
|
|
|
|
|
|
|
minetest.register_craft({
|
|
output = "streets:fence_chainlink 33",
|
|
recipe = {
|
|
{ "", "dye:dark_green", "" },
|
|
{ "default:steel_ingot", "default:stick", "default:steel_ingot" },
|
|
{ "default:steel_ingot", "default:stick", "default:steel_ingot" }
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "streets:fence_chainlink_door_closed",
|
|
recipe = {
|
|
{ "streets:fence_chainlink", "streets:fence_chainlink", "" },
|
|
{ "streets:fence_chainlink", "streets:fence_chainlink", "" },
|
|
{ "streets:fence_chainlink", "streets:fence_chainlink", "" }
|
|
}
|
|
})
|
|
|
|
minetest.register_node("streets:guardrail", {
|
|
description = "Guardrail",
|
|
paramtype = "light",
|
|
drawtype = "nodebox",
|
|
tiles = { "streets_guardrail.png" },
|
|
sunlight_propagates = true,
|
|
groups = { cracky = 1, wall = 1 },
|
|
node_box = {
|
|
type = "connected",
|
|
fixed = {
|
|
{ -0.1, -0.5, -0.1, 0.1, 0.5, 0.1 },
|
|
},
|
|
connect_front = {
|
|
{ 0, -0.1875, -0.5, 0, 0.4375, 0 },
|
|
{ -0.0625, 0.1875, -0.5, 0.0625, 0.3125, 0 },
|
|
{ -0.0625, -0.0625, -0.5, 0.0625, 0.0625, 0 },
|
|
}, -- z-
|
|
connect_back = {
|
|
{ 0, -0.1875, 0, 0, 0.4375, 0.5 },
|
|
{ -0.0625, 0.1875, 0, 0.0625, 0.3125, 0.5 },
|
|
{ -0.0625, -0.0625, 0, 0.0625, 0.0625, 0.5 },
|
|
}, -- z+
|
|
connect_left = {
|
|
{ -0.5, -0.1875, 0, 0, 0.4375, 0 },
|
|
{ -0.5, 0.1875, -0.0625, 0, 0.3125, 0.0625 },
|
|
{ -0.5, -0.0625, -0.0625, 0, 0.0625, 0.0625 },
|
|
}, -- x-
|
|
connect_right = {
|
|
{ 0, -0.1875, 0, 0.5, 0.4375, 0 },
|
|
{ 0, 0.1875, -0.0625, 0.5, 0.3125, 0.0625 },
|
|
{ 0, -0.0625, -0.0625, 0.5, 0.0625, 0.0625 },
|
|
}, -- x+
|
|
},
|
|
connects_to = { "group:wall", "group:stone", "group:wood", "group:tree", "group:concrete" },
|
|
sound = default.node_sound_stone_defaults()
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "streets:guardrail 12",
|
|
recipe = {
|
|
{ "streets:bigpole", "default:steel_ingot", "streets:bigpole" },
|
|
{ "streets:bigpole", "default:steel_ingot", "streets:bigpole" }
|
|
}
|
|
}) |