2016-05-30 15:09:31 -05:00

150 lines
3.9 KiB
Lua

--[[
## StreetsMod 2.0 ##
Submod: laneuse
Optional: true
]]
local nodebox = {
{-7/16, -7/16, -1/8, 7/16, 7/16, 1/8}, --Face
{-7/16, 0, -1/4, -3/8, 7/16, -1/8}, --Visor Left
{3/8, 0, -1/4, 7/16, 7/16, -1/8}, --Visor Right
{-7/16, 3/8, -5/16, 7/16, 7/16, -1/8}, --Visor Top
{-1/4, -1/4, 0.85, 1/4, 1/4, 1/8}, --Mounting Bracket
}
minetest.register_node("streets:lane_use_off", {
description = "Lane Use Signal",
tiles = {
"streets_tl_bg.png",
"streets_tl_bg.png",
"streets_tl_bg.png",
"streets_tl_bg.png",
"streets_tl_bg.png",
"streets_laneuse_off.png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", "field[channel;Channel;${channel}]")
end,
groups = {cracky = 3},
node_box = {
type = "fixed",
fixed = nodebox
},
selection_box = {
type = "fixed",
fixed = nodebox
},
on_receive_fields = function(pos, formname, fields, sender)
local name = sender: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
if (fields.channel) then
minetest.get_meta(pos):set_string("channel", fields.channel)
end
end,
digiline = {
receptor = {},
effector = {
action = function(pos, node, channel, msg)
local setchan = minetest.get_meta(pos):get_string("channel")
if setchan ~= channel then
return
end
msg = msg:lower()
if (msg=="off") then
node.name = "streets:lane_use_off"
elseif (msg=="green") then
node.name = "streets:lane_use_green"
elseif (msg=="red") then
node.name = "streets:lane_use_red"
elseif (msg=="yellow") then
node.name = "streets:lane_use_yellow"
end
minetest.set_node(pos,node)
minetest.get_meta(pos):set_string("channel",setchan)
end
}
}
})
for _,v in pairs({"green","yellow","red"}) do
minetest.register_node("streets:lane_use_"..v, {
drop = "streets:lane_use_off",
tiles = {
"streets_tl_bg.png",
"streets_tl_bg.png",
"streets_tl_bg.png",
"streets_tl_bg.png",
"streets_tl_bg.png",
"streets_laneuse_"..v..".png"
},
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", "field[channel;Channel;${channel}]")
end,
groups = {cracky = 3,not_in_creative_inventory = 1},
light_source = 11,
node_box = {
type = "fixed",
fixed = nodebox
},
selection_box = {
type = "fixed",
fixed = nodebox
},
on_receive_fields = function(pos, formname, fields, sender)
local name = sender: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
if (fields.channel) then
minetest.get_meta(pos):set_string("channel", fields.channel)
end
end,
digiline = {
receptor = {},
effector = {
action = function(pos, node, channel, msg)
local setchan = minetest.get_meta(pos):get_string("channel")
if setchan ~= channel then
return
end
msg = msg:lower()
if (msg=="off") then
node.name = "streets:lane_use_off"
elseif (msg=="green") then
node.name = "streets:lane_use_green"
elseif (msg=="red") then
node.name = "streets:lane_use_red"
elseif (msg=="yellow") then
node.name = "streets:lane_use_yellow"
end
minetest.set_node(pos,node)
minetest.get_meta(pos):set_string("channel",setchan)
end
}
}
})
end
minetest.register_craft({
output = "streets:lane_use_off",
recipe = {
{"default:steel_ingot","default:steel_ingot","default:steel_ingot"},
{"dye:red","dye:yellow","dye:green"},
{"default:steel_ingot","default:steel_ingot","default:steel_ingot"}
}
})