-- trainblocks/init.lua -- Adds signs fitting the advtrains theme --[[ Copyright (C) 2018 maxx, LuLa, gpcf Copyright (C) 2020, 2021 Montandalar/Blockhead Copyright (C) 2024 1F616EMO This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . ]] local S = minetest.get_translator("trainblocks") minetest.register_node("trainblocks:subwayblock", { description = S("Subway block"), light_source = 8, tiles = { "down_subwayblock.png", "down_subwayblock.png", "front_subwayblock.png", "front_subwayblock.png", "front_subwayblock.png", "front_subwayblock.png" }, is_ground_content = true, groups = { cracky = 3 }, drop = "trainblocks:subwayblock" }) do -- Add a setting for legacy sbahnblock textures -- from https://github.com/Montandalar/trainblocks/commit/0fa3f52123bfe5aea386f987e7204c94aba72725 local sbahncolorize = "" if minetest.settings:get_bool("trainblocks_legacy_sbahnblock", false) then sbahncolorize = "^[colorize:#00DF11FF" end --00E876FF minetest.register_node("trainblocks:sbahnblock", { description = S("S-Bahn block"), light_source = 8, tiles = { "down_sbahnblock.png", "down_sbahnblock.png" .. sbahncolorize, "front_sbahnblock.png", "front_sbahnblock.png", "front_sbahnblock.png", "front_sbahnblock.png" }, is_ground_content = true, groups = { cracky = 3 }, drop = "trainblocks:sbahnblock" }) end -- Platform 0 from https://github.com/Montandalar/trainblocks/commit/12a365d1c280d2b106621a8088229ee50937c488 -- Bonus: Line 0 for count = 0, 10, 1 do minetest.register_node("trainblocks:line" .. count, { description = S("Line sign @1", count), tiles = { "front_line" .. count .. ".png" }, drawtype = "nodebox", paramtype2 = "wallmounted", legacy_wallmounted = true, paramtype = "light", light_source = 12, sunlight_propagates = true, is_ground_content = false, walkable = false, groups = { choppy = 2, attached_node = 1, flammable = 2, oddly_breakable_by_hand = 3, not_blocking_trains = 1, }, node_box = { type = "wallmounted", wall_top = { -0.5, -0.25, -0.25, -0.4375, 0.25, 0.25 }, wall_bottom = { -0.5, -0.25, -0.25, -0.4375, 0.25, 0.25 }, wall_side = { -0.5, -0.25, -0.25, -0.4375, 0.25, 0.25 }, } }) minetest.register_node("trainblocks:platformsign" .. count, { description = S("Platform sign @1", count), drawtype = "nodebox", tiles = { "front_platform" .. count .. ".png" }, inventory_image = "inventory_platform" .. count .. ".png", light_source = 5, groups = { cracky = 3, not_blocking_trains = 1, }, paramtype2 = "facedir", paramtype = 'light', node_box = { type = "fixed", fixed = { { -4 / 16, -4 / 16, 6 / 16, 4 / 16, 4 / 16, 8 / 16 }, }, }, }) end minetest.register_node("trainblocks:subwaysignL", { description = S("Subway Sign (Left)"), tiles = { "subway_sign3.png", "subway_sign3.png", "subway_sign3.png", "subway_sign3.png", "subway_sign2.png", "subway_sign2.png^[transformFX", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, }, }, paramtype2 = "facedir", paramtype = 'light', light_source = 6, is_ground_content = false, groups = { cracky = 3, not_blocking_trains = 1, }, }) minetest.register_node("trainblocks:subwaysignR", { description = S("Subway Sign (Right)"), tiles = { "subway_sign3.png", "subway_sign3.png", "subway_sign3.png", "subway_sign3.png", "subway_sign2.png", "subway_sign2.png", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, }, }, paramtype2 = "facedir", paramtype = 'light', light_source = 6, is_ground_content = false, groups = { cracky = 3, not_blocking_trains = 1, }, }) minetest.register_node("trainblocks:sbahnsignL", { description = S("S-Bahn Sign (Left)"), tiles = { "sbahn_sign3.png", "sbahn_sign3.png", "sbahn_sign3.png", "sbahn_sign3.png", "sbahn_sign2l.png", "sbahn_sign2l.png^[transformFX", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, }, }, paramtype2 = "facedir", paramtype = 'light', light_source = 6, is_ground_content = false, groups = { cracky = 3, not_blocking_trains = 1, }, }) minetest.register_node("trainblocks:sbahnsignR", { description = S("S-Bahn Sign (Right)"), tiles = { "sbahn_sign3.png", "sbahn_sign3.png", "sbahn_sign3.png", "sbahn_sign3.png", "sbahn_sign2.png", "sbahn_sign2.png", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, }, }, paramtype2 = "facedir", paramtype = 'light', light_source = 6, is_ground_content = false, groups = { cracky = 3, not_blocking_trains = 1, }, }) minetest.register_node("trainblocks:stationsignL", { description = S("Station Sign (Left)"), tiles = { "station_sign3.png", "station_sign3.png", "station_sign3.png", "station_sign3.png", "station_sign2.png", "station_sign2.png^[transformFX", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, }, }, paramtype2 = "facedir", paramtype = 'light', light_source = 6, is_ground_content = false, groups = { cracky = 3, not_blocking_trains = 1, }, }) minetest.register_node("trainblocks:stationsignR", { description = S("Station Sign (Right)"), tiles = { "station_sign3.png", "station_sign3.png", "station_sign3.png", "station_sign3.png", "station_sign2.png", "station_sign2.png", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, }, }, paramtype2 = "facedir", paramtype = 'light', light_source = 6, is_ground_content = false, groups = { cracky = 3, not_blocking_trains = 1, }, }) minetest.register_node("trainblocks:station_block", { description = S("Station Block"), light_source = 8, tiles = { "down_station_sign.png", "down_station_sign.png", "front_station_sign.png", "front_station_sign.png", "front_station_sign.png", "front_station_sign.png" }, is_ground_content = true, groups = { cracky = 3 }, drop = "trainblocks:station_block" }) minetest.register_node("trainblocks:mr", { description = S("Mountain Railway Block"), light_source = 8, tiles = { "down_mr.png", "down_mr.png", "front_mr.png", "front_mr.png", "front_mr.png", "front_mr.png" }, is_ground_content = true, groups = { cracky = 3 }, drop = "trainblocks:sbahnblock" }) -- Modern station blocks -- from https://github.com/Montandalar/trainblocks/commit/12a365d1c280d2b106621a8088229ee50937c488 minetest.register_node("trainblocks:stationsignL_modern", { description = S("Modern Station Sign (Left)"), tiles = { "station_sign3.png", "station_sign3.png", "station_sign3.png", "station_sign3.png", "station_sign2_modern.png", "station_sign2_modern.png^[transformFX", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, }, }, paramtype2 = "facedir", paramtype = 'light', light_source = 6, is_ground_content = false, groups = { cracky = 3 }, }) minetest.register_node("trainblocks:stationsignR_modern", { description = S("Modern Station Sign (Right)"), tiles = { "station_sign3.png", "station_sign3.png", "station_sign3.png", "station_sign3.png", "station_sign2_modern.png", "station_sign2_modern.png", }, drawtype = "nodebox", node_box = { type = "fixed", fixed = { { -8 / 16, -5 / 16, 6 / 16, 8 / 16, 5 / 16, 8 / 16 }, }, }, paramtype2 = "facedir", paramtype = 'light', light_source = 6, is_ground_content = false, groups = { cracky = 3 }, }) minetest.register_node("trainblocks:station_block_modern", { description = S("Modern Station Block"), light_source = 8, tiles = { "down_station_sign.png", "down_station_sign.png", "front_station_sign_modern.png", "front_station_sign_modern.png", "front_station_sign_modern.png", "front_station_sign_modern.png", }, is_ground_content = true, groups = { cracky = 3 }, drop = "trainblocks:station_block" }) -- "No Pedestrains" signs -- from https://github.com/Montandalar/trainblocks/commit/3e00d5cf40759c085deccc915f1fa6fb2c092523 -- train blocking fix from https://github.com/Montandalar/trainblocks/commit/a312afc27c2967e0ba04d6b4da3a074cf54f73df local box_flat = { type = "fixed", fixed = { -0.5000, -0.4375, -0.5000, 0.5000, -0.4375, 0.5000 } } local pedsigns = { { name = "no_pedestrians", desc = S("No Pedestrians Sign") }, { name = "durchgang_verboten", desc = S("No Pedestrians Sign (German)") } } for _, v in pairs(pedsigns) do minetest.register_node("trainblocks:" .. v.name, { description = v.desc, light_source = 2, drawtype = "signlike", paramtype = "light", paramtype2 = "wallmounted", tiles = { v.name .. ".png" }, inventory_image = v.name .. ".png", wield_image = v.name .. ".png", groups = { cracky = 3, not_blocking_trains = 1, }, drop = "trainblocks:" .. v.name, is_ground_content = true, node_box = box_flat, selection_box = box_flat, }) end -- Add a setting to disable crafting recipes -- from https://github.com/Montandalar/trainblocks/commit/15e2b88f44671aa68d1a758a6aca363b602a1282 if not minetest.settings:get_bool('trainblocks_disable_recipes', false) then dofile(minetest.get_modpath("trainblocks") .. "/craft.lua") end dofile(minetest.get_modpath("trainblocks") .. "/alias.lua")