init.lua 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. -- all nodes that do not fit in any other category
  2. -- Author: Och_Noe, Montandalar/Blockhead, W3RQ01
  3. -- Licence: LGPL 2.1
  4. local own_name = "advtrains_platform"
  5. local register_platform = advtrains.register_platform
  6. -- bricks / blocks
  7. list_default = {
  8. "default:desert_sandstone_brick",
  9. "default:desert_stonebrick",
  10. "default:silver_sandstone",
  11. "default:silver_sandstone_brick",
  12. "default:silver_sandstone_block",
  13. "default:brick",
  14. "default:stone",
  15. "default:sandstone",
  16. "default:obsidian_glass",
  17. "default:dirt",
  18. "default:dirt_with_grass",
  19. "default:desert_stone",
  20. "default:desert_sandstone",
  21. -- added 2018-10-16
  22. "default:desert_sandstone_brick",
  23. -- added 2018-10-26
  24. "default:cobble",
  25. -- added 2021-03-07
  26. "default:diamondblock",
  27. "default:obsidianblock",
  28. "default:mossycobble",
  29. -- added 2021-03-08
  30. "default:steelblock",
  31. "default:obsidianbrick",
  32. -- added 2022-02-12
  33. "default:copperblock",
  34. }
  35. list_moreblocks = {
  36. "moreblocks:cactus_brick",
  37. "moreblocks:coal_stone_bricks",
  38. "moreblocks:grey_bricks",
  39. "moreblocks:iron_stone_bricks",
  40. "moreblocks:stone_tile",
  41. -- added 2019-01-19
  42. "moreblocks:split_stone_tile",
  43. "moreblocks:split_stone_tile_alt",
  44. -- added 2021-04-06
  45. "moreblocks:coal_stone",
  46. "moreblocks:iron_stone",
  47. "moreblocks:iron_checker",
  48. "moreblocks:cactus_checker",
  49. "moreblocks:coal_checker",
  50. "moreblocks:tar",
  51. -- added 2022-02-12
  52. "moreblocks:copperpatina",
  53. "moreblocks:cobble_compressed",
  54. "moreblocks:cobble_condensed",
  55. }
  56. list_ethereal = {
  57. "ethereal:icebrick",
  58. "ethereal:bamboo_dirt",
  59. -- added 2021-05-26
  60. "ethereal:blue_marble_tile",
  61. "ethereal:blue_marble_bricks"}
  62. -- added 2018-10-16
  63. list_errata= {
  64. "minetest_errata:desert_sandstone_cobble",
  65. "minetest_errata:mossy_stone_tile",
  66. "minetest_errata:mossystone",
  67. "minetest_errata:sandstone_cobble",
  68. "minetest_errata:silver_sandstone_cobble", }
  69. -- wood
  70. list_wood= {
  71. "default:acacia_wood",
  72. "default:aspen_wood",
  73. "default:junglewood",
  74. "default:pine_wood",
  75. "default:wood" }
  76. list_wood_ethereal = {
  77. "ethereal:banana_wood",
  78. "ethereal:birch_wood",
  79. "ethereal:frost_wood",
  80. "ethereal:palm_wood",
  81. "ethereal:redwood_wood",
  82. "ethereal:willow_wood",
  83. "ethereal:yellow_wood",
  84. "ethereal:bamboo_floor",
  85. -- added 2020-01-12
  86. "ethereal:olive_wood",
  87. "ethereal:sakura_wood",
  88. }
  89. list_wood_maple = {
  90. "maple:maple_wood" }
  91. -- metal blocks
  92. list_moreores = {
  93. "moreores:mithril_block",
  94. "moreores:silver_block", }
  95. -- wool
  96. -- ?
  97. -- technic - added 2019-03-11
  98. list_technic = {
  99. "technic:marble",
  100. -- added 2021-04-06
  101. "technic:marble_bricks",
  102. -- added 2021-04-09
  103. "technic:granite",
  104. -- added 2023-02-10
  105. "technic:concrete",}
  106. -- bakedclay - added 2021-04-06
  107. list_bakedclay = {
  108. "bakedclay:black",
  109. "bakedclay:dark_clay",
  110. "bakedclay:red",
  111. "bakedclay:blue",
  112. -- added 2021-04-09
  113. "bakedclay:white",
  114. -- added 2022-07-22
  115. "bakedclay:terracotta_black",
  116. -- added 2022-07-26
  117. "bakedclay:terracotta_blue",
  118. "bakedclay:terracotta_red",
  119. "bakedclay:terracotta_violet",}
  120. -- australia - added 2022-07-20
  121. list_australia = {
  122. "australia:lemon_eucalyptus_wood",
  123. "australia:river_red_gum_wood",
  124. "australia:scribbly_gum_wood",
  125. "australia:huon_pine_wood",
  126. "australia:grey_mangrove_wood",
  127. "australia:mangrove_apple_wood",
  128. "australia:stilted_mangrove_wood",
  129. "australia:blue_gum_wood",
  130. "australia:conclurry_box_wood",
  131. "australia:coolabah_wood",
  132. "australia:mulga_wood",
  133. "australia:bluestone",
  134. "australia:bluestone_cobble",
  135. "australia:darwin_woollybutt_wood",
  136. -- added 2023-02-10
  137. "australia:bluestone_brick",
  138. "australia:fan_palm_wood",}
  139. if minetest.get_modpath("default") then
  140. for _,name in pairs(list_default) do
  141. register_platform(own_name,name)
  142. end
  143. end
  144. if minetest.get_modpath("moreblocks") then
  145. for _,name in pairs(list_moreblocks) do
  146. register_platform(own_name,name)
  147. end
  148. end
  149. -- added 2018-10-16
  150. if minetest.get_modpath("minetest_errata") then
  151. for _,name in pairs(list_errata) do
  152. register_platform(own_name,name)
  153. end
  154. end
  155. for _,name in pairs(list_wood) do
  156. register_platform(own_name,name)
  157. end
  158. if minetest.get_modpath("ethereal") then
  159. for _,name in pairs(list_ethereal) do
  160. register_platform(own_name,name)
  161. end
  162. for _,name in pairs(list_wood_ethereal) do
  163. register_platform(own_name,name)
  164. end
  165. end
  166. if minetest.get_modpath("maple") then
  167. for _,name in pairs(list_wood_maple) do
  168. register_platform(own_name,name)
  169. end
  170. end
  171. if minetest.get_modpath("moreores") then
  172. for _,name in pairs(list_moreores) do
  173. register_platform(own_name,name)
  174. end
  175. end
  176. if minetest.get_modpath("technic") then
  177. for _,name in pairs(list_technic) do
  178. register_platform(own_name,name)
  179. end
  180. end
  181. -- added 2021-04-06
  182. if minetest.get_modpath("bakedclay") then
  183. for _,name in pairs(list_bakedclay) do
  184. register_platform(own_name,name)
  185. end
  186. end
  187. -- added 2022-07-20
  188. if minetest.get_modpath("australia") then
  189. for _,name in pairs(list_australia) do
  190. register_platform(own_name,name)
  191. end
  192. end
  193. --[[added 2022-07-26 disabled due to overriding with bakedclay mod
  194. if minetest.get_modpath("morebricks") then
  195. for _,name in pairs(list_morebricks) do
  196. register_platform(own_name,name)
  197. end
  198. end]]
  199. local woodpath_lengths = {
  200. { 5,10 },
  201. { 5,20 },
  202. { 5,25 },
  203. { 10,10 },
  204. { 10,20 },
  205. { 10,25 },
  206. { 20,20 },
  207. { 20,25 },
  208. { 25,25 },
  209. }
  210. -- path crossing track
  211. local snowdef = minetest.registered_nodes['default:snowblock']
  212. local node_sound_snow_default = nil
  213. if snowdef then
  214. node_sound_snow_default = snowdef.sounds
  215. end
  216. -- nodelist
  217. nodelist = {}
  218. -- nodelist:insert( { name = "", tile = ".png",
  219. -- sound = ,
  220. -- full = "", half = "" } )
  221. -- stone (WIP)
  222. table.insert(nodelist, { name = "stonebrick",
  223. tile = "default_stone_brick.png",
  224. sound = default.node_sound_stone_defaults(),
  225. full = "default:stonebrick",
  226. half = "stairs:slab_stonebrick" } )
  227. table.insert(nodelist, { name = "desert stonebrick",
  228. tile = "default_desert_stone_brick.png",
  229. sound = default.node_sound_stone_defaults(),
  230. full = "default:desert_stonebrick",
  231. half = "stairs:slab_desert_stonebrick" } )
  232. table.insert(nodelist, { name = "cobble",
  233. tile = "default_cobble.png",
  234. sound = default.node_sound_stone_defaults(),
  235. full = "default:cobble",
  236. half = "stairs:slab_cobble" } )
  237. table.insert(nodelist, { name = "desert cobble",
  238. tile = "default_desert_cobble.png",
  239. sound = default.node_sound_stone_defaults(),
  240. full = "default:desert_cobble",
  241. half = "stairs:slab_desert_cobble" } )
  242. table.insert(nodelist, { name = "stone",
  243. tile = "default_stone.png",
  244. sound = default.node_sound_stone_defaults(),
  245. full = "default:stone",
  246. half = "stairs:slab_stone" } )
  247. table.insert(nodelist, { name = "desert stone",
  248. tile = "default_desert_stone.png",
  249. sound = default.node_sound_stone_defaults(),
  250. full = "default:desert_stone",
  251. half = "stairs:slab_desert_stone" } )
  252. -- snow
  253. table.insert(nodelist, { name = "snow", tile = "default_snow.png",
  254. sound = node_sound_snow_default,
  255. full = "default:snowblock",
  256. half = "stairs:slab_snowblock" } )
  257. -- wood
  258. table.insert(nodelist, { name = "wood",
  259. tile = "default_wood.png",
  260. sound = default.node_sound_wood_defaults(),
  261. full = "default:wood",
  262. half = "stairs:slab_wood" } )
  263. table.insert(nodelist, { name = "jungle wood",
  264. tile = "default_junglewood.png",
  265. sound = default.node_sound_wood_defaults(),
  266. full = "default:junglewood",
  267. half = "stairs:slab_junglewood" } )
  268. table.insert(nodelist, { name = "aspen wood",
  269. tile = "default_aspen_wood.png",
  270. sound = default.node_sound_wood_defaults(),
  271. full = "default:aspen_wood",
  272. half = "stairs:slab_aspen_wood" } )
  273. table.insert(nodelist, { name = "acacia wood",
  274. tile = "default_acacia_wood.png",
  275. sound = default.node_sound_wood_defaults(),
  276. full = "default:acacia_wood",
  277. half = "stairs:slab_acacia_wood" } )
  278. table.insert(nodelist, { name = "pine wood",
  279. tile = "default_pine_wood.png",
  280. sound = default.node_sound_wood_defaults(),
  281. full = "default:pine_wood",
  282. half = "stairs:slab_pine_wood" } )
  283. local adv_track = "advtrains:dtrack_placer"
  284. -- moreblocks
  285. if minetest.get_modpath("moreblocks") then
  286. table.insert(nodelist, { name = "tar",
  287. tile = "moreblocks_tar.png",
  288. sound = default.node_sound_stone_defaults(),
  289. full = "moreblocks:tar",
  290. half = "moreblocks:slab_tar" } )
  291. table.insert(nodelist, { name = "stone tile",
  292. tile = "moreblocks_stone_tile.png",
  293. sound = default.node_sound_stone_defaults(),
  294. full = "moreblocks:stone_tile",
  295. half = "moreblocks:slab_stone_tile" } )
  296. end
  297. -- australia
  298. for _,entry in pairs(nodelist) do
  299. for _,lengths in pairs(woodpath_lengths) do
  300. local b = lengths[1] -- "back" in 1/10 nodes
  301. local f = lengths[2] -- "front" in 1/10 nodes
  302. local h = string.format(":"..entry.name:gsub(" ","_") .."path_track_%02d%02d",b,f)
  303. local d = string.format(entry.name .." level crossing %02d-%02d",b,f)
  304. local h2 = string.format(":"..entry.name:gsub(" ","_") .."path_track_narrow_%02d%02d",b,f)
  305. local d2 = string.format(entry.name .." level crossing (narrow) %02d-%02d",b,f)
  306. minetest.register_node(own_name..h,
  307. {
  308. tiles = { entry.tile, },
  309. description = d,
  310. drawtype = "nodebox",
  311. paramtype = "light",
  312. paramtype2 = "facedir",
  313. node_box =
  314. {
  315. type = "fixed",
  316. fixed = {
  317. {-0.5, -0.5, b/-10, 0.5, -0.4, f/10},
  318. }
  319. },
  320. groups = {choppy = 2, not_blocking_trains = 1,
  321. oddly_breakable_by_hand = 2,
  322. },
  323. sounds = entry.sound,
  324. on_place = minetest.rotate_node,
  325. })
  326. minetest.register_node(own_name..h2,
  327. {
  328. tiles = { entry.tile, },
  329. description = d2,
  330. drawtype = "nodebox",
  331. paramtype = "light",
  332. paramtype2 = "facedir",
  333. node_box =
  334. {
  335. type = "fixed",
  336. fixed = {
  337. {-0.4, -0.5, b/-10, 0.4, -0.4, f/10},
  338. }
  339. },
  340. groups = {choppy = 2, not_blocking_trains = 1,
  341. oddly_breakable_by_hand = 2,
  342. },
  343. sounds = entry.sound,
  344. on_place = minetest.rotate_node,
  345. })
  346. local craft = { { "","","" } , { "","","" } , { "","","" } }
  347. craft[3][2] = adv_track
  348. for y = 2,1,-1
  349. do
  350. if (b>=5) and (f>=5) then
  351. b = b-5
  352. f = f-5
  353. craft[y][2] = entry.full
  354. end
  355. end
  356. for y = 2,1,-1
  357. do
  358. if (b>=10) then
  359. b = b-10
  360. craft[y][1] = entry.full
  361. elseif (b>=5) then
  362. b = b-5
  363. craft[y][1] = entry.half
  364. end
  365. if (f>=10) then
  366. f = f-10
  367. craft[y][3] = entry.full
  368. elseif (f>=5) then
  369. f = f-5
  370. craft[y][3] = entry.half
  371. end
  372. end
  373. -- if (b>0) or (f>0) then
  374. -- print(h.." b: "..b.." f: "..f)
  375. -- else
  376. -- t_aus = ""
  377. -- for y=1,3 do
  378. -- for x=1,3 do
  379. -- t_aus = t_aus .. craft[y][x] .. ", "
  380. -- end
  381. -- end
  382. -- print(h..t_aus)
  383. -- end
  384. minetest.register_craft({
  385. output = own_name..h,
  386. recipe = craft,
  387. replacements = { {adv_track,adv_track}, }
  388. })
  389. minetest.register_craft({
  390. output = own_name..h2,
  391. recipe = { { own_name..h } },
  392. })
  393. end
  394. -- 3 nodes long slope
  395. end
  396. minetest.register_node(own_name..":version_node", {
  397. description = own_name.." version node",
  398. tiles = {own_name.."_version_node.png"},
  399. groups = {cracky = 3,not_in_creative_inventory=1},
  400. })
  401. minetest.register_craft({
  402. output = own_name..":version_node",
  403. recipe = {
  404. { "advtrains_platform:platform_high_cobble" },
  405. { "advtrains_platform:platform_high_stone" },
  406. { adv_track },
  407. },
  408. })