1
0
mirror of https://github.com/mt-mods/moretrees.git synced 2025-06-02 16:40:27 +02:00

Compare commits

...

46 Commits

Author SHA1 Message Date
randomei
ac3e30ae86
Added localization for wooden planks, fence, tree, etc. (#52)
* Added localization for wooden planks, fence, tree, etc.

* Added russian localization, localizations for wooden stuff

* Localization fixes

* Localization fixes #2
2024-11-17 11:22:18 -05:00
Niklp
c15250a03a
Rename some vars to reduce the mess in the mapgen code 2024-10-14 19:12:36 +02:00
wsor4035
458536dbe6
switch to using xcompat (#46)
* switch to using xcompat

* fix readme

* fix dumb mistake
2024-09-06 22:41:48 +02:00
wsor4035
2c891e6c25 fix https://github.com/mt-mods/xcompat/issues/29 - restore proper check for voxelgarden 2024-06-23 22:11:39 -04:00
Niklp
517c9dc516
[no squash] Disable jungletree generation when default isn't available (#43)
* Remove unused params from biome_defs

* Disable jungletree generation when `default` isn't available
2024-05-30 18:34:01 -04:00
wsor4035
3e424b2797
culls settings (#41)
* load all trees

* remove now sorta duplicate settings

* remove dead settings

* prune useless file

* prune dead settings
2024-05-27 12:18:58 -04:00
wsor4035
1b6914bc26
tune for voxel garden (#40)
* tune for voxel garden based off https://github.com/mt-mods/moretrees/pull/38

* add internal api setting rather than same if statement all over the place, per j-r suggestion
2024-05-27 10:25:10 -04:00
wsor4035
f49b1c42c9
makes moretrees game agnostic (#37)
* at least boot into minetest

* start using some xcompat materials

* transition some more materials

* translate and default lock some more stuff

* handle more stuff

* translate leaves and bugfix jungle nodes near

* fallback on moretrees spaling texture when default not present

* fix https://github.com/mt-mods/moretrees/pull/37#discussion_r1615147786
2024-05-26 11:08:14 -04:00
Luke aka SwissalpS
670f7f4e61
is_ground_content revision (#36)
default minetest game treats fruit as ground content, let's mirror that.
2024-03-08 20:53:42 -05:00
debagos
9a6c64d163
Fix dead ongen saplings due to biome_lib secession (#35)
* Replaced print with minetest.log in init.lua

* Added moretrees_ongen group to ongen saplings

* Added LBM and setting to enable it for non-functional ongen saplings due to biome_lib secession

* Changed LBM run_at_every_load to true

* Fixed luacheck warnings

* Using random interval for node timer, like in the on_generated timer interval

* Update init.lua

* Update node_defs.lua

---------

Co-authored-by: Niklp <nik@niklp.net>
2024-01-12 12:08:54 -05:00
Niklp
5d7c46c4cf Fix typo in german translation 2023-11-13 15:42:15 +01:00
Buckaroo Banzai
17f2037218
remove biome_lib dependency from readme (#32) 2023-07-06 06:35:38 -04:00
Micah Scott
b1fe8df038 Fix some typos in tree names in the biome decoration defs
I think this fixes some tree types that were broken. I didn't notice any
poplar trees before this patch and I've seen a few since. I've been
looking for rubber trees and so far haven't found any but there might be
other issues or I may just be unlucky :)
2023-05-15 09:46:58 +02:00
wsor4035
b56e22fefd
fix gennotify ids table being corrupted when clear decorations is called (#28)
* fix decoration ids being invalid when mods clear the registered decorations

* cleanup old debug chat statements
2023-05-02 17:56:09 -04:00
David Leal
288870bc8d
Improve and add missing Spanish strings (#27) 2023-04-20 21:32:06 -04:00
tenplus1
393840ba49
Player placed fruits have param2 set to 1 (#24)
Player placed fruits have their param2 set to 1 for any mods that need to know if it was grown by sapling or placed by player.
2022-12-27 15:20:39 -05:00
Awkanimus
21bdcc360b
Ensure ethereal is a compatible version if loaded (#21)
- Check that ethereal version is more than 20220424 so that it doesn't
   unload parts of this mod
 - Remove optional dependency breaking the multi-mod dependency cycle
   ethereal --> bakedclay --> flowerpot --> moretrees --> ethereal.
2022-12-12 00:26:49 -05:00
unknown
7879bd8192 manual merge https://github.com/mt-mods/moretrees/pull/19 and resolve conflicts 2022-11-06 13:39:56 -05:00
unknown
5bc6bdc3d9 fix https://github.com/mt-mods/moretrees/issues/17 resolves old legacy code for small varients that was missed when removing biome lib 2022-11-05 22:20:28 -04:00
wsor4035
e476b81cf5
Divorce biome lib and cleanup code (#11)
* make it boot without biome lib

* make luacheck semi sane

* make fast growth saplings work

* make fast saplings respect nodes there growing on

* make regualr saplings work

* fix some luacheck warnings

* add github actions for luacheck

* bump luacheck line limit, as to gracefully handle long tree rules

* switch over to inline luacheck length rules

* fix screenshot warning

* make tree generation work

* add settings from last night

* comment out new biome lib nonsense added

* tune spawning to be better

* turn down fallback ratio

* translate new abm patch to not use biome lib

* add ethereal since its still behaving badly :(
2022-10-24 19:09:19 -04:00
fluxionary
8103aaae79
fix typo to limit polar leaves drops to 1 (#15) 2022-08-25 20:15:31 -04:00
wsor4035
c4d1dde83c
Merge pull request #13 from Niklp09/abm
optimize coconut spawn ABM
2022-08-19 15:45:13 -04:00
Niklp
87a997ba4a
speed up coconut spawn ABM 2022-08-19 19:48:09 +02:00
OgelGames
cbe846dfde remove floating date palm trunk and adjust decay
fixes #6
2022-06-01 17:02:34 +10:00
Vanessa Dannenberg
62cab1b1d9 use proper log command and log level 2021-04-07 05:39:26 -04:00
Vanessa Dannenberg
20770027a6 Merge branch 'FrostRanger-master-patch-01795' into 'master'
Fixed cedars spawning deep underground

See merge request VanessaE/moretrees!11
2020-11-22 05:17:21 +00:00
FrostRanger
06aaee3187 Fixed cedars spawning deep underground 2020-11-22 05:12:09 +00:00
Vanessa Dannenberg
8c0a83dacb Merge branch 'heavygale-master-patch-74197' into 'master'
Update moretrees.de.tr

See merge request VanessaE/moretrees!10
2020-11-15 11:22:10 +00:00
Max
24bb114a11 Update moretrees.de.tr 2020-11-15 11:01:19 +00:00
Vanessa Dannenberg
c559ea3aef Merge branch 'mt5-translation' into 'master'
Add MT5 client-side translation

See merge request VanessaE/moretrees!8
2020-08-26 00:43:45 +00:00
Louis Royer
3212fae8cf Add MT5 client-side translation
- Improve french translation

Warnings:
- many untranslated new strings for German and Spanish translations (some help would be appreciated)
- Inner and Outer Stairs are still badly translated (since there is [no support for this in stairs api yet](https://github.com/minetest/minetest_game/issues/2582)).
2020-08-26 02:11:54 +02:00
Louis Royer
ea92403fa3 Add luacheck and fix warnings 2020-08-26 02:11:18 +02:00
Vanessa Dannenberg
dd36f8b63e Merge branch 'food_cutting_board' into 'master'
Add coconut milk craft using cutting board from farming redo

See merge request VanessaE/moretrees!7
2020-08-25 17:44:00 +00:00
Louis Royer
dc93bb5f16 Add coconut milk craft using cutting board from farming redo
- Add coconut milk to group vessel
- Give an empty vessel back to player after eating coconut milk
2020-08-25 19:31:39 +02:00
VanessaE
e72c539cdc add minimum minetest version key for contentdb 2020-06-03 13:00:26 -04:00
Vanessa Dannenberg
66fd6724c5 Merge branch 'respect_protection' into 'master'
Respect protection when placing saplings

See merge request VanessaE/moretrees!6
2020-04-23 02:40:25 +00:00
David Leal
fa83e1b262 Respect protection when placing saplings 2020-04-22 22:09:04 +00:00
Vanessa Dannenberg
f94f1bea26 Merge branch 'patch-1' into 'master'
Fix missing comma messing with load order

See merge request VanessaE/moretrees!5
2020-04-20 08:14:05 +00:00
Till Affeldt
09f08b50bc Fix missing comma messing with load order 2020-04-20 08:04:21 +00:00
Vanessa Dannenberg
d335eceecc Merge branch 'cocomilk-axe-bugfix' into 'master'
Fix bug with coconut-milk craft

See merge request VanessaE/moretrees!3
2020-02-02 19:19:47 +00:00
Louis
89bffdecaf Fix bug with coconut-milk craft
When crafting, tool used was fully repaired.
Now crafting will do damages on tool used instead.
2020-02-02 15:13:41 +01:00
Vanessa Dannenberg
6fd3729669 Merge branch 'fences' into 'master'
add optional fences and gates

See merge request VanessaE/moretrees!2
2019-10-03 18:13:57 +00:00
flux
25250e6eea add optional fences and gates 2019-10-03 18:13:57 +00:00
Vanessa Dannenberg
9bc0bc1b68 Merge branch 'jungletree_drop' into 'master'
make moretrees:jungletree_trunk drop default:jungletree

See merge request VanessaE/moretrees!1
2019-10-03 18:10:58 +00:00
flux
d097fd6044 make moretrees:jungletree_trunk drop default:jungletree 2019-10-03 18:10:58 +00:00
Vanessa Dannenberg
216acdc6b1 override default sapling/tree/leaves/wood/etc
get rid of "apple" from descriptions
2019-06-18 14:51:50 -04:00
25 changed files with 2098 additions and 1007 deletions

18
.github/workflows/luacheck.yml vendored Normal file
View File

@ -0,0 +1,18 @@
name: luacheck
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: apt
run: sudo apt-get install -y luarocks
- name: luacheck install
run: luarocks install --local luacheck
- name: luacheck run
run: $HOME/.luarocks/bin/luacheck ./

View File

@ -1,17 +1,28 @@
unused_args = false
allow_defined_top = true
read_globals = {
"DIR_DELIM",
"minetest", "core",
"dump",
"vector", "nodeupdate",
"VoxelManip", "VoxelArea",
"PseudoRandom", "ItemStack",
"intllib",
exclude_files = {".luacheckrc"}
globals = {
"minetest",
"vector",
"VoxelManip",
"VoxelArea",
"PseudoRandom",
"ItemStack",
"default",
table = { fields = { "copy", "getn" } },
"biome_lib",
"stairs", "stairsplus",
"dump",
"moretrees",
"ethereal",
}
read_globals = {
string = {fields = {"split"}},
table = {fields = {"copy", "getn"}},
"stairsplus",
"stairs",
"doors",
"xcompat",
}

View File

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

View File

@ -1,301 +1,155 @@
moretrees.beech_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 8,
seed_diff = 2,
rarity = 50,
max_count = 20,
place_on = xcompat.materials.dirt_with_grass,
}
moretrees.palm_biome = {
surface = "default:sand",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 5,
seed_diff = 330,
place_on = xcompat.materials.sand,
min_elevation = -1,
max_elevation = 1,
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,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 10,
}
moretrees.date_palm_biome = {
surface = "default:desert_sand",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 339,
place_on = xcompat.materials.desert_sand,
min_elevation = -1,
max_elevation = 10,
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,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 100,
}
moretrees.date_palm_biome_2 = {
surface = "default:desert_sand",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 340,
place_on = xcompat.materials.desert_sand,
min_elevation = 11,
max_elevation = 30,
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,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 1,
}
moretrees.apple_tree_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 331,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = 1,
max_elevation = 10,
temp_min = 0.1,
temp_max = -0.15,
rarity = 75,
max_count = 5,
biomes = {"deciduous_forest"},
fill_ratio = 0.0001,
}
moretrees.oak_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 15,
seed_diff = 332,
place_on = xcompat.materials.dirt_with_grass,
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 = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 333,
place_on = xcompat.materials.dirt_with_grass,
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 = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 5,
seed_diff = 334,
place_on = xcompat.materials.dirt_with_grass,
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 = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 337,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = -5,
max_elevation = 5,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_count = 5,
rarity = 75,
max_count = 5,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 5,
}
moretrees.rubber_tree_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 338,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = -5,
max_elevation = 5,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_count = 10,
temp_min = -0.15,
rarity = 75,
max_count = 10,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 10,
}
moretrees.jungletree_biome = {
surface = {
"default:dirt",
"default:dirt_with_grass",
place_on = {
xcompat.materials.dirt,
xcompat.materials.dirt_with_grass,
"woodsoils:dirt_with_leaves_1",
"woodsoils:grass_with_leaves_1",
"woodsoils:grass_with_leaves_2"
"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,
near_nodes = {"default:jungletree"},
near_nodes_size = 6,
near_nodes_vertical = 2,
near_nodes_count = 1,
plantlife_limit = -0.9,
spawn_by = minetest.get_modpath("default") and {"default:jungletree"} or nil,
num_spawn_by = minetest.get_modpath("default") and 1 or nil,
biomes = {"rainforest", "rainforest_swamp"},
}
moretrees.spruce_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 335,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = 20,
temp_min = 0.9,
temp_max = 0.7,
rarity = 50,
max_count = 5,
}
moretrees.cedar_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 336,
near_nodes = {"default:water_source"},
near_nodes_size = 15,
near_nodes_count = 5,
rarity = 50,
max_count = 10,
place_on = xcompat.materials.dirt_with_grass,
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,
}
-- Poplar requires a lot of water.
moretrees.poplar_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 6,
seed_diff = 341,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = 0,
max_elevation = 50,
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,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 1,
}
-- The humidity requirement it quite restrictive (apparently).
-- Spawn an occasional poplar elsewhere.
moretrees.poplar_biome_2 = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 6,
seed_diff = 341,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = 0,
max_elevation = 50,
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,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 10,
}
-- Subterranean lakes provide enough water for poplars to grow
moretrees.poplar_biome_3 = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 6,
seed_diff = 342,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = 0,
max_elevation = 50,
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,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 1,
}
moretrees.poplar_small_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 4,
seed_diff = 343,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = 0,
max_elevation = 50,
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,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 1,
}
moretrees.poplar_small_biome_2 = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 4,
seed_diff = 343,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = 0,
max_elevation = 50,
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,
spawn_by = {xcompat.materials.water_source},
num_spawn_by = 5,
}
moretrees.fir_biome = {
surface = "default:dirt_with_grass",
avoid_nodes = moretrees.avoidnodes,
avoid_radius = 10,
seed_diff = 359,
place_on = xcompat.materials.dirt_with_grass,
min_elevation = 25,
temp_min = 0.9,
temp_max = 0.3,
rarity = 50,
max_count = 10,
}
moretrees.fir_biome_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
place_on = {"snow:dirt_with_snow", "snow:snow"},
below_nodes = {xcompat.materials.dirt, xcompat.materials.dirt_with_grass, "snow:dirt_with_snow"},
}

View File

@ -1,6 +1,6 @@
local S = moretrees.intllib
-- © 2016, Rogier <rogier777@gmail.com>
-- Translation support
local S = minetest.get_translator("moretrees")
-- Some constants
@ -23,12 +23,16 @@ end
ftrunk.drop = "moretrees:palm_trunk"
gftrunk.drop = "moretrees:palm_trunk"
ftrunk.after_destruct = function(pos, oldnode)
local coconuts = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, {"group:moretrees_coconut"})
local coconuts = minetest.find_nodes_in_area(
{x=pos.x-1, y=pos.y, z=pos.z-1},
{x=pos.x+1, y=pos.y, z=pos.z+1},
{"group:moretrees_coconut"}
)
for _,coconutpos in pairs(coconuts) do
-- minetest.dig_node(coconutpos) does not cause nearby coconuts to be dropped :-( ...
--minetest.dig_node(coconutpos)
local items = minetest.get_node_drops(minetest.get_node(coconutpos).name)
minetest.swap_node(coconutpos, biome_lib.air)
minetest.swap_node(coconutpos, {name = "air"})
for _, itemname in pairs(items) do
minetest.add_item(coconutpos, itemname)
end
@ -46,7 +50,11 @@ local coconut_regrow_abm_spec = {
interval = moretrees.coconut_flower_interval,
chance = moretrees.coconut_flower_chance,
action = function(pos, node, active_object_count, active_object_count_wider)
local coconuts = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "group:moretrees_coconut")
local coconuts = minetest.find_nodes_in_area(
{x=pos.x-1, y=pos.y, z=pos.z-1},
{x=pos.x+1, y=pos.y, z=pos.z+1},
"group:moretrees_coconut"
)
-- Expected growth interval increases exponentially with number of coconuts already hanging.
-- Also: if more coconuts are hanging, the chance of picking an empty spot decreases as well...
if math.random(2^#coconuts) <= 2 then
@ -72,19 +80,25 @@ end
-- ABM converts the trunk to a regular fruit trunk, and spawns some coconuts)
minetest.register_abm({
nodenames = { "moretrees:palm_fruit_trunk_gen" },
interval = 1,
interval = 6,
chance = 1,
min_y = -16,
max_y = 48,
label = "converts palm trunk to a regular fruit trunk, and spawns some coconuts",
action = function(pos, node, active_object_count, active_object_count_wider)
minetest.swap_node(pos, {name="moretrees:palm_fruit_trunk"})
local poslist = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "air")
local poslist = minetest.find_nodes_in_area(
{x=pos.x-1, y=pos.y, z=pos.z-1},
{x=pos.x+1, y=pos.y, z=pos.z+1},
"air"
)
local genlist = {}
for k,v in pairs(poslist) do
genlist[k] = {x = math.random(100), pos = v}
end
table.sort(genlist, function(a, b) return a.x < b.x; end)
local gen
local count = 0
for _,gen in pairs(genlist) do
for _, gen in pairs(genlist) do
minetest.swap_node(gen.pos, {name = "moretrees:coconut_3"})
count = count + 1
if count == 4 then
@ -109,13 +123,14 @@ local coconut_growfn = function(pos, elapsed)
-- Drop coconuts (i.e. remove them), so that new coconuts can grow.
-- Coconuts will drop as items with a small chance
if math.random(coconut_drop_ichance) == 1 then
if moretrees.coconut_item_drop_ichance > 0 and math.random(moretrees.coconut_item_drop_ichance) == 1 then
if moretrees.coconut_item_drop_ichance > 0
and math.random(moretrees.coconut_item_drop_ichance) == 1 then
local items = minetest.get_node_drops(minetest.get_node(pos).name)
for _, itemname in pairs(items) do
minetest.add_item(pos, itemname)
end
end
minetest.swap_node(pos, biome_lib.air)
minetest.swap_node(pos, {name = "air"})
end
else
-- Grow coconuts to the next stage
@ -162,10 +177,11 @@ 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 = default.node_sound_defaults(),
sounds = xcompat.sounds.node_sound_default(),
drop = drop,
selection_box = {
type = "fixed",
@ -190,55 +206,95 @@ if moretrees.coconuts_convert_existing_palms then
local leaves
local coconuts
-- One regular trunk must be adjacent to the coconut
trunks = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "moretrees:palm_trunk")
trunks = minetest.find_nodes_in_area(
{x=pos.x-1, y=pos.y, z=pos.z-1},
{x=pos.x+1, y=pos.y, z=pos.z+1},
"moretrees:palm_trunk"
)
if #trunks ~= 1 then
return
end
local tpos = trunks[1]
-- 1 or 2 other trunks must be one level below to the trunk being converted.
trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y-1, z=tpos.z+1}, "moretrees:palm_trunk")
trunks = minetest.find_nodes_in_area(
{x=tpos.x-1, y=tpos.y-1, z=tpos.z-1},
{x=tpos.x+1, y=tpos.y-1, z=tpos.z+1},
"moretrees:palm_trunk"
)
if #trunks < 1 or #trunks > 2 then
return
end
-- 1 or 2 other trunks must be two levels below to the trunk being converted.
trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y-2, z=tpos.z+1}, "moretrees:palm_trunk")
trunks = minetest.find_nodes_in_area(
{x=tpos.x-1, y=tpos.y-2, z=tpos.z-1},
{x=tpos.x+1, y=tpos.y-2, z=tpos.z+1},
"moretrees:palm_trunk"
)
if #trunks < 1 or #trunks > 2 then
return
end
-- 1 or 2 trunks must at the level of the trunk being converted.
cvtrunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:palm_trunk")
cvtrunks = minetest.find_nodes_in_area(
{x=tpos.x-1, y=tpos.y, z=tpos.z-1},
{x=tpos.x+1, y=tpos.y, z=tpos.z+1},
"moretrees:palm_trunk"
)
if #cvtrunks < 1 or #cvtrunks > 2 then
return
end
-- No trunks may be one level above the trunk being converted.
trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, "moretrees:palm_trunk")
trunks = minetest.find_nodes_in_area(
{x=tpos.x-1, y=tpos.y+1, z=tpos.z-1},
{x=tpos.x+1, y=tpos.y+1, z=tpos.z+1},
"moretrees:palm_trunk"
)
if #trunks ~= 0 then
return
end
-- Leaves must be one level above the trunk being converted.
leaves = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+1, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+1, z=tpos.z+1}, "moretrees:palm_leaves")
leaves = minetest.find_nodes_in_area(
{x=tpos.x-1, y=tpos.y+1, z=tpos.z-1},
{x=tpos.x+1, y=tpos.y+1, z=tpos.z+1},
"moretrees:palm_leaves"
)
if #leaves == 0 then
return
end
-- Leaves must be two levels above the trunk being converted.
leaves = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y+2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y+2, z=tpos.z+1}, "moretrees:palm_leaves")
leaves = minetest.find_nodes_in_area(
{x=tpos.x-1, y=tpos.y+2, z=tpos.z-1},
{x=tpos.x+1, y=tpos.y+2, z=tpos.z+1},
"moretrees:palm_leaves"
)
if #leaves == 0 then
return
end
-- No cocos fruit trunk may already be adjacent to the coconut
trunks = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "moretrees:palm_fruit_trunk")
trunks = minetest.find_nodes_in_area(
{x=pos.x-1, y=pos.y, z=pos.z-1},
{x=pos.x+1, y=pos.y, z=pos.z+1},
"moretrees:palm_fruit_trunk"
)
if #trunks ~= 0 then
return
end
-- No cocos fruit trunk may be adjacent to or below the trunk being converted.
trunks = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y-2, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:palm_fruit_trunk")
trunks = minetest.find_nodes_in_area(
{x=tpos.x-1, y=tpos.y-2, z=tpos.z-1},
{x=tpos.x+1, y=tpos.y, z=tpos.z+1},
"moretrees:palm_fruit_trunk"
)
if #trunks ~= 0 then
return
end
-- Convert trunk and all coconuts nearby. Maybe convert 2 trunks, just in case...
for _, tpos in pairs(cvtrunks) do
minetest.swap_node(tpos, {name = "moretrees:palm_fruit_trunk"})
coconuts = minetest.find_nodes_in_area({x=tpos.x-1, y=tpos.y, z=tpos.z-1}, {x=tpos.x+1, y=tpos.y, z=tpos.z+1}, "moretrees:coconut")
for _, tpos_1 in pairs(cvtrunks) do
minetest.swap_node(tpos_1, {name = "moretrees:palm_fruit_trunk"})
coconuts = minetest.find_nodes_in_area(
{x=tpos_1.x-1, y=tpos_1.y, z=tpos_1.z-1},
{x=tpos_1.x+1, y=tpos_1.y, z=tpos_1.z+1},
"moretrees:coconut"
)
for _, coconutpos in pairs(coconuts) do
minetest.swap_node(coconutpos, {name = "moretrees:coconut_3"})
end

View File

@ -1,15 +1,17 @@
local S = moretrees.intllib
local S = minetest.get_translator("moretrees")
for i in ipairs(moretrees.treelist) do
local treename = moretrees.treelist[i][1]
minetest.register_craft({
type = "shapeless",
output = "moretrees:"..treename.."_planks 4",
recipe = {
"moretrees:"..treename.."_trunk"
}
})
if moretrees.enable_planks then
minetest.register_craft({
type = "shapeless",
output = "moretrees:"..treename.."_planks 4",
recipe = {
"moretrees:"..treename.."_trunk"
}
})
end
minetest.register_craft({
type = "fuel",
@ -38,7 +40,8 @@ minetest.register_craftitem("moretrees:coconut_milk", {
description = S("Coconut Milk"),
inventory_image = "moretrees_coconut_milk_inv.png",
wield_image = "moretrees_coconut_milk.png",
on_use = minetest.item_eat(2),
on_use = minetest.item_eat(2, "vessels:drinking_glass"),
groups = {vessel = 1},
})
minetest.register_craftitem("moretrees:raw_coconut", {
@ -117,11 +120,63 @@ for i in ipairs(moretrees.cutting_tools) do
},
replacements = {
{ "moretrees:coconut", "moretrees:raw_coconut" },
{ tool, tool }
}
})
end
-- give tool back with wear preserved
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
if (itemstack:get_name() == "moretrees:coconut_milk") then
for i, j in pairs(old_craft_grid) do
-- find tool used to do the craft
local ocg_name = j:get_name()
if ((ocg_name ~= "") and (ocg_name ~= "moretrees:coconut") and (ocg_name ~= "vessels:drinking_glass")) then
-- abort if using cutting board
if minetest.get_item_group(ocg_name, "food_cutting_board") == 1 then
return
end
-- create a new tool and set wear
local t = ItemStack(ocg_name)
local w = j:get_wear()
-- works if tool used is an axe
local uses = j:get_tool_capabilities().groupcaps.choppy.uses or 0
if (w == 0 and uses ~= 0) then
-- tool has never been used
-- use tool once
t:set_wear(65535/(9*(uses - 1)))
else
-- set wear back
t:set_wear(w)
-- use tool once
if (uses ~= 0) then
t:add_wear(65535/(9*(uses - 1)))
end
end
-- add to craft inventory
craft_inv:add_item("craft", t)
end
end
end
end)
-- coconut milk using food_cutting_board from farming redo
if minetest.registered_items["farming:cutting_board"] then
minetest.register_craft({
type = "shapeless",
output = "moretrees:coconut_milk",
recipe = {
"moretrees:coconut",
"vessels:drinking_glass",
"group:food_cutting_board",
},
replacements = {
{ "moretrees:coconut", "moretrees:raw_coconut" },
{ "group:food_cutting_board", "farming:cutting_board" },
}
})
end
minetest.register_craft({
type = "shapeless",
output = "moretrees:date_nut_snack",

View File

@ -11,7 +11,7 @@
-- © 2016, Rogier <rogier777@gmail.com>
local S = moretrees.intllib
local S = minetest.get_translator("moretrees")
-- Some constants
@ -44,11 +44,15 @@ for k,v in pairs(trunk.tiles) do
end
ftrunk.drop = "moretrees:date_palm_trunk"
ftrunk.after_destruct = function(pos, oldnode)
local dates = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, {"group:moretrees_dates"})
local dates = minetest.find_nodes_in_area(
{x=pos.x-2, y=pos.y, z=pos.z-2},
{x=pos.x+2, y=pos.y, z=pos.z+2},
{"group:moretrees_dates"}
)
for _,datespos in pairs(dates) do
-- minetest.dig_node(datespos) does not cause nearby dates to be dropped :-( ...
local items = minetest.get_node_drops(minetest.get_node(datespos).name)
minetest.swap_node(datespos, biome_lib.air)
minetest.swap_node(datespos, {name = "air"})
for _, itemname in pairs(items) do
minetest.add_item(datespos, itemname)
end
@ -79,7 +83,10 @@ local date_regrow_abm_spec = {
interval = moretrees.dates_flower_interval,
chance = moretrees.dates_flower_chance,
action = function(pos, node, active_object_count, active_object_count_wider)
local dates = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, "group:moretrees_dates")
local dates = minetest.find_nodes_in_area(
{x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2},
"group:moretrees_dates"
)
-- New blossom interval increases exponentially with number of dates already hanging
-- In addition: if more dates are hanging, the chance of picking an empty spot decreases as well...
@ -120,8 +127,11 @@ minetest.register_abm({
type = "m"
minetest.swap_node(pos, {name="moretrees:date_palm_mfruit_trunk"})
end
local dates1 = minetest.find_nodes_in_area({x=pos.x-1, y=pos.y, z=pos.z-1}, {x=pos.x+1, y=pos.y, z=pos.z+1}, "air")
local genpos
local dates1 = minetest.find_nodes_in_area(
{x=pos.x-1, y=pos.y, z=pos.z-1},
{x=pos.x+1, y=pos.y, z=pos.z+1},
"air"
)
for _,genpos in pairs(dates1) do
if math.random(100) <= 20 then
if type == "m" then
@ -131,7 +141,11 @@ minetest.register_abm({
end
end
end
local dates2 = minetest.find_nodes_in_area({x=pos.x-2, y=pos.y, z=pos.z-2}, {x=pos.x+2, y=pos.y, z=pos.z+2}, "air")
local dates2 = minetest.find_nodes_in_area(
{x=pos.x-2, y=pos.y, z=pos.z-2},
{x=pos.x+2, y=pos.y, z=pos.z+2},
"air"
)
for _,genpos in pairs(dates2) do
if math.random(100) <= 5 then
if type == "m" then
@ -195,7 +209,7 @@ local function find_fruit_trunks_near(ftpos, sect)
local r = moretrees.dates_pollination_distance + 2 * math.sqrt(2)
local sect_hr = math.floor(r / 3 + 0.9999)
local sect_vr = math.floor(r / 2 + 0.9999)
local t0us = core.get_us_time()
local t0us = minetest.get_us_time()
local t0s = os.time()
-- Compute elapsed time since last search.
@ -217,7 +231,8 @@ local function find_fruit_trunks_near(ftpos, sect)
-- Skip the search if it is consuming too much CPU time
if sect_search_stats.count > 0 and moretrees.dates_blossom_search_iload > 0
and sect_search_stats.sum / sect_search_stats.count > moretrees.dates_blossom_search_time_treshold
and t0us - sect_search_stats.last_us < moretrees.dates_blossom_search_iload * (sect_search_stats.sum / sect_search_stats.count) then
and t0us - sect_search_stats.last_us < moretrees.dates_blossom_search_iload
* (sect_search_stats.sum / sect_search_stats.count) then
sect_search_stats.skip = sect_search_stats.skip + 1
return nil
end
@ -266,7 +281,7 @@ local function find_fruit_trunks_near(ftpos, sect)
end
-- Update search statistics
local t1us = core.get_us_time()
local t1us = minetest.get_us_time()
if t1us < t0us then
-- Wraparound. Assume the search lasted less than 2^32 microseconds (~71 min)
-- (so no need to apply another correction)
@ -306,7 +321,7 @@ minetest.register_chatcommand("dates_stats", {
params = "|chat|log|reset",
privs = { server = true },
func = function(name, param)
param = string.lower(string.trim(param))
param = string.lower(param:gsub("%s+", ""))
if param == "" or param == "chat" then
return dates_print_search_stats(false)
elseif param == "log" then
@ -470,7 +485,10 @@ local function find_male_blossom_with_ftrunk(fbpos,ftpos)
end
-- Else do a new search
if not mpalms.sect[sect_old] then
mpalms.sect[sect_old], fpalms_list, all_mpalms_list = find_fruit_trunks_near(ftpos, {x = (sect_old + 4) % 3 - 1, z = (sect_old + 4) / 3 - 1})
mpalms.sect[sect_old], fpalms_list, all_mpalms_list = find_fruit_trunks_near(
ftpos,
{x = (sect_old + 4) % 3 - 1, z = (sect_old + 4) / 3 - 1}
)
cache_changed = true
if sect_old == 0 then
-- Save the results if it is sector 0
@ -526,7 +544,6 @@ end
local dates_growfn = function(pos, elapsed)
local node = minetest.get_node(pos)
local delay = moretrees.dates_grow_interval
local r = moretrees.dates_pollination_distance
local action
if not node then
return
@ -537,7 +554,7 @@ local dates_growfn = function(pos, elapsed)
elseif string.find(node.name, "moretrees:dates_m") then
minetest.swap_node(pos, {name="moretrees:dates_n"})
else
minetest.swap_node(pos, biome_lib.air)
minetest.swap_node(pos, {name = "air"})
end
return
elseif node.name == "moretrees:dates_f0" and math.random(100) <= 100 * dates_regrow_prob then
@ -577,7 +594,7 @@ local dates_growfn = function(pos, elapsed)
elseif string.match(node.name, "n$") then
-- Remove stems.
if math.random(stems_drop_ichance) == 1 then
minetest.swap_node(pos, biome_lib.air)
minetest.swap_node(pos, {name = "air"})
return "stemdrop"
end
action = "nostemdrop"
@ -594,15 +611,16 @@ local dates_growfn = function(pos, elapsed)
return action
end
--[[
-- Alternate growth function for dates.
-- It calls the primary growth function, but also measures CPU time consumed.
-- Use this function to analyze date growing performance.
local stat = {}
stat.count = 0
local dates_growfn_profiling = function(pos, elapsed)
local t0 = core.get_us_time()
local t0 = minetest.get_us_time()
local action = dates_growfn(pos, elapsed)
local t1 = core.get_us_time()
local t1 = minetest.get_us_time()
if t1 < t0 then
t1 = t1 + 2^32
end
@ -656,6 +674,7 @@ local dates_growfn_profiling = function(pos, elapsed)
"TOTAL", count, sum/count))
end
end
--]]
-- Register dates
@ -704,10 +723,11 @@ 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 = default.node_sound_defaults(),
sounds = xcompat.sounds.node_sound_default(),
drop = dropfn,
selection_box = {
type = "fixed",

View File

@ -1,131 +0,0 @@
-- 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
-- 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
-- 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

View File

@ -1,8 +0,0 @@
default
biome_lib
vessels
stairs?
moreblocks?
intllib?
farming?

View File

@ -1 +0,0 @@
This mod adds a whole bunch of new types of trees to the game

294
init.lua
View File

@ -15,26 +15,71 @@
moretrees = {}
local S = minetest.get_translator("moretrees")
if minetest.get_modpath("default") then
minetest.override_item("default:sapling", {
description = S("Sapling")
})
minetest.override_item("default:tree", {
description = S("Tree")
})
minetest.override_item("default:wood", {
description = S("Wooden Planks")
})
minetest.override_item("default:leaves", {
description = S("Leaves")
})
minetest.override_item("default:fence_wood", {
description = S("Wooden Fence")
})
minetest.override_item("default:fence_rail_wood", {
description = S("Wooden Fence Rail")
})
end
if minetest.get_modpath("doors") then
minetest.override_item("doors:gate_wood_closed", {
description = S("Wooden Fence Gate")
})
minetest.override_item("doors:gate_wood_open", {
description = S("Wooden Fence Gate")
})
end
-- Read the default config file (and if necessary, copy it to the world folder).
local worldpath=minetest.get_worldpath()
local modpath=minetest.get_modpath("moretrees")
dofile(modpath.."/default_settings.txt")
dofile(modpath.."/settings.lua")
if io.open(worldpath.."/moretrees_settings.txt","r") then
io.close()
dofile(worldpath.."/moretrees_settings.txt")
end
-- Boilerplate to support localized strings if intllib mod is installed.
local S
if minetest.get_modpath("intllib") then
S = intllib.Getter()
else
S = function(s) return s end
end
moretrees.intllib = S
-- 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
@ -48,10 +93,10 @@ end
-- tables, load other files
moretrees.cutting_tools = {
"default:axe_bronze",
"default:axe_diamond",
"default:axe_mese",
"default:axe_steel",
xcompat.materials.axe_steel,
xcompat.materials.axe_diamond,
xcompat.materials.axe_bronze,
"glooptest:axe_alatro",
"glooptest:axe_arol",
"moreores:axe_mithril",
@ -68,111 +113,103 @@ dofile(modpath.."/saplings.lua")
dofile(modpath.."/crafts.lua")
-- tree spawning setup
moretrees.spawn_beech_object = moretrees.beech_model
moretrees.spawn_apple_tree_object = moretrees.apple_tree_model
moretrees.spawn_oak_object = moretrees.oak_model
moretrees.spawn_sequoia_object = moretrees.sequoia_model
moretrees.spawn_palm_object = moretrees.palm_model
moretrees.spawn_date_palm_object = moretrees.date_palm_model
moretrees.spawn_cedar_object = moretrees.cedar_model
moretrees.spawn_rubber_tree_object = moretrees.rubber_tree_model
moretrees.spawn_willow_object = moretrees.willow_model
moretrees.spawn_birch_object = "moretrees.grow_birch"
moretrees.spawn_spruce_object = "moretrees.grow_spruce"
moretrees.spawn_jungletree_object = "moretrees.grow_jungletree"
moretrees.spawn_fir_object = "moretrees.grow_fir"
moretrees.spawn_fir_snow_object = "moretrees.grow_fir_snow"
moretrees.spawn_poplar_object = moretrees.poplar_model
moretrees.spawn_poplar_small_object = moretrees.poplar_small_model
if moretrees.spawn_saplings then
moretrees.spawn_beech_object = "moretrees:beech_sapling_ongen"
moretrees.spawn_apple_tree_object = "moretrees:apple_tree_sapling_ongen"
moretrees.spawn_oak_object = "moretrees:oak_sapling_ongen"
moretrees.spawn_sequoia_object = "moretrees:sequoia_sapling_ongen"
moretrees.spawn_palm_object = "moretrees:palm_sapling_ongen"
moretrees.spawn_date_palm_object = "moretrees:date_palm_sapling_ongen"
moretrees.spawn_cedar_object = "moretrees:cedar_sapling_ongen"
moretrees.spawn_rubber_tree_object = "moretrees:rubber_tree_sapling_ongen"
moretrees.spawn_willow_object = "moretrees:willow_sapling_ongen"
moretrees.spawn_birch_object = "moretrees:birch_sapling_ongen"
moretrees.spawn_spruce_object = "moretrees:spruce_sapling_ongen"
moretrees.spawn_jungletree_object = "moretrees:jungletree_sapling_ongen"
moretrees.spawn_fir_object = "moretrees:fir_sapling_ongen"
moretrees.spawn_fir_snow_object = "snow:sapling_pine"
moretrees.spawn_poplar_object = "moretrees:poplar_sapling_ongen"
moretrees.spawn_poplar_small_object = "moretrees:poplar_small_sapling_ongen"
else
moretrees.spawn_beech_object = moretrees.beech_model
moretrees.spawn_apple_tree_object = moretrees.apple_tree_model
moretrees.spawn_oak_object = moretrees.oak_model
moretrees.spawn_sequoia_object = moretrees.sequoia_model
moretrees.spawn_palm_object = moretrees.palm_model
moretrees.spawn_date_palm_object = moretrees.date_palm_model
moretrees.spawn_cedar_object = moretrees.cedar_model
moretrees.spawn_rubber_tree_object = moretrees.rubber_tree_model
moretrees.spawn_willow_object = moretrees.willow_model
moretrees.spawn_birch_object = "moretrees.grow_birch"
moretrees.spawn_spruce_object = "moretrees.grow_spruce"
moretrees.spawn_jungletree_object = "moretrees.grow_jungletree"
moretrees.spawn_fir_object = "moretrees.grow_fir"
moretrees.spawn_fir_snow_object = "moretrees.grow_fir_snow"
moretrees.spawn_poplar_object = moretrees.poplar_model
moretrees.spawn_poplar_small_object = moretrees.poplar_small_model
local deco_ids = {}
function translate_biome_defs(def, treename, index)
if not index then index = 1 end
local deco_def = {
name = treename .. "_" .. index,
deco_type = "simple",
place_on = def.place_on,
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,
decoration = "moretrees:"..treename.."_sapling_ongen"
}
deco_ids[#deco_ids+1] = treename .. ("_" .. index or "_1")
return deco_def
end
if moretrees.enable_beech then
biome_lib:register_generate_plant(moretrees.beech_biome, moretrees.spawn_beech_object)
minetest.register_decoration(translate_biome_defs(moretrees.beech_biome, "beech"))
minetest.register_decoration(translate_biome_defs(moretrees.apple_tree_biome, "apple_tree"))
minetest.register_decoration(translate_biome_defs(moretrees.oak_biome, "oak"))
minetest.register_decoration(translate_biome_defs(moretrees.sequoia_biome, "sequoia"))
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))
minetest.register_decoration(translate_biome_defs(moretrees.cedar_biome, "cedar"))
minetest.register_decoration(translate_biome_defs(moretrees.rubber_tree_biome, "rubber_tree"))
minetest.register_decoration(translate_biome_defs(moretrees.willow_biome, "willow"))
minetest.register_decoration(translate_biome_defs(moretrees.birch_biome, "birch"))
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
if moretrees.enable_apple_tree then
biome_lib:register_generate_plant(moretrees.apple_tree_biome, moretrees.spawn_apple_tree_object)
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))
if moretrees.enable_oak then
biome_lib:register_generate_plant(moretrees.oak_biome, moretrees.spawn_oak_object)
end
if moretrees.enable_sequoia then
biome_lib:register_generate_plant(moretrees.sequoia_biome, moretrees.spawn_sequoia_object)
end
if moretrees.enable_palm then
biome_lib:register_generate_plant(moretrees.palm_biome, moretrees.spawn_palm_object)
end
if moretrees.enable_date_palm then
biome_lib:register_generate_plant(moretrees.date_palm_biome, moretrees.spawn_date_palm_object)
biome_lib:register_generate_plant(moretrees.date_palm_biome_2, moretrees.spawn_date_palm_object)
end
if moretrees.enable_cedar then
biome_lib:register_generate_plant(moretrees.cedar_biome, moretrees.spawn_cedar_object)
end
if moretrees.enable_rubber_tree then
biome_lib:register_generate_plant(moretrees.rubber_tree_biome, moretrees.spawn_rubber_tree_object)
end
if moretrees.enable_willow then
biome_lib:register_generate_plant(moretrees.willow_biome, moretrees.spawn_willow_object)
end
if moretrees.enable_birch then
biome_lib:register_generate_plant(moretrees.birch_biome, moretrees.spawn_birch_object)
end
if moretrees.enable_spruce then
biome_lib:register_generate_plant(moretrees.spruce_biome, moretrees.spawn_spruce_object)
end
if moretrees.enable_jungle_tree then
biome_lib:register_generate_plant(moretrees.jungletree_biome, moretrees.spawn_jungletree_object)
end
if moretrees.enable_fir then
biome_lib:register_generate_plant(moretrees.fir_biome, moretrees.spawn_fir_object)
if minetest.get_modpath("snow") then
biome_lib:register_generate_plant(moretrees.fir_biome_snow, moretrees.spawn_fir_snow_object)
--[[
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
end
minetest.set_gen_notify("decoration", deco_ids)
end)
if moretrees.enable_poplar then
biome_lib:register_generate_plant(moretrees.poplar_biome, moretrees.spawn_poplar_object)
biome_lib:register_generate_plant(moretrees.poplar_biome_2, moretrees.spawn_poplar_object)
biome_lib:register_generate_plant(moretrees.poplar_biome_3, moretrees.spawn_poplar_object)
biome_lib:register_generate_plant(moretrees.poplar_small_biome, moretrees.spawn_poplar_small_object)
biome_lib:register_generate_plant(moretrees.poplar_small_biome_2, moretrees.spawn_poplar_small_object)
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)
-- Code to spawn a birch tree
function moretrees.grow_birch(pos)
minetest.swap_node(pos, biome_lib.air)
minetest.swap_node(pos, {name = "air"})
if math.random(1,2) == 1 then
minetest.spawn_tree(pos, moretrees.birch_model1)
else
@ -183,7 +220,7 @@ end
-- Code to spawn a spruce tree
function moretrees.grow_spruce(pos)
minetest.swap_node(pos, biome_lib.air)
minetest.swap_node(pos, {name = "air"})
if math.random(1,2) == 1 then
minetest.spawn_tree(pos, moretrees.spruce_model1)
else
@ -198,6 +235,7 @@ moretrees.jt_rules_a1 = "FFF[&&-FBf[&&&Ff]^^^Ff][&&+FBFf[&&&FFf]^^^Ff][&&---FBFf
moretrees.jt_rules_b1 = "[-Ff&f][+Ff&f]B"
moretrees.jt_axiom2 = "FFFFFA"
-- luacheck: no max line length
moretrees.jt_rules_a2 = "FFFFF[&&-FFFBF[&&&FFff]^^^FFf][&&+FFFBFF[&&&FFff]^^^FFf][&&---FFFBFF[&&&FFff]^^^FFf][&&+++FFFBFF[&&&FFff]^^^FFf]FF/A"
moretrees.jt_rules_b2 = "[-FFf&ff][+FFf&ff]B"
@ -237,10 +275,13 @@ function moretrees.grow_jungletree(pos)
moretrees.jungletree_model.rules_b = moretrees.jt_rules_b2
end
minetest.swap_node(pos, biome_lib.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}, "default:leaves")
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
)
for leaf in ipairs(leaves) do
minetest.swap_node(leaves[leaf], biome_lib.air)
minetest.swap_node(leaves[leaf], {name = "air"})
end
minetest.spawn_tree(pos, moretrees.jungletree_model)
end
@ -264,10 +305,14 @@ function moretrees.grow_fir(pos)
moretrees.fir_model.iterations = 7
moretrees.fir_model.random_level = 5
minetest.swap_node(pos, biome_lib.air)
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}, "default:leaves")
minetest.swap_node(pos, {name = "air"})
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
)
for leaf in ipairs(leaves) do
minetest.swap_node(leaves[leaf], biome_lib.air)
minetest.swap_node(leaves[leaf], {name = "air"})
end
minetest.spawn_tree(pos,moretrees.fir_model)
end
@ -291,12 +336,29 @@ function moretrees.grow_fir_snow(pos)
moretrees.fir_model.iterations = 2
moretrees.fir_model.random_level = 2
minetest.swap_node(pos, biome_lib.air)
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}, "default:leaves")
minetest.swap_node(pos, {name = "air"})
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
)
for leaf in ipairs(leaves) do
minetest.swap_node(leaves[leaf], biome_lib.air)
minetest.swap_node(leaves[leaf], {name = "air"})
end
minetest.spawn_tree(pos,moretrees.fir_model)
end
print(S("[Moretrees] Loaded (2013-02-11)"))
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")

View File

@ -1,73 +0,0 @@
# Translation by Xanthin
### crafts.lua ###
Coconut Milk = Kokosnussmilch
Raw Coconut = Kokosnussfleisch
Acorn Muffin batter = Eichelmuffinteig
Acorn Muffin = Eichelmuffin
Roasted Spruce Cone Nuts = Geroestete Fichtenzapfen
Roasted Pine Cone Nuts = Geroestete Kiefernzapfen
Roasted Fir Cone Nuts = Geroestete Tannenzapfen
### node_defs.lua ###
Beech Tree Trunk = Buchenstamm
Apple Tree Trunk = Apfelbaumstamm
Oak Tree Trunk = Eichenstamm
Giant Sequoia Trunk = Riesenmammutbaumstamm
Birch Tree Trunk = Birkenstamm
Palm Tree Trunk = Palmenstamm
Spruce Tree Trunk = Fichtenstamm
Pine Tree Trunk = Kiefernstamm
Willow Tree Trunk = Weidenstamm
Rubber Tree Trunk = Gummibaumstamm
Jungle Tree Trunk = Tropenbaumstamm
Douglas Fir Trunk = Douglasienstamm
Beech Tree Planks = Buchebretter
Apple Tree Planks = Apfelbaumbretter
Oak Tree Planks = Eichenbretter
Giant Sequoia Planks = Riesenmammutbaumbretter
Birch Tree Planks = Birkebretter
Palm Tree Planks = Palmenbretter
Spruce Tree Planks = Fichtenbretter
Pine Tree Planks = Kiefernbretter
Willow Tree Planks = Weidenbretter
Rubber Tree Planks = Gummibaumbretter
Jungle Tree Planks = Tropenholzbretter
Douglas Fir Planks = Douglasienbretter
Beech Tree Sapling = Buchesetzling
Apple Tree Sapling = Apfelbaumsetzling
Oak Tree Sapling = Eichensetzling
Giant Sequoia Sapling = Riesenmammutbaumsetzling
Birch Tree Sapling = Birkensetzling
Palm Tree Sapling = Palmensetzling
Spruce Tree Sapling = Fichtensetzling
Pine Tree Sapling = Kiefernsetzling
Willow Tree Sapling = Weidensetzling
Rubber Tree Sapling = Gummibaumsetzling
Jungle Tree Sapling = Tropenbaumsetzling
Douglas Fir Sapling = Douglasiensetzling
Beech Tree Leaves = Buchenlaub
Apple Tree Leaves = Apfelbaumlaub
Oak Tree Leaves = Eichenlaub
Giant Sequoia Leaves = Riesenmammutbaumlaub
Birch Tree Leaves = Birkenlaub
Palm Tree Leaves = Palmenlaub
Spruce Tree Leaves = Fichtennadeln
Pine Tree Leaves = Kiefernnadeln
Willow Tree Leaves = Weidenlaub
Rubber Tree Leaves = Gummibaumlaub
Jungle Tree Leaves = Tropenbaumlaub
Douglas Fir Leaves = Douglasiennadeln
Acorn = Eichel
Coconut = Kokosnuss
Spruce Cone = Fichtenzapfen
Pine Cone = Kiefernzapfen
Fir Cone = Tannenzapfen
Jungle Sapling = Tropenbaumsetzling
Jungle Tree Leaves (Yellow) = Tropenbaumlaub (gelb)
Jungle Tree Leaves (Red) = Tropenbaumlaub (rot)
Douglas Fir Leaves (Bright) = Douglasiennadeln (breit)
Rubber Tree Trunk (Empty) = Gummibaumstamm (leer)
[Moretrees] Loaded (2013-02-11) = [Moretrees] geladen (2013-02-11)

View File

@ -1,100 +0,0 @@
# Traducido por Carlos Barraza
### crafts.lua ###
Coconut Milk = Leche de Coco
Raw Coconut = Coco crudo
Acorn Muffin batter = Masa de Mollete de Bellota
Acorn Muffin = Mollete de Bellota
Roasted Spruce Cone Nuts = Cono de Picea Tostado
Roasted Pine Cone Nuts = Cono de Pino Tostado
Roasted Fir Cone Nuts = Cono de Abeto Tostado
Roasted Cedar Cone Nuts = Coco de Alamo Tostado
Date = Datilera
Date & nut snack = Datilera y Nueces
Date-nut cake batter = Pasta de torta de Datilera
Date-nut cake = Pastel de Datilera
Date-nut energy bar = Barra energetica de Datilera
### date_palm.lua ###
Dates = Datilera
Date Stem = Tallo de Datilera
Date Flowers = Flores de Datilera
### node_defs.lua ###
Beech Tree Trunk = Tronco de Arbol de Haya
Apple Tree Trunk = Tronco de Arbol de Manzana
Oak Tree Trunk = Tronco de Arbol de Roble
Giant Sequoia Trunk = Tronco de Sequoia Gigante
Birch Tree Trunk = Tronco de Arbol de Abedul
Palm Tree Trunk = Tronco de Palmera
Spruce Tree Trunk = Tronco de Arbol de Abeto
Willow Tree Trunk = Tronco de Arbol de Sauce
Rubber Tree Trunk = Tronco de Arbol de Arbol de Goma
Jungle Tree = Tronco de Arbol de Arbol de la Selva
Douglas Fir Trunk = Tronco de Arbol de Abeto de Douglas
Cedar Tree Trunk = Tronco de Arbol de Cedro
Date Palm Tree Trunk = Tronco de Palmera Datilera
Acacia Tree Trunk = Tronco de Arbol de Acacia
Poplar Tree Trunk = Tronco de Arbol de Alamo
Beech Tree Planks = Madera de Arbol de Haya
Apple Tree Planks = Madera de Arbol de Manzana
Oak Tree Planks = Madera de Arbol de Roble
Giant Sequoia Planks = Madera de Sequoia Gigante
Birch Tree Planks = Madera de Arbol de Abedul
Palm Tree Planks = Madera de Palmera
Spruce Tree Planks = Madera de Arbol de Abeto
Willow Tree Planks = Madera de Arbol de Sauce
Rubber Tree Planks = Madera de Arbol de Arbol de Goma
Jungle Planks = Madera de Arbol de Arbol de la Selva
Douglas Fir Planks = Madera de Arbol de Abeto de Douglas
Cedar Tree Planks = Madera de Arbol de Cedro
Date Palm Tree Planks = Madera de Palmera Datilera
Acacia Tree Planks = Madera de Arbol de Acacia
Poplar Tree Planks = Madera de Arbol de Alamo
Beech Tree Sapling = Retoño de Arbol de Haya
Apple Tree Sapling = Retoño de Arbol de Manzana
Oak Tree Sapling = Retoño de Arbol de Roble
Giant Sequoia Sapling = Retoño de Arbol de Sequoia Gigante
Birch Tree Sapling = Retoño de Arbol de Abedul
Palm Tree Sapling = Retoño de Palmera
Spruce Tree Sapling = Retoño de Arbol de Abeto
Willow Tree Sapling = Retoño de Arbol de Sauce
Rubber Tree Sapling = Retoño de Arbol de Arbol de Goma
Jungle Sapling = Retoño de Arbol de Arbol de la Selva
Douglas Fir Sapling = Retoño de Arbol de Abeto de Douglas
Cedar Tree Sapling = Retoño de Arbol de Cedro
Date Palm Tree Tree Sapling = Retoño de Palmera Datilera
Acacia Tree Sapling = Retoño de Arbol de Acacia
Poplar Tree Sapling = Retoño de Arbol de Alamo
Beech Tree Leaves = Hojas de Arbol de Haya
Apple Tree Leaves = Hojas de Arbol de Manzana
Oak Tree Leaves = Hojas de Arbol de Roble
Giant Sequoia Leaves = Hojas de Sequoia Gigante
Birch Tree Leaves = Hojas de Arbol de Abedul
Palm Tree Leaves = Hojas de Palmera
Spruce Tree Leaves = Hojas de Arbol de Abeto
Willow Tree Leaves = Hojas de Arbol de Sauce
Rubber Tree Leaves = Hojas de Arbol de Arbol de Goma
Jungle Leaves = Hojas de Arbol de Arbol de la Selva
Douglas Fir Leaves = Hojas de Arbol de Abeto de Douglas
Cedar Tree Leaves = Hojas de Arbol de Cedro
Date Palm Tree Tree Leaves = Hojas de Palmera Datilera
Acacia Tree Leaves = Hojas de Arbol de Acacia
Poplar Tree Leaves = Hojas de Arbol de Alamo
Acorn = Bellota
Coconut = Coco
Spruce Cone = Coco de Picea
Pine Cone = Coco de Pino
Fir Cone = Coco de Abeto
Cedar Cone = Coco de Alamo
Jungle Sapling = Retoño de Arbol de la Selva
Jungle Tree Leaves (Yellow) = Hojas de Arbol de la Selva (Amarilla)
Jungle Tree Leaves (Red) = Hojas de Arbol de la Selva (Roja)
Douglas Fir Leaves (Bright) = Hojas de Arbol de Abeto de Douglas (Brillante)
Rubber Tree Trunk (Empty) = Tronco de Arbol de Goma (Vacio)
[Moretrees] Loaded (2013-02-11) = [Masarboles] Cargado

View File

@ -1,74 +0,0 @@
# Traduction par Yoan31
#
### crafts.lua ###
Coconut Milk = Lait de Coco
Raw Coconut = Noix de Coco Crue
Acorn Muffin batter = Pate à Muffins au Gland
Acorn Muffin = Muffins au Gland
Roasted Spruce Cone Nuts = Noix de Cône de Sapin Roties
Roasted Pine Cone Nuts = Noix de Pomme de pin Roties
Roasted Fir Cone Nuts = Noix de Cône de Sapin Roties
### node_defs.lua ###
Beech Tree Trunk = Tronc d'Arbre de Hêtre
Apple Tree Trunk = Tronc d'Arbre de Pommier
Oak Tree Trunk = Tronc d'Arbre de chêne
Giant Sequoia Trunk = Tronc d'Arbre de Séquoia Géant
Birch Tree Trunk = Tronc d'Arbre de bouleau
Palm Tree Trunk = Tronc d'Arbre de Palmier
Spruce Tree Trunk = Tronc d'Arbre d'Epicéa
Pine Tree Trunk = Tronc d'Arbre de Pin
Willow Tree Trunk = Tronc d'Arbre de Saule
Rubber Tree Trunk = Tronc d'Arbre a Caoutchouc
Jungle Tree Trunk = Tronc d'Arbre de la Jungle
Douglas Fir Trunk = Tronc de Sapin de Douglas
Beech Tree Planks = Planches de Hêtre
Apple Tree Planks = Planches de Pommier
Oak Tree Planks = Planches de Chêne
Giant Sequoia Planks = Planches de d'Arbre de Séquoia Géant
Birch Tree Planks = Planches d'Arbre de bouleau
Palm Tree Planks = Planches d'Arbre de Palmier
Spruce Tree Planks = Planches d'Arbre d'Epicéa
Pine Tree Planks = Planches d'Arbre de Pin
Willow Tree Planks = Planches d'Arbre de Saule
Rubber Tree Planks = Planches d'Arbre a Caoutchouc
Jungle Tree Planks = Planches d'Arbre de la Jungle
Douglas Fir Planks = Planches de Sapin de Douglas
Beech Tree Sapling = Pousse d'Arbre de Hêtre
Apple Tree Sapling = Pousse d'Arbre de Pommier
Oak Tree Sapling = Pousse d'Arbre de chêne
Giant Sequoia Sapling = Pousse d'Arbre de Séquoia Géant
Birch Tree Sapling = Pousse d'Arbre de bouleau
Palm Tree Sapling = Pousse d'Arbre de Palmier
Spruce Tree Sapling = Pousse d'Arbre d'Epicéa
Pine Tree Sapling = Pousse d'Arbre de Pin
Willow Tree Sapling = Pousse d'Arbre de Saule
Rubber Tree Sapling = Pousse d'Arbre a Caoutchouc
Jungle Tree Sapling = Pousse d'Arbre de la Jungle
Douglas Fir Sapling = Pousse de Sapin de Douglas
Beech Tree Leaves = Feuilles d'Arbre de Hêtre
Apple Tree Leaves = Feuilles d'Arbre de Pommier
Oak Tree Leaves = Feuilles d'Arbre de chêne
Giant Sequoia Leaves = Feuilles d'Arbre de Séquoia Géant
Birch Tree Leaves = Feuilles d'Arbre de bouleau
Palm Tree Leaves = Feuilles d'Arbre de Palmier
Spruce Tree Leaves = Feuilles d'Arbre d'Epicéa
Pine Tree Leaves = Feuilles d'Arbre de Pin
Willow Tree Leaves = Feuilles d'Arbre de Saule
Rubber Tree Leaves = Feuilles d'Arbre a Caoutchouc
Jungle Tree Leaves = Feuilles d'Arbre de la Jungle
Douglas Fir Leaves = Feuilles de Sapin de Douglas
Acorn = Gland
Coconut = Noix de Coco
Spruce Cone = Cône de Sapin
Pine Cone = Pomme de Pin
Fir Cone = Pomme de Sapin
Jungle Sapling = Pousse d'Arbre de la Jungle
Jungle Tree Leaves (Yellow) = Feuille d'Arbre de la Jungle (Jaune)
Jungle Tree Leaves (Red) = Feuille d'Arbre de la Jungle (Rouge)
Douglas Fir Leaves (Bright) = Feuille de Sapin de Douglas (Brillant)
Rubber Tree Trunk (Empty) = Tronc d'Arbre en Caoutchouc (Vide)
[Moretrees] Loaded (2013-02-11) =

220
locale/moretrees.de.tr Normal file
View File

@ -0,0 +1,220 @@
# textdomain: moretrees
# Translation by Xanthin and heavygale
### cocos_palm.lua ###
Coconut=Kokosnuss
Coconut Flower=Kokosnussblüte
### crafts.lua ###
Acorn Muffin=Eichelmuffin
Acorn Muffin batter=Eichelmuffinteig
Coconut Milk=Kokosnussmilch
Date=Dattel
Date & nut snack=Dattel & Nuss-Snack
Date-nut cake=Dattelnusskuchen
Date-nut cake batter=Dattelnuss-Kuchenteig
Date-nut energy bar=Dattelnuss-Energieriegel
Raw Coconut=Kokosnussfleisch
Roasted Cedar Cone Nuts=Geröstete Zedernzapfenkerne
Roasted Fir Cone Nuts=Geroestete Tannenzapfenkerne
Roasted Spruce Cone Nuts=Geroestete Fichtenzapfenkerne
### date_palm.lua ###
Date Flowers=Dattelblüten
Date Stem=Dattelstamm
Dates=Datteln
### node_defs.lua ###
@1 (fast growth)=@1 (schnelles Wachstum)
Acorn=Eichel
Apple Tree=Apfelbaum
Apple Tree Fence=Apfelbaum-Zaun
Apple Tree Fence Gate=Apfelbaum-Tor
Apple Tree Fence Rail=Apfelbaum-Schiene
Apple Tree Leaves=Apfelbaumlaub
Apple Tree Planks=Apfelbaumbretter
Apple Tree Planks Slab=Apfelbaumplatte
Apple Tree Planks Stair=Apfelbaumstufe
Apple Tree Sapling=Apfelbaumsetzling
Apple Tree Trunk=Apfelbaumstamm
Apple Tree Trunk Slab=Apfelbaumstammplatte
Apple Tree Trunk Stair=Apfelbaumstammstufe
Beech Tree=Buche
Beech Tree Fence=Buchenholz-Zaun
Beech Tree Fence Gate=Buchenholz-Tor
Beech Tree Fence Rail=Buchenholz-Schiene
Beech Tree Leaves=Buchenlaub
Beech Tree Planks=Buchenholzbretter
Beech Tree Planks Slab=Buchenholzplatte
Beech Tree Planks Stair=Buchenholzstufe
Beech Tree Sapling=Buchesetzling
Beech Tree Trunk=Buchenstamm
Beech Tree Trunk Slab=Buchenstammplatte
Beech Tree Trunk Stair=Buchenstammstufe
Birch Tree=Birke
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 Slab=Birkenholzplatte
Birch Tree Planks Stair=Birkeholzstufe
Birch Tree Sapling=Birkensetzling
Birch Tree Trunk=Birkenstamm
Birch Tree Trunk Slab=Birkenstammplatte
Birch Tree Trunk Stair=Birkenstammstufe
Cedar Cone=Zedernzapfen
Cedar Tree=Zeder
Cedar Tree Fence=Zedernholz-Zaun
Cedar Tree Fence Gate=Zedernholz-Tor
Cedar Tree Fence Rail=Zedernholz-Schiene
Cedar Tree Leaves=Zederblätter
Cedar Tree Planks=Zedernholzbretter
Cedar Tree Planks Slab=Zedernholzplatte
Cedar Tree Planks Stair=Zedernholzstufe
Cedar Tree Sapling=Zedersetzling
Cedar Tree Trunk=Zederstamm
Cedar Tree Trunk Slab=Zederstammplatte
Cedar Tree Trunk Stair=Zederstamm Stufe
Date Palm Tree=Dattelpalme
Date Palm Tree Fence=Dattelpalmen-Zaun
Date Palm Tree Fence Gate=Dattelpalmen-Tor
Date Palm Tree Fence Rail=Dattelpalmen-Schiene
Date Palm Tree Leaves=Dattelpalmenblätter
Date Palm Tree Planks=Dattelpalmenbretter
Date Palm Tree Planks Slab=Dattelpalmenplatte
Date Palm Tree Planks Stair=Dattelpalmenstufe
Date Palm Tree Sapling=Dattelpalmensetzling
Date Palm Tree Trunk=Dattelpalmenstamm
Date Palm Tree Trunk Slab=Dattelpalmenstammplatte
Date Palm Tree Trunk Stair=Dattelpalmenstammstufe
Douglas Fir=Douglasie
Douglas Fir Fence=Douglasien-Zaun
Douglas Fir Fence Gate=Douglasien-Tor
Douglas Fir Fence Rail=Douglasien-Schiene
Douglas Fir Leaves=Douglasiennadeln
Douglas Fir Leaves (Bright)=Douglasiennadeln (breit)
Douglas Fir Planks=Douglasienbretter
Douglas Fir Planks Slab=Douglasienplatte
Douglas Fir Planks Stair=Douglasienstufe
Douglas Fir Sapling=Douglasiensetzling
Douglas Fir Trunk=Douglasienstamm
Douglas Fir Trunk Slab=Douglasienstammplatte
Douglas Fir Trunk Stair=Douglasienstammstufe
Fir Cone=Tannenzapfen
Giant Sequoia=Riesenmammutbaum
Giant Sequoia Fence=Riesenmammutbaum-Zaun
Giant Sequoia Fence Gate=Riesenmammutbaum-Tor
Giant Sequoia Fence Rail=Riesenmammutbaum-Schiene
Giant Sequoia Leaves=Riesenmammutbaumlaub
Giant Sequoia Planks=Riesenmammutbaumbretter
Giant Sequoia Planks Slab=Riesenmammutbaumplatte
Giant Sequoia Planks Stair=Riesenmammutbaumstufe
Giant Sequoia Sapling=Riesenmammutbaumsetzling
Giant Sequoia Trunk=Riesenmammutbaumstamm
Giant Sequoia Trunk Slab=Riesenmammutbaumstammplatte
Giant Sequoia Trunk Stair=Riesenmammutbaumstammstufe
Jungle Tree=Tropenbaum
Jungle Tree Fence=Tropenbaum-Zaun
Jungle Tree Fence Gate=Tropenbaum-Tor
Jungle Tree Fence Rail=Tropenbaum-Schiene
Jungle Tree Leaves=Tropenbaumlaub
Jungle Tree Leaves (@1)=Tropenbaumlaub (@1)
Jungle Tree Planks=Tropenholzbretter
Jungle Tree Planks Slab=Tropenholzplatte
Jungle Tree Planks Stair=Tropenholzstufe
Jungle Tree Sapling=Tropenbaumsetzling
Jungle Tree Trunk=Tropenbaumstamm
Jungle Tree Trunk Slab=Tropenbaumstammplatte
Jungle Tree Trunk Stair=Tropenbaumstammstufe
Oak Tree=Eiche
Oak Tree Fence=Eichenholz-Zaun
Oak Tree Fence Gate=Eichenholz-Tor
Oak Tree Fence Rail=Eichenholz-Schiene
Oak Tree Leaves=Eichenlaub
Oak Tree Planks=Eichenbretter
Oak Tree Planks Slab=Eichenholzplatte
Oak Tree Planks Stair=Eichenholzstufe
Oak Tree Sapling=Eichensetzling
Oak Tree Trunk=Eichenstamm
Oak Tree Trunk Slab=Eichenstammplatte
Oak Tree Trunk Stair=Eichenstammstufe
Palm Tree=Palme
Palm Tree Fence=Plamenholz-Zaun
Palm Tree Fence Gate=Plamenholz-Tor
Palm Tree Fence Rail=Plamenholz-Schiene
Palm Tree Leaves=Palmenlaub
Palm Tree Planks=Palmenbretter
Palm Tree Planks Slab=Plamenholzplatte
Palm Tree Planks Stair=Plamenholzstufe
Palm Tree Sapling=Palmensetzling
Palm Tree Trunk=Palmenstamm
Palm Tree Trunk Slab=Palmenstammplatte
Palm Tree Trunk Stair=Palmenstammstufe
Poplar Tree=Pappel
Poplar Tree Fence=Pappelholz-Zaun
Poplar Tree Fence Gate=Pappelholz-Tor
Poplar Tree Fence Rail=Pappelholz-Schiene
Poplar Tree Leaves=Pappelblätter
Poplar Tree Planks=Pappelholzbretter
Poplar Tree Planks Slab=Pappelholzsplatte
Poplar Tree Planks Stair=Pappelholzstufe
Poplar Tree Sapling=Pappelsetzling
Poplar Tree Trunk=Pappelstamm
Poplar Tree Trunk Slab=Pappelstammplatte
Poplar Tree Trunk Stair=Pappelstammstufe
Red=rot
Rubber Tree=Gummibaum
Rubber Tree Fence=Gummibaum-Zaun
Rubber Tree Fence Gate=Gummibaum-Tor
Rubber Tree Fence Rail=Gummibaum-Schiene
Rubber Tree Leaves=Gummibaumlaub
Rubber Tree Planks=Gummibaumbretter
Rubber Tree Planks Slab=Gummibaumplatte
Rubber Tree Planks Stair=Gummibaumstufe
Rubber Tree Sapling=Gummibaumsetzling
Rubber Tree Trunk=Gummibaumstamm
Rubber Tree Trunk (Empty)=Gummibaumstamm (leer)
Rubber Tree Trunk Slab=Gummibaumstammplatte
Rubber Tree Trunk Stair=Gummibaumstammstufe
Small poplar Tree Sapling=Kleiner Pappelsetzling
Spruce Cone=Fichtenzapfen
Spruce Tree=Fichte
Spruce Tree Fence=Fichtenholz-Zaun
Spruce Tree Fence Gate=Fichtenholz-Zaun
Spruce Tree Fence Rail=Fichtenholz-Schiene
Spruce Tree Leaves=Fichtennadeln
Spruce Tree Planks=Fichtenbretter
Spruce Tree Planks Slab=Fichtenholzplatte
Spruce Tree Planks Stair=Fichtenholzstufe
Spruce Tree Sapling=Fichtensetzling
Spruce Tree Trunk=Fichtenstamm
Spruce Tree Trunk Slab=Fichtenstammplatte
Spruce Tree Trunk Stair=Fichtenstammstufe
Willow Tree=Weide
Willow Tree Fence=Weidenholz-Zaun
Willow Tree Fence Gate=Weidenholz-Tor
Willow Tree Fence Rail=Weidenholz-Schiene
Willow Tree Leaves=Weidenlaub
Willow Tree Planks=Weidenbretter
Willow Tree Planks Slab=Weidenholzplatte
Willow Tree Planks Stair=Weidenholzstufe
Willow Tree Sapling=Weidensetzling
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

220
locale/moretrees.es.tr Normal file
View File

@ -0,0 +1,220 @@
# textdomain: moretrees
# Translation by Carlos Barraza, improvements by David Leal.
### cocos_palm.lua ###
Coconut=Coco
Coconut Flower=Flor de Coco
### crafts.lua ###
Acorn Muffin=Mollete de Bellota
Acorn Muffin batter= Masa de Mollete de Bellota
Coconut Milk=Leche de Coco
Date=Datilera
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
Roasted Fir Cone Nuts=Cono de Abeto Tostado
Roasted Spruce Cone Nuts=Cono de Picea Tostado
### date_palm.lua ###
Date Flowers=Flores de Datilera
Date Stem=Tallo de Datilera
Dates=Datilera
### node_defs.lua ###
@1 (fast growth)=@1 (crecimiento rápido)
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
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
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
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 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
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
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 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
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
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

220
locale/moretrees.fr.tr Normal file
View File

@ -0,0 +1,220 @@
# textdomain: moretrees
# Translation by Yoan31 and Louis Royer
### cocos_palm.lua ###
Coconut=Noix de coco
Coconut Flower=Fleur de coco
### crafts.lua ###
Acorn Muffin=Muffins au gland
Acorn Muffin batter=Pate à muffins au Gland
Coconut Milk=Lait de coco
Date=Datte
Date & nut snack=Collation aux dattes et aux noix
Date-nut cake=Gâteau datte-noix
Date-nut cake batter=Pâte à gâteau datte-noix
Date-nut energy bar=Barre énergétique datte-noix
Raw Coconut=Noix de coco crue
Roasted Cedar Cone Nuts=Noix de pomme de pin roties
Roasted Fir Cone Nuts=Noix de cône de sapin roties
Roasted Spruce Cone Nuts=Noix de cône de sapin roties
### date_palm.lua ###
Date Flowers=Fleurs de datte
Date Stem=Tige de datte
Dates=Dattes
### node_defs.lua ###
@1 (fast growth)=@1 (croissance rapide)
Acorn=Gland
Apple Tree=Pommier
Apple Tree Fence=Barrière en bois de pommier
Apple Tree Fence Gate=Porte de clôture en bois de pommier
Apple Tree Fence Rail=Clôture en bois de pommier
Apple Tree Leaves=Feuilles de pommier
Apple Tree Planks=Planches de pommier
Apple Tree Planks Slab=Dalle en bois de pommier
Apple Tree Planks Stair=Escaliers en bois de pommier
Apple Tree Sapling=Pousse d'arbre de pommier
Apple Tree Trunk=Tronc d'arbre de pommier
Apple Tree Trunk Slab=Dalle en tronc de pommier
Apple Tree Trunk Stair=Escalier en tronc de pommier
Beech Tree=Hêtre
Beech Tree Fence=Barrière en bois de hêtre
Beech Tree Fence Gate=Porte de clôture en bois de hêtre
Beech Tree Fence Rail=Clôture en bois de hêtre
Beech Tree Leaves=Feuilles de hêtre
Beech Tree Planks=Planches de hêtre
Beech Tree Planks Slab=Dalle en bois de hêtre
Beech Tree Planks Stair=Escalier en bois de hêtre
Beech Tree Sapling=Pousse d'arbre de hêtre
Beech Tree Trunk=Tronc d'arbre de hêtre
Beech Tree Trunk Slab=Dalle en tronc de hêtre
Beech Tree Trunk Stair=Escalier en tronc de hêtre
Birch Tree=Bouleau
Birch Tree Fence=Barrière en bois de bouleau
Birch Tree Fence Gate=Porte de clôture en bois de bouleau
Birch Tree Fence Rail=Clôture en bois de bouleau
Birch Tree Leaves=Feuilles de bouleau
Birch Tree Planks=Planches d'arbre de bouleau
Birch Tree Planks Slab=Dalle en bois de bouleau
Birch Tree Planks Stair=Escalier en bois de bouleau
Birch Tree Sapling=Pousse d'arbre de bouleau
Birch Tree Trunk=Tronc d'arbre de bouleau
Birch Tree Trunk Slab=Dalle en tronc de bouleau
Birch Tree Trunk Stair=Escalier en tronc de bouleau
Cedar Cone=Pomme de pin
Cedar Tree=Pin
Cedar Tree Fence=Barrière en bois de pin
Cedar Tree Fence Gate=Porte de clôture en bois de pin
Cedar Tree Fence Rail=Clôture en bois de pin
Cedar Tree Leaves=Feuilles de pin
Cedar Tree Planks=Planches d'arbre de pin
Cedar Tree Planks Slab=Dalle en bois de pin
Cedar Tree Planks Stair=Escalier en bois de pin
Cedar Tree Sapling=Pousse d'arbre de pin
Cedar Tree Trunk=Tronc d'arbre de pin
Cedar Tree Trunk Slab=Dalle en tronc de pin
Cedar Tree Trunk Stair=Escalier en tronc de pin
Date Palm Tree=Dattier
Date Palm Tree Fence=Barrière en bois de dattier
Date Palm Tree Fence Gate=Porte de clôture en bois de dattier
Date Palm Tree Fence Rail=Clôture en bois de dattier
Date Palm Tree Leaves=Feuille de dattier
Date Palm Tree Planks=Planches de dattier
Date Palm Tree Planks Slab=Dalle en bois de dattier
Date Palm Tree Planks Stair=Escalier en bois de dattier
Date Palm Tree Sapling=Pousse de dattier
Date Palm Tree Trunk=Tronc de dattier
Date Palm Tree Trunk Slab=Dalle en tronc de dattier
Date Palm Tree Trunk Stair=Escalier en tronc de dattier
Douglas Fir=Sapin de Douglas
Douglas Fir Fence=Barrière en bois de sapin de Douglas
Douglas Fir Fence Gate=Porte de clôture en bois de sapin de Douglas
Douglas Fir Fence Rail=Clôture en bois de sapin de Douglas
Douglas Fir Leaves=Feuilles de sapin de Douglas
Douglas Fir Leaves (Bright)=Feuille de sapin de Douglas (brillant)
Douglas Fir Planks=Planches de sapin de Douglas
Douglas Fir Planks Slab=Dalle en bois de sapin de Douglas
Douglas Fir Planks Stair=Escalier en bois de sapin de Douglas
Douglas Fir Sapling=Pousse de sapin de Douglas
Douglas Fir Trunk=Tronc de sapin de Douglas
Douglas Fir Trunk Slab=Dalle en tronc de sapin de Douglas
Douglas Fir Trunk Stair=Escalier en tronc de sapin de Douglas
Fir Cone=Pomme de sapin
Giant Sequoia=Séquoia géant
Giant Sequoia Fence=Barrière en bois de séquoia géant
Giant Sequoia Fence Gate=Porte de clôture en bois de séquoia géant
Giant Sequoia Fence Rail=Clôture en bois de séquoia géant
Giant Sequoia Leaves=Feuilles de séquoia géant
Giant Sequoia Planks=Planches de séquoia géant
Giant Sequoia Planks Slab=Dalle en bois de séquoia géant
Giant Sequoia Planks Stair=Escalier en bois de séquoia géant
Giant Sequoia Sapling=Pousse de séquoia géant
Giant Sequoia Trunk=Tronc de séquoia géant
Giant Sequoia Trunk Slab=Dalle en tronc de séquoia géant
Giant Sequoia Trunk Stair=Escalier en tronc de séquoia géant
Jungle Tree=Arbre de la jungle
Jungle Tree Fence=Barrière en bois d'arbre de la jungle
Jungle Tree Fence Gate=Porte de clôture en bois d'arbre de la jungle
Jungle Tree Fence Rail=Clôture en bois d'arbre de la jungle
Jungle Tree Leaves=Feuilles d'arbre de la jungle
Jungle Tree Leaves (@1)=Feuilles d'arbre de la jungle (@1)
Jungle Tree Planks=Planches d'arbre de la jungle
Jungle Tree Planks Slab=Dalle en bois d'arbre de la jungle
Jungle Tree Planks Stair=Escalier en bois d'arbre de la jungle
Jungle Tree Sapling=Pousse d'arbre de la jungle
Jungle Tree Trunk=Tronc d'arbre de la jungle
Jungle Tree Trunk Slab=Dalle en tronc d'arbre de la jungle
Jungle Tree Trunk Stair=Escalier en tronc d'arbre de la jungle
Oak Tree=Chêne
Oak Tree Fence=Barrière en bois de chêne
Oak Tree Fence Gate=Porte de clôture en bois de chêne
Oak Tree Fence Rail=Clôture en bois de chêne
Oak Tree Leaves=Feuilles de chêne
Oak Tree Planks=Planches de chêne
Oak Tree Planks Slab=Dalle en bois de chêne
Oak Tree Planks Stair=Escalier en bois de chêne
Oak Tree Sapling=Pousse d'arbre de chêne
Oak Tree Trunk=Tronc d'arbre de chêne
Oak Tree Trunk Slab=Dalle en tronc de chêne
Oak Tree Trunk Stair=Escalier en tronc de chêne
Palm Tree=Palmier
Palm Tree Fence=Barrière en bois de palmier
Palm Tree Fence Gate=Porte de clôture en bois de palmier
Palm Tree Fence Rail=Clôture en bois de palmier
Palm Tree Leaves=Feuilles de palmier
Palm Tree Planks=Planches de palmier
Palm Tree Planks Slab=Dalle en bois de palmier
Palm Tree Planks Stair=Escalier en bois de palmier
Palm Tree Sapling=Pousse d'arbre de palmier
Palm Tree Trunk=Tronc d'arbre de palmier
Palm Tree Trunk Slab=Dalle en tronc de palmier
Palm Tree Trunk Stair=Escalier en tronc de palmier
Poplar Tree=Peuplier
Poplar Tree Fence=Barrière en bois de peuplier
Poplar Tree Fence Gate=Porte de clôture en bois de peuplier
Poplar Tree Fence Rail=Clôture en bois de peuplier
Poplar Tree Leaves=Feuilles de peuplier
Poplar Tree Planks=Plances de peuplier
Poplar Tree Planks Slab=Dalle en bois de peuplier
Poplar Tree Planks Stair=Escalier en bois de peuplier
Poplar Tree Sapling=Pousse de peuplier
Poplar Tree Trunk=Tronc de peuplier
Poplar Tree Trunk Slab=Dalle en tronc de peuplier
Poplar Tree Trunk Stair=Escalier en tronc de peuplier
Red=rouge
Rubber Tree=Arbre à caoutchouc
Rubber Tree Fence=Barrière en bois d'arbre à caoutchouc
Rubber Tree Fence Gate=Porte de clôture en bois d'arbre à caoutchouc
Rubber Tree Fence Rail=Clôture en bois d'arbre à caoutchouc
Rubber Tree Leaves=Feuilles d'arbre à caoutchouc
Rubber Tree Planks=Planches d'arbre à caoutchouc
Rubber Tree Planks Slab=Dalle en bois d'arbre à caoutchouc
Rubber Tree Planks Stair=Escalier en bois d'arbre à caoutchouc
Rubber Tree Sapling=Pousse d'arbre à caoutchouc
Rubber Tree Trunk=Tronc d'arbre a caoutchouc
Rubber Tree Trunk (Empty)=Tronc d'arbre à caoutchouc (vide)
Rubber Tree Trunk Slab=Dalle en tronc d'arbre à caoutchouc
Rubber Tree Trunk Stair=Escalier en tronc d'arbre à caoutchouc
Small poplar Tree Sapling=Pousse de petit peuplier
Spruce Cone=Cône de sapin
Spruce Tree=Épicéa
Spruce Tree Fence=Barrière en bois d'épicéa
Spruce Tree Fence Gate=Porte de clôture en bois d'épicéa
Spruce Tree Fence Rail=Clôture en bois d'épicéa
Spruce Tree Leaves=Feuilles d'épicéa
Spruce Tree Planks=Planches d'arbre d'épicéa
Spruce Tree Planks Slab=Dalle en bois d'épicéa
Spruce Tree Planks Stair=Escalier en bois d'épicéa
Spruce Tree Sapling=Pousse d'arbre d'épicéa
Spruce Tree Trunk=Tronc d'arbre d'épicéa
Spruce Tree Trunk Slab=Dalle en tronc d'épicéa
Spruce Tree Trunk Stair=Escalier en tronc d'épicéa
Willow Tree=Saule
Willow Tree Fence=Barrière en bois de saule
Willow Tree Fence Gate=Porte de clôture en bois de saule
Willow Tree Fence Rail=Clôture en bois de saule
Willow Tree Leaves=Feuilles de saule
Willow Tree Planks=Planches de saule
Willow Tree Planks Slab=Dalle en bois de saule
Willow Tree Planks Stair=Escalier en bois de saule
Willow Tree Sapling=Pousse de saule
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

219
locale/moretrees.ru.tr Normal file
View File

@ -0,0 +1,219 @@
# 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

@ -1,73 +1,219 @@
# Template
# textdomain: moretrees
### cocos_palm.lua ###
Coconut=
Coconut Flower=
### crafts.lua ###
Coconut Milk =
Raw Coconut =
Acorn Muffin batter =
Acorn Muffin =
Roasted Spruce Cone Nuts =
Roasted Pine Cone Nuts =
Roasted Fir Cone Nuts =
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 ###
Beech Tree Trunk =
Apple Tree Trunk =
Oak Tree Trunk =
Giant Sequoia Trunk =
Birch Tree Trunk =
Palm Tree Trunk =
Spruce Tree Trunk =
Pine Tree Trunk =
Willow Tree Trunk =
Rubber Tree Trunk =
Jungle Tree Trunk =
Douglas Fir Trunk =
Beech Tree Planks =
Apple Tree Planks =
Oak Tree Planks =
Giant Sequoia Planks =
Birch Tree Planks =
Palm Tree Planks =
Spruce Tree Planks =
Pine Tree Planks =
Willow Tree Planks =
Rubber Tree Planks =
Jungle Tree Planks =
Douglas Fir Planks =
Beech Tree Sapling =
Apple Tree Sapling =
Oak Tree Sapling =
Giant Sequoia Sapling =
Birch Tree Sapling =
Palm Tree Sapling =
Spruce Tree Sapling =
Pine Tree Sapling =
Willow Tree Sapling =
Rubber Tree Sapling =
Jungle Tree Sapling =
Douglas Fir Sapling =
Beech Tree Leaves =
Apple Tree Leaves =
Oak Tree Leaves =
Giant Sequoia Leaves =
Birch Tree Leaves =
Palm Tree Leaves =
Spruce Tree Leaves =
Pine Tree Leaves =
Willow Tree Leaves =
Rubber Tree Leaves =
Jungle Tree Leaves =
Douglas Fir Leaves =
Acorn =
Coconut =
Spruce Cone =
Pine Cone =
Fir Cone =
Jungle Sapling =
Jungle Tree Leaves (Yellow) =
Jungle Tree Leaves (Red) =
Douglas Fir Leaves (Bright) =
Rubber Tree Trunk (Empty) =
@1 (fast growth)=
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)=
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=
[Moretrees] Loaded (2013-02-11) =
# init.lua
Sapling=
Tree=
Wooden Planks=
Leaves=
Wooden Fence=
Wooden Fence Rail=
Wooden Fence Gate=

View File

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

View File

@ -1,28 +1,220 @@
local S = moretrees.intllib
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", "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"},
{"birch", "Birch Tree"},
{"palm", "Palm Tree", "palm_fruit_trunk_gen", "Palm Tree", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 1.0 },
{"date_palm", "Date Palm Tree", "date_palm_fruit_trunk", "Date Palm Tree", {0, 0, 0, 0, 0, 0}, 0.0 },
{"spruce", "Spruce Tree", "spruce_cone", "Spruce Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"cedar", "Cedar Tree", "cedar_cone", "Cedar Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"poplar", "Poplar Tree"},
{"poplar_small", "Poplar Tree"},
{"willow", "Willow Tree"},
{"rubber_tree", "Rubber Tree"},
{"fir", "Douglas Fir", "fir_cone", "Fir Cone", {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"jungletree", "Jungle Tree", nil, nil, nil, nil, "default_junglesapling.png" },
{"beech", S("Beech Tree")},
{"apple_tree", S("Apple Tree")},
{"oak", S("Oak Tree"), "acorn", S("Acorn"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"sequoia", S("Giant Sequoia")},
{"birch", S("Birch Tree")},
{"palm", S("Palm Tree"), "palm_fruit_trunk_gen", S("Palm Tree"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 1.0 },
{"date_palm", S("Date Palm Tree"), "date_palm_fruit_trunk",S("Date Palm Tree"), {0, 0, 0, 0, 0, 0}, 0.0 },
{"spruce", S("Spruce Tree"), "spruce_cone", S("Spruce Cone"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"cedar", S("Cedar Tree"), "cedar_cone", S("Cedar Cone"), {-0.2, -0.5, -0.2, 0.2, 0, 0.2}, 0.8 },
{"poplar", S("Poplar Tree")},
{"poplar_small", S("Poplar Tree")},
{"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 },
}
local dirs1 = { 21, 20, 23, 22, 21 }
moretrees.treedesc = {
beech = {
trunk = S("Beech Tree Trunk"),
planks = S("Beech Tree Planks"),
sapling = S("Beech Tree Sapling"),
leaves = S("Beech Tree Leaves"),
trunk_stair = S("Beech Tree Trunk Stair"),
trunk_slab = S("Beech Tree Trunk Slab"),
planks_stair = S("Beech Tree Planks Stair"),
planks_slab = S("Beech Tree Planks Slab"),
fence = S("Beech Tree Fence"),
fence_rail = S("Beech Tree Fence Rail"),
fence_gate = S("Beech Tree Fence Gate"),
},
apple_tree = {
trunk = S("Apple Tree Trunk"),
planks = S("Apple Tree Planks"),
sapling = S("Apple Tree Sapling"),
leaves = S("Apple Tree Leaves"),
trunk_stair = S("Apple Tree Trunk Stair"),
trunk_slab = S("Apple Tree Trunk Slab"),
planks_stair = S("Apple Tree Planks Stair"),
planks_slab = S("Apple Tree Planks Slab"),
fence = S("Apple Tree Fence"),
fence_rail = S("Apple Tree Fence Rail"),
fence_gate = S("Apple Tree Fence Gate"),
},
oak = {
trunk = S("Oak Tree Trunk"),
planks = S("Oak Tree Planks"),
sapling = S("Oak Tree Sapling"),
leaves = S("Oak Tree Leaves"),
trunk_stair = S("Oak Tree Trunk Stair"),
trunk_slab = S("Oak Tree Trunk Slab"),
planks_stair = S("Oak Tree Planks Stair"),
planks_slab = S("Oak Tree Planks Slab"),
fence = S("Oak Tree Fence"),
fence_rail = S("Oak Tree Fence Rail"),
fence_gate = S("Oak Tree Fence Gate"),
},
sequoia = {
trunk = S("Giant Sequoia Trunk"),
planks = S("Giant Sequoia Planks"),
sapling = S("Giant Sequoia Sapling"),
leaves = S("Giant Sequoia Leaves"),
trunk_stair = S("Giant Sequoia Trunk Stair"),
trunk_slab = S("Giant Sequoia Trunk Slab"),
planks_stair = S("Giant Sequoia Planks Stair"),
planks_slab = S("Giant Sequoia Planks Slab"),
fence = S("Giant Sequoia Fence"),
fence_rail = S("Giant Sequoia Fence Rail"),
fence_gate = S("Giant Sequoia Fence Gate"),
},
birch = {
trunk = S("Birch Tree Trunk"),
planks = S("Birch Tree Planks"),
sapling = S("Birch Tree Sapling"),
leaves = S("Birch Tree Leaves"),
trunk_stair = S("Birch Tree Trunk Stair"),
trunk_slab = S("Birch Tree Trunk Slab"),
planks_stair = S("Birch Tree Planks Stair"),
planks_slab = S("Birch Tree Planks Slab"),
fence = S("Birch Tree Fence"),
fence_rail = S("Birch Tree Fence Rail"),
fence_gate = S("Birch Tree Fence Gate"),
},
palm = {
trunk = S("Palm Tree Trunk"),
planks = S("Palm Tree Planks"),
sapling = S("Palm Tree Sapling"),
leaves = S("Palm Tree Leaves"),
trunk_stair = S("Palm Tree Trunk Stair"),
trunk_slab = S("Palm Tree Trunk Slab"),
planks_stair = S("Palm Tree Planks Stair"),
planks_slab = S("Palm Tree Planks Slab"),
fence = S("Palm Tree Fence"),
fence_rail = S("Palm Tree Fence Rail"),
fence_gate = S("Palm Tree Fence Gate"),
},
date_palm = {
trunk = S("Date Palm Tree Trunk"),
planks = S("Date Palm Tree Planks"),
sapling = S("Date Palm Tree Sapling"),
leaves = S("Date Palm Tree Leaves"),
trunk_stair = S("Date Palm Tree Trunk Stair"),
trunk_slab = S("Date Palm Tree Trunk Slab"),
planks_stair = S("Date Palm Tree Planks Stair"),
planks_slab = S("Date Palm Tree Planks Slab"),
fence = S("Date Palm Tree Fence"),
fence_rail = S("Date Palm Tree Fence Rail"),
fence_gate = S("Date Palm Tree Fence Gate"),
},
spruce = {
trunk = S("Spruce Tree Trunk"),
planks = S("Spruce Tree Planks"),
sapling = S("Spruce Tree Sapling"),
leaves = S("Spruce Tree Leaves"),
trunk_stair = S("Spruce Tree Trunk Stair"),
trunk_slab = S("Spruce Tree Trunk Slab"),
planks_stair = S("Spruce Tree Planks Stair"),
planks_slab = S("Spruce Tree Planks Slab"),
fence = S("Spruce Tree Fence"),
fence_rail = S("Spruce Tree Fence Rail"),
fence_gate = S("Spruce Tree Fence Gate"),
},
cedar = {
trunk = S("Cedar Tree Trunk"),
planks = S("Cedar Tree Planks"),
sapling = S("Cedar Tree Sapling"),
leaves = S("Cedar Tree Leaves"),
trunk_stair = S("Cedar Tree Trunk Stair"),
trunk_slab = S("Cedar Tree Trunk Slab"),
planks_stair = S("Cedar Tree Planks Stair"),
planks_slab = S("Cedar Tree Planks Slab"),
fence = S("Cedar Tree Fence"),
fence_rail = S("Cedar Tree Fence Rail"),
fence_gate = S("Cedar Tree Fence Gate"),
},
poplar = {
trunk = S("Poplar Tree Trunk"),
planks = S("Poplar Tree Planks"),
sapling = S("Poplar Tree Sapling"),
leaves = S("Poplar Tree Leaves"),
trunk_stair = S("Poplar Tree Trunk Stair"),
trunk_slab = S("Poplar Tree Trunk Slab"),
planks_stair = S("Poplar Tree Planks Stair"),
planks_slab = S("Poplar Tree Planks Slab"),
fence = S("Poplar Tree Fence"),
fence_rail = S("Poplar Tree Fence Rail"),
fence_gate = S("Poplar Tree Fence Gate"),
},
poplar_small = {
sapling = S("Small poplar Tree Sapling"),
},
willow = {
trunk = S("Willow Tree Trunk"),
planks = S("Willow Tree Planks"),
sapling = S("Willow Tree Sapling"),
leaves = S("Willow Tree Leaves"),
trunk_stair = S("Willow Tree Trunk Stair"),
trunk_slab = S("Willow Tree Trunk Slab"),
planks_stair = S("Willow Tree Planks Stair"),
planks_slab = S("Willow Tree Planks Slab"),
fence = S("Willow Tree Fence"),
fence_rail = S("Willow Tree Fence Rail"),
fence_gate = S("Willow Tree Fence Gate"),
},
rubber_tree = {
trunk = S("Rubber Tree Trunk"),
planks = S("Rubber Tree Planks"),
sapling = S("Rubber Tree Sapling"),
leaves = S("Rubber Tree Leaves"),
trunk_stair = S("Rubber Tree Trunk Stair"),
trunk_slab = S("Rubber Tree Trunk Slab"),
planks_stair = S("Rubber Tree Planks Stair"),
planks_slab = S("Rubber Tree Planks Slab"),
fence = S("Rubber Tree Fence"),
fence_rail = S("Rubber Tree Fence Rail"),
fence_gate = S("Rubber Tree Fence Gate"),
},
fir = {
trunk = S("Douglas Fir Trunk"),
planks = S("Douglas Fir Planks"),
sapling = S("Douglas Fir Sapling"),
leaves = S("Douglas Fir Leaves"),
trunk_stair = S("Douglas Fir Trunk Stair"),
trunk_slab = S("Douglas Fir Trunk Slab"),
planks_stair = S("Douglas Fir Planks Stair"),
planks_slab = S("Douglas Fir Planks Slab"),
fence = S("Douglas Fir Fence"),
fence_rail = S("Douglas Fir Fence Rail"),
fence_gate = S("Douglas Fir Fence Gate"),
},
jungletree = {
trunk = S("Jungle Tree Trunk"),
planks = S("Jungle Tree Planks"),
sapling = S("Jungle Tree Sapling"),
leaves = S("Jungle Tree Leaves"),
trunk_stair = S("Jungle Tree Trunk Stair"),
trunk_slab = S("Jungle Tree Trunk Slab"),
planks_stair = S("Jungle Tree Planks Stair"),
planks_slab = S("Jungle Tree Planks Slab"),
fence = S("Jungle Tree Fence"),
fence_rail = S("Jungle Tree Fence Rail"),
fence_gate = S("Jungle Tree Fence Gate"),
},
}
-- local dirs1 = { 21, 20, 23, 22, 21 }
local dirs2 = { 12, 9, 18, 7, 12 }
local dirs3 = { 14, 11, 16, 5, 14 }
-- local dirs3 = { 14, 11, 16, 5, 14 }
local moretrees_new_leaves_drawtype = "allfaces_optional"
local moretrees_plantlike_leaves_visual_scale = 1
@ -34,8 +226,8 @@ end
-- redefine default leaves to handle plantlike and/or leaf decay options
if moretrees.plantlike_leaves then
minetest.override_item("default:leaves", {
if minetest.get_modpath("default") and moretrees.plantlike_leaves then
minetest.override_item(xcompat.materials.apple_leaves, {
inventory_image = minetest.inventorycube("default_leaves.png"),
drawtype = "plantlike",
visual_scale = math.sqrt(2)
@ -44,8 +236,8 @@ end
-- redefine default jungle leaves for same
if moretrees.plantlike_leaves then
minetest.override_item("default:jungleleaves", {
if minetest.get_modpath("default") and moretrees.plantlike_leaves then
minetest.override_item(xcompat.materials.jungle_leaves, {
inventory_image = minetest.inventorycube("default_jungleleaves.png"),
drawtype = "plantlike",
visual_scale = math.sqrt(2)
@ -54,7 +246,6 @@ end
for i in ipairs(moretrees.treelist) do
local treename = moretrees.treelist[i][1]
local treedesc = moretrees.treelist[i][2]
local fruit = moretrees.treelist[i][3]
local fruitdesc = moretrees.treelist[i][4]
local selbox = moretrees.treelist[i][5]
@ -73,17 +264,17 @@ for i in ipairs(moretrees.treelist) do
droprarity = 20
decay = moretrees.palm_leafdecay_radius
elseif treename == "date_palm" then
decay = moretrees.palm_leafdecay_radius
decay = moretrees.date_palm_leafdecay_radius
end
if treename ~= "jungletree" -- the default game provides jungle tree and pine trunk/planks nodes.
and treename ~= "poplar_small"
and treename ~= "pine" then
-- 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
saptex = "moretrees_"..treename.."_sapling.png"
minetest.register_node("moretrees:"..treename.."_trunk", {
description = S(treedesc.." Trunk"),
description = moretrees.treedesc[treename].trunk,
tiles = {
"moretrees_"..treename.."_trunk_top.png",
"moretrees_"..treename.."_trunk_top.png",
@ -92,34 +283,19 @@ 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 = default.node_sound_wood_defaults(),
sounds = xcompat.sounds.node_sound_wood_defaults(),
on_place = minetest.rotate_node,
})
minetest.register_node("moretrees:"..treename.."_planks", {
description = S(treedesc.." 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 = default.node_sound_wood_defaults(),
})
minetest.register_node("moretrees:"..treename.."_sapling", {
description = S(treedesc.." Sapling"),
drawtype = "plantlike",
tiles = {saptex},
inventory_image = saptex,
paramtype = "light",
paramtype2 = "waving",
walkable = false,
is_ground_content = true,
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,sapling=1},
sounds = default.node_sound_defaults(),
})
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
local moretrees_new_leaves_waving = nil
@ -131,7 +307,7 @@ for i in ipairs(moretrees.treelist) do
end
minetest.register_node("moretrees:"..treename.."_leaves", {
description = S(treedesc.." Leaves"),
description = moretrees.treedesc[treename].leaves,
drawtype = moretrees_new_leaves_drawtype,
waving = moretrees_new_leaves_waving,
visual_scale = moretrees_plantlike_leaves_visual_scale,
@ -140,7 +316,7 @@ for i in ipairs(moretrees.treelist) do
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 1},
sounds = default.node_sound_leaves_defaults(),
sounds = xcompat.sounds.node_sound_leaves_defaults(),
drop = {
max_items = 1,
@ -151,27 +327,25 @@ for i in ipairs(moretrees.treelist) do
},
})
if moretrees.enable_stairs then
if minetest.get_modpath("moreblocks") 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 = S(treedesc.." Trunk"),
drop = treename.."_trunk",
}
)
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",
@ -179,43 +353,146 @@ for i in ipairs(moretrees.treelist) do
{
groups = { snappy=1, choppy=2, oddly_breakable_by_hand=2, flammable=3, not_in_creative_inventory=1 },
tiles = { "moretrees_"..treename.."_wood.png" },
description = S(treedesc.." Planks"),
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"
},
S(treedesc.." Trunk Stair"),
S(treedesc.." Trunk Slab"),
default.node_sound_wood_defaults()
)
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" },
S(treedesc.." Planks Stair"),
S(treedesc.." Planks Slab"),
default.node_sound_wood_defaults()
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
end
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,
paramtype = "light",
paramtype2 = "waving",
walkable = false,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
},
groups = regular_groups,
sounds = xcompat.sounds.node_sound_default(),
on_place = function(itemstack, placer, pointed_thing)
itemstack = xcompat.functions.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
{x = -3, y = 1, z = -3},
{x = 3, y = 6, z = 3},
-- maximum interval of interior volume check
4)
return itemstack
end,
on_construct = function(pos)
minetest.get_node_timer(pos):start(300)
end,
on_timer = function(pos, elapsed)
if moretrees.can_grow(pos, treename) then
--moretrees["grow_" .. treename](pos)
minetest.set_node(pos, {name="air"})
if type(moretrees["spawn_" .. treename .. "_object"])=="string" then
local split = moretrees["spawn_" .. treename .. "_object"]:split(".")
moretrees[split[2]](pos)
else
minetest.spawn_tree(pos, moretrees["spawn_" .. treename .. "_object"])
end
else
minetest.get_node_timer(pos):start(300)
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
}
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(treedesc.." Sapling (fast growth)"),
description = S("@1 (fast growth)", moretrees.treedesc[treename].sapling),
drawtype = "plantlike",
tiles = {saptex},
inventory_image = saptex,
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,
paramtype = "light",
paramtype2 = "waving",
walkable = false,
@ -224,16 +501,45 @@ for i in ipairs(moretrees.treelist) do
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,sapling=1},
sounds = default.node_sound_defaults(),
drop = "moretrees:"..treename.."_sapling"
groups = ongen_groups,
sounds = xcompat.sounds.node_sound_default(),
drop = "moretrees:"..treename.."_sapling",
on_place = function(itemstack, placer, pointed_thing)
itemstack = xcompat.functions.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
{x = -3, y = 1, z = -3},
{x = 3, y = 6, z = 3},
-- maximum interval of interior volume check
4)
return itemstack
end,
on_construct = function(pos)
minetest.get_node_timer(pos):start(2)
end,
on_timer = function(pos, elapsed)
if moretrees.can_grow(pos, treename) then
--moretrees["grow_" .. treename](pos)
minetest.set_node(pos, {name="air"})
if type(moretrees["spawn_" .. treename .. "_object"])=="string" then
local split = moretrees["spawn_" .. treename .. "_object"]:split(".")
moretrees[split[2]](pos)
else
minetest.spawn_tree(pos, moretrees["spawn_" .. treename .. "_object"])
end
else
minetest.get_node_timer(pos):start(300)
end
end,
})
local fruitname = nil
if fruit then
fruitname = "moretrees:"..fruit
minetest.register_node(fruitname, {
description = S(fruitdesc),
description = fruitdesc,
drawtype = "plantlike",
tiles = { "moretrees_"..fruit..".png" },
inventory_image = "moretrees_"..fruit..".png^[transformR180",
@ -248,13 +554,19 @@ 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 = default.node_sound_defaults(),
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
})
end
if treename ~= "jungletree"
and treename ~= "poplar_small"
and treename ~= "pine" then
and treename ~= "pine"
and minetest.get_modpath("default") then
default.register_leafdecay({
trunks = { "moretrees:"..treename.."_trunk" },
leaves = { "moretrees:"..treename.."_leaves", fruitname },
@ -268,7 +580,7 @@ for i in ipairs(moretrees.treelist) do
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2 or 0
nfdir = dirs2[fdir+1]
local nfdir = dirs2[fdir+1]
minetest.add_node(pos, {name = "moretrees:"..treename.."_trunk", param2 = nfdir})
end,
})
@ -281,37 +593,11 @@ for i in ipairs(moretrees.treelist) do
end
end
-- 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
-- poplar saplings leaves
local poplar_leaves_drop = minetest.registered_nodes["moretrees:poplar_leaves"].drop
minetest.override_item("moretrees:poplar_leaves", {
drop = {
max_items = poplar_leaves_drop.maxitems,
max_items = poplar_leaves_drop.max_items,
items = {
{items = {"moretrees:poplar_sapling"}, rarity = 1.33 * poplar_leaves_drop.items[1].rarity },
{items = {"moretrees:poplar_small_sapling"}, rarity = 1.33 * poplar_leaves_drop.items[1].rarity },
@ -323,7 +609,7 @@ minetest.override_item("moretrees:poplar_leaves", {
-- Extra nodes for jungle trees:
local jungleleaves = {"yellow","red"}
local jungleleavesnames = {"Yellow", "Red"}
local jungleleavesnames = {S("Yellow"), S("Red")}
for color = 1, #jungleleaves do
local leave_name = "moretrees:jungletree_leaves_"..jungleleaves[color]
@ -336,7 +622,7 @@ for color = 1, #jungleleaves do
end
minetest.register_node(leave_name, {
description = S("Jungle Tree Leaves ("..jungleleavesnames[color]..")"),
description = S("Jungle Tree Leaves (@1)", jungleleavesnames[color]),
drawtype = moretrees_new_leaves_drawtype,
waving = moretrees_new_leaves_waving,
visual_scale = moretrees_plantlike_leaves_visual_scale,
@ -345,28 +631,31 @@ for color = 1, #jungleleaves do
paramtype = "light",
is_ground_content = false,
groups = {snappy = 3, flammable = 2, leaves = 1, moretrees_leaves = 1, leafdecay = 3 },
drop = {
drop = minetest.get_modpath("default") and {
max_items = 1,
items = {
{items = {"default:junglesapling"}, rarity = 100 },
{items = {"moretrees:jungletree_leaves_"..jungleleaves[color]} }
}
},
sounds = default.node_sound_leaves_defaults(),
} or nil,
sounds = xcompat.sounds.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.
local jungle_tree = table.copy(minetest.registered_nodes["default:jungletree"])
minetest.register_node("moretrees:jungletree_trunk", jungle_tree)
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)
default.register_leafdecay({
trunks = { "default:jungletree", "moretrees:jungletree_trunk" },
leaves = { "default:jungleleaves", "moretrees:jungletree_leaves_yellow", "moretrees:jungletree_leaves_red" },
radius = moretrees.leafdecay_radius,
})
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
-- Extra needles for firs
@ -393,17 +682,19 @@ minetest.register_node("moretrees:fir_leaves_bright", {
{items = {'moretrees:fir_leaves_bright'} }
}
},
sounds = default.node_sound_leaves_defaults()
sounds = xcompat.sounds.node_sound_leaves_defaults()
})
default.register_leafdecay({
trunks = { "moretrees:fir_trunk" },
leaves = { "moretrees:fir_leaves", "moretrees:fir_leaves_bright" },
radius = moretrees.leafdecay_radius,
})
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
if moretrees.enable_redefine_apple then
if minetest.get_modpath("default") and 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)
@ -430,9 +721,8 @@ minetest.register_node("moretrees:rubber_tree_trunk_empty", {
"moretrees_rubber_tree_trunk_top.png",
"moretrees_rubber_tree_trunk_empty.png"
},
is_ground_content = true,
groups = {tree=1,snappy=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = default.node_sound_wood_defaults(),
sounds = xcompat.sounds.node_sound_wood_defaults(),
paramtype2 = "facedir",
is_ground_content = false,
on_place = minetest.rotate_node,
@ -444,7 +734,7 @@ minetest.register_abm({
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
local fdir = node.param2 or 0
nfdir = dirs2[fdir+1]
local nfdir = dirs2[fdir+1]
minetest.add_node(pos, {name = "moretrees:rubber_tree_trunk_empty", param2 = nfdir})
end,
})
@ -478,7 +768,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", "default:jungleleaves")
minetest.register_alias("moretrees:jungletree_leaves_green", xcompat.materials.jungle_leaves)
minetest.register_alias("moretrees:acacia_trunk", "default:acacia_tree")
minetest.register_alias("moretrees:acacia_planks", "default:acacia_wood")

View File

@ -5,8 +5,8 @@
local dirt_surfaces = {
set = true,
["default:dirt"] = true,
["default:dirt_with_grass"] = true,
[xcompat.materials.dirt] = true,
[xcompat.materials.dirt_with_grass] = true,
["default:dirt_with_dry_grass"] = true,
["default:dirt_with_coniferous_litter"] = true,
["default:dirt_with_rainforest_litter"] = true,
@ -18,8 +18,8 @@ local dirt_surfaces = {
local conifer_surfaces = {
set = true,
["default:dirt"] = true,
["default:dirt_with_grass"] = true,
[xcompat.materials.dirt] = true,
[xcompat.materials.dirt_with_grass] = true,
["default:dirt_with_dry_grass"] = true,
["default:dirt_with_coniferous_litter"] = true,
["default:dirt_with_rainforest_litter"] = true,
@ -32,14 +32,35 @@ local conifer_surfaces = {
local sand_surfaces = {
set = true,
["default:sand"] = true,
["default:desert_sand"] = true,
[xcompat.materials.sand] = true,
[xcompat.materials.desert_sand] = true,
["cottages:loam"] = true,
-- note, no silver sand here.
-- too cold for a palm, too... well... sandy for anything else.
}
for i in ipairs(moretrees.treelist) do
function moretrees.can_grow(pos, treename)
local surfaces
if treename == "spruce"
or treename == "fir"
or treename == "cedar"
or treename == "pine" then
surfaces = conifer_surfaces
elseif string.find(treename, "palm") then
surfaces = sand_surfaces
else
surfaces = dirt_surfaces
end
if surfaces[minetest.get_node(vector.new(pos.x, pos.y-1, pos.z)).name] then
return true
else
return false
end
end
--[[ for i in ipairs(moretrees.treelist) do
local treename = moretrees.treelist[i][1]
local tree_model = treename.."_model"
local tree_biome = treename.."_biome"
@ -64,7 +85,7 @@ for i in ipairs(moretrees.treelist) do
grow_function = "moretrees.grow_"..treename
end
biome_lib:dbg(dump(moretrees[tree_biome].surface))
biome_lib.dbg(dump(moretrees[tree_biome].surface), 4)
biome_lib:grow_plants({
grow_delay = moretrees.sapling_interval,
@ -81,4 +102,4 @@ for i in ipairs(moretrees.treelist) do
grow_nodes = surfaces,
grow_function = grow_function,
})
end
end ]]

View File

@ -31,7 +31,7 @@ index 8189ffd..afd4644 100644
@@ -225,9 +225,12 @@ moretrees.ct_rules_b1 = "[-FBf][+FBf]"
moretrees.ct_rules_a2 = "FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A"
moretrees.ct_rules_b2 = "[-fB][+fB]"
+local jleaves = 1
function moretrees.grow_jungletree(pos)
local r1 = math.random(2)
@ -40,11 +40,11 @@ index 8189ffd..afd4644 100644
+ jleaves = jleaves % 2 + 1
if r1 == 1 then
moretrees.jungletree_model.leaves2 = "moretrees:jungletree_leaves_red"
else
else
@@ -235,6 +238,7 @@ function moretrees.grow_jungletree(pos)
end
moretrees.jungletree_model.leaves2_chance = math.random(25, 75)
+ r2=3
if r2 == 1 then
moretrees.jungletree_model.trunk_type = "single"
@ -62,7 +62,7 @@ minetest.register_chatcommand("make-scene", {
minetest.place_node({x=780, y=30, z=-276}, {name="default:obsidian"})
for z = -360, -300 do
dy=2
local dy=2
for x = 630 + (-z - 360)/3, 660 + (-z - 300)/3 do
for y = 5, 22 do
minetest.place_node({x=x, y=y, z=z}, {name="default:desert_stone"})
@ -145,7 +145,8 @@ minetest.register_chatcommand("make-scene", {
The following is a search/replace command suitable for vi (/vim) or sed, to convert minetest log
messages to equivalent lua commands:
s/.*\(\(moretrees\|default\)[^ ]*\) at (\([-0-9]\+\),\([-0-9]\+\),\([-0-9]\+\)).*/\t\tminetest.place_node({x=\3, y=\4, z=\5}, {name="\1"})/
s/.*\(\(moretrees\|default\)[^ ]*\) at
(\([-0-9]\+\),\([-0-9]\+\),\([-0-9]\+\)).*/\t\tminetest.place_node({x=\3, y=\4, z=\5}, {name="\1"})/
E.g. a minetest log line of the following kind:
2016-07-03 11:30:50: ACTION[Server]: singleplayer places node moretrees:rubber_tree_sapling at (760,5,-223)

57
settings.lua Normal file
View File

@ -0,0 +1,57 @@
local stg = minetest.settings
--spawns tree on mapgen as saplings, legacy setting
moretrees.spawn_saplings = stg:get_bool("moretrees.spawn_saplings", true)
--enable plantlike drawtype for leaves
moretrees.plantlike_leaves = stg:get_bool("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 = stg:get_bool("moretrees.enable_redefine_apple", true)
-- various related settings to configure leaf decay.
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
-- 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)
moretrees.coconut_flower_interval = tonumber(stg:get("moretrees.coconut_flower_interval")) or 59
moretrees.coconut_flower_chance = tonumber(stg:get("moretrees.coconut_flower_chance")) or 67
moretrees.coconut_grow_interval = tonumber(stg:get("moretrees.coconut_grow_interval")) or
2 * moretrees.coconut_flower_interval * moretrees.coconut_flower_chance
moretrees.coconut_item_drop_ichance = tonumber(stg:get("moretrees.coconut_item_drop_ichance")) or 10
-- Date palm settings
moretrees.dates_regrow_pollinated = stg:get_bool("moretrees.dates_regrow_pollinated", true)
moretrees.dates_regrow_unpollinated_percent = tonumber(stg:get("moretrees.dates_regrow_unpollinated_percent")) or 0
moretrees.dates_female_percent = tonumber(stg:get("moretrees.dates_female_percent")) or 57
moretrees.dates_pollination_distance = tonumber(stg:get("moretrees.dates_pollination_distance")) or 120
moretrees.dates_blossom_search_time_treshold = tonumber(stg:get("moretrees.dates_blossom_search_time_treshold")) or 1000
moretrees.dates_blossom_search_iload = tonumber(stg:get("moretrees.dates_blossom_search_iload")) or 10
moretrees.dates_flower_interval = tonumber(stg:get("moretrees.dates_flower_interval")) or 59
moretrees.dates_flower_chance = tonumber(stg:get("moretrees.dates_flower_chance")) or 181
moretrees.dates_grow_interval = tonumber(stg:get("moretrees.dates_grow_interval")) or
2 * moretrees.dates_flower_interval * moretrees.dates_flower_chance
moretrees.dates_item_drop_ichance = tonumber(stg:get("moretrees.dates_item_drop_ichance")) or 10
-- Sapling settings
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

@ -1,5 +1,6 @@
moretrees.beech_model={
axiom="FFFFFBFB",
-- luacheck: no max line length
rules_a="[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fd]]////[&&&GGF[++^Fd][--&Fd]//Fd[+^Fd][--&Fdd]]",
rules_b="[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&d]//d[+^d][--&d]]////[&&&F[++^Fd][--&Fd]//d[+^d][--&d]]",
rules_c="/",
@ -24,8 +25,8 @@ moretrees.apple_tree_model={
random_level=0,
trunk_type="single",
thin_branches=true,
fruit="default:apple",
fruit_chance=15,
fruit=minetest.get_modpath("default") and "default:apple" or nil,
fruit_chance=minetest.get_modpath("default") and 15 or nil,
}
moretrees.oak_model={
@ -49,7 +50,6 @@ moretrees.poplar_model={
rules_b="[[T]&&G++f++ff++ff++ff++f--]G",
rules_c="[[T]&&G++f++ff++ff++ff++f--G++[d]G[d]G++G[d]G[d]G[d]G++G[d]G[d]G[d]G++G[d]G[d]G[d]G++G[d]G]G",
rules_d="f",
trunk="air",
trunk="moretrees:poplar_trunk",
leaves="moretrees:poplar_leaves",
angle=45,
@ -76,6 +76,7 @@ moretrees.poplar_small_model={
moretrees.sequoia_model={
axiom="FFFFFFFFFFddccA///cccFddcFA///ddFcFA/cFFddFcdBddd/A/ccdcddd/ccAddddcFBcccAccFdFcFBcccc/BFdFFcFFdcccc/B",
-- luacheck: no max line length
rules_a="[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]////[&&&GGF[++^FFdd][--&Fddd]//Fdd[+^Fd][--&Fdd]]",
rules_b="[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]////[&&&GGF[++^Fdd][--&Fdd]//dd[+^d][--&Fd]]",
rules_c="/",
@ -147,7 +148,7 @@ moretrees.palm_model={
-- So, a generic fruit trunk is spawned. An ABM will convert it to a male
-- or female fruit trunk, and generate the actual dates.
moretrees.date_palm_model={
axiom="TTTTddddddddddccccccccccRT[TGGGGT]"..
axiom="TTTTddddddddddccccccccccRT[TTT]"..
"ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]ccccc[&&a]"..
"GGccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]ccccc[&a]"..
"GGccccc[a]ccccc[a]ccccc[a]ccccc[a]ccccc[a]ccccc[a]",
@ -167,6 +168,7 @@ moretrees.date_palm_model={
}
moretrees.spruce_model1={
-- luacheck: no max line length
axiom="FFFFFAFFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]",
rules_a="[&&&FFFFFF^^FFF][&&&++FFFFFF^^FFF][&&&++++FFFFFF^^FFF][&&&++++++FFFFFF^^FFF][&&&--FFFFFF^^FFF][&&&----FFFFFF^^FFF]",
rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]",
@ -184,6 +186,7 @@ moretrees.spruce_model1={
}
moretrees.spruce_model2={
-- luacheck: no max line length
axiom="FFFFFFBFFFFFFCFFFFFFDFFFFFF[&&&F^^FF][&&&++F^^FF][&&&++++F^^FF][&&&++++++F^^FF][&&&--F^^FF][&&&----F^^FF][FFFFf]",
rules_b="[&&&FFFFF^^FFF][&&&++FFFFF^^FFF][&&&++++FFFFF^^FFF][&&&++++++FFFFF^^FFF][&&&--FFFFF^^FFF][&&&----FFFFF^^FFF]",
rules_c="[&&&FFFF^^FFF][&&&++FFFF^^FFF][&&&++++FFFF^^FFF][&&&++++++FFFF^^FFF][&&&--FFFF^^FFF][&&&----FFFF^^FFF]",
@ -218,6 +221,7 @@ moretrees.cedar_model={
moretrees.willow_model={
axiom="FFFFFFFFccA",
-- luacheck: no max line length
rules_a="[&FF&FFFF&&F&FFFFFFFdddd][**&FF&FFFF&&F&FFFFFFFdddd][//&FF&FFFF&&F&FFFFFFFdddd][////&FF&FFFF&&F&FFFFFFFdddd][//////&FF&FFFF&&F&FFFFFFFdddd][////////&FF&FFFF&&F&FFFFFFFdddd]",
rules_c="/",
rules_d="F",
@ -248,7 +252,7 @@ moretrees.jungletree_model={
rules_a=nil,
rules_b=nil,
trunk="moretrees:jungletree_trunk",
leaves="default:jungleleaves",
leaves=xcompat.materials.jungle_leaves,
leaves2=nil,
leaves2_chance=nil,
angle=45,