From 888b0ebfec8c2eff9015163549a7e47443cb8665 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 1 Apr 2016 21:00:20 -0400 Subject: "explode" all modpacks into their individual components (you can't have a modpack buried inside a modpack) --- infrastructure/advanced_road_signs.lua | 237 +++++++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 infrastructure/advanced_road_signs.lua (limited to 'infrastructure/advanced_road_signs.lua') diff --git a/infrastructure/advanced_road_signs.lua b/infrastructure/advanced_road_signs.lua new file mode 100644 index 0000000..b732bfd --- /dev/null +++ b/infrastructure/advanced_road_signs.lua @@ -0,0 +1,237 @@ +-- Road signs + local signs = {"stop", "yield", "right_of_way"} + + for i, sign_name in ipairs(signs) do + minetest.register_node("infrastructure:road_sign_"..sign_name, { + description = "Road sign "..sign_name, + tiles = { + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_road_sign_"..sign_name.."_back.png", + "infrastructure_road_sign_"..sign_name.."_front.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 2}, + node_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, 7/16, 1/2, 1/2, 7/16}, + {-3/16, -1/8, 7/16, 3/16, 1/8, 1/2 - 0.001} + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, 7/16, 1/2, 1/2, 7/16}, + {-3/16, -1/8, 7/16 + 0.01, 3/16, 1/8, 1/2 - 0.01} + } + }, + + after_place_node = function(pos, node) + local node = minetest.env:get_node(pos) + local param2 = node.param2 + local sign_pos = {x=pos.x, y=pos.y, z=pos.z} + + if param2 == 0 then + pos.z = pos.z + 1 + elseif param2 == 1 then + pos.x = pos.x + 1 + elseif param2 == 2 then + pos.z = pos.z - 1 + elseif param2 == 3 then + pos.x = pos.x - 1 + end + + local node = minetest.env:get_node(pos) + + if minetest.registered_nodes[node.name].drawtype == "fencelike" then + minetest.set_node(sign_pos, {name="infrastructure:road_sign_"..sign_name.."_on_post", param2=param2}) + end + end + }) + + minetest.register_node("infrastructure:road_sign_"..sign_name.."_on_post", { + tiles = { + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_road_sign_"..sign_name.."_back.png", + "infrastructure_road_sign_"..sign_name.."_front.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 2, not_in_creative_inventory = 1}, + drop = "infrastructure:road_sign_"..sign_name, + node_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, 7/16 + 3/8, 1/2, 1/2, 7/16 + 3/8}, + {-3/16, 1/16, 7/16 + 3/8, 3/16, 1/8, 13/16 + 3/8 - 0.001}, + {-3/16, -1/8, 7/16 + 3/8, 3/16, -1/16, 13/16 + 3/8 - 0.001} + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, 7/16 + 3/8, 1/2, 1/2, 7/16 + 3/8}, + {-3/16, 1/16, 7/16 + 3/8 + 0.01, 3/16, 1/8, 13/16 + 3/8 - 0.01}, + {-3/16, -1/8, 7/16 + 3/8 + 0.01, 3/16, -1/16, 13/16 + 3/8 - 0.01} + } + } + }) + end + +-- Road sign crosswalk + minetest.register_node("infrastructure:road_sign_crosswalk", { + description = "Road sign crosswalk", + tiles = { + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_road_sign_crosswalk_back.png", + "infrastructure_road_sign_crosswalk_front.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 2}, + node_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, 7/16, 1/2, 1/2, 7/16}, + {-3/16, -1/8, 7/16, 3/16, 1/8, 1/2 - 0.001} + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, 7/16, 1/2, 1/2, 7/16}, + {-3/16, -1/8, 7/16, 3/16, 1/8, 1/2 - 0.001} + } + }, + + after_place_node = function(pos, node) + local node = minetest.env:get_node(pos) + local param2 = node.param2 + local sign_pos = {x=pos.x, y=pos.y, z=pos.z} + + if param2 == 0 then + pos.z = pos.z + 1 + elseif param2 == 1 then + pos.x = pos.x + 1 + elseif param2 == 2 then + pos.z = pos.z - 1 + elseif param2 == 3 then + pos.x = pos.x - 1 + end + + local node = minetest.env:get_node(pos) + + if param2 == 0 then + pos.z = pos.z - 2 + elseif param2 == 1 then + pos.x = pos.x - 2 + elseif param2 == 2 then + pos.z = pos.z + 2 + elseif param2 == 3 then + pos.x = pos.x + 2 + end + + if minetest.registered_nodes[node.name].drawtype == "fencelike" then + minetest.set_node(sign_pos, {name="infrastructure:road_sign_crosswalk_on_post", param2=param2}) + minetest.env:add_node(pos, {name="infrastructure:road_sign_retroreflective_surface_on_post", param2=param2}) + else + minetest.env:add_node(pos, {name="infrastructure:road_sign_retroreflective_surface", param2=param2}) + end + end + }) + + minetest.register_node("infrastructure:road_sign_crosswalk_on_post", { + description = "Road sign crosswalk", + tiles = { + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_road_sign_crosswalk_back.png", + "infrastructure_road_sign_crosswalk_front.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 2, not_in_creative_inventory = 1}, + drop = "infrastructure:road_sign_crosswalk", + node_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, 7/16 + 3/8, 1/2, 1/2, 7/16 + 3/8}, + {-3/16, 1/16, 7/16 + 3/8, 3/16, 1/8, 13/16 + 3/8 - 0.001}, + {-3/16, -1/8, 7/16 + 3/8, 3/16, -1/16, 13/16 + 3/8 - 0.001} + } + }, + selection_box = { + type = "fixed", + fixed = { + {-1/2, -1/2, 7/16 + 3/8, 1/2, 1/2, 7/16 + 3/8}, + {-3/16, 1/16, 7/16 + 3/8 + 0.01, 3/16, 1/8, 13/16 + 3/8 - 0.01}, + {-3/16, -1/8, 7/16 + 3/8 + 0.01, 3/16, -1/16, 13/16 + 3/8 - 0.01} + } + } + }) + + minetest.register_node("infrastructure:road_sign_retroreflective_surface", { + tiles = { + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_road_sign_retroreflective_surface.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 2, not_in_creative_inventory = 1}, + light_source = RETROREFLECTIVE_SURFACE_LIGHT_RANGE, + drop = "", + node_box = { + type = "fixed", + fixed = {-3/4, -3/4, 7/16 + 1 + 0.01, 3/4, 3/4, 7/16 + 1 + 0.01} + }, + selection_box = { + type = "fixed", + fixed = {-3/4, -3/4, 7/16 + 1 + 0.01, 3/4, 3/4, 7/16 + 1 + 0.01} + } + }) + + minetest.register_node("infrastructure:road_sign_retroreflective_surface_on_post", { + tiles = { + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_traffic_lights_side.png", + "infrastructure_road_sign_retroreflective_surface.png" + }, + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + groups = {cracky = 2, not_in_creative_inventory = 1}, + light_source = RETROREFLECTIVE_SURFACE_LIGHT_RANGE, + drop = "", + node_box = { + type = "fixed", + fixed = {-3/4, -3/4, 7/16 + 3/8 + 1 + 0.01, 3/4, 3/4, 7/16 + 3/8 + 1 + 0.01} + }, + selection_box = { + type = "fixed", + fixed = {-3/4, -3/4, 7/16 + 3/8 + 1 + 0.01, 3/4, 3/4, 7/16 + 3/8 + 1 + 0.01} + } + }) -- cgit v1.2.3