From 4c198fad78428ac7695626fc39cf6db63d25c7d3 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sun, 7 Apr 2013 22:09:18 -0400 Subject: [PATCH] Multiple changes, see below: Fix replacement of default trees so that it works correctly. Beeches now use default tree nodes, but L-systems models. This redefines the default tree, wood, leaves, and saplings so that they use moretrees' textures "Beech" in their descriptions, but only if replacement of default trees is enabled. Added backward-compat aliases for this change. Moved tree replacement mapgen->air aliases to a more logical spot in the code. Also, changed out all leaf decay dig_node() calls for nodeupdate(), since the former calls the latter anyway, and the latter is what does the job. Increased the palm leaf decay radius to 12. --- init.lua | 13 +++++--- leafdecay.lua | 18 ++++------- node_defs.lua | 85 ++++++++++++++++++++++++++++++++++++++++++++++--- settings.lua | 2 +- tree_models.lua | 4 +-- 5 files changed, 98 insertions(+), 24 deletions(-) diff --git a/init.lua b/init.lua index c58b419..90e8111 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,4 @@ --- More trees! 2013-02-11 +-- More trees! 2013-04-07 -- -- This mod adds more types of trees to the game -- @@ -18,18 +18,21 @@ moretrees = {} --- These first two dofile() calls must precede any others, and must remain in --- this order, otherwise variables and node names will get skipped. - dofile(minetest.get_modpath("moretrees").."/settings.lua") dofile(minetest.get_modpath("moretrees").."/node_defs.lua") - dofile(minetest.get_modpath("moretrees").."/tree_models.lua") dofile(minetest.get_modpath("moretrees").."/biome_defs.lua") dofile(minetest.get_modpath("moretrees").."/crafts.lua") dofile(minetest.get_modpath("moretrees").."/leafdecay.lua") dofile(minetest.get_modpath("moretrees").."/saplings.lua") +if moretrees.enable_replace_default_trees then + minetest.register_alias("mapgen_tree", "air") + minetest.register_alias("mapgen_leaves", "air") + minetest.register_alias("mapgen_apple", "air") + plantslib:register_generate_plant(moretrees.beech_biome, moretrees.beech_model) +end + -- tree spawning setup if moretrees.enable_apple_tree then diff --git a/leafdecay.lua b/leafdecay.lua index 174eb34..7c75f11 100644 --- a/leafdecay.lua +++ b/leafdecay.lua @@ -11,7 +11,7 @@ if moretrees.enable_leafdecay then action = function(pos, node, active_object_count, active_object_count_wider) if not minetest.env:find_node_near(pos, moretrees.leafdecay_radius, "moretrees:"..treename.."_trunk") then minetest.env:remove_node(pos) - minetest.env:dig_node(pos) + nodeupdate(pos) end end }) @@ -25,7 +25,7 @@ if moretrees.enable_leafdecay then action = function(pos, node, active_object_count, active_object_count_wider) if not minetest.env:find_node_near(pos, moretrees.leafdecay_radius, {"default:jungletree", "moretrees:jungletree_trunk"}) then minetest.env:remove_node(pos) - minetest.env:dig_node(pos) + nodeupdate(pos) end end }) @@ -37,7 +37,7 @@ if moretrees.enable_leafdecay then action = function(pos, node, active_object_count, active_object_count_wider) if not minetest.env:find_node_near(pos, moretrees.leafdecay_radius, "moretrees:fir_trunk") then minetest.env:remove_node(pos) - minetest.env:dig_node(pos) + nodeupdate(pos) end end }) @@ -49,19 +49,13 @@ if moretrees.enable_leafdecay then action = function(pos, node, active_object_count, active_object_count_wider) if not minetest.env:find_node_near(pos, moretrees.palm_leafdecay_radius, "moretrees:palm_trunk") then minetest.env:remove_node(pos) - minetest.env:dig_node(pos) + nodeupdate(pos) end end }) end -if moretrees.enable_replace_default_trees then - minetest.register_alias("mapgen_tree", "air") - minetest.register_alias("mapgen_leaves", "air") - minetest.register_alias("mapgen_apple", "air") - plantslib:register_generate_plant(moretrees.beech_biome, moretrees.beech_model) - -elseif moretrees.enable_default_leafdecay then +if moretrees.enable_default_leafdecay then minetest.register_abm({ nodenames = "default:leaves", interval = moretrees.default_leafdecay_delay, @@ -69,7 +63,7 @@ elseif moretrees.enable_default_leafdecay then action = function(pos, node, active_object_count, active_object_count_wider) if not minetest.env:find_node_near(pos, moretrees.default_leafdecay_radius, {"default:tree"}) then minetest.env:remove_node(pos) - minetest.env:dig_node(pos) + nodeupdate(pos) end end }) diff --git a/node_defs.lua b/node_defs.lua index 63bc413..a56795d 100644 --- a/node_defs.lua +++ b/node_defs.lua @@ -1,7 +1,6 @@ moretrees.avoidnodes = {} moretrees.treelist = { - {"beech", "Beech Tree"}, {"apple_tree", "Apple Tree"}, {"oak", "Oak Tree", "acorn", "Acorn", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 }, {"sequoia", "Giant Sequoia"}, @@ -201,19 +200,97 @@ if moretrees.enable_redefine_apple then }) end +if moretrees.enable_replace_default_trees then + + minetest.register_node(":default:tree", { + description = "Beech Trunk", + tiles = {"moretrees_beech_trunk_top.png", "moretrees_beech_trunk_top.png", "moretrees_beech_trunk.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + }) + + minetest.register_node(":default:leaves", { + description = "Beech Leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"moretrees_beech_leaves.png"}, + paramtype = "light", + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'default:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {'default:leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + }) + + minetest.register_node(":default:wood", { + description = "Beech Planks", + tiles = {"moretrees_beech_wood.png"}, + groups = {choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1}, + sounds = default.node_sound_wood_defaults(), + }) + + minetest.register_node(":default:sapling", { + description = "Beech Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"moretrees_beech_sapling.png"}, + inventory_image = "moretrees_beech_sapling.png", + wield_image = "moretrees_beech_sapling.png", + paramtype = "light", + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3} + }, + groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1}, + sounds = default.node_sound_defaults(), + }) +end + +minetest.register_node("moretrees:beech_trunk_sideways", { + description = "Sideways Beech Trunk", + tiles = { + "moretrees_beech_trunk.png^[transformR90", + "moretrees_beech_trunk.png^[transformR90", + "moretrees_beech_trunk_top.png", + "moretrees_beech_trunk_top.png", + "moretrees_beech_trunk.png^[transformR90", + "moretrees_beech_trunk.png^[transformR90" + }, + is_ground_content = true, + groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) + table.insert(moretrees.avoidnodes, "default:jungletree") table.insert(moretrees.avoidnodes, "moretrees:jungletree_trunk") table.insert(moretrees.avoidnodes, "moretrees:fir_trunk") --- For compatibility with newly-re-introduced default jungles and related nodes. +-- For compatibility with old nodes and recently-changed nodes. + +minetest.register_alias("moretrees:beech_trunk", "default:tree") +minetest.register_alias("moretrees:beech_leaves", "default:leaves") +minetest.register_alias("moretrees:beech_planks", "default:wood") +minetest.register_alias("moretrees:beech_sapling", "default:sapling") minetest.register_alias("moretrees:jungletree_trunk", "default:jungletree") minetest.register_alias("moretrees:jungletree_planks", "default:junglewood") minetest.register_alias("moretrees:jungletree_sapling", "default:junglesapling") minetest.register_alias("jungletree:sapling", "default:junglesapling") --- These next ones are for the old jungle trees and conifers mods. - minetest.register_alias("jungletree:leaves_green", "moretrees:jungletree_leaves_green") minetest.register_alias("jungletree:leaves_red", "moretrees:jungletree_leaves_red") minetest.register_alias("jungletree:leaves_yellow", "moretrees:jungletree_leaves_yellow") diff --git a/settings.lua b/settings.lua index 9dfb223..66fefeb 100644 --- a/settings.lua +++ b/settings.lua @@ -44,7 +44,7 @@ moretrees.leafdecay_delay = 2 moretrees.leafdecay_chance = 200 moretrees.leafdecay_radius = 5 -moretrees.palm_leafdecay_radius = 8 +moretrees.palm_leafdecay_radius = 12 moretrees.default_leafdecay_delay = 3 moretrees.default_leafdecay_chance = 100 diff --git a/tree_models.lua b/tree_models.lua index 01a70f1..76767b5 100644 --- a/tree_models.lua +++ b/tree_models.lua @@ -4,8 +4,8 @@ moretrees.beech_model={ rules_b="[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&Fd]//d[+^d][--&d]]", rules_c="/", rules_d="F", - trunk="moretrees:beech_trunk", - leaves="moretrees:beech_leaves", + trunk="default:tree", + leaves="default:leaves", angle=30, iterations=2, random_level=0,