2022-08-31 18:06:20 +02:00

526 lines
12 KiB
Lua

-- all nodes that do not fit in any other category
-- Author: Och_Noe, Montandalar/Blockhead, W3RQ01
-- Licence: LGPL 2.1
local own_name = "advtrains_platform"
local register_platform = advtrains.register_platform
-- bricks / blocks
list_default = {
"default:desert_sandstone_brick",
"default:desert_stonebrick",
"default:silver_sandstone",
"default:silver_sandstone_brick",
"default:silver_sandstone_block",
"default:brick",
"default:stone",
"default:sandstone",
"default:obsidian_glass",
"default:dirt",
"default:dirt_with_grass",
"default:desert_stone",
"default:desert_sandstone",
-- added 2018-10-16
"default:desert_sandstone_brick",
-- added 2018-10-26
"default:cobble",
-- added 2021-03-07
"default:diamondblock",
"default:obsidianblock",
"default:mossycobble",
-- added 2021-03-08
"default:steelblock",
"default:obsidianbrick",
-- added 2022-02-12
"default:copperblock",
}
list_moreblocks = {
"moreblocks:cactus_brick",
"moreblocks:coal_stone_bricks",
"moreblocks:grey_bricks",
"moreblocks:iron_stone_bricks",
"moreblocks:stone_tile",
-- added 2019-01-19
"moreblocks:split_stone_tile",
"moreblocks:split_stone_tile_alt",
-- added 2021-04-06
"moreblocks:coal_stone",
"moreblocks:iron_stone",
"moreblocks:iron_checker",
"moreblocks:cactus_checker",
"moreblocks:coal_checker",
"moreblocks:tar",
-- added 2022-02-12
"moreblocks:copperpatina",
"moreblocks:cobble_compressed",
"moreblocks:cobble_condensed",
}
list_ethereal = {
"ethereal:icebrick",
"ethereal:bamboo_dirt",
-- added 2021-05-26
"ethereal:blue_marble_tile",
"ethereal:blue_marble_bricks"}
-- added 2018-10-16
list_errata= {
"minetest_errata:desert_sandstone_cobble",
"minetest_errata:mossy_stone_tile",
"minetest_errata:mossystone",
"minetest_errata:sandstone_cobble",
"minetest_errata:silver_sandstone_cobble", }
-- wood
list_wood= {
"default:acacia_wood",
"default:aspen_wood",
"default:junglewood",
"default:pine_wood",
"default:wood" }
list_wood_ethereal = {
"ethereal:banana_wood",
"ethereal:birch_wood",
"ethereal:frost_wood",
"ethereal:palm_wood",
"ethereal:redwood_wood",
"ethereal:willow_wood",
"ethereal:yellow_wood",
"ethereal:bamboo_floor",
-- added 2020-01-12
"ethereal:olive_wood",
"ethereal:sakura_wood",
}
list_wood_maple = {
"maple:maple_wood" }
-- metal blocks
list_moreores = {
"moreores:mithril_block",
"moreores:silver_block", }
-- wool
-- ?
-- technic - added 2019-03-11
list_technic = {
"technic:marble",
-- added 2021-04-06
"technic:marble_bricks",
-- added 2021-04-09
"technic:granite",}
-- bakedclay - added 2021-04-06
list_bakedclay = {
"bakedclay:black",
"bakedclay:dark_clay",
"bakedclay:red",
"bakedclay:blue",
-- added 2021-04-09
"bakedclay:white",
-- added 2022-07-22
"bakedclay:terracotta_black",
-- added 2022-07-26
"bakedclay:terracotta_blue",
"bakedclay:terracotta_red",
"bakedclay:terracotta_violet",}
-- australia - added 2022-07-20
list_australia = {
"australia:lemon_eucalyptus_wood",
"australia:river_red_gum_wood",
"australia:scribbly_gum_wood",
"australia:huon_pine_wood",
"australia:grey_mangrove_wood",
"australia:mangrove_apple_wood",
"australia:stilted_mangrove_wood",
"australia:blue_gum_wood",
"australia:conclurry_box_wood",
"australia:coolabah_wood",
"australia:mulga_wood",
"australia:bluestone",
"australia:darwin_woollybutt_wood",}
-- morebricks - added 2022-07-06
list_morebricks = {
"morebricks:white",
"morebricks:whiteaged",
"morebricks:blue",
"morebricks:darkgrey",
"morebricks:black",}
for _,name in pairs(list_default) do
register_platform(own_name,name)
end
if minetest.get_modpath("moreblocks") then
for _,name in pairs(list_moreblocks) do
register_platform(own_name,name)
end
end
-- added 2018-10-16
if minetest.get_modpath("minetest_errata") then
for _,name in pairs(list_errata) do
register_platform(own_name,name)
end
end
for _,name in pairs(list_wood) do
register_platform(own_name,name)
end
if minetest.get_modpath("ethereal") then
for _,name in pairs(list_ethereal) do
register_platform(own_name,name)
end
for _,name in pairs(list_wood_ethereal) do
register_platform(own_name,name)
end
end
if minetest.get_modpath("maple") then
for _,name in pairs(list_wood_maple) do
register_platform(own_name,name)
end
end
if minetest.get_modpath("moreores") then
for _,name in pairs(list_moreores) do
register_platform(own_name,name)
end
end
if minetest.get_modpath("technic") then
for _,name in pairs(list_technic) do
register_platform(own_name,name)
end
end
-- added 2021-04-06
if minetest.get_modpath("bakedclay") then
for _,name in pairs(list_bakedclay) do
register_platform(own_name,name)
end
end
-- added 2022-07-20
if minetest.get_modpath("australia") then
for _,name in pairs(list_australia) do
register_platform(own_name,name)
end
end
-- added 2022-07-26
if minetest.get_modpath("morebricks") then
for _,name in pairs(list_morebricks) do
register_platform(own_name,name)
end
end
local woodpath_lengths = {
{ 5,10 },
{ 5,20 },
{ 5,25 },
{ 10,10 },
{ 10,20 },
{ 10,25 },
{ 20,20 },
{ 20,25 },
{ 25,25 },
}
-- path crossing track
local snowdef = minetest.registered_nodes['default:snowblock']
local node_sound_snow_default = nil
if snowdef then
node_sound_snow_default = snowdef.sounds
end
-- nodelist
nodelist = {}
-- nodelist:insert( { name = "", tile = ".png",
-- sound = ,
-- full = "", half = "" } )
-- stone (WIP)
table.insert(nodelist, { name = "stonebrick",
tile = "default_stone_brick.png",
sound = default.node_sound_stone_defaults(),
full = "default:stonebrick",
half = "stairs:slab_stonebrick" } )
table.insert(nodelist, { name = "desert stonebrick",
tile = "default_desert_stone_brick.png",
sound = default.node_sound_stone_defaults(),
full = "default:desert_stonebrick",
half = "stairs:slab_desert_stonebrick" } )
table.insert(nodelist, { name = "cobble",
tile = "default_cobble.png",
sound = default.node_sound_stone_defaults(),
full = "default:cobble",
half = "stairs:slab_cobble" } )
table.insert(nodelist, { name = "desert cobble",
tile = "default_desert_cobble.png",
sound = default.node_sound_stone_defaults(),
full = "default:desert_cobble",
half = "stairs:slab_desert_cobble" } )
table.insert(nodelist, { name = "stone",
tile = "default_stone.png",
sound = default.node_sound_stone_defaults(),
full = "default:stone",
half = "stairs:slab_stone" } )
table.insert(nodelist, { name = "desert stone",
tile = "default_desert_stone.png",
sound = default.node_sound_stone_defaults(),
full = "default:desert_stone",
half = "stairs:slab_desert_stone" } )
-- snow
table.insert(nodelist, { name = "snow", tile = "default_snow.png",
sound = node_sound_snow_default,
full = "default:snowblock",
half = "stairs:slab_snowblock" } )
-- wood
table.insert(nodelist, { name = "wood",
tile = "default_wood.png",
sound = default.node_sound_wood_defaults(),
full = "default:wood",
half = "stairs:slab_wood" } )
table.insert(nodelist, { name = "jungle wood",
tile = "default_junglewood.png",
sound = default.node_sound_wood_defaults(),
full = "default:junglewood",
half = "stairs:slab_junglewood" } )
table.insert(nodelist, { name = "aspen wood",
tile = "default_aspen_wood.png",
sound = default.node_sound_wood_defaults(),
full = "default:aspen_wood",
half = "stairs:slab_aspen_wood" } )
table.insert(nodelist, { name = "acacia wood",
tile = "default_acacia_wood.png",
sound = default.node_sound_wood_defaults(),
full = "default:acacia_wood",
half = "stairs:slab_acacia_wood" } )
table.insert(nodelist, { name = "pine wood",
tile = "default_pine_wood.png",
sound = default.node_sound_wood_defaults(),
full = "default:pine_wood",
half = "stairs:slab_pine_wood" } )
local adv_track = "advtrains:dtrack_placer"
-- moreblocks
if minetest.get_modpath("moreblocks") then
table.insert(nodelist, { name = "tar",
tile = "moreblocks_tar.png",
sound = default.node_sound_stone_defaults(),
full = "moreblocks:tar",
half = "moreblocks:slab_tar" } )
table.insert(nodelist, { name = "stone tile",
tile = "moreblocks_stone_tile.png",
sound = default.node_sound_stone_defaults(),
full = "moreblocks:stone_tile",
half = "moreblocks:slab_stone_tile" } )
end
-- australia
for _,entry in pairs(nodelist) do
for _,lengths in pairs(woodpath_lengths) do
local b = lengths[1] -- "back" in 1/10 nodes
local f = lengths[2] -- "front" in 1/10 nodes
local h = string.format(":"..entry.name:gsub(" ","_") .."path_track_%02d%02d",b,f)
local d = string.format(entry.name .." level crossing %02d-%02d",b,f)
local h2 = string.format(":"..entry.name:gsub(" ","_") .."path_track_narrow_%02d%02d",b,f)
local d2 = string.format(entry.name .." level crossing (narrow) %02d-%02d",b,f)
minetest.register_node(own_name..h,
{
tiles = { entry.tile, },
description = d,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box =
{
type = "fixed",
fixed = {
{-0.5, -0.5, b/-10, 0.5, -0.4, f/10},
}
},
groups = {choppy = 2, not_blocking_trains = 1,
oddly_breakable_by_hand = 2,
},
sounds = entry.sound,
on_place = minetest.rotate_node,
})
minetest.register_node(own_name..h2,
{
tiles = { entry.tile, },
description = d2,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
node_box =
{
type = "fixed",
fixed = {
{-0.4, -0.5, b/-10, 0.4, -0.4, f/10},
}
},
groups = {choppy = 2, not_blocking_trains = 1,
oddly_breakable_by_hand = 2,
},
sounds = entry.sound,
on_place = minetest.rotate_node,
})
local craft = { { "","","" } , { "","","" } , { "","","" } }
craft[3][2] = adv_track
for y = 2,1,-1
do
if (b>=5) and (f>=5) then
b = b-5
f = f-5
craft[y][2] = entry.full
end
end
for y = 2,1,-1
do
if (b>=10) then
b = b-10
craft[y][1] = entry.full
elseif (b>=5) then
b = b-5
craft[y][1] = entry.half
end
if (f>=10) then
f = f-10
craft[y][3] = entry.full
elseif (f>=5) then
f = f-5
craft[y][3] = entry.half
end
end
-- if (b>0) or (f>0) then
-- print(h.." b: "..b.." f: "..f)
-- else
-- t_aus = ""
-- for y=1,3 do
-- for x=1,3 do
-- t_aus = t_aus .. craft[y][x] .. ", "
-- end
-- end
-- print(h..t_aus)
-- end
minetest.register_craft({
output = own_name..h,
recipe = craft,
replacements = { {adv_track,adv_track}, }
})
minetest.register_craft({
output = own_name..h2,
recipe = { { own_name..h } },
})
end
-- 3 nodes long slope
end
minetest.register_node(own_name..":version_node", {
description = own_name.." version node",
tiles = {own_name.."_version_node.png"},
groups = {cracky = 3,not_in_creative_inventory=1},
})
minetest.register_craft({
output = own_name..":version_node",
recipe = {
{ "advtrains_platform:platform_high_cobble" },
{ "advtrains_platform:platform_high_stone" },
{ adv_track },
},
})