/Crossroads/nodes/

>"advtrains_signal"..rotation..".b3d", tiles = {"advtrains_signal_"..r..".png"}, inventory_image="advtrains_signal_inv.png", drop="advtrains:signal_off", description=S("Signal (deprecated!)"), groups = { cracky=3, not_blocking_trains=1, not_in_creative_inventory=crea, save_in_at_nodedb=1, advtrains_signal = 2, }, light_source = 1, sunlight_propagates=true, mesecons = {effector = { rules=advtrains.meseconrules, ["action_"..f.as] = function (pos, node) advtrains.setstate(pos, f.als, node) end }}, on_rightclick=function(pos, node, player) local pname = player:get_player_name() local sigd = advtrains.interlocking and advtrains.interlocking.db.get_sigd_for_signal(pos) if sigd and not player:get_player_control().aux1 then advtrains.interlocking.show_signalling_form(sigd, pname) elseif advtrains.interlocking and player:get_player_control().aux1 then advtrains.interlocking.show_ip_form(pos, pname) elseif advtrains.check_turnout_signal_protection(pos, player:get_player_name()) then advtrains.setstate(pos, f.als, node) end end, -- very new signal API advtrains = { main_aspects = main_aspects, apply_aspect = simple_apply_aspect("advtrains:signal_off"..rotation, "advtrains:signal_on"..rotation), get_aspect_info = function() return aspect(r=="on") end, route_role = "main", node_state = f.ls, node_state_map = { red = "advtrains:signal_off"..rotation, green = "advtrains:signal_on"..rotation}, node_on_switch_state = function(pos, new_node, old_state, new_state) if advtrains.interlocking then -- forcefully clears any set aspect, so that aspect system doesnt override it again advtrains.interlocking.signal.unregister_aspect(pos) -- notify trains advtrains.interlocking.signal.notify_trains(pos) end end, }, can_dig = can_dig_func, after_dig_node = after_dig_func, --TODO add rotation using trackworker }) end local crea=1 if r=="off" then crea=0 end --tunnel signals. no rotations. local swdesc = { -- needed for xgettext l = S("Wallmounted Signal (left) (deprecated!)"), r = S("Wallmounted Signal (right) (deprecated!)"), t = S("Wallmounted Signal (top) (deprecated!)"), } for loc, sbox in pairs({l={-1/2, -1/2, -1/4, 0, 1/2, 1/4}, r={0, -1/2, -1/4, 1/2, 1/2, 1/4}, t={-1/2, 0, -1/4, 1/2, 1/2, 1/4}}) do minetest.register_node("advtrains:signal_wall_"..loc.."_"..r, { drawtype = "mesh", paramtype="light", paramtype2="facedir", walkable = false, selection_box = { type = "fixed", fixed = sbox, }, mesh = "advtrains_signal_wall_"..loc..".b3d", tiles = {"advtrains_signal_wall_"..r..".png"}, drop="advtrains:signal_wall_"..loc.."_off", description=swdesc[loc], groups = { cracky=3, not_blocking_trains=1, not_in_creative_inventory=crea, save_in_at_nodedb=1, advtrains_signal = 2, }, light_source = 1, sunlight_propagates=true, mesecons = {effector = { rules = mrules_wallsignal, ["action_"..f.as] = function (pos, node) advtrains.setstate(pos, f.als, node) end }}, on_rightclick=function(pos, node, player) local pname = player:get_player_name() local sigd = advtrains.interlocking and advtrains.interlocking.db.get_sigd_for_signal(pos) if sigd and not player:get_player_control().aux1 then advtrains.interlocking.show_signalling_form(sigd, pname) elseif advtrains.interlocking and player:get_player_control().aux1 then advtrains.interlocking.show_ip_form(pos, pname) elseif advtrains.check_turnout_signal_protection(pos, player:get_player_name()) then advtrains.setstate(pos, f.als, node) end end, -- very new signal API advtrains = { main_aspects = main_aspects, apply_aspect = simple_apply_aspect("advtrains:signal_wall_"..loc.."_off", "advtrains:signal_wall_"..loc.."_on"), get_aspect_info = function() return aspect(r=="on") end, route_role = "main", node_state = f.ls, node_state_map = { red = "advtrains:signal_wall_"..loc.."_off", green = "advtrains:signal_wall_"..loc.."_on" }, node_on_switch_state = function(pos, new_node, old_state, new_state) if advtrains.interlocking then -- forcefully clears any set aspect, so that aspect system doesnt override it again advtrains.interlocking.signal.unregister_aspect(pos) -- notify trains advtrains.interlocking.signal.notify_trains(pos) end end, }, can_dig = can_dig_func, after_dig_node = after_dig_func, }) end end -- level crossing -- german version (Andrew's Cross) minetest.register_node("advtrains:across_off", { drawtype = "mesh", paramtype="light", paramtype2="facedir",