aboutsummaryrefslogtreecommitdiff
path: root/advtrains/misc_nodes.lua
diff options
context:
space:
mode:
Diffstat (limited to 'advtrains/misc_nodes.lua')
-rw-r--r--advtrains/misc_nodes.lua308
1 files changed, 203 insertions, 105 deletions
diff --git a/advtrains/misc_nodes.lua b/advtrains/misc_nodes.lua
index bcf7329..6f4f452 100644
--- a/advtrains/misc_nodes.lua
+++ b/advtrains/misc_nodes.lua
@@ -1,6 +1,31 @@
--all nodes that do not fit in any other category
-function advtrains.register_platform(modprefix, preset)
+local diagonalbox = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.5, -0.25, 0.5, -0.8 },
+ {-0.25, -0.5, 0.5 , 0, 0.5, -0.55},
+ {0, -0.5, 0.5 , 0.25, 0.5, -0.3 },
+ {0.25 , -0.5, 0.5, 0.5, 0.5, -0.05}
+ }
+}
+
+local diagonalbox_low = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.5, 0.5, -0.25, 0, -0.8 },
+ {-0.25, -0.5, 0.5 , 0, 0, -0.55},
+ {0, -0.5, 0.5 , 0.25, 0, -0.3 },
+ {0.25 , -0.5, 0.5, 0.5, 0, -0.05}
+ }
+}
+
+local nodename_override = {
+ ["darkage:marble"] = "darkage_marble",
+ ["technic:marble"] = "technic_marble",
+}
+
+function advtrains.register_platform(modprefix, preset, use_full_nodename)
local ndef=minetest.registered_nodes[preset]
if not ndef then
minetest.log("warning", " register_platform couldn't find preset node "..preset)
@@ -9,115 +34,188 @@ function advtrains.register_platform(modprefix, preset)
local btex=ndef.tiles
if type(btex)=="table" then
btex=btex[1]
+ if type(btex) == "table" then
+ btex = btex.name
+ if type(btex) ~= "string" then
+ error("Error in tiles when registering a platform for "..preset.."!")
+ end
+ end
end
local desc=ndef.description or ""
- local nodename=string.match(preset, ":(.+)$")
- minetest.register_node(modprefix .. ":platform_low_"..nodename, {
- description = attrans("@1 Platform (low)", desc),
- tiles = {btex.."^advtrains_platform.png", btex, btex, btex, btex, btex},
- groups = {cracky = 1, not_blocking_trains = 1, platform=1},
- sounds = ndef.sounds,
- drawtype = "nodebox",
- node_box = {
- type = "fixed",
- fixed = {
- {-0.5, -0.1, -0.1, 0.5, 0 , 0.5},
- {-0.5, -0.5, 0 , 0.5, -0.1, 0.5}
+ local nodename = nodename_override[preset]
+
+ if nodename == nil then
+ nodename = string.match(preset, ":(.+)$")
+ end
+ -- minetest.log("action", "DEBUG: will register platforms for "..preset.." using nodename = ("..nodename..")")
+
+ if ch_core.is_shape_allowed(preset, "advtrains", "platform_low") then
+ minetest.register_node(modprefix .. ":platform_low_"..nodename, {
+ description = attrans("@1 Platform (low)", desc),
+ tiles = {btex.."^advtrains_platform.png", btex, btex, btex, btex, btex},
+ groups = {cracky = 1, not_blocking_trains = 1, platform=2},
+ sounds = ndef.sounds,
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, -0.1, -0.1, 0.5, 0 , 0.5},
+ {-0.5, -0.5, 0 , 0.5, -0.1, 0.5}
+ },
},
- },
- paramtype2="facedir",
- paramtype = "light",
- sunlight_propagates = true,
- })
- minetest.register_node(modprefix .. ":platform_high_"..nodename, {
- description = attrans("@1 Platform (high)", desc),
- tiles = {btex.."^advtrains_platform.png", btex, btex, btex, btex, btex},
- groups = {cracky = 1, not_blocking_trains = 1, platform=2},
- sounds = ndef.sounds,
- drawtype = "nodebox",
- node_box = {
- type = "fixed",
- fixed = {
- {-0.5, 0.3, 0, 0.5, 0.5, 0.5},
- {-0.5, -0.5, 0.1 , 0.5, 0.3, 0.5}
+ paramtype2="facedir",
+ paramtype = "light",
+ sunlight_propagates = true,
+ })
+ minetest.register_craft({
+ type="shapeless",
+ output = modprefix .. ":platform_low_"..nodename.." 4",
+ recipe = {
+ "dye:yellow", preset
},
- },
- paramtype2="facedir",
- paramtype = "light",
- sunlight_propagates = true,
- })
- local diagonalbox = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, 0.5, -0.25, 0.5, -0.8 },
- {-0.25, -0.5, 0.5 , 0, 0.5, -0.55},
- {0, -0.5, 0.5 , 0.25, 0.5, -0.3 },
- {0.25 , -0.5, 0.5, 0.5, 0.5, -0.05}
- }
- }
- minetest.register_node(modprefix..":platform_45_"..nodename, {
- description = attrans("@1 Platform (45 degree)", desc),
- groups = {cracky = 1, not_blocking_trains = 1, platform=2},
- sounds = ndef.sounds,
- drawtype = "mesh",
- mesh = "advtrains_platform_diag.b3d",
- selection_box = diagonalbox,
- collision_box = diagonalbox,
- tiles = {btex, btex.."^advtrains_platform_diag.png"},
- paramtype2 = "facedir",
- paramtype = "light",
- sunlight_propagates = true,
- })
- local diagonalbox_low = {
- type = "fixed",
- fixed = {
- {-0.5, -0.5, 0.5, -0.25, 0, -0.8 },
- {-0.25, -0.5, 0.5 , 0, 0, -0.55},
- {0, -0.5, 0.5 , 0.25, 0, -0.3 },
- {0.25 , -0.5, 0.5, 0.5, 0, -0.05}
+ })
+ end
+
+ if ch_core.is_shape_allowed(preset, "advtrains", "platform_high") then
+ minetest.register_node(modprefix .. ":platform_high_"..nodename, {
+ description = attrans("@1 Platform (high)", desc),
+ tiles = {btex.."^advtrains_platform.png", btex, btex, btex, btex, btex},
+ groups = {cracky = 1, not_blocking_trains = 1, platform=1},
+ sounds = ndef.sounds,
+ drawtype = "nodebox",
+ node_box = {
+ type = "fixed",
+ fixed = {
+ {-0.5, 0.3, 0, 0.5, 0.5, 0.5},
+ {-0.5, -0.5, 0.1 , 0.5, 0.3, 0.5}
+ },
+ },
+ paramtype2="facedir",
+ paramtype = "light",
+ sunlight_propagates = true,
+ })
+ minetest.register_craft({
+ type="shapeless",
+ output = modprefix .. ":platform_high_"..nodename.." 4",
+ recipe = {
+ "dye:yellow", preset, preset
+ },
+ })
+ end
+
+ if ch_core.is_shape_allowed(preset, "advtrains", "platform_45_high") then
+ minetest.register_node(modprefix..":platform_45_"..nodename, {
+ description = attrans("@1 Platform (45 degree)", desc),
+ groups = {cracky = 1, not_blocking_trains = 1, platform=3},
+ sounds = ndef.sounds,
+ drawtype = "mesh",
+ mesh = "advtrains_platform_diag.b3d",
+ selection_box = diagonalbox,
+ collision_box = diagonalbox,
+ tiles = {btex, btex.."^advtrains_platform_diag.png"},
+ paramtype2 = "facedir",
+ paramtype = "light",
+ sunlight_propagates = true,
+ })
+ minetest.register_craft({
+ type="shapeless",
+ output = modprefix .. ":platform_45_"..nodename.." 2",
+ recipe = {
+ "dye:yellow", preset, preset, preset
}
- }
- minetest.register_node(modprefix..":platform_45_low_"..nodename, {
- description = attrans("@1 Platform (low, 45 degree)", desc),
- groups = {cracky = 1, not_blocking_trains = 1, platform=2},
- sounds = ndef.sounds,
- drawtype = "mesh",
- mesh = "advtrains_platform_diag_low.b3d",
- selection_box = diagonalbox_low,
- collision_box = diagonalbox_low,
- tiles = {btex, btex.."^advtrains_platform_diag.png"},
- paramtype2 = "facedir",
- paramtype = "light",
- sunlight_propagates = true,
- })
- minetest.register_craft({
- type="shapeless",
- output = modprefix .. ":platform_high_"..nodename.." 4",
- recipe = {
- "dye:yellow", preset, preset
- },
- })
- minetest.register_craft({
- type="shapeless",
- output = modprefix .. ":platform_low_"..nodename.." 4",
- recipe = {
- "dye:yellow", preset
- },
- })
- minetest.register_craft({
- type="shapeless",
- output = modprefix .. ":platform_45_"..nodename.." 2",
- recipe = {
- "dye:yellow", preset, preset, preset
- }
- })
- minetest.register_craft({
- type="shapeless",
- output = modprefix .. ":platform_45_low_"..nodename.." 2",
- recipe = { modprefix .. ":platform_45_"..nodename },
- })
+ })
+ end
+
+ if ch_core.is_shape_allowed(preset, "advtrains", "platform_45_low") then
+ minetest.register_node(modprefix..":platform_45_low_"..nodename, {
+ description = attrans("@1 Platform (low, 45 degree)", desc),
+ groups = {cracky = 1, not_blocking_trains = 1, platform=4},
+ sounds = ndef.sounds,
+ drawtype = "mesh",
+ mesh = "advtrains_platform_diag_low.b3d",
+ selection_box = diagonalbox_low,
+ collision_box = diagonalbox_low,
+ tiles = {btex, btex.."^advtrains_platform_diag.png"},
+ paramtype2 = "facedir",
+ paramtype = "light",
+ sunlight_propagates = true,
+ })
+ minetest.register_craft({
+ type="shapeless",
+ output = modprefix .. ":platform_45_low_"..nodename.." 2",
+ recipe = { modprefix .. ":platform_45_"..nodename },
+ })
+ end
end
+-- advtrains.register_platform("advtrains", "default:stonebrick")
+-- advtrains.register_platform("advtrains", "default:sandstonebrick")
+
+--[[
+local platform_materials = {
+ "basic_materials:cement_block",
+ "basic_materials:concrete_block",
+ "building_blocks:Tar",
+ "darkage:basalt",
+ "darkage:basalt_brick",
+ -- "darkage:basalt_cobble",
+ --"darkage:gneiss",
+ "darkage:gneiss_brick",
+ --"darkage:gneiss_cobble",
+ {"darkage:marble"},
+ -- "darkage:ors",
+ "darkage:ors_brick",
+ -- "darkage:ors_cobble",
+ "darkage:serpentine",
+ -- "darkage:slate",
+ "darkage:slate_brick",
+ -- "darkage:slate_cobble",
+ "darkage:stone_brick",
+ "default:acacia_wood",
+ "default:aspen_wood",
+ "default:desert_stone",
+ "default:desert_stone_block",
+ "default:junglewood",
+ "default:pine_wood",
+ "default:steelblock",
+ "default:stone",
+ "default:stonebrick",
+ "default:stone_block",
+ "default:wood",
+ "moretrees:cedar_planks",
+ "moretrees:cherrytree_planks",
+ "moretrees:chestnut_tree_planks",
+ "moretrees:date_palm_planks",
+ "moretrees:birch_planks",
+ -- "moretrees:beech_planks",
+ "moretrees:apple_tree_planks",
+ "moretrees:ebony_planks",
+ "moretrees:fir_planks",
+ "moretrees:oak_planks",
+ "moretrees:palm_planks",
+ "moretrees:plumtree_planks",
+ "moretrees:rubber_tree_planks",
+ "moretrees:sequoia_planks",
+ "moretrees:spruce_planks",
+ "moretrees:poplar_planks",
+ "moretrees:willow_planks",
+ "moreblocks:wood_tile_center",
+ "moreblocks:wood_tile_full",
+ {"technic:marble"},
+}
+for _, name in ipairs(platform_materials) do
+ local nodename, use_full_nodename
+ if type(name) == "string" then
+ nodename = name
+ else
+ nodename = name[1]
+ use_full_nodename = true
+ end
-advtrains.register_platform("advtrains", "default:stonebrick")
-advtrains.register_platform("advtrains", "default:sandstonebrick")
+ if minetest.registered_nodes[nodename] then
+ advtrains.register_platform("advtrains", nodename, use_full_nodename)
+ else
+ minetest.log("warning", nodename.." not find as a node to build a platform")
+ end
+end
+]]