More trees!
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

554 lines
20KB

  1. local S = moretrees.intllib
  2. moretrees.avoidnodes = {}
  3. moretrees.treelist = {
  4. {"beech", "Beech Tree"},
  5. {"apple_tree", "Apple Tree"},
  6. {"oak", "Oak Tree", "acorn", "Acorn", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
  7. {"sequoia", "Giant Sequoia"},
  8. {"birch", "Birch Tree"},
  9. {"palm", "Palm Tree", "palm_fruit_trunk_gen", "Palm Tree", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 1.0 },
  10. {"date_palm", "Date Palm Tree", "date_palm_fruit_trunk", "Date Palm Tree", {0, 0, 0, 0, 0, 0}, 0.0 },
  11. {"spruce", "Spruce Tree", "spruce_cone", "Spruce Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
  12. {"cedar", "Cedar Tree", "cedar_cone", "Cedar Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
  13. {"poplar", "Poplar Tree"},
  14. {"poplar_small", "Poplar Tree"},
  15. {"willow", "Willow Tree"},
  16. {"rubber_tree", "Rubber Tree"},
  17. {"fir", "Douglas Fir", "fir_cone", "Fir Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
  18. {"jungletree", "Jungle Tree", nil, nil, nil, nil, "default_junglesapling.png" },
  19. }
  20. local dirs1 = { 21, 20, 23, 22, 21 }
  21. local dirs2 = { 12, 9, 18, 7, 12 }
  22. local dirs3 = { 14, 11, 16, 5, 14 }
  23. local moretrees_new_leaves_drawtype = "allfaces_optional"
  24. local moretrees_plantlike_leaves_visual_scale = 1
  25. local moretrees_new_leaves_waving = 1
  26. if moretrees.plantlike_leaves then
  27. moretrees_new_leaves_drawtype = "plantlike"
  28. moretrees_plantlike_leaves_visual_scale = math.sqrt(2)
  29. end
  30. -- redefine default leaves to handle plantlike and/or leaf decay options
  31. if moretrees.plantlike_leaves then
  32. minetest.override_item("default:leaves", {
  33. inventory_image = minetest.inventorycube("default_leaves.png"),
  34. drawtype = "plantlike",
  35. visual_scale = math.sqrt(2)
  36. })
  37. end
  38. -- redefine default jungle leaves for same
  39. if moretrees.plantlike_leaves then
  40. minetest.override_item("default:jungleleaves", {
  41. inventory_image = minetest.inventorycube("default_jungleleaves.png"),
  42. drawtype = "plantlike",
  43. visual_scale = math.sqrt(2)
  44. })
  45. end
  46. for i in ipairs(moretrees.treelist) do
  47. local treename = moretrees.treelist[i][1]
  48. local treedesc = moretrees.treelist[i][2]
  49. local fruit = moretrees.treelist[i][3]
  50. local fruitdesc = moretrees.treelist[i][4]
  51. local selbox = moretrees.treelist[i][5]
  52. local vscale = moretrees.treelist[i][6]
  53. local saptex = moretrees.treelist[i][7]
  54. -- player will get a sapling with 1/100 chance
  55. -- player will get leaves only if he/she gets no saplings,
  56. -- this is because max_items is 1
  57. local droprarity = 100
  58. local decay = moretrees.leafdecay_radius
  59. if treename == "palm" then
  60. droprarity = 20
  61. decay = moretrees.palm_leafdecay_radius
  62. elseif treename == "date_palm" then
  63. decay = moretrees.palm_leafdecay_radius
  64. end
  65. if treename ~= "jungletree" -- the default game provides jungle tree and pine trunk/planks nodes.
  66. and treename ~= "poplar_small"
  67. and treename ~= "pine" then
  68. saptex = "moretrees_"..treename.."_sapling.png"
  69. minetest.register_node("moretrees:"..treename.."_trunk", {
  70. description = S(treedesc.." Trunk"),
  71. tiles = {
  72. "moretrees_"..treename.."_trunk_top.png",
  73. "moretrees_"..treename.."_trunk_top.png",
  74. "moretrees_"..treename.."_trunk.png"
  75. },
  76. paramtype2 = "facedir",
  77. is_ground_content = false,
  78. groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
  79. sounds = default.node_sound_wood_defaults(),
  80. on_place = minetest.rotate_node,
  81. })
  82. minetest.register_node("moretrees:"..treename.."_planks", {
  83. description = S(treedesc.." Planks"),
  84. tiles = {"moretrees_"..treename.."_wood.png"},
  85. is_ground_content = false,
  86. groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
  87. sounds = default.node_sound_wood_defaults(),
  88. })
  89. minetest.register_node("moretrees:"..treename.."_sapling", {
  90. description = S(treedesc.." Sapling"),
  91. drawtype = "plantlike",
  92. tiles = {saptex},
  93. inventory_image = saptex,
  94. paramtype = "light",
  95. paramtype2 = "waving",
  96. walkable = false,
  97. is_ground_content = true,
  98. selection_box = {
  99. type = "fixed",
  100. fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
  101. },
  102. groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
  103. sounds = default.node_sound_defaults(),
  104. on_place = function(itemstack, placer, pointed_thing)
  105. itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
  106. "moretrees:" ..treename.. "_sapling",
  107. -- minp, maxp to be checked, relative to sapling pos
  108. -- minp_relative.y = 1 because sapling pos has been checked
  109. {x = -3, y = 1, z = -3},
  110. {x = 3, y = 6, z = 3},
  111. -- maximum interval of interior volume check
  112. 4)
  113. return itemstack
  114. end,
  115. })
  116. local moretrees_leaves_inventory_image = nil
  117. if moretrees.plantlike_leaves then
  118. moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_"..treename.."_leaves.png")
  119. end
  120. minetest.register_node("moretrees:"..treename.."_leaves", {
  121. description = S(treedesc.." Leaves"),
  122. drawtype = moretrees_new_leaves_drawtype,
  123. waving = moretrees_new_leaves_waving,
  124. visual_scale = moretrees_plantlike_leaves_visual_scale,
  125. tiles = { "moretrees_"..treename.."_leaves.png" },
  126. inventory_image = moretrees_leaves_inventory_image,
  127. paramtype = "light",
  128. is_ground_content = false,
  129. groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 1},
  130. sounds = default.node_sound_leaves_defaults(),
  131. drop = {
  132. max_items = 1,
  133. items = {
  134. {items = {"moretrees:"..treename.."_sapling"}, rarity = droprarity },
  135. {items = {"moretrees:"..treename.."_leaves"} }
  136. }
  137. },
  138. })
  139. if moretrees.enable_stairs then
  140. if minetest.get_modpath("moreblocks") then
  141. -- stairsplus:register_all(modname, subname, recipeitem, {fields})
  142. stairsplus:register_all(
  143. "moretrees",
  144. treename.."_trunk",
  145. "moretrees:"..treename.."_trunk",
  146. {
  147. groups = { snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2, not_in_creative_inventory=1 },
  148. tiles = {
  149. "moretrees_"..treename.."_trunk_top.png",
  150. "moretrees_"..treename.."_trunk_top.png",
  151. "moretrees_"..treename.."_trunk.png"
  152. },
  153. description = S(treedesc.." Trunk"),
  154. drop = treename.."_trunk",
  155. }
  156. )
  157. stairsplus:register_all(
  158. "moretrees",
  159. treename.."_planks",
  160. "moretrees:"..treename.."_planks",
  161. {
  162. groups = { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, not_in_creative_inventory=1 },
  163. tiles = { "moretrees_"..treename.."_wood.png" },
  164. description = S(treedesc.." Planks"),
  165. drop = treename.."_planks",
  166. }
  167. )
  168. elseif minetest.get_modpath("stairs") then
  169. stairs.register_stair_and_slab(
  170. "moretrees_"..treename.."_trunk",
  171. "moretrees:"..treename.."_trunk",
  172. { snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2 },
  173. { "moretrees_"..treename.."_trunk_top.png",
  174. "moretrees_"..treename.."_trunk_top.png",
  175. "moretrees_"..treename.."_trunk.png"
  176. },
  177. S(treedesc.." Trunk Stair"),
  178. S(treedesc.." Trunk Slab"),
  179. default.node_sound_wood_defaults()
  180. )
  181. stairs.register_stair_and_slab(
  182. "moretrees_"..treename.."_planks",
  183. "moretrees:"..treename.."_planks",
  184. { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3 },
  185. { "moretrees_"..treename.."_wood.png" },
  186. S(treedesc.." Planks Stair"),
  187. S(treedesc.." Planks Slab"),
  188. default.node_sound_wood_defaults()
  189. )
  190. end
  191. end
  192. if moretrees.enable_fences then
  193. local planks_name = "moretrees:" .. treename .. "_planks"
  194. local planks_tile = "moretrees_" .. treename .. "_wood.png"
  195. default.register_fence("moretrees:" .. treename .. "_fence", {
  196. description = S(treedesc.." Fence"),
  197. texture = planks_tile,
  198. inventory_image = "default_fence_overlay.png^" .. planks_tile ..
  199. "^default_fence_overlay.png^[makealpha:255,126,126",
  200. wield_image = "default_fence_overlay.png^" .. planks_tile ..
  201. "^default_fence_overlay.png^[makealpha:255,126,126",
  202. material = planks_name,
  203. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  204. sounds = default.node_sound_wood_defaults()
  205. })
  206. default.register_fence_rail("moretrees:" .. treename .. "_fence_rail", {
  207. description = S(treedesc.." Fence Rail"),
  208. texture = planks_tile,
  209. inventory_image = "default_fence_rail_overlay.png^" .. planks_tile ..
  210. "^default_fence_rail_overlay.png^[makealpha:255,126,126",
  211. wield_image = "default_fence_rail_overlay.png^" .. planks_tile ..
  212. "^default_fence_rail_overlay.png^[makealpha:255,126,126",
  213. material = planks_name,
  214. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
  215. sounds = default.node_sound_wood_defaults()
  216. })
  217. if minetest.global_exists("doors") then
  218. doors.register_fencegate("moretrees:" .. treename .. "_gate", {
  219. description = S(treedesc .. " Fence Gate"),
  220. texture = planks_tile,
  221. material = planks_name,
  222. groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
  223. })
  224. end
  225. end
  226. end
  227. minetest.register_node("moretrees:"..treename.."_sapling_ongen", {
  228. description = S(treedesc.." Sapling (fast growth)"),
  229. drawtype = "plantlike",
  230. tiles = {saptex},
  231. inventory_image = saptex,
  232. paramtype = "light",
  233. paramtype2 = "waving",
  234. walkable = false,
  235. is_ground_content = true,
  236. selection_box = {
  237. type = "fixed",
  238. fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
  239. },
  240. groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1},
  241. sounds = default.node_sound_defaults(),
  242. drop = "moretrees:"..treename.."_sapling",
  243. on_place = function(itemstack, placer, pointed_thing)
  244. itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
  245. "moretrees:" ..treename.. "_sapling_ongen",
  246. -- minp, maxp to be checked, relative to sapling pos
  247. -- minp_relative.y = 1 because sapling pos has been checked
  248. {x = -3, y = 1, z = -3},
  249. {x = 3, y = 6, z = 3},
  250. -- maximum interval of interior volume check
  251. 4)
  252. return itemstack
  253. end,
  254. })
  255. local fruitname = nil
  256. if fruit then
  257. fruitname = "moretrees:"..fruit
  258. minetest.register_node(fruitname, {
  259. description = S(fruitdesc),
  260. drawtype = "plantlike",
  261. tiles = { "moretrees_"..fruit..".png" },
  262. inventory_image = "moretrees_"..fruit..".png^[transformR180",
  263. wield_image = "moretrees_"..fruit..".png^[transformR180",
  264. visual_scale = vscale,
  265. paramtype = "light",
  266. sunlight_propagates = true,
  267. is_ground_content = false,
  268. walkable = false,
  269. selection_box = {
  270. type = "fixed",
  271. fixed = selbox
  272. },
  273. groups = {fleshy=3,dig_immediate=3,flammable=2, attached_node=1, leafdecay = 1, leafdecay_drop = 1},
  274. sounds = default.node_sound_defaults(),
  275. })
  276. end
  277. if treename ~= "jungletree"
  278. and treename ~= "poplar_small"
  279. and treename ~= "pine" then
  280. default.register_leafdecay({
  281. trunks = { "moretrees:"..treename.."_trunk" },
  282. leaves = { "moretrees:"..treename.."_leaves", fruitname },
  283. radius = decay,
  284. })
  285. end
  286. minetest.register_abm({
  287. nodenames = { "moretrees:"..treename.."_trunk_sideways" },
  288. interval = 1,
  289. chance = 1,
  290. action = function(pos, node, active_object_count, active_object_count_wider)
  291. local fdir = node.param2 or 0
  292. nfdir = dirs2[fdir+1]
  293. minetest.add_node(pos, {name = "moretrees:"..treename.."_trunk", param2 = nfdir})
  294. end,
  295. })
  296. table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_trunk")
  297. if moretrees.spawn_saplings then
  298. table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling")
  299. table.insert(moretrees.avoidnodes, "moretrees:"..treename.."_sapling_ongen")
  300. end
  301. end
  302. -- Add small poplar saplings
  303. local poplar_sapling = minetest.registered_nodes["moretrees:poplar_sapling"]
  304. local poplar_sapling_ongen = minetest.registered_nodes["moretrees:poplar_sapling_ongen"]
  305. local poplar_small_sapling = {}
  306. local poplar_small_sapling_ongen = {}
  307. for k,v in pairs(poplar_sapling) do
  308. poplar_small_sapling[k] = v
  309. end
  310. for k,v in pairs(poplar_sapling_ongen) do
  311. poplar_small_sapling_ongen[k] = v
  312. end
  313. poplar_small_sapling.tiles = {"moretrees_poplar_small_sapling.png"}
  314. poplar_small_sapling.inventory_image = "moretrees_poplar_small_sapling.png"
  315. poplar_small_sapling.is_ground_content = true
  316. poplar_small_sapling_ongen.tiles_ongen = {"moretrees_poplar_small_sapling.png"}
  317. poplar_small_sapling_ongen.inventory_image_ongen = "moretrees_poplar_small_sapling.png"
  318. poplar_small_sapling_ongen.drop = "moretrees:poplar_small_sapling"
  319. poplar_small_sapling_ongen.is_ground_content = true
  320. minetest.register_node("moretrees:poplar_small_sapling", poplar_small_sapling)
  321. minetest.register_node("moretrees:poplar_small_sapling_ongen", poplar_small_sapling_ongen)
  322. if moretrees.spawn_saplings then
  323. table.insert(moretrees.avoidnodes, "moretrees:poplar_sapling")
  324. table.insert(moretrees.avoidnodes, "moretrees:poplar_small_sapling_ongen")
  325. end
  326. local poplar_leaves_drop = minetest.registered_nodes["moretrees:poplar_leaves"].drop
  327. minetest.override_item("moretrees:poplar_leaves", {
  328. drop = {
  329. max_items = poplar_leaves_drop.maxitems,
  330. items = {
  331. {items = {"moretrees:poplar_sapling"}, rarity = 1.33 * poplar_leaves_drop.items[1].rarity },
  332. {items = {"moretrees:poplar_small_sapling"}, rarity = 1.33 * poplar_leaves_drop.items[1].rarity },
  333. {items = {"moretrees:poplar_leaves"} }
  334. }
  335. }
  336. })
  337. -- Extra nodes for jungle trees:
  338. local jungleleaves = {"yellow","red"}
  339. local jungleleavesnames = {"Yellow", "Red"}
  340. for color = 1, #jungleleaves do
  341. local leave_name = "moretrees:jungletree_leaves_"..jungleleaves[color]
  342. local moretrees_leaves_inventory_image = nil
  343. if moretrees.plantlike_leaves then
  344. moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_jungletree_leaves_"..jungleleaves[color]..".png")
  345. end
  346. minetest.register_node(leave_name, {
  347. description = S("Jungle Tree Leaves ("..jungleleavesnames[color]..")"),
  348. drawtype = moretrees_new_leaves_drawtype,
  349. waving = moretrees_new_leaves_waving,
  350. visual_scale = moretrees_plantlike_leaves_visual_scale,
  351. tiles = {"moretrees_jungletree_leaves_"..jungleleaves[color]..".png"},
  352. inventory_image = moretrees_leaves_inventory_image,
  353. paramtype = "light",
  354. is_ground_content = false,
  355. groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 3 },
  356. drop = {
  357. max_items = 1,
  358. items = {
  359. {items = {"default:junglesapling"}, rarity = 100 },
  360. {items = {"moretrees:jungletree_leaves_"..jungleleaves[color]} }
  361. }
  362. },
  363. sounds = default.node_sound_leaves_defaults(),
  364. })
  365. end
  366. -- To get Moretrees to generate its own jungle trees among the default mapgen
  367. -- we need our own copy of that node, which moretrees will match against.
  368. local jungle_tree = table.copy(minetest.registered_nodes["default:jungletree"])
  369. jungle_tree.drop = jungle_tree.drop or { items = {} }
  370. table.insert(jungle_tree.drop.items, { items = {"default:jungletree"}})
  371. minetest.register_node("moretrees:jungletree_trunk", jungle_tree)
  372. default.register_leafdecay({
  373. trunks = { "default:jungletree", "moretrees:jungletree_trunk" },
  374. leaves = { "default:jungleleaves", "moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_red" },
  375. radius = moretrees.leafdecay_radius,
  376. })
  377. -- Extra needles for firs
  378. local moretrees_leaves_inventory_image = nil
  379. if moretrees.plantlike_leaves then
  380. moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_fir_leaves_bright.png")
  381. end
  382. minetest.register_node("moretrees:fir_leaves_bright", {
  383. drawtype = moretrees_new_leaves_drawtype,
  384. waving = moretrees_new_leaves_waving,
  385. visual_scale = moretrees_plantlike_leaves_visual_scale,
  386. description = S("Douglas Fir Leaves (Bright)"),
  387. tiles = { "moretrees_fir_leaves_bright.png" },
  388. inventory_image = moretrees_leaves_inventory_image,
  389. paramtype = "light",
  390. is_ground_content = false,
  391. groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 3 },
  392. drop = {
  393. max_items = 1,
  394. items = {
  395. {items = {'moretrees:fir_sapling'}, rarity = 100 },
  396. {items = {'moretrees:fir_leaves_bright'} }
  397. }
  398. },
  399. sounds = default.node_sound_leaves_defaults()
  400. })
  401. default.register_leafdecay({
  402. trunks = { "moretrees:fir_trunk" },
  403. leaves = { "moretrees:fir_leaves", "moretrees:fir_leaves_bright" },
  404. radius = moretrees.leafdecay_radius,
  405. })
  406. if moretrees.enable_redefine_apple then
  407. local appledef = table.copy(minetest.registered_nodes["default:apple"])
  408. appledef.groups.attached_node = 1
  409. minetest.register_node(":default:apple", appledef)
  410. end
  411. table.insert(moretrees.avoidnodes, "default:jungletree")
  412. table.insert(moretrees.avoidnodes, "default:pine_tree")
  413. table.insert(moretrees.avoidnodes, "default:acacia_tree")
  414. table.insert(moretrees.avoidnodes, "moretrees:fir_trunk")
  415. table.insert(moretrees.avoidnodes, "default:tree")
  416. if moretrees.spawn_saplings then
  417. table.insert(moretrees.avoidnodes, "snow:sapling_pine")
  418. table.insert(moretrees.avoidnodes, "default:junglesapling")
  419. table.insert(moretrees.avoidnodes, "default:pine_sapling")
  420. end
  421. -- "empty" (tapped) rubber tree nodes
  422. minetest.register_node("moretrees:rubber_tree_trunk_empty", {
  423. description = S("Rubber Tree Trunk (Empty)"),
  424. tiles = {
  425. "moretrees_rubber_tree_trunk_top.png",
  426. "moretrees_rubber_tree_trunk_top.png",
  427. "moretrees_rubber_tree_trunk_empty.png"
  428. },
  429. is_ground_content = true,
  430. groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
  431. sounds = default.node_sound_wood_defaults(),
  432. paramtype2 = "facedir",
  433. is_ground_content = false,
  434. on_place = minetest.rotate_node,
  435. })
  436. minetest.register_abm({
  437. nodenames = { "moretrees:rubber_tree_trunk_empty_sideways" },
  438. interval = 1,
  439. chance = 1,
  440. action = function(pos, node, active_object_count, active_object_count_wider)
  441. local fdir = node.param2 or 0
  442. nfdir = dirs2[fdir+1]
  443. minetest.add_node(pos, {name = "moretrees:rubber_tree_trunk_empty", param2 = nfdir})
  444. end,
  445. })
  446. -- For compatibility with old nodes, recently-changed nodes, and default nodes
  447. minetest.register_alias("technic:rubber_tree_full", "moretrees:rubber_tree_trunk")
  448. minetest.register_alias("farming_plus:rubber_tree_full", "moretrees:rubber_tree_trunk")
  449. minetest.register_alias("farming:rubber_tree_full", "moretrees:rubber_tree_trunk")
  450. minetest.register_alias("technic:rubber_leaves", "moretrees:rubber_tree_leaves")
  451. minetest.register_alias("farming_plus:rubber_leaves", "moretrees:rubber_tree_leaves")
  452. minetest.register_alias("farming:rubber_leaves", "moretrees:rubber_tree_leaves")
  453. minetest.register_alias("technic:rubber_tree_sapling", "moretrees:rubber_tree_sapling")
  454. minetest.register_alias("farming_plus:rubber_sapling", "moretrees:rubber_tree_sapling")
  455. minetest.register_alias("farming:rubber_sapling", "moretrees:rubber_tree_sapling")
  456. minetest.register_alias("moretrees:conifer_trunk", "moretrees:fir_trunk")
  457. minetest.register_alias("moretrees:conifer_trunk_sideways", "moretrees:fir_trunk_sideways")
  458. minetest.register_alias("moretrees:conifer_leaves", "moretrees:fir_leaves")
  459. minetest.register_alias("moretrees:conifer_leaves_bright", "moretrees:fir_leaves_bright")
  460. minetest.register_alias("moretrees:conifer_sapling", "moretrees:fir_sapling")
  461. minetest.register_alias("conifers:trunk", "moretrees:fir_trunk")
  462. minetest.register_alias("conifers:trunk_reversed", "moretrees:fir_trunk_sideways")
  463. minetest.register_alias("conifers:leaves", "moretrees:fir_leaves")
  464. minetest.register_alias("conifers:leaves_special", "moretrees:fir_leaves_bright")
  465. minetest.register_alias("conifers:sapling", "moretrees:fir_sapling")
  466. minetest.register_alias("moretrees:jungletree_sapling", "default:junglesapling")
  467. minetest.register_alias("moretrees:jungletree_trunk_sideways", "moreblocks:horizontal_jungle_tree")
  468. minetest.register_alias("moretrees:jungletree_planks", "default:junglewood")
  469. minetest.register_alias("moretrees:jungletree_leaves_green", "default:jungleleaves")
  470. minetest.register_alias("moretrees:acacia_trunk", "default:acacia_tree")
  471. minetest.register_alias("moretrees:acacia_planks", "default:acacia_wood")
  472. minetest.register_alias("moretrees:acacia_sapling", "default:acacia_sapling")
  473. minetest.register_alias("moretrees:acacia_leaves", "default:acacia_leaves")
  474. minetest.register_alias("moretrees:pine_trunk", "moretrees:cedar_trunk")
  475. minetest.register_alias("moretrees:pine_planks", "moretrees:cedar_planks")
  476. minetest.register_alias("moretrees:pine_sapling", "moretrees:cedar_sapling")
  477. minetest.register_alias("moretrees:pine_leaves", "moretrees:cedar_leaves")
  478. minetest.register_alias("moretrees:pine_cone", "moretrees:cedar_cone")
  479. minetest.register_alias("moretrees:pine_nuts", "moretrees:cedar_nuts")
  480. minetest.register_alias("moretrees:pine_sapling_ongen", "moretrees:cedar_sapling_ongen")
  481. minetest.register_alias("moretrees:dates", "moretrees:dates_f4")