====== advtrains.register_platform ======
//Registers an Advtrains platform node.//
//Note: this page has been written for Advtrains 2.0.1 TSS and Minetest 5.1.0. Examples and practices described in this page don't take advantage of improvements introduced in later releases.//
===== Syntax =====
advtrains.register_platform(modprefix, preset)
===== Extended description =====
Allows the use of node ''preset'' as an Advtrains [[usage:nodes:platform|platform]].
===== Parameters =====
* ''modprefix'' //(string)//: a string designating the name of the caller's mod.
* ''preset'' //(string)//: a node name which will be used as base for the platform.
===== Errors and warnings =====
It gives a warning if the referenced node ''preset'' is nil, or has not been registered:
> 2019-01-01 15:00:00: WARNING[Server]: register_platform couldn't find preset node unknown:node
A startup error is raised if ''modprefix'' is nil or does not designate a mod name.
===== How it works internally =====
This Lua function registers two nodes: a low and a high platform. The low platform is half height while the high one is full height. The function takes the texture used by the face at the top as a base for the all platform faces, but also adds a yellow line on the top, referenced by **advtrains_platform.png** in the code.
Both platforms aren't blocking trains, because they belong to the ''[[reference:not_blocking_trains|not_blocking_trains]]'' group. As well, they are in the ''[[reference:platform|platform]]'' group (with value 1 for low platform, 2 for high one).
===== Example =====
-- Create a brick platform
advtrains.register_platform("my_platforms", "default:brick")
===== In source code =====
advtrains/misc_nodes.lua, lines 3 to 63:
function advtrains.register_platform(modprefix, preset)
local ndef=minetest.registered_nodes[preset]
if not ndef then
minetest.log("warning", " register_platform couldn't find preset node "..preset)
return
end
local btex=ndef.tiles
if type(btex)=="table" then
btex=btex[1]
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 = default.node_sound_stone_defaults(),
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 = default.node_sound_stone_defaults(),
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5, 0.3, -0.1, 0.5, 0.5, 0.5},
{-0.5, -0.5, 0 , 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
},
})
minetest.register_craft({
type="shapeless",
output = modprefix .. ":platform_low_"..nodename.." 4",
recipe = {
"dye:yellow", preset
},
})
end