1 Commits

Author SHA1 Message Date
2ef75a2f94 flux things 2022-11-05 21:10:46 -04:00
18 changed files with 868 additions and 812 deletions

View File

@ -14,15 +14,14 @@ globals = {
"default",
"dump",
"moretrees",
"ethereal",
}
read_globals = {
string = {fields = {"split"}},
table = {fields = {"copy", "getn"}},
"biome_lib",
"stairsplus",
"stairs",
"doors",
"xcompat",
}

View File

@ -8,5 +8,4 @@ jungle trees mod, and big contributions by RealBadAngel.
Brought together into one mod and made L-systems compatible by Vanessa
Ezekowitz.
Dependencies: `xcompat`
see mod.conf for more
Dependencies: <a href="https://forum.minetest.net/viewtopic.php?f=11&t=12999">biome_lib</a> and default

View File

@ -1,155 +1,310 @@
moretrees.beech_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 8,
seed_diff = 2,
rarity = 50,
max_count = 20,
}
moretrees.palm_biome = {
place_on = xcompat.materials.sand,
surface = "default:sand",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 5,
seed_diff = 330,
min_elevation = -1,
max_elevation = 1,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 10,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_count = 10,
temp_min = 0.25,
temp_max = -0.15,
rarity = 50,
max_count = 10,
}
moretrees.date_palm_biome = {
place_on = xcompat.materials.desert_sand,
surface = "default:desert_sand",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 339,
min_elevation = -1,
max_elevation = 10,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 100,
near_nodes = {"default:water_source"},
near_nodes_size = 20,
near_nodes_count = 100,
near_nodes_vertical = 20,
temp_min = -0.20,
humidity_max = 0.20,
rarity = 10,
max_count = 30,
}
moretrees.date_palm_biome_2 = {
place_on = xcompat.materials.desert_sand,
surface = "default:desert_sand",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 340,
min_elevation = 11,
max_elevation = 30,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 1,
near_nodes = {"default:water_source"},
near_nodes_size = 1,
near_nodes_count = 1,
near_nodes_vertical = 30,
temp_min = -0.20,
humidity_max = 0.20,
rarity = 10,
max_count = 30,
}
moretrees.apple_tree_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 331,
min_elevation = 1,
max_elevation = 10,
temp_min = 0.1,
temp_max = -0.15,
rarity = 75,
max_count = 5,
place_on = {"default:dirt_with_grass"},
biomes = {"deciduous_forest"},
fill_ratio = 0.0001,
}
moretrees.oak_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 15,
seed_diff = 332,
min_elevation = 0,
max_elevation = 10,
temp_min = 0.4,
temp_max = 0.2,
rarity = 50,
max_count = 5,
fill_ratio = 0.0003
}
moretrees.sequoia_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 333,
min_elevation = 0,
max_elevation = 10,
temp_min = 1,
temp_max = -0.4,
rarity = 90,
max_count = 5,
fill_ratio = 0.0001,
}
moretrees.birch_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 5,
seed_diff = 334,
min_elevation = 10,
max_elevation = 15,
temp_min = 0.9,
temp_max = 0.3,
rarity = 50,
max_count = 10,
fill_ratio = 0.001,
}
moretrees.willow_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 337,
min_elevation = -5,
max_elevation = 5,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 5,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_count = 5,
rarity = 75,
max_count = 5,
}
moretrees.rubber_tree_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 338,
min_elevation = -5,
max_elevation = 5,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 10,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_count = 10,
temp_min = -0.15,
rarity = 75,
max_count = 10,
}
moretrees.jungletree_biome = {
place_on = {
xcompat.materials.dirt,
xcompat.materials.dirt_with_grass,
surface = {
"default:dirt",
"default:dirt_with_grass",
"woodsoils:dirt_with_leaves_1",
"woodsoils:grass_with_leaves_1",
"woodsoils:grass_with_leaves_2",
"default:dirt_with_rainforest_litter",
},
avoid_nodes = {"moretrees:jungletree_trunk"},
max_count = 12,
avoid_radius = 3,
rarity = 85,
seed_diff = 329,
min_elevation = 1,
spawn_by = minetest.get_modpath("default") and {"default:jungletree"} or nil,
num_spawn_by = minetest.get_modpath("default") and 1 or nil,
near_nodes = {"default:jungletree"},
near_nodes_size = 6,
near_nodes_vertical = 2,
near_nodes_count = 1,
plantlife_limit = -0.9,
biomes = {"rainforest", "rainforest_swamp"},
}
moretrees.spruce_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 335,
min_elevation = 20,
temp_min = 0.9,
temp_max = 0.7,
rarity = 50,
max_count = 5,
}
moretrees.cedar_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 336,
min_elevation = 0, --Added to solve an issue where cedar trees would sometimes spawn deep underground
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 5,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_count = 5,
rarity = 50,
max_count = 10,
}
-- Poplar requires a lot of water.
moretrees.poplar_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 6,
seed_diff = 341,
min_elevation = 0,
max_elevation = 50,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 1,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_vertical = 5,
near_nodes_count = 1,
humidity_min = -0.7,
humidity_max = -1,
rarity = 50,
max_count = 15,
}
-- The humidity requirement it quite restrictive (apparently).
-- Spawn an occasional poplar elsewhere.
moretrees.poplar_biome_2 = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 6,
seed_diff = 341,
min_elevation = 0,
max_elevation = 50,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 10,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_vertical = 4,
near_nodes_count = 10,
humidity_min = 0.1,
humidity_max = -0.6,
rarity = 50,
max_count = 1,
}
-- Subterranean lakes provide enough water for poplars to grow
moretrees.poplar_biome_3 = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 6,
seed_diff = 342,
min_elevation = 0,
max_elevation = 50,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 1,
near_nodes = {"default:water_source"},
near_nodes_size = 1,
near_nodes_vertical = 25,
near_nodes_count = 1,
humidity_min = -0.5,
humidity_max = -1,
rarity = 0,
max_count = 30,
}
moretrees.poplar_small_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 4,
seed_diff = 343,
min_elevation = 0,
max_elevation = 50,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 1,
near_nodes = {"default:water_source"},
near_nodes_size = 10,
near_nodes_vertical = 5,
near_nodes_count = 1,
humidity_min = -0.7,
humidity_max = -1,
rarity = 50,
max_count = 10,
}
moretrees.poplar_small_biome_2 = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 4,
seed_diff = 343,
min_elevation = 0,
max_elevation = 50,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 5,
near_nodes = {"default:water_source"},
near_nodes_size = 10,
near_nodes_vertical = 4,
near_nodes_count = 5,
humidity_min = 0.1,
humidity_max = -0.6,
rarity = 50,
max_count = 3,
}
moretrees.fir_biome = {
place_on = xcompat.materials.dirt_with_grass,
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 359,
min_elevation = 25,
temp_min = 0.9,
temp_max = 0.3,
rarity = 50,
max_count = 10,
}
moretrees.fir_biome_snow = {
place_on = {"snow:dirt_with_snow", "snow:snow"},
below_nodes = {xcompat.materials.dirt, xcompat.materials.dirt_with_grass, "snow:dirt_with_snow"},
surface = {"snow:dirt_with_snow", "snow:snow"},
below_nodes = {"default:dirt", "default:dirt_with_grass", "snow:dirt_with_snow"},
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 359,
rarity = 50,
max_count = 10,
check_air = false,
delete_above = true,
spawn_replace_node = true
}

View File

@ -177,11 +177,10 @@ for _,suffix in ipairs({"_0", "_1", "_2", "_3", ""}) do
paramtype = "light",
sunlight_propagates = true,
walkable = false,
is_ground_content = false,
groups = { fleshy=3, dig_immediate=3, flammable=2, moretrees_coconut=coco_group },
inventory_image = tile.."^[transformR180",
wield_image = tile.."^[transformR180",
sounds = xcompat.sounds.node_sound_default(),
sounds = default.node_sound_defaults(),
drop = drop,
selection_box = {
type = "fixed",

View File

@ -3,15 +3,13 @@ local S = minetest.get_translator("moretrees")
for i in ipairs(moretrees.treelist) do
local treename = moretrees.treelist[i][1]
if moretrees.enable_planks then
minetest.register_craft({
type = "shapeless",
output = "moretrees:"..treename.."_planks 4",
recipe = {
"moretrees:"..treename.."_trunk"
}
})
end
minetest.register_craft({
type = "shapeless",
output = "moretrees:"..treename.."_planks 4",
recipe = {
"moretrees:"..treename.."_trunk"
}
})
minetest.register_craft({
type = "fuel",

View File

@ -723,11 +723,10 @@ for _,suffix in ipairs({"f0", "f1", "f2", "f3", "f4", "m0", "fn", "n"}) do
paramtype = "light",
sunlight_propagates = true,
walkable = false,
is_ground_content = false,
groups = { fleshy=3, dig_immediate=3, flammable=2, moretrees_dates=1 },
inventory_image = "moretrees_dates_"..suffix..".png^[transformR0",
wield_image = "moretrees_dates_"..suffix..".png^[transformR90",
sounds = xcompat.sounds.node_sound_default(),
sounds = default.node_sound_defaults(),
drop = dropfn,
selection_box = {
type = "fixed",

136
default_settings.txt Normal file
View File

@ -0,0 +1,136 @@
-- Global configuration variables
-- Enable the various kinds of trees.
moretrees.enable_apple_tree = true
moretrees.enable_oak = true
moretrees.enable_sequoia = true
moretrees.enable_palm = true
moretrees.enable_date_palm = true
moretrees.enable_cedar = true
moretrees.enable_rubber_tree = true
moretrees.enable_willow = true
moretrees.enable_birch = true
moretrees.enable_spruce = true
moretrees.enable_jungle_tree = true
moretrees.enable_fir = true
moretrees.enable_poplar = true
moretrees.enable_beech = false
-- set this to true to make moretrees spawn saplings at mapgen time instead
-- of fully-grown trees, which will grow into full trees after a very short
-- delay. This reduces mapgen lag in some situations, and fixes situations
-- where the mapgen conflicts with the tree generator.
moretrees.spawn_saplings = true
-- Set this to true to allow defining stairs/slabs/etc. If Moreblocks is
-- installed, this will use that mod's Stairs Plus component. Otherwise, it
-- will use the default stairs mod in minetest_game, if present
moretrees.enable_stairs = true
-- If this variable is set to true, register fences for moretrees wood
moretrees.enable_fences = false
-- Set this to true if you want the plantlike drawtype for leaves, which
-- improves some peoples' framerates without resorting to making leaf nodes opaque.
-- Affects default leaves and default jungle leaves also.
moretrees.plantlike_leaves = false
-- Enable this if you want moretrees to redefine default apples so that they
-- fall when leaves decay/are dug.
moretrees.enable_redefine_apple = true
-- Set this to true to enable leaf decay of all trees except the default ones.
moretrees.enable_leafdecay = true
-- various related settings to configure leaf decay.
moretrees.leafdecay_delay = 2
moretrees.leafdecay_chance = 5
moretrees.leafdecay_radius = 5
moretrees.palm_leafdecay_radius = 10
moretrees.date_palm_leafdecay_radius = 14
-- Change these settings if you want default trees to be gradually cut down
-- above the elevation where firs normally generate.
moretrees.firs_remove_default_trees = false
moretrees.firs_remove_interval = 2
moretrees.firs_remove_chance = 150
-- Cocos palm settings
moretrees.coconuts_regrow = true
moretrees.coconuts_convert_existing_palms = true -- Converting existing palm trees will make coconuts regrow on them as well
-- Else, they will only regrow on newly-spawned palms
-- However, conversion is not an exact science, and although an attempt is
-- made to detect whether a trunk belongs to an actual palm, some coconut trunks
-- and some coconuts may be incorrectly converted.
moretrees.coconut_flower_interval = 59
moretrees.coconut_flower_chance = 67
moretrees.coconut_grow_interval = 2 * moretrees.coconut_flower_interval * moretrees.coconut_flower_chance
-- Actual interval will randomly vary between 67% and 133% of this value
-- 2 * 59 * 67 ~ 2 hours. So flowers become coconuts in about 6 hours
moretrees.coconut_item_drop_ichance = 10 -- inverse probability of ripe coconuts dropping as items (instead of disappearing)
-- Date palm settings
-- Suggested configuration alternatives:
-- - Dates grow only when pollinated:
-- - Set dates_regrow_pollinated to true
-- - Set dates_regrow_unpollinated_percent to 0
-- - Dates grow without pollination. Pollination disabled:
-- - Set dates_regrow_pollinated to false
-- - Set dates_regrow_unpollinated_percent to some larger positive value, e.g. 95
-- - Dates grow, but more and faster if male flowers are nearby
-- - Set dates_regrow_pollinated to true
-- - Set dates_regrow_unpollinated_percent to some small positive value, e.g. 33
-- - Optional but recommended: Reduce the pollination distance, e.g. to 30
-- Note that it should not be necessary to disable pollination for performance
-- reasons. A lot of effort has gone into ensuring that date growing will not cause lag.
--
-- If lag is suspected, use the chat command '/dates_stats' to obtain the male dates
-- search time, as well as the counts of total number of searches requested and the
-- number of searches actually performed.
moretrees.dates_regrow_pollinated = true -- Enable pollination. If enabled, male trees are required for dates to grow.
-- If disabled, dates_regrow_unpollinated_percent must be non-zero for dates to regrow.
moretrees.dates_regrow_unpollinated_percent = 0 -- Percentage of female dates becoming dates without being pollinated.
-- If 0, dates_regrow_pollinated must be enabled for dates to grow.
moretrees.dates_female_percent = 57 -- Ratio of female to male trees - tune this to improve # of generated trees that actually bear fruit
-- ~57% gives near optimal results for groups of 3 random trees, while it is only slightly suboptimal
-- for groups of 2 and 4 random trees (~2% less fruit than optimal).
-- Optimal values per group size: 2: 50%, 3: 57.78%, 4: 63%, 5: 66.9%, 6: 69.9%, [...], 12: 79.8%
-- So 57% is optimal for small groups of trees. As larger groups have more female palms anyway, a
-- less than optimal proportion of female to male trees is not a problem.
moretrees.dates_pollination_distance = 120
moretrees.dates_blossom_search_time_treshold = 1000 -- If average male blossom search time (in microseconds) exceeds this, start limiting the search load.
moretrees.dates_blossom_search_iload = 10 -- Inverse fraction of CPU time that male blossom searching search may consume.
-- As searching a large area (radius: dates_pollination_distance/3 per attempt) can cause lag,
-- this limits the search frequency server-wide so that the impact on server lag is minimised
-- For personal servers, this can be set lower, or even to 1 or 0 (0 disables load limiting).
-- Obtain the current average search time using /dates_stats
moretrees.dates_flower_interval = 59
moretrees.dates_flower_chance = 181
moretrees.dates_grow_interval = 2 * moretrees.dates_flower_interval * moretrees.dates_flower_chance
-- As date palms have a high yield, don't grow dates too fast
-- The actual interval will vary randomly between 67% and 133% of this value.
-- 2 * 59 * 181 ~ 6 hours. So by default flowers become dates in about one (human) day.
moretrees.dates_item_drop_ichance = 10 -- inverse probability of ripe dates dropping as items (instead of disappearing)
-- Sapling settings
moretrees.sapling_interval = 100
moretrees.sapling_chance = 5
-- If this variable is set to true, drop leaves out as entities during leaf
-- decay, rather than just disappearing them.
moretrees.decay_leaves_as_items = false

205
init.lua
View File

@ -15,41 +15,37 @@
moretrees = {}
local S = minetest.get_translator("moretrees")
minetest.override_item("default:sapling", {
description = "Sapling"
})
if minetest.get_modpath("default") then
minetest.override_item("default:sapling", {
description = S("Sapling")
})
minetest.override_item("default:tree", {
description = "Tree"
})
minetest.override_item("default:tree", {
description = S("Tree")
})
minetest.override_item("default:wood", {
description = "Wooden Planks"
})
minetest.override_item("default:wood", {
description = S("Wooden Planks")
})
minetest.override_item("default:leaves", {
description = "Leaves"
})
minetest.override_item("default:leaves", {
description = S("Leaves")
})
minetest.override_item("default:fence_wood", {
description = "Wooden Fence"
})
minetest.override_item("default:fence_wood", {
description = S("Wooden Fence")
})
minetest.override_item("default:fence_rail_wood", {
description = S("Wooden Fence Rail")
})
end
minetest.override_item("default:fence_rail_wood", {
description = "Wooden Fence Rail"
})
if minetest.get_modpath("doors") then
minetest.override_item("doors:gate_wood_closed", {
description = S("Wooden Fence Gate")
description = "Wooden Fence Gate"
})
minetest.override_item("doors:gate_wood_open", {
description = S("Wooden Fence Gate")
description = "Wooden Fence Gate"
})
end
@ -66,20 +62,6 @@ if io.open(worldpath.."/moretrees_settings.txt","r") then
dofile(worldpath.."/moretrees_settings.txt")
end
-- Validate that if ethereal exists, that it's version is greater than 20220424.
-- Lower versions of ethereal clear registered biomes and decorations during
-- initialization which results in lost content from this mod (and others)
-- depending on where they are in the mod load order.
minetest.register_on_mods_loaded(function()
if minetest.global_exists("ethereal") then
local ethereal_ver = tonumber(ethereal.version)
if (ethereal_ver and ethereal_ver < 20220424) then
error("[moretrees] The version of ethereal detected can result " ..
"in parts of this mod and others disappearing due to mod " ..
"load order. Please update ethereal.");
end
end
end)
-- infinite stacks checking
@ -93,10 +75,10 @@ end
-- tables, load other files
moretrees.cutting_tools = {
"default:axe_bronze",
"default:axe_diamond",
"default:axe_mese",
xcompat.materials.axe_steel,
xcompat.materials.axe_diamond,
xcompat.materials.axe_bronze,
"default:axe_steel",
"glooptest:axe_alatro",
"glooptest:axe_arol",
"moreores:axe_mithril",
@ -137,14 +119,14 @@ function translate_biome_defs(def, treename, index)
local deco_def = {
name = treename .. "_" .. index,
deco_type = "simple",
place_on = def.place_on,
place_on = def.place_on or def.surface,
sidelen = 16,
fill_ratio = def.fill_ratio or 0.001,
--biomes eventually?
y_min = def.min_elevation,
y_max = def.max_elevation,
spawn_by = def.spawn_by,
num_spawn_by = def.num_spawn_by,
spawn_by = def.near_nodes,
num_spawn_by = def.near_nodes_count,
decoration = "moretrees:"..treename.."_sapling_ongen"
}
@ -153,61 +135,95 @@ function translate_biome_defs(def, treename, index)
return deco_def
end
if moretrees.spawn_enabled then
if moretrees.enable_beech then
minetest.register_decoration(translate_biome_defs(moretrees.beech_biome, "beech"))
end
if moretrees.enable_apple_tree then
minetest.register_decoration(translate_biome_defs(moretrees.apple_tree_biome, "apple_tree"))
end
if moretrees.enable_oak then
minetest.register_decoration(translate_biome_defs(moretrees.oak_biome, "oak"))
end
if moretrees.enable_sequoia then
minetest.register_decoration(translate_biome_defs(moretrees.sequoia_biome, "sequoia"))
end
if moretrees.enable_palm then
minetest.register_decoration(translate_biome_defs(moretrees.palm_biome, "palm"))
minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome, "date_palm", 1))
minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome_2, "date_palm", 2))
end
if moretrees.enable_date_palm then
minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome, "palm", 1))
minetest.register_decoration(translate_biome_defs(moretrees.date_palm_biome_2, "palm", 2))
end
if moretrees.enable_cedar then
minetest.register_decoration(translate_biome_defs(moretrees.cedar_biome, "cedar"))
minetest.register_decoration(translate_biome_defs(moretrees.rubber_tree_biome, "rubber_tree"))
end
if moretrees.enable_rubber_tree then
minetest.register_decoration(translate_biome_defs(moretrees.rubber_tree_biome, "ruber"))
end
if moretrees.enable_willow then
minetest.register_decoration(translate_biome_defs(moretrees.willow_biome, "willow"))
end
if moretrees.enable_birch then
minetest.register_decoration(translate_biome_defs(moretrees.birch_biome, "birch"))
end
if moretrees.enable_spruce then
minetest.register_decoration(translate_biome_defs(moretrees.spruce_biome, "spruce"))
if minetest.get_modpath("default") then
minetest.register_decoration(translate_biome_defs(moretrees.jungletree_biome, "jungletree"))
end
end
if moretrees.enable_jungle_tree then
minetest.register_decoration(translate_biome_defs(moretrees.jungletree_biome, "jungletree"))
end
if moretrees.enable_fir then
minetest.register_decoration(translate_biome_defs(moretrees.fir_biome, "fir", 1))
if minetest.get_modpath("snow") then
minetest.register_decoration(translate_biome_defs(moretrees.fir_biome_snow, "fir", 2))
end
minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome, "poplar", 1))
minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_2, "poplar", 2))
minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_3, "poplar", 3))
minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome, "poplar_small", 4))
minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome_2, "poplar_small", 5))
--[[
this is purposefully wrapped in a on mods loaded callback to that it gets the proper ids
if other mods clear the registered decorations
]]
minetest.register_on_mods_loaded(function()
for k, v in pairs(deco_ids) do
deco_ids[k] = minetest.get_decoration_id(v)
end
minetest.set_gen_notify("decoration", deco_ids)
end)
minetest.register_on_generated(function(minp, maxp, blockseed)
local g = minetest.get_mapgen_object("gennotify")
local locations = {}
for _, id in pairs(deco_ids) do
local deco_locations = g["decoration#" .. id] or {}
for _, pos in pairs(deco_locations) do
locations[#locations+1] = pos
end
end
if #locations == 0 then return end
for _, pos in ipairs(locations) do
local timer = minetest.get_node_timer({x=pos.x, y=pos.y+1, z=pos.z})
timer:start(math.random(2,10))
end
end)
end
if moretrees.enable_poplar then
minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome, "popular", 1))
minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_2, "popular", 2))
minetest.register_decoration(translate_biome_defs(moretrees.poplar_biome_3, "popular", 3))
minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome, "popular", 4))
minetest.register_decoration(translate_biome_defs(moretrees.poplar_small_biome_2, "popular", 5))
end
for k, v in pairs(deco_ids) do
deco_ids[k] = minetest.get_decoration_id(v)
end
minetest.set_gen_notify("decoration", deco_ids)
minetest.register_on_generated(function(minp, maxp, blockseed)
local g = minetest.get_mapgen_object("gennotify")
--minetest.chat_send_all(dump(g))
local locations = {}
for _, id in pairs(deco_ids) do
local deco_locations = g["decoration#" .. id] or {}
for _, pos in pairs(deco_locations) do
locations[#locations+1] = pos
end
end
if #locations == 0 then return end
for _, pos in ipairs(locations) do
--minetest.chat_send_all("yay")
local timer = minetest.get_node_timer({x=pos.x, y=pos.y+1, z=pos.z})
timer:start(math.random(2,10))
--minetest.set_node(pos, {name="default:stone"})
end
end)
-- Code to spawn a birch tree
function moretrees.grow_birch(pos)
@ -280,7 +296,7 @@ function moretrees.grow_jungletree(pos)
minetest.swap_node(pos, {name = "air"})
local leaves = minetest.find_nodes_in_area(
{x = pos.x-1, y = pos.y, z = pos.z-1}, {x = pos.x+1, y = pos.y+10, z = pos.z+1},
xcompat.materials.apple_leaves
"default:leaves"
)
for leaf in ipairs(leaves) do
minetest.swap_node(leaves[leaf], {name = "air"})
@ -311,7 +327,7 @@ function moretrees.grow_fir(pos)
local leaves = minetest.find_nodes_in_area(
{x = pos.x, y = pos.y, z = pos.z},
{x = pos.x, y = pos.y+5, z = pos.z},
xcompat.materials.apple_leaves
"default:leaves"
)
for leaf in ipairs(leaves) do
minetest.swap_node(leaves[leaf], {name = "air"})
@ -342,7 +358,7 @@ function moretrees.grow_fir_snow(pos)
local leaves = minetest.find_nodes_in_area(
{x = pos.x, y = pos.y, z = pos.z},
{x = pos.x, y = pos.y+5, z = pos.z},
xcompat.materials.apple_leaves
"default:leaves"
)
for leaf in ipairs(leaves) do
minetest.swap_node(leaves[leaf], {name = "air"})
@ -350,17 +366,4 @@ function moretrees.grow_fir_snow(pos)
minetest.spawn_tree(pos,moretrees.fir_model)
end
if moretrees.grow_legacy_saplings then
minetest.register_lbm({
name = "moretrees:grow_ongen_saplings",
label = "Grow legacy ongen saplings",
nodenames = {"group:moretrees_ongen"},
run_at_every_load = true,
action = function(pos)
minetest.log("info", "[moretrees] Starting growth timer for legacy ongen sapling at "..minetest.pos_to_string(pos, 0))
minetest.get_node_timer(pos):start(math.random(2, 10))
end
})
end
minetest.log("info", "[moretrees] Loading done")
print("[Moretrees] Loaded (2013-02-11)")

View File

@ -61,7 +61,7 @@ Birch Tree Fence=Birkenholz-Zaun
Birch Tree Fence Gate=Birkenholz-Tor
Birch Tree Fence Rail=Birkenholz-Schiene
Birch Tree Leaves=Birkenlaub
Birch Tree Planks=Birkenbretter
Birch Tree Planks=Birkebretter
Birch Tree Planks Slab=Birkenholzplatte
Birch Tree Planks Stair=Birkeholzstufe
Birch Tree Sapling=Birkensetzling
@ -209,12 +209,3 @@ Willow Tree Trunk=Weidenstamm
Willow Tree Trunk Slab=Weidenstammplatte
Willow Tree Trunk Stair=Weidenstammstufe
Yellow=gelb
# init.lua
Sapling=Setzling
Tree=Baum
Wooden Planks=Holzbretter
Leaves=Blätter
Wooden Fence=Holzzaun
Wooden Fence Rail=Holzschiene
Wooden Fence Gate=Holztor

View File

@ -1,11 +1,11 @@
# textdomain: moretrees
# Translation by Carlos Barraza, improvements by David Leal.
# Translation by Carlos Barraza
### cocos_palm.lua ###
Coconut=Coco
Coconut Flower=Flor de Coco
Coconut Flower=
### crafts.lua ###
@ -17,8 +17,8 @@ Date & nut snack=Datilera y Nueces
Date-nut cake=Pastel de Datilera
Date-nut cake batter=Pasta de torta de Datilera
Date-nut energy bar=Barra energetica de Datilera
Raw Coconut=Coco Crudo
Roasted Cedar Cone Nuts=Coco de Álamo Tostado
Raw Coconut=Coco crudo
Roasted Cedar Cone Nuts=Coco de Alamo Tostado
Roasted Fir Cone Nuts=Cono de Abeto Tostado
Roasted Spruce Cone Nuts=Cono de Picea Tostado
@ -30,191 +30,182 @@ Dates=Datilera
### node_defs.lua ###
@1 (fast growth)=@1 (crecimiento rápido)
@1 (fast growth)=
Acorn=Bellota
Apple Tree=Árbol de manzana
Apple Tree Fence=Valla de manzano
Apple Tree Fence Gate=Puerta de Valla de Manzano
Apple Tree Fence Rail=Riel de Valla de Manzano
Apple Tree Leaves=Hojas de Árbol de Manzana
Apple Tree Planks=Madera de Árbol de Manzana
Apple Tree Planks Slab=Losa de Tablones de Manzano
Apple Tree Planks Stair=Escalera de Tablones de Manzano
Apple Tree Sapling=Retoño de Árbol de Manzana
Apple Tree Trunk=Tronco de Árbol de Manzana
Apple Tree Trunk Slab=Losa de Tronco de Manzano
Apple Tree Trunk Stair=Escalera de Tronco de Manzano
Beech Tree=Haya
Beech Tree Fence=Valla de Haya
Beech Tree Fence Gate=Puerta de Valla de Haya
Beech Tree Fence Rail=Riel de Valla de Haya
Apple Tree=
Apple Tree Fence=
Apple Tree Fence Gate=
Apple Tree Fence Rail=
Apple Tree Leaves=Hojas de Arbol de Manzana
Apple Tree Planks=Madera de Arbol de Manzana
Apple Tree Planks Slab=
Apple Tree Planks Stair=
Apple Tree Sapling=Retoño de Arbol de Manzana
Apple Tree Trunk=Tronco de Arbol de Manzana
Apple Tree Trunk Slab=
Apple Tree Trunk Stair=
Beech Tree=
Beech Tree Fence=
Beech Tree Fence Gate=
Beech Tree Fence Rail=
Beech Tree Leaves=Hojas de Arbol de Haya
Beech Tree Planks=Madera de Arbol de Haya
Beech Tree Planks Slab=Losa de Tablones de Haya
Beech Tree Planks Stair=Escalera de Tablones de Haya
Beech Tree Sapling=Retoño de Árbol de Haya
Beech Tree Trunk=Tronco de Árbol de Haya
Beech Tree Trunk Slab=Losa de Tronco de Haya
Beech Tree Trunk Stair=Escalera de Tronco de Haya
Birch Tree=Abedul
Birch Tree Fence=Valla de Abedul
Birch Tree Fence Gate=Puerta de Valla de Abedul
Birch Tree Fence Rail=Riel de Valla de Abedul
Beech Tree Planks Slab=
Beech Tree Planks Stair=
Beech Tree Sapling=Retoño de Arbol de Haya
Beech Tree Trunk=Tronco de Arbol de Haya
Beech Tree Trunk Slab=
Beech Tree Trunk Stair=
Birch Tree=
Birch Tree Fence=
Birch Tree Fence Gate=
Birch Tree Fence Rail=
Birch Tree Leaves=Hojas de Arbol de Abedul
Birch Tree Planks=Madera de Arbol de Abedul
Birch Tree Planks Slab=Losa de Tablones de Abedul
Birch Tree Planks Stair=Escalera de Tablones de Abedul
Birch Tree Sapling=Retoño de Árbol de Abedul
Birch Tree Trunk=Tronco de Árbol de Abedul
Birch Tree Trunk Slab=Losa de Tronco de Abedul
Birch Tree Trunk Stair=Escalera de Tronco de Abedul
Cedar Cone=Coco de Álamo
Cedar Tree=Árbol de Cedro
Cedar Tree Fence=Valla de Árbol de Cedro
Cedar Tree Fence Gate=Puerta de Valla de Árbol de Cedro
Cedar Tree Fence Rail=Riel de Valla de Árbol de Cedro
Cedar Tree Leaves=Hojas de Árbol de Cedro
Cedar Tree Planks=Madera de Árbol de Cedro
Cedar Tree Planks Slab=Losa de Tablones de Árbol de Cedro
Cedar Tree Planks Stair=Escalera de Tablones de Árbol de Cedro
Cedar Tree Sapling=Retoño de Árbol de Cedro
Cedar Tree Trunk=Tronco de Árbol de Cedro
Cedar Tree Trunk Slab=Losa de Tronco de Árbol de Cedro
Cedar Tree Trunk Stair=Escalera de Tronco de Árbol de Cedro
Date Palm Tree=Palmera Datilera
Date Palm Tree Fence=Valla de Palmera Datilera
Date Palm Tree Fence Gate=Puerta de Valla de Palmera Datilera
Date Palm Tree Fence Rail=Riel de Valla de Palmera Datilera
Date Palm Tree Leaves=Hojas de Palmera Datilera
Birch Tree Planks Slab=
Birch Tree Planks Stair=
Birch Tree Sapling=Retoño de Arbol de Abedul
Birch Tree Trunk=Tronco de Arbol de Abedul
Birch Tree Trunk Slab=
Birch Tree Trunk Stair=
Cedar Cone=Coco de Alamo
Cedar Tree=
Cedar Tree Fence=
Cedar Tree Fence Gate=
Cedar Tree Fence Rail=
Cedar Tree Leaves=Hojas de Arbol de Cedro
Cedar Tree Planks=Madera de Arbol de Cedro
Cedar Tree Planks Slab=
Cedar Tree Planks Stair=
Cedar Tree Sapling=Retoño de Arbol de Cedro
Cedar Tree Trunk=Tronco de Arbol de Cedro
Cedar Tree Trunk Slab=
Cedar Tree Trunk Stair=
Date Palm Tree=
Date Palm Tree Fence=
Date Palm Tree Fence Gate=
Date Palm Tree Fence Rail=
Date Palm Tree Leaves=
Date Palm Tree Planks=Madera de Palmera Datilera
Date Palm Tree Planks Slab=Losa de Tablones de Palmera Datilera
Date Palm Tree Planks Stair=Escalera de Tablones de Palmera Datilera
Date Palm Tree Sapling=Retoño de Palmera Datilera
Date Palm Tree Planks Slab=
Date Palm Tree Planks Stair=
Date Palm Tree Sapling=
Date Palm Tree Trunk=Tronco de Palmera Datilera
Date Palm Tree Trunk Slab=Losa de Tronco de Palmera Datilera
Date Palm Tree Trunk Stair=Escalera de Tronco de Palmera Datilera
Douglas Fir=Árbol de Abeto de Douglas
Douglas Fir Fence=Valla de Árbol de Abeto de Douglas
Douglas Fir Fence Gate=Puerta de Valla de Árbol de Abeto de Douglas
Douglas Fir Fence Rail=Riel de Valla de Árbol de Abeto de Douglas
Douglas Fir Leaves=Hojas de Árbol de Abeto de Douglas
Douglas Fir Leaves (Bright)=Hojas de Árbol de Abeto de Douglas (Brillante)
Douglas Fir Planks=Madera de Árbol de Abeto de Douglas
Douglas Fir Planks Slab=Losa de Tablones de Árbol de Abeto de Douglas
Douglas Fir Planks Stair=Escalera de Tablones de Árbol de Abeto de Douglas
Douglas Fir Sapling=Retoño de Árbol de Abeto de Douglas
Douglas Fir Trunk=Tronco de Árbol de Abeto de Douglas
Douglas Fir Trunk Slab=Losa de Tronco de Árbol de Abeto de Douglas
Douglas Fir Trunk Stair=Escalera de Tronco de Árbol de Abeto de Douglas
Date Palm Tree Trunk Slab=
Date Palm Tree Trunk Stair=
Douglas Fir=
Douglas Fir Fence=
Douglas Fir Fence Gate=
Douglas Fir Fence Rail=
Douglas Fir Leaves=Hojas de Arbol de Abeto de Douglas
Douglas Fir Leaves (Bright)=Hojas de Arbol de Abeto de Douglas (Brillante)
Douglas Fir Planks=Madera de Arbol de Abeto de Douglas
Douglas Fir Planks Slab=
Douglas Fir Planks Stair=
Douglas Fir Sapling=Retoño de Arbol de Abeto de Douglas
Douglas Fir Trunk=Tronco de Arbol de Abeto de Douglas
Douglas Fir Trunk Slab=
Douglas Fir Trunk Stair=
Fir Cone=Coco de Abeto
Giant Sequoia=Secuoya Gigante
Giant Sequoia Fence=Valla de Secuoya Gigante
Giant Sequoia Fence Gate=Puerta de Valla de Secuoya Gigante
Giant Sequoia Fence Rail=Riel de Valla de Secuoya Gigante
Giant Sequoia Leaves=Hojas de Secuoya Gigante
Giant Sequoia Planks=Madera de Secuoya Gigante
Giant Sequoia Planks Slab=Losa de Tablones de Secuoya Gigante
Giant Sequoia Planks Stair=Escalera de Tablones de Secuoya Gigante
Giant Sequoia Sapling=Retoño de Árbol de Secuoya Gigante
Giant Sequoia Trunk=Tronco de Secuoya Gigante
Giant Sequoia Trunk Slab=Losa de Tronco de Secuoya Gigante
Giant Sequoia Trunk Stair=Escalera de Tronco de Secuoya Gigante
Jungle Tree=Árbol de la Selva
Jungle Tree Fence=Valla de Árbol de la Selva
Jungle Tree Fence Gate=Puerta de Valla de Árbol de la Selva
Jungle Tree Fence Rail=Riel de Valla de Árbol de la Selva
Jungle Tree Leaves=Hojas de Árbol de la Selva
Jungle Tree Leaves (@1)=Hojas de Árbol de la Selva (@1)
Jungle Tree Planks=Madera de Árbol de la Selva
Jungle Tree Planks Slab=Losa de Tablones de Árbol de la Selva
Jungle Tree Planks Stair=Escalera de Tablones de Árbol de la Selva
Jungle Tree Sapling=Retoño de Árbol de la Selva
Jungle Tree Trunk=Tronco de Árbol de Árbol de la Selva
Jungle Tree Trunk Slab=Losa de Tronco de Árbol de la Selva
Jungle Tree Trunk Stair=Escalera de Tronco de Árbol de la Selva
Oak Tree=Árbol de Roble
Oak Tree Fence=Valla de Árbol de Roble
Oak Tree Fence Gate=Puerta de Valla de Árbol de Roble
Oak Tree Fence Rail=Riel de Valla de Árbol de Roble
Oak Tree Leaves=Hojas de Árbol de Roble
Oak Tree Planks=Madera de Árbol de Roble
Oak Tree Planks Slab=Losa de Tablones de Árbol de Roble
Oak Tree Planks Stair=Escalera de Tablones de Árbol de Roble
Oak Tree Sapling=Retoño de Árbol de Roble
Oak Tree Trunk=Tronco de Árbol de Roble
Oak Tree Trunk Slab=Losa de Tronco de Árbol de Roble
Oak Tree Trunk Stair=Escalera de Tronco de Árbol de Roble
Palm Tree=Palmera
Palm Tree Fence=Valla de Palmera
Palm Tree Fence Gate=Puerta de Valla de Palmera
Palm Tree Fence Rail=Riel de Valla de Palmera
Giant Sequoia=
Giant Sequoia Fence=
Giant Sequoia Fence Gate=
Giant Sequoia Fence Rail=
Giant Sequoia Leaves=Hojas de Sequoia Gigante
Giant Sequoia Planks=Madera de Sequoia Gigante
Giant Sequoia Planks Slab=
Giant Sequoia Planks Stair=
Giant Sequoia Sapling=Retoño de Arbol de Sequoia Gigante
Giant Sequoia Trunk=Tronco de Sequoia Gigante
Giant Sequoia Trunk Slab=
Giant Sequoia Trunk Stair=
Jungle Tree=Tronco de Arbol de Arbol de la Selva
Jungle Tree Fence=
Jungle Tree Fence Gate=
Jungle Tree Fence Rail=
Jungle Tree Leaves=Hojas de Arbol de la Selva
Jungle Tree Leaves (@1)=Hojas de Arbol de la Selva (@1)
Jungle Tree Planks=
Jungle Tree Planks Slab=
Jungle Tree Planks Stair=
Jungle Tree Sapling=
Jungle Tree Trunk=
Jungle Tree Trunk Slab=
Jungle Tree Trunk Stair=
Oak Tree=
Oak Tree Fence=
Oak Tree Fence Gate=
Oak Tree Fence Rail=
Oak Tree Leaves=Hojas de Arbol de Roble
Oak Tree Planks=Madera de Arbol de Roble
Oak Tree Planks Slab=
Oak Tree Planks Stair=
Oak Tree Sapling=Retoño de Arbol de Roble
Oak Tree Trunk=Tronco de Arbol de Roble
Oak Tree Trunk Slab=
Oak Tree Trunk Stair=
Palm Tree=
Palm Tree Fence=
Palm Tree Fence Gate=
Palm Tree Fence Rail=
Palm Tree Leaves=Hojas de Palmera
Palm Tree Planks=Madera de Palmera
Palm Tree Planks Slab=Losa de Tablones de Palmera
Palm Tree Planks Stair=Escalera de Tablones de Palmera
Palm Tree Planks Slab=
Palm Tree Planks Stair=
Palm Tree Sapling=Retoño de Palmera
Palm Tree Trunk=Tronco de Palmera
Palm Tree Trunk Slab=Losa de Troncos de Palmera
Palm Tree Trunk Stair=Escalera de Troncos de Palmera
Poplar Tree=Árbol de Alamo
Poplar Tree Fence=Valla de Árbol de Alamo
Poplar Tree Fence Gate=Puerta de Valla de Árbol de Alamo
Poplar Tree Fence Rail=Riel de Valla de Árbol de Alamo
Palm Tree Trunk Slab=
Palm Tree Trunk Stair=
Poplar Tree=
Poplar Tree Fence=
Poplar Tree Fence Gate=
Poplar Tree Fence Rail=
Poplar Tree Leaves=Hojas de Arbol de Alamo
Poplar Tree Planks=Madera de Árbol de Alamo
Poplar Tree Planks Slab=Losa de Tablones de Árbol de Alamo
Poplar Tree Planks Stair=Escalera de Tablones de Árbol de Alamo
Poplar Tree Sapling=Retoño de Árbol de Alamo
Poplar Tree Trunk=Tronco de Árbol de Alamo
Poplar Tree Trunk Slab=Losa de Tronco de Árbol de Alamo
Poplar Tree Trunk Stair=Escalera de Tronco de Árbol de Alamo
Red=Rojo
Rubber Tree=Árbol del Caucho
Rubber Tree Fence=Valla de Árbol del Caucho
Rubber Tree Fence Gate=Puerta de Valla de Árbol del Caucho
Rubber Tree Fence Rail=Riel de Valla de Árbol del Caucho
Rubber Tree Leaves=Hojas de Árbol de Árbol del Caucho
Rubber Tree Planks=Madera de Árbol de Árbol del Caucho
Rubber Tree Planks Slab=Losa de Tablones de Árbol del Caucho
Rubber Tree Planks Stair=Escalera de Tablones de Árbol del Caucho
Rubber Tree Sapling=Retoño de Árbol de Árbol del Caucho
Rubber Tree Trunk=Tronco de Árbol de Árbol del Caucho
Rubber Tree Trunk (Empty)=Tronco de Árbol del Caucho (Vacío)
Rubber Tree Trunk Slab=Losa de Tronco de Árbol del Caucho
Rubber Tree Trunk Stair=Escalera de Tronco de Árbol del Caucho
Small poplar Tree Sapling=Pequeño Retoño de Álamo
Poplar Tree Planks=Madera de Arbol de Alamo
Poplar Tree Planks Slab=
Poplar Tree Planks Stair=
Poplar Tree Sapling=Retoño de Arbol de Alamo
Poplar Tree Trunk=Tronco de Arbol de Alamo
Poplar Tree Trunk Slab=
Poplar Tree Trunk Stair=
Red=Roja
Rubber Tree=
Rubber Tree Fence=
Rubber Tree Fence Gate=
Rubber Tree Fence Rail=
Rubber Tree Leaves=Hojas de Arbol de Arbol de Goma
Rubber Tree Planks=Madera de Arbol de Arbol de Goma
Rubber Tree Planks Slab=
Rubber Tree Planks Stair=
Rubber Tree Sapling=Retoño de Arbol de Arbol de Goma
Rubber Tree Trunk=Tronco de Arbol de Arbol de Goma
Rubber Tree Trunk (Empty)=Tronco de Arbol de Goma (Vacio)
Rubber Tree Trunk Slab=
Rubber Tree Trunk Stair=
Small poplar Tree Sapling=
Spruce Cone=Coco de Picea
Spruce Tree=Árbol de Abeto
Spruce Tree Fence=Valla de Árbol de Abeto
Spruce Tree Fence Gate=Puerta de Valla de Árbol de Abeto
Spruce Tree Fence Rail=Riel de Valla de Árbol de Abeto
Spruce Tree Leaves=Hojas de Árbol de Abeto
Spruce Tree Planks=Madera de Árbol de Abeto
Spruce Tree Planks Slab=Losa de Tablones de Árbol de Abeto
Spruce Tree Planks Stair=Escalera de Tablones de Árbol de Abeto
Spruce Tree Sapling=Retoño de Árbol de Abeto
Spruce Tree Trunk=Tronco de Árbol de Abeto
Spruce Tree Trunk Slab=Losa de Tronco de Árbol de Abeto
Spruce Tree Trunk Stair=Escalera de Tronco de Árbol de Abeto
Willow Tree=Árbol de Sauce
Willow Tree Fence=Valla de Árbol de Sauce
Willow Tree Fence Gate=Puerta de Valla de Árbol de Sauce
Willow Tree Fence Rail=Riel de Valla de Árbol de Sauce
Willow Tree Leaves=Hojas de Árbol de Sauce
Willow Tree Planks=Madera de Árbol de Sauce
Willow Tree Planks Slab=Losa de Tablones de Árbol de Sauce
Willow Tree Planks Stair=Escalera de Tablones de Árbol de Sauce
Willow Tree Sapling=Retoño de Árbol de Sauce
Willow Tree Trunk=Tronco de Árbol de Sauce
Willow Tree Trunk Slab=Losa de Tronco de Árbol de Sauce
Willow Tree Trunk Stair=Escalera de Tronco de Árbol de Sauce
Yellow=Amarillo
# init.lua
Sapling=Retoño
Tree=Árbol
Wooden Planks=Tablones
Leaves=Hojas
Wooden Fence=Valla
Wooden Fence Rail=Riel de Valla
Wooden Fence Gate=Puerta de Valla
Spruce Tree=
Spruce Tree Fence=
Spruce Tree Fence Gate=
Spruce Tree Fence Rail=
Spruce Tree Leaves=Hojas de Arbol de Abeto
Spruce Tree Planks=Madera de Arbol de Abeto
Spruce Tree Planks Slab=
Spruce Tree Planks Stair=
Spruce Tree Sapling=Retoño de Arbol de Abeto
Spruce Tree Trunk=Tronco de Arbol de Abeto
Spruce Tree Trunk Slab=
Spruce Tree Trunk Stair=
Willow Tree=
Willow Tree Fence=
Willow Tree Fence Gate=
Willow Tree Fence Rail=
Willow Tree Leaves=Hojas de Arbol de Sauce
Willow Tree Planks=Madera de Arbol de Sauce
Willow Tree Planks Slab=
Willow Tree Planks Stair=
Willow Tree Sapling=Retoño de Arbol de Sauce
Willow Tree Trunk=Tronco de Arbol de Sauce
Willow Tree Trunk Slab=
Willow Tree Trunk Stair=
Yellow=Amarilla

View File

@ -209,12 +209,3 @@ Willow Tree Trunk=Tronc d'arbre de saule
Willow Tree Trunk Slab=Dalle en tronc de saule
Willow Tree Trunk Stair=Escalier en tronc de saule
Yellow=jaune
# init.lua
Sapling=Jeune Arbre
Tree=Arbre
Wooden Planks=Planches
Leaves=Feuilles
Wooden Fence=Barrière en bois
Wooden Fence Rail=Rail de clôture en bois
Wooden Fence Gate=Porte de clôture en bois

View File

@ -1,219 +0,0 @@
# textdomain: moretrees
### cocos_palm.lua ###
Coconut=Кокос
Coconut Flower=Цветок кокоса
### crafts.lua ###
Acorn Muffin=Маффин с желудями
Acorn Muffin batter=Тесто для маффина с желудями
Coconut Milk=Кокосовое молоко
Date=Финик
Date & nut snack=Закуска из фиников и орехов
Date-nut cake=Финиково-ореховый пирог
Date-nut cake batter=Тесто для финиково-орехового пирога
Date-nut energy bar=Финиково-ореховый батончик
Raw Coconut=Сырой кокос
Roasted Cedar Cone Nuts=Жареные кедровые орешки
Roasted Fir Cone Nuts=Жареные орешки пихты
Roasted Spruce Cone Nuts=Жареные еловые орешки
### date_palm.lua ###
Date Flowers=Цветки фиников
Date Stem=Стебель финика
Dates=Финики
### node_defs.lua ###
@1 (fast growth)=@1 (бестрый рост)
Acorn=Желудь
Apple Tree=Яблоня
Apple Tree Fence=Яблоневый забор
Apple Tree Fence Gate=Яблоневые ворота
Apple Tree Fence Rail=Яблоневые перила
Apple Tree Leaves=Листья яблони
Apple Tree Planks=Яблоневые доски
Apple Tree Planks Slab=Яблоневые доски (плита)
Apple Tree Planks Stair=Яблоневые доски (ступени)
Apple Tree Sapling=Саженец яблони
Apple Tree Trunk=Ствол яблони
Apple Tree Trunk Slab=Ствол яблони (плита)
Apple Tree Trunk Stair=Ствол яблони (ступени)
Beech Tree=Бук
Beech Tree Fence=Забор из бука
Beech Tree Fence Gate=Ворота из бука
Beech Tree Fence Rail=Перила из бука
Beech Tree Leaves=Листья бука
Beech Tree Planks=Доски из бука
Beech Tree Planks Slab=Доски из бука (плита)
Beech Tree Planks Stair=Доски из бука (ступени)
Beech Tree Sapling=Саженец бука
Beech Tree Trunk=Ствол бука
Beech Tree Trunk Slab=Ствол бука (плита)
Beech Tree Trunk Stair=Ствол бука (ступени)
Birch Tree=Береза
Birch Tree Fence=Березовый забор
Birch Tree Fence Gate=Березовые ворота
Birch Tree Fence Rail=Березовые перила
Birch Tree Leaves=Березовые листья
Birch Tree Planks=Березовые доски
Birch Tree Planks Slab=Березовые доски (плита)
Birch Tree Planks Stair=Березовые доски (ступени)
Birch Tree Sapling=Саженец березы
Birch Tree Trunk=Ствол березы
Birch Tree Trunk Slab=Ствол березы (плита)
Birch Tree Trunk Stair=Ствол березы (ступени)
Cedar Cone=Кедровая шишка
Cedar Tree=Кедр
Cedar Tree Fence=Забор из кедра
Cedar Tree Fence Gate=Ворота из кедра
Cedar Tree Fence Rail=Перила из кедра
Cedar Tree Leaves=Кедровая хвоя
Cedar Tree Planks=Доски из кедра
Cedar Tree Planks Slab=Доски из кедра (плита)
Cedar Tree Planks Stair=Доски из кедра (ступени)
Cedar Tree Sapling=Саженец кедра
Cedar Tree Trunk=Ствол кедра
Cedar Tree Trunk Slab=Ствол кедра (плита)
Cedar Tree Trunk Stair=Ствол кедра (ступени)
Date Palm Tree=Финиковая пальма
Date Palm Tree Fence=Забор из финиковой пальмы
Date Palm Tree Fence Gate=Ворота из финиковой пальмы
Date Palm Tree Fence Rail=Перила из финиковой пальмы
Date Palm Tree Leaves=Листья финиковой пальмы
Date Palm Tree Planks=Доски из финиковой пальмы
Date Palm Tree Planks Slab=Доски из финиковой пальмы (плита)
Date Palm Tree Planks Stair=Доски из финиковой пальмы (ступени)
Date Palm Tree Sapling=Саженец финиковой пальмы
Date Palm Tree Trunk=Ствол финиковой пальмы
Date Palm Tree Trunk Slab=Ствол финиковой пальмы (плита)
Date Palm Tree Trunk Stair=Ствол финиковой пальмы (ступени)
Douglas Fir=Дугласова пихта
Douglas Fir Fence=Забор из дугласовой пихты
Douglas Fir Fence Gate=Ворота из дугласовой пихты
Douglas Fir Fence Rail=Перила из дугласовой пихты
Douglas Fir Leaves=Хвоя дугласовой пихты
Douglas Fir Leaves (Bright)=Листья дугласовой пихты (яркие)
Douglas Fir Planks=Доски из дугласовой пихты
Douglas Fir Planks Slab=Доски из дугласовой пихты (плита)
Douglas Fir Planks Stair=Доски из дугласовой пихты (ступени)
Douglas Fir Sapling=Саженец дугласовой пихты
Douglas Fir Trunk=Ствол дугласовой пихты
Douglas Fir Trunk Slab=Ствол дугласовой пихты (плита)
Douglas Fir Trunk Stair=Ствол дугласовой пихты (ступени)
Fir Cone=Пихтовая шишка
Giant Sequoia=Гигантская секвойя
Giant Sequoia Fence=Забор из гигантской секвойи
Giant Sequoia Fence Gate=Ворота из гигантской секвойи
Giant Sequoia Fence Rail=Перила из гигантской секвойи
Giant Sequoia Leaves=Хвоя гигантской секвойи
Giant Sequoia Planks=Доски из гигантской секвойи
Giant Sequoia Planks Slab=Доски из гигантской секвойи (плита)
Giant Sequoia Planks Stair=Доски из гигантской секвойи (ступени)
Giant Sequoia Sapling=Саженец гигантской секвойи
Giant Sequoia Trunk=Ствол гигантской секвойи
Giant Sequoia Trunk Slab=Ствол гигантской секвойи (плита)
Giant Sequoia Trunk Stair=Ствол гигантской секвойи (ступени)
Jungle Tree=Тропическое дерево
Jungle Tree Fence=Забор из тропического дерева
Jungle Tree Fence Gate=Ворота из тропического дерева
Jungle Tree Fence Rail=Перила из тропического дерева
Jungle Tree Leaves=Листья тропического дерева
Jungle Tree Leaves (@1)=Листья тропического дерева (@1)
Jungle Tree Planks=Доски из тропического дерева
Jungle Tree Planks Slab=Доски из тропического дерева (плита)
Jungle Tree Planks Stair=Доски из тропического дерева (ступени)
Jungle Tree Sapling=Саженец тропического дерева
Jungle Tree Trunk=Ствол тропического дерева
Jungle Tree Trunk Slab=Ствол тропического дерева (плита)
Jungle Tree Trunk Stair=Ствол тропического дерева (ступени)
Oak Tree=Дуб
Oak Tree Fence=Дубовый забор
Oak Tree Fence Gate=Дубовые ворота
Oak Tree Fence Rail=Дубовые перила
Oak Tree Leaves=Листья дуба
Oak Tree Planks=Дубовые доски
Oak Tree Planks Slab=Дубовые доски (плита)
Oak Tree Planks Stair=Дубовые доски (ступени)
Oak Tree Sapling=Саженец дуба
Oak Tree Trunk=Ствол дуба
Oak Tree Trunk Slab=Ствол дуба (плита)
Oak Tree Trunk Stair=Ствол дуба (ступени)
Palm Tree=Пальма
Palm Tree Fence=Пальмовый забор
Palm Tree Fence Gate=Пальмовые ворота
Palm Tree Fence Rail=Пальмовые перила
Palm Tree Leaves=Листья пальмы
Palm Tree Planks=Пальмовые доски
Palm Tree Planks Slab=Пальмовые доски (плита)
Palm Tree Planks Stair=Пальмовые доски (ступени)
Palm Tree Sapling=Саженец пальмы
Palm Tree Trunk=Ствол пальмы
Palm Tree Trunk Slab=Ствол пальмы (плита)
Palm Tree Trunk Stair=Ствол пальмы (ступени)
Poplar Tree=Тополь
Poplar Tree Fence=Забор из тополя
Poplar Tree Fence Gate=Ворота из тополя
Poplar Tree Fence Rail=Перила из тополя
Poplar Tree Leaves=Листья тополя
Poplar Tree Planks=Доски из тополя
Poplar Tree Planks Slab=Доски из тополя (плита)
Poplar Tree Planks Stair=Доски из тополя (ступени)
Poplar Tree Sapling=Саженец тополя
Poplar Tree Trunk=Ствол тополя
Poplar Tree Trunk Slab=Ствол тополя (плита)
Poplar Tree Trunk Stair=Ствол тополя (ступени)
Red=красные
Rubber Tree=Каучуковое дерево
Rubber Tree Fence=Забор из каучукового дерева
Rubber Tree Fence Gate=Ворота из каучукового дерева
Rubber Tree Fence Rail=Перила из каучукового дерева
Rubber Tree Leaves=Листья каучукового дерева
Rubber Tree Planks=Доски из каучукового дерева
Rubber Tree Planks Slab=Доски из каучукового дерева (плита)
Rubber Tree Planks Stair=Доски из каучукового дерева (ступени)
Rubber Tree Sapling=Саженец каучукового дерева
Rubber Tree Trunk=Ствол каучукового дерева
Rubber Tree Trunk (Empty)=Ствол каучукового дерева (пусто)
Rubber Tree Trunk Slab=Ствол каучукового дерева (плита)
Rubber Tree Trunk Stair=Ствол каучукового дерева (ступени)
Small poplar Tree Sapling=Малы саженец тополя
Spruce Cone=Еловая шишка
Spruce Tree=Ель
Spruce Tree Fence=Еловый забор
Spruce Tree Fence Gate=Еловые ворота
Spruce Tree Fence Rail=Еловые перила
Spruce Tree Leaves=Еловая хвоя
Spruce Tree Planks=Еловые доски
Spruce Tree Planks Slab=Еловые доски (плита)
Spruce Tree Planks Stair=Еловые доски (ступени)
Spruce Tree Sapling=Саженец ели
Spruce Tree Trunk=Ствол ели
Spruce Tree Trunk Slab=Ствол ели (плита)
Spruce Tree Trunk Stair=Ствол ели (ступени)
Willow Tree=Ива
Willow Tree Fence=Ивовый забор
Willow Tree Fence Gate=Ивовые ворота
Willow Tree Fence Rail=Ивовые перила
Willow Tree Leaves=Листья ивы
Willow Tree Planks=Ивовые доски
Willow Tree Planks Slab=Ивовые доски (плита)
Willow Tree Planks Stair=Ивовые доски (ступени)
Willow Tree Sapling=Саженец ивы
Willow Tree Trunk=Ствол ивы
Willow Tree Trunk Slab=Ствол ивы (плита)
Willow Tree Trunk Stair=Ствол ивы (ступени)
Yellow=желтые
# init.lua
Sapling=Саженец
Tree=Дерево
Wooden Planks=Деревянные доски
Leaves=Листья
Wooden Fence=Деревянный забор
Wooden Fence Rail=Деревянные перила
Wooden Fence Gate=Деревянные ворота

View File

@ -208,12 +208,3 @@ Willow Tree Trunk=
Willow Tree Trunk Slab=
Willow Tree Trunk Stair=
Yellow=
# init.lua
Sapling=
Tree=
Wooden Planks=
Leaves=
Wooden Fence=
Wooden Fence Rail=
Wooden Fence Gate=

View File

@ -1,4 +1,4 @@
name = moretrees
depends = xcompat
optional_depends = doors, stairs, moreblocks, farming, default, vessels
depends = default, vessels
optional_depends = doors, stairs, moreblocks, farming, ethereal
min_minetest_version = 5.2.0

View File

@ -2,9 +2,6 @@ local S = minetest.get_translator("moretrees")
moretrees.avoidnodes = {}
local jungle_sapling_texture = minetest.get_modpath("default") and "default_junglesapling.png"
or "moretrees_cedar_sapling.png"
moretrees.treelist = {
{"beech", S("Beech Tree")},
{"apple_tree", S("Apple Tree")},
@ -20,7 +17,7 @@ moretrees.treelist = {
{"willow", S("Willow Tree")},
{"rubber_tree", S("Rubber Tree")},
{"fir", S("Douglas Fir"), "fir_cone", S("Fir Cone"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"jungletree", S("Jungle Tree"), nil, nil, nil, nil, jungle_sapling_texture },
{"jungletree", S("Jungle Tree"), nil, nil, nil, nil, "default_junglesapling.png" },
}
moretrees.treedesc = {
@ -218,7 +215,6 @@ local dirs2 = { 12, 9, 18, 7, 12 }
local moretrees_new_leaves_drawtype = "allfaces_optional"
local moretrees_plantlike_leaves_visual_scale = 1
local moretrees_new_leaves_waving = 1
if moretrees.plantlike_leaves then
moretrees_new_leaves_drawtype = "plantlike"
@ -227,8 +223,8 @@ end
-- redefine default leaves to handle plantlike and/or leaf decay options
if minetest.get_modpath("default") and moretrees.plantlike_leaves then
minetest.override_item(xcompat.materials.apple_leaves, {
if moretrees.plantlike_leaves then
minetest.override_item("default:leaves", {
inventory_image = minetest.inventorycube("default_leaves.png"),
drawtype = "plantlike",
visual_scale = math.sqrt(2)
@ -237,8 +233,8 @@ end
-- redefine default jungle leaves for same
if minetest.get_modpath("default") and moretrees.plantlike_leaves then
minetest.override_item(xcompat.materials.jungle_leaves, {
if moretrees.plantlike_leaves then
minetest.override_item("default:jungleleaves", {
inventory_image = minetest.inventorycube("default_jungleleaves.png"),
drawtype = "plantlike",
visual_scale = math.sqrt(2)
@ -268,9 +264,9 @@ for i in ipairs(moretrees.treelist) do
decay = moretrees.date_palm_leafdecay_radius
end
-- dont register planks/nodes for trees from default and small varients for trees
local split_tn = treename:split("_")
if treename ~= "jungletree" and treename ~= "pine" and split_tn[2]~="small" then
if treename ~= "jungletree" -- the default game provides jungle tree and pine trunk/planks nodes.
and treename ~= "poplar_small"
and treename ~= "pine" then
saptex = "moretrees_"..treename.."_sapling.png"
@ -284,144 +280,18 @@ for i in ipairs(moretrees.treelist) do
paramtype2 = "facedir",
is_ground_content = false,
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = xcompat.sounds.node_sound_wood_defaults(),
sounds = default.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
})
if moretrees.enable_planks then
minetest.register_node("moretrees:"..treename.."_planks", {
description = moretrees.treedesc[treename].planks,
tiles = {"moretrees_"..treename.."_wood.png"},
is_ground_content = false,
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = xcompat.sounds.node_sound_wood_defaults(),
})
end
local moretrees_leaves_inventory_image = nil
if moretrees.plantlike_leaves then
moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_"..treename.."_leaves.png")
end
minetest.register_node("moretrees:"..treename.."_leaves", {
description = moretrees.treedesc[treename].leaves,
drawtype = moretrees_new_leaves_drawtype,
waving = moretrees_new_leaves_waving,
visual_scale = moretrees_plantlike_leaves_visual_scale,
tiles = { "moretrees_"..treename.."_leaves.png" },
inventory_image = moretrees_leaves_inventory_image,
paramtype = "light",
minetest.register_node("moretrees:"..treename.."_planks", {
description = moretrees.treedesc[treename].planks,
tiles = {"moretrees_"..treename.."_wood.png"},
is_ground_content = false,
groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 1},
sounds = xcompat.sounds.node_sound_leaves_defaults(),
drop = {
max_items = 1,
items = {
{items = {"moretrees:"..treename.."_sapling"}, rarity = droprarity },
{items = {"moretrees:"..treename.."_leaves"} }
}
},
groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1},
sounds = default.node_sound_wood_defaults(),
})
if minetest.get_modpath("moreblocks") then
stairsplus:register_all(
"moretrees",
treename.."_trunk",
"moretrees:"..treename.."_trunk",
{
groups = { snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2, not_in_creative_inventory=1 },
tiles = {
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk.png"
},
description = moretrees.treedesc[treename].trunk,
drop = treename.."_trunk",
}
)
if moretrees.enable_planks then
stairsplus:register_all(
"moretrees",
treename.."_planks",
"moretrees:"..treename.."_planks",
{
groups = { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, not_in_creative_inventory=1 },
tiles = { "moretrees_"..treename.."_wood.png" },
description = moretrees.treedesc[treename].planks,
drop = treename.."_planks",
}
)
end
elseif minetest.get_modpath("stairs") then
stairs.register_stair_and_slab(
"moretrees_"..treename.."_trunk",
"moretrees:"..treename.."_trunk",
{ snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2 },
{ "moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk.png"
},
moretrees.treedesc[treename].trunk_stair,
moretrees.treedesc[treename].trunk_slab,
xcompat.sounds.node_sound_wood_defaults()
)
if moretrees.enable_planks then
stairs.register_stair_and_slab(
"moretrees_"..treename.."_planks",
"moretrees:"..treename.."_planks",
{ snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3 },
{ "moretrees_"..treename.."_wood.png" },
moretrees.treedesc[treename].planks_stair,
moretrees.treedesc[treename].planks_slab,
xcompat.sounds.node_sound_wood_defaults()
)
end
end
if minetest.get_modpath("default") and moretrees.enable_planks then
local planks_name = "moretrees:" .. treename .. "_planks"
local planks_tile = "moretrees_" .. treename .. "_wood.png"
default.register_fence("moretrees:" .. treename .. "_fence", {
description = moretrees.treedesc[treename].fence,
texture = planks_tile,
inventory_image = "default_fence_overlay.png^" .. planks_tile ..
"^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^" .. planks_tile ..
"^default_fence_overlay.png^[makealpha:255,126,126",
material = planks_name,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = xcompat.sounds.node_sound_wood_defaults()
})
default.register_fence_rail("moretrees:" .. treename .. "_fence_rail", {
description = moretrees.treedesc[treename].fence_rail,
texture = planks_tile,
inventory_image = "default_fence_rail_overlay.png^" .. planks_tile ..
"^default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^" .. planks_tile ..
"^default_fence_rail_overlay.png^[makealpha:255,126,126",
material = planks_name,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = xcompat.sounds.node_sound_wood_defaults()
})
if minetest.global_exists("doors") then
doors.register_fencegate("moretrees:" .. treename .. "_gate", {
description = moretrees.treedesc[treename].fence_gate,
texture = planks_tile,
material = planks_name,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
})
end
end
end
-- the default game provides jungle tree and pine saplings.
if treename~="jungletree" and treename ~= "pine" then
local regular_groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1}
if minetest.settings:get_bool("creative_mode", false) then
regular_groups["not_in_creative_inventory"]=1
@ -430,8 +300,8 @@ for i in ipairs(moretrees.treelist) do
minetest.register_node("moretrees:"..treename.."_sapling", {
description = moretrees.treedesc[treename].sapling,
drawtype = "plantlike",
tiles = {split_tn[2] and split_tn[2]=="small" and "moretrees_" .. treename .. "_sapling.png" or saptex},
inventory_image = split_tn[2] and split_tn[2]=="small" and "moretrees_" .. treename .. "_sapling.png" or saptex,
tiles = {saptex},
inventory_image = saptex,
paramtype = "light",
paramtype2 = "waving",
walkable = false,
@ -441,9 +311,9 @@ for i in ipairs(moretrees.treelist) do
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = regular_groups,
sounds = xcompat.sounds.node_sound_default(),
sounds = default.node_sound_defaults(),
on_place = function(itemstack, placer, pointed_thing)
itemstack = xcompat.functions.sapling_on_place(itemstack, placer, pointed_thing,
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"moretrees:" ..treename.. "_sapling",
-- minp, maxp to be checked, relative to sapling pos
-- minp_relative.y = 1 because sapling pos has been checked
@ -472,25 +342,142 @@ for i in ipairs(moretrees.treelist) do
end
end,
})
local moretrees_leaves_inventory_image = nil
local moretrees_new_leaves_waving = nil
if moretrees.plantlike_leaves then
moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_"..treename.."_leaves.png")
else
moretrees_new_leaves_waving = 1
end
minetest.register_node("moretrees:"..treename.."_leaves", {
description = moretrees.treedesc[treename].leaves,
drawtype = moretrees_new_leaves_drawtype,
waving = moretrees_new_leaves_waving,
visual_scale = moretrees_plantlike_leaves_visual_scale,
tiles = { "moretrees_"..treename.."_leaves.png" },
inventory_image = moretrees_leaves_inventory_image,
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 1},
sounds = default.node_sound_leaves_defaults(),
drop = {
max_items = 1,
items = {
{items = {"moretrees:"..treename.."_sapling"}, rarity = droprarity },
{items = {"moretrees:"..treename.."_leaves"} }
}
},
})
if moretrees.enable_stairs then
if minetest.get_modpath("moreblocks") then
-- stairsplus:register_all(modname, subname, recipeitem, {fields})
stairsplus:register_all(
"moretrees",
treename.."_trunk",
"moretrees:"..treename.."_trunk",
{
groups = { snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2, not_in_creative_inventory=1 },
tiles = {
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk.png"
},
description = moretrees.treedesc[treename].trunk,
drop = treename.."_trunk",
}
)
stairsplus:register_all(
"moretrees",
treename.."_planks",
"moretrees:"..treename.."_planks",
{
groups = { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, not_in_creative_inventory=1 },
tiles = { "moretrees_"..treename.."_wood.png" },
description = moretrees.treedesc[treename].planks,
drop = treename.."_planks",
}
)
elseif minetest.get_modpath("stairs") then
stairs.register_stair_and_slab(
"moretrees_"..treename.."_trunk",
"moretrees:"..treename.."_trunk",
{ snappy=1, choppy=2, oddly_breakable_by_hand=1, flammable=2 },
{ "moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk.png"
},
moretrees.treedesc[treename].trunk_stair,
moretrees.treedesc[treename].trunk_slab,
default.node_sound_wood_defaults()
)
stairs.register_stair_and_slab(
"moretrees_"..treename.."_planks",
"moretrees:"..treename.."_planks",
{ snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3 },
{ "moretrees_"..treename.."_wood.png" },
moretrees.treedesc[treename].planks_stair,
moretrees.treedesc[treename].planks_slab,
default.node_sound_wood_defaults()
)
end
end
if moretrees.enable_fences then
local planks_name = "moretrees:" .. treename .. "_planks"
local planks_tile = "moretrees_" .. treename .. "_wood.png"
default.register_fence("moretrees:" .. treename .. "_fence", {
description = moretrees.treedesc[treename].fence,
texture = planks_tile,
inventory_image = "default_fence_overlay.png^" .. planks_tile ..
"^default_fence_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_overlay.png^" .. planks_tile ..
"^default_fence_overlay.png^[makealpha:255,126,126",
material = planks_name,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
default.register_fence_rail("moretrees:" .. treename .. "_fence_rail", {
description = moretrees.treedesc[treename].fence_rail,
texture = planks_tile,
inventory_image = "default_fence_rail_overlay.png^" .. planks_tile ..
"^default_fence_rail_overlay.png^[makealpha:255,126,126",
wield_image = "default_fence_rail_overlay.png^" .. planks_tile ..
"^default_fence_rail_overlay.png^[makealpha:255,126,126",
material = planks_name,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
sounds = default.node_sound_wood_defaults()
})
if minetest.global_exists("doors") then
doors.register_fencegate("moretrees:" .. treename .. "_gate", {
description = moretrees.treedesc[treename].fence_gate,
texture = planks_tile,
material = planks_name,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
})
end
end
end
local ongen_groups = {
snappy = 2,
dig_immediate = 3,
flammable = 2,
attached_node = 1,
sapling = 1,
moretrees_ongen = 1,
not_in_creative_inventory = 1
}
local ongen_groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1,sapling=1,not_in_creative_inventory=1}
if minetest.settings:get_bool("creative_mode", false) then
ongen_groups["not_in_creative_inventory"]=nil
end
minetest.register_node("moretrees:"..treename.."_sapling_ongen", {
description = S("@1 (fast growth)", moretrees.treedesc[treename].sapling),
drawtype = "plantlike",
tiles = {split_tn[2] and split_tn[2]=="small" and "moretrees_" .. treename .. "_sapling.png" or saptex,},
inventory_image = split_tn[2] and split_tn[2]=="small" and "moretrees_" .. treename .. "_sapling.png" or saptex,
tiles = {saptex},
inventory_image = saptex,
paramtype = "light",
paramtype2 = "waving",
walkable = false,
@ -500,10 +487,10 @@ for i in ipairs(moretrees.treelist) do
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = ongen_groups,
sounds = xcompat.sounds.node_sound_default(),
sounds = default.node_sound_defaults(),
drop = "moretrees:"..treename.."_sapling",
on_place = function(itemstack, placer, pointed_thing)
itemstack = xcompat.functions.sapling_on_place(itemstack, placer, pointed_thing,
itemstack = default.sapling_on_place(itemstack, placer, pointed_thing,
"moretrees:" ..treename.. "_sapling_ongen",
-- minp, maxp to be checked, relative to sapling pos
-- minp_relative.y = 1 because sapling pos has been checked
@ -552,19 +539,13 @@ for i in ipairs(moretrees.treelist) do
fixed = selbox
},
groups = {fleshy=3,dig_immediate=3,flammable=2, attached_node=1, leafdecay = 1, leafdecay_drop = 1},
sounds = xcompat.sounds.node_sound_default(),
after_place_node = function(pos, placer)
if placer:is_player() then
minetest.set_node(pos, {name = "moretrees:"..fruit, param2 = 1})
end
end
sounds = default.node_sound_defaults(),
})
end
if treename ~= "jungletree"
and treename ~= "poplar_small"
and treename ~= "pine"
and minetest.get_modpath("default") then
and treename ~= "pine" then
default.register_leafdecay({
trunks = { "moretrees:"..treename.."_trunk" },
leaves = { "moretrees:"..treename.."_leaves", fruitname },
@ -591,7 +572,33 @@ for i in ipairs(moretrees.treelist) do
end
end
-- poplar saplings leaves
-- Add small poplar saplings
local poplar_sapling = minetest.registered_nodes["moretrees:poplar_sapling"]
local poplar_sapling_ongen = minetest.registered_nodes["moretrees:poplar_sapling_ongen"]
local poplar_small_sapling = {}
local poplar_small_sapling_ongen = {}
for k,v in pairs(poplar_sapling) do
poplar_small_sapling[k] = v
end
for k,v in pairs(poplar_sapling_ongen) do
poplar_small_sapling_ongen[k] = v
end
poplar_small_sapling.tiles = {"moretrees_poplar_small_sapling.png"}
poplar_small_sapling.inventory_image = "moretrees_poplar_small_sapling.png"
poplar_small_sapling.is_ground_content = true
poplar_small_sapling_ongen.tiles_ongen = {"moretrees_poplar_small_sapling.png"}
poplar_small_sapling_ongen.inventory_image_ongen = "moretrees_poplar_small_sapling.png"
poplar_small_sapling_ongen.drop = "moretrees:poplar_small_sapling"
poplar_small_sapling_ongen.is_ground_content = true
minetest.register_node("moretrees:poplar_small_sapling", poplar_small_sapling)
minetest.register_node("moretrees:poplar_small_sapling_ongen", poplar_small_sapling_ongen)
if moretrees.spawn_saplings then
table.insert(moretrees.avoidnodes, "moretrees:poplar_sapling")
table.insert(moretrees.avoidnodes, "moretrees:poplar_small_sapling_ongen")
end
local poplar_leaves_drop = minetest.registered_nodes["moretrees:poplar_leaves"].drop
minetest.override_item("moretrees:poplar_leaves", {
drop = {
@ -615,6 +622,8 @@ for color = 1, #jungleleaves do
if moretrees.plantlike_leaves then
moretrees_leaves_inventory_image = minetest.inventorycube("moretrees_jungletree_leaves_"..jungleleaves[color]..".png")
else
moretrees_new_leaves_waving = 1
end
minetest.register_node(leave_name, {
@ -627,31 +636,29 @@ for color = 1, #jungleleaves do
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 3 },
drop = minetest.get_modpath("default") and {
drop = {
max_items = 1,
items = {
{items = {"default:junglesapling"}, rarity = 100 },
{items = {"moretrees:jungletree_leaves_"..jungleleaves[color]} }
}
} or nil,
sounds = xcompat.sounds.node_sound_leaves_defaults(),
},
sounds = default.node_sound_leaves_defaults(),
})
end
-- To get Moretrees to generate its own jungle trees among the default mapgen
-- we need our own copy of that node, which moretrees will match against.
if minetest.get_modpath("default") then
local jungle_tree = table.copy(minetest.registered_nodes["default:jungletree"])
jungle_tree.drop = "default:jungletree"
minetest.register_node("moretrees:jungletree_trunk", jungle_tree)
local jungle_tree = table.copy(minetest.registered_nodes["default:jungletree"])
jungle_tree.drop = "default:jungletree"
minetest.register_node("moretrees:jungletree_trunk", jungle_tree)
default.register_leafdecay({
trunks = { "default:jungletree", "moretrees:jungletree_trunk" },
leaves = { xcompat.materials.jungle_leaves, "moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_red" },
radius = moretrees.leafdecay_radius,
})
end
default.register_leafdecay({
trunks = { "default:jungletree", "moretrees:jungletree_trunk" },
leaves = { "default:jungleleaves", "moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_red" },
radius = moretrees.leafdecay_radius,
})
-- Extra needles for firs
@ -678,19 +685,17 @@ minetest.register_node("moretrees:fir_leaves_bright", {
{items = {'moretrees:fir_leaves_bright'} }
}
},
sounds = xcompat.sounds.node_sound_leaves_defaults()
sounds = default.node_sound_leaves_defaults()
})
if minetest.get_modpath("default") then
default.register_leafdecay({
trunks = { "moretrees:fir_trunk" },
leaves = { "moretrees:fir_leaves", "moretrees:fir_leaves_bright" },
radius = moretrees.leafdecay_radius,
})
end
default.register_leafdecay({
trunks = { "moretrees:fir_trunk" },
leaves = { "moretrees:fir_leaves", "moretrees:fir_leaves_bright" },
radius = moretrees.leafdecay_radius,
})
if minetest.get_modpath("default") and moretrees.enable_redefine_apple then
if moretrees.enable_redefine_apple then
local appledef = table.copy(minetest.registered_nodes["default:apple"])
appledef.groups.attached_node = 1
minetest.register_node(":default:apple", appledef)
@ -718,7 +723,7 @@ minetest.register_node("moretrees:rubber_tree_trunk_empty", {
"moretrees_rubber_tree_trunk_empty.png"
},
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = xcompat.sounds.node_sound_wood_defaults(),
sounds = default.node_sound_wood_defaults(),
paramtype2 = "facedir",
is_ground_content = false,
on_place = minetest.rotate_node,
@ -764,7 +769,7 @@ minetest.register_alias("conifers:sapling", "moretrees:fir_sapling")
minetest.register_alias("moretrees:jungletree_sapling", "default:junglesapling")
minetest.register_alias("moretrees:jungletree_trunk_sideways", "moreblocks:horizontal_jungle_tree")
minetest.register_alias("moretrees:jungletree_planks", "default:junglewood")
minetest.register_alias("moretrees:jungletree_leaves_green", xcompat.materials.jungle_leaves)
minetest.register_alias("moretrees:jungletree_leaves_green", "default:jungleleaves")
minetest.register_alias("moretrees:acacia_trunk", "default:acacia_tree")
minetest.register_alias("moretrees:acacia_planks", "default:acacia_wood")

View File

@ -5,22 +5,21 @@
local dirt_surfaces = {
set = true,
[xcompat.materials.dirt] = true,
[xcompat.materials.dirt_with_grass] = true,
["default:dirt"] = true,
["default:dirt_with_grass"] = true,
["default:dirt_with_dry_grass"] = true,
["default:dirt_with_coniferous_litter"] = true,
["default:dirt_with_rainforest_litter"] = true,
["woodsoils:dirt_with_leaves_1"] = true,
["woodsoils:dirt_with_leaves_2"] = true,
["woodsoils:grass_with_leaves_1"] = true,
["woodsoils:grass_with_leaves_2"] = true,
["meditteranean_biome:dirt_with_mediterranean_grass"] = true
["woodsoils:grass_with_leaves_2"] = true
}
local conifer_surfaces = {
set = true,
[xcompat.materials.dirt] = true,
[xcompat.materials.dirt_with_grass] = true,
["default:dirt"] = true,
["default:dirt_with_grass"] = true,
["default:dirt_with_dry_grass"] = true,
["default:dirt_with_coniferous_litter"] = true,
["default:dirt_with_rainforest_litter"] = true,
@ -28,16 +27,14 @@ local conifer_surfaces = {
["woodsoils:dirt_with_leaves_2"] = true,
["woodsoils:grass_with_leaves_1"] = true,
["woodsoils:grass_with_leaves_2"] = true,
["default:dirt_with_snow"] = true,
["meditteranean_biome:dirt_with_mediterranean_grass"] = true
["default:dirt_with_snow"] = true
}
local sand_surfaces = {
set = true,
[xcompat.materials.sand] = true,
[xcompat.materials.desert_sand] = true,
["default:sand"] = true,
["default:desert_sand"] = true,
["cottages:loam"] = true,
["darkage:mud"] = true,
-- note, no silver sand here.
-- too cold for a palm, too... well... sandy for anything else.
}

View File

@ -1,8 +1,29 @@
local stg = minetest.settings
--enable/disable different trees
moretrees.enable_apple_tree = stg:get_bool("moretrees.enable_apple_tree", true)
moretrees.enable_oak = stg:get_bool("moretrees.enable_oak", true)
moretrees.enable_sequoia = stg:get_bool("moretrees.enable_sequoia", true)
moretrees.enable_palm = stg:get_bool("moretrees.enable_palm", true)
moretrees.enable_date_palm = stg:get_bool("moretrees.enable_date_palm", true)
moretrees.enable_cedar = stg:get_bool("moretrees.enable_cedar", true)
moretrees.enable_rubber_tree = stg:get_bool("moretrees.enable_rubber_tree", true)
moretrees.enable_willow = stg:get_bool("moretrees.enable_willow", true)
moretrees.enable_birch = stg:get_bool("moretrees.enable_birch", true)
moretrees.enable_spruce = stg:get_bool("moretrees.enable_spruce", true)
moretrees.enable_jungle_tree = stg:get_bool("moretrees.enable_jungle_tree", true)
moretrees.enable_fir = stg:get_bool("moretrees.enable_fir", true)
moretrees.enable_poplar = stg:get_bool("moretrees.enable_poplar", true)
moretrees.enable_beech = stg:get_bool("moretrees.enable_beech", false)
--spawns tree on mapgen as saplings, legacy setting
moretrees.spawn_saplings = stg:get_bool("moretrees.spawn_saplings", true)
moretrees.spawn_enabled = stg:get_bool("moretrees.spawn_enabled", true)
--turn on/off stair varients of nodes via moreblocks or the stair api
moretrees.enable_stairs = stg:get_bool("moretrees.enable_stairs", true)
-- If this variable is set to true, register fences for moretrees wood
moretrees.enable_fences = stg:get_bool("moretrees.enable_fences", true)
--enable plantlike drawtype for leaves
moretrees.plantlike_leaves = stg:get_bool("moretrees.plantlike_leaves", false)
@ -11,11 +32,22 @@ moretrees.plantlike_leaves = stg:get_bool("moretrees.plantlike_leaves", false)
-- fall when leaves decay/are dug.
moretrees.enable_redefine_apple = stg:get_bool("moretrees.enable_redefine_apple", true)
-- Set this to true to enable leaf decay of all trees except the default ones.
moretrees.enable_leafdecay = stg:get_bool("moretrees.enable_leafdecay", true)
-- various related settings to configure leaf decay.
moretrees.leafdecay_delay = tonumber(stg:get("moretrees.leafdecay_delay")) or 2
moretrees.leafdecay_chance = tonumber(stg:get("moretrees.leafdecay_chance")) or 5
moretrees.leafdecay_radius = tonumber(stg:get("moretrees.leafdecay_radius")) or 5
moretrees.palm_leafdecay_radius = tonumber(stg:get("moretrees.palm_leafdecay_radius")) or 10
moretrees.date_palm_leafdecay_radius = tonumber(stg:get("moretrees.date_palm_leafdecay_radius")) or 14
-- Change these settings if you want default trees to be gradually cut down
-- above the elevation where firs normally generate.
moretrees.firs_remove_default_trees = stg:get_bool("moretrees.firs_remove_default_trees", false)
moretrees.firs_remove_interval = tonumber(stg:get("moretrees.firs_remove_interval")) or 2
moretrees.firs_remove_chance = tonumber(stg:get("moretrees.firs_remove_chance")) or 150
-- Cocos palm settings
moretrees.coconuts_regrow = stg:get_bool("moretrees.coconuts_regrow", true)
moretrees.coconuts_convert_existing_palms = stg:get_bool("moretrees.coconuts_convert_existing_palms", true)
@ -42,17 +74,6 @@ moretrees.dates_item_drop_ichance = tonumber(stg:get("moretrees.dates_item_drop_
moretrees.sapling_interval = 100
moretrees.sapling_chance = 5
-- Enable this only if you have used an old moretrees version which was using biome_lib
-- and when you notice large areas with ongen saplings that don't grow
moretrees.grow_legacy_saplings = stg:get_bool("moretrees.grow_legacy_saplings", false)
-- If this variable is set to true, drop leaves out as entities during leaf
-- decay, rather than just disappearing them.
moretrees.decay_leaves_as_items = stg:get_bool("moretrees.decay_leaves_as_items", false)
-- this is an internal setting for games that only have one type of planks
if type(minetest.get_game_info) == "function" then
moretrees.enable_planks = minetest.get_game_info().id~="voxelgarden"
else
moretrees.enable_planks = true
end

View File

@ -25,8 +25,8 @@ moretrees.apple_tree_model={
random_level=0,
trunk_type="single",
thin_branches=true,
fruit=minetest.get_modpath("default") and "default:apple" or nil,
fruit_chance=minetest.get_modpath("default") and 15 or nil,
fruit="default:apple",
fruit_chance=15,
}
moretrees.oak_model={
@ -252,7 +252,7 @@ moretrees.jungletree_model={
rules_a=nil,
rules_b=nil,
trunk="moretrees:jungletree_trunk",
leaves=xcompat.materials.jungle_leaves,
leaves="default:jungleleaves",
leaves2=nil,
leaves2_chance=nil,
angle=45,