1
0
mirror of https://github.com/mt-mods/plantlife_modpack.git synced 2025-06-30 15:10:34 +02:00

9 Commits

Author SHA1 Message Date
99d58e0876 add pl.generate_noise_params() 2023-04-16 19:24:52 +02:00
59c483fd4f support avoid_nodes 2023-04-13 21:15:34 +02:00
640cfd3ac7 improve near_nodes support 2023-04-13 14:15:10 +02:00
cdfbf20ab0 experimental near_nodes support 2023-04-12 21:54:22 +02:00
85569605f5 spawn some more plants directly 2023-04-12 21:03:22 +02:00
a154cb9904 disable some logging 2023-04-12 17:52:29 +02:00
d55f066686 support youngtrees 2023-04-12 17:34:48 +02:00
252c2bd1d2 add support for custom spawn functions 2023-04-12 17:00:18 +02:00
15f62452b8 some biome_lib replacement experiments 2023-04-12 14:12:51 +02:00
273 changed files with 2202 additions and 1330 deletions

View File

@ -1,13 +0,0 @@
name: luacheck
on: [push, pull_request]
jobs:
luacheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- 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 ./

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
*~

View File

@ -1,21 +1,14 @@
unused_args = false unused_args = false
allow_defined_top = true allow_defined_top = true
max_line_length = 185
exclude_files = {".luacheckrc"}
globals = {
"biome_lib",
"bushes_classic",
}
read_globals = { read_globals = {
table = {fields = {"copy"}}, "biome_lib",
"DIR_DELIM",
"minetest", "ItemStack", "minetest", "core",
"vector",
"default",
"moretrees",
"dump", "dump",
"vector", "nodeupdate",
"VoxelManip", "VoxelArea",
"PseudoRandom", "ItemStack",
"default",
} }

View File

@ -1,5 +1,10 @@
-- 3D Mushroom mod by VanessaE -- 3D Mushroom mod by VanessaE
mushroom = {}
-- support for i18n
local S = minetest.get_translator("3dmushrooms")
minetest.override_item("flowers:mushroom_fertile_brown", { minetest.override_item("flowers:mushroom_fertile_brown", {
drawtype = "mesh", drawtype = "mesh",
mesh = "3dmushrooms.obj", mesh = "3dmushrooms.obj",
@ -63,3 +68,5 @@ minetest.register_alias("mushroom:spore1", "flowers:mushroom_spores_red")
minetest.register_alias("mushroom:poison", "flowers:mushroom_red") minetest.register_alias("mushroom:poison", "flowers:mushroom_red")
minetest.register_alias("mushroom:identifier", "default:mese_crystal_fragment") minetest.register_alias("mushroom:identifier", "default:mese_crystal_fragment")
minetest.log("info", S("[3D Mushrooms] loaded."))

View File

@ -0,0 +1,8 @@
# textdomain: 3dmushrooms
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# reusityback, 2022.
[3D Mushrooms] loaded.=[3D Mushrooms] geladen.

View File

@ -0,0 +1,8 @@
# textdomain: 3dmushrooms
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Jolesh, 2022.
[3D Mushrooms] loaded.=[3D Mushrooms] ŝargis.

View File

@ -0,0 +1,8 @@
# textdomain: 3dmushrooms
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
[3D Mushrooms] loaded.=

View File

@ -1,2 +1,2 @@
name = 3dmushrooms name = 3dmushrooms
depends = flowers depends = default, flowers

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -8,9 +8,14 @@
-- support for i18n -- support for i18n
local S = minetest.get_translator("bushes") local S = minetest.get_translator("bushes")
abstract_bushes = {}
local bushes_bush_rarity = tonumber(minetest.settings:get("bushes_bush_rarity")) or 99.9
local bushes_bush_rarity_fertility = tonumber(minetest.settings:get("bushes_bush_rarity_fertility")) or 1.5
local bushes_youngtrees_rarity = tonumber(minetest.settings:get("bushes_youngtrees_rarity")) or 100
local bushes_youngtrees_rarity_fertility = tonumber(minetest.settings:get("bushes_youngtrees_rarity_fertility")) or 0.6
local bush_rarity = minetest.settings:get("bushes.bush_rarity") or 0.008
local youngtree_rarity = minetest.settings:get("youngtree.bush_rarity") or 0.006
minetest.register_node("bushes:youngtree2_bottom", { minetest.register_node("bushes:youngtree2_bottom", {
description = S("Young Tree 2 (bottom)"), description = S("Young Tree 2 (bottom)"),
@ -24,6 +29,7 @@ minetest.register_node("bushes:youngtree2_bottom", {
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
--{0.375000,-0.500000,-0.500000,0.500000,0.500000,-0.375000}, --NodeBox 1
{-0.0612,-0.500000,-0.500000,0.0612,0.500000,-0.375000}, --NodeBox 1 {-0.0612,-0.500000,-0.500000,0.0612,0.500000,-0.375000}, --NodeBox 1
} }
}, },
@ -135,12 +141,44 @@ for i in pairs(BushLeafNode) do
}) })
end end
local function grow_bush_node(pos, dir, leaf_type) abstract_bushes.grow_bush = function(pos)
local leaf_type = math.random(1,2)
local bush_side_height = math.random(0,1)
local chance_of_bush_node_right = math.random(1,10)
if chance_of_bush_node_right> 5 then
local right_pos = {x=pos.x+1, y=pos.y+bush_side_height, z=pos.z}
abstract_bushes.grow_bush_node(right_pos,3,leaf_type)
end
local chance_of_bush_node_left = math.random(1,10)
if chance_of_bush_node_left> 5 then
bush_side_height = math.random(0,1)
local left_pos = {x=pos.x-1, y=pos.y+bush_side_height, z=pos.z}
abstract_bushes.grow_bush_node(left_pos,1,leaf_type)
end
local chance_of_bush_node_front = math.random(1,10)
if chance_of_bush_node_front> 5 then
bush_side_height = math.random(0,1)
local front_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z+1}
abstract_bushes.grow_bush_node(front_pos,2,leaf_type)
end
local chance_of_bush_node_back = math.random(1,10)
if chance_of_bush_node_back> 5 then
bush_side_height = math.random(0,1)
local back_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z-1}
abstract_bushes.grow_bush_node(back_pos,0,leaf_type)
end
abstract_bushes.grow_bush_node(pos,5,leaf_type)
end
abstract_bushes.grow_bush_node = function(pos,dir, leaf_type)
local right_here = {x=pos.x, y=pos.y+1, z=pos.z} local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z} local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z}
local bush_branch_type = 2 local bush_branch_type = 2
-- MM: I'm not sure if it's slower now than before...
if dir ~= 5 and leaf_type == 1 then if dir ~= 5 and leaf_type == 1 then
bush_branch_type = 2 bush_branch_type = 2
end end
@ -156,108 +194,52 @@ local function grow_bush_node(pos, dir, leaf_type)
dir = 1 dir = 1
end end
local nodename = minetest.get_node(right_here).name if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
if nodename == "air" or nodename == "default:junglegrass" then -- instead of check_air = true, or minetest.get_node(right_here).name == "default:junglegrass" then
minetest.swap_node(right_here, {name="bushes:bushbranches"..bush_branch_type , param2=dir}) minetest.swap_node(right_here, {name="bushes:bushbranches"..bush_branch_type , param2=dir})
--minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")")
minetest.swap_node(above_right_here, {name="bushes:BushLeaves"..leaf_type}) minetest.swap_node(above_right_here, {name="bushes:BushLeaves"..leaf_type})
local chance_of_high_leaves = math.random(1,10) local chance_of_high_leaves = math.random(1,10)
if chance_of_high_leaves> 5 then if chance_of_high_leaves> 5 then
local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z} local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z}
--minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")")
minetest.swap_node(two_above_right_here, {name="bushes:BushLeaves"..leaf_type}) minetest.swap_node(two_above_right_here, {name="bushes:BushLeaves"..leaf_type})
end end
end end
end end
local function grow_bush(pos)
-- replace possible grass nodes
minetest.swap_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="air"})
local leaf_type = math.random(1,2) pl.register_on_generate({
local bush_side_height = math.random(0,1) surface = {
local chance_of_bush_node_right = math.random(1,10)
if chance_of_bush_node_right > 5 then
local right_pos = {x=pos.x+1, y=pos.y+bush_side_height, z=pos.z}
grow_bush_node(right_pos,3,leaf_type)
end
local chance_of_bush_node_left = math.random(1,10)
if chance_of_bush_node_left > 5 then
local left_pos = {x=pos.x-1, y=pos.y+bush_side_height, z=pos.z}
grow_bush_node(left_pos,1,leaf_type)
end
local chance_of_bush_node_front = math.random(1,10)
if chance_of_bush_node_front > 5 then
local front_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z+1}
grow_bush_node(front_pos,2,leaf_type)
end
local chance_of_bush_node_back = math.random(1,10)
if chance_of_bush_node_back > 5 then
local back_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z-1}
grow_bush_node(back_pos,0,leaf_type)
end
grow_bush_node(pos,5,leaf_type)
end
minetest.register_decoration({
name = "bushes:bush",
decoration = {
"air"
},
fill_ratio = bush_rarity,
y_min = 1,
y_max = 40,
place_on = {
"default:dirt_with_grass", "default:dirt_with_grass",
"stoneage:grass_with_silex", "stoneage:grass_with_silex",
"sumpf:peat", "sumpf:peat",
"sumpf:sumpf" "sumpf:sumpf"
}, },
deco_type = "simple", noise_params = pl.generate_noise_params({rarity = bushes_bush_rarity, rarity_fertility = bushes_bush_rarity_fertility}),
flags = "all_floors", min_elevation = 1, -- above sea level
}) },
"bushes:bushes",
abstract_bushes.grow_bush
)
--[[ abstract_bushes.grow_youngtree2 = function(pos)
this is purposefully wrapped in a on mods loaded callback to that it gets the proper ids local height = math.random(4,5)
if other mods clear the registered decorations abstract_bushes.grow_youngtree_node2(pos,height)
]]
local did
minetest.register_on_mods_loaded(function()
did = minetest.get_decoration_id("bushes:bush")
minetest.set_gen_notify("decoration", {did})
end)
minetest.register_on_generated(function(minp, maxp, blockseed)
local g = minetest.get_mapgen_object("gennotify")
local locations = {}
local deco_locations = g["decoration#" .. did] 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
grow_bush(pos)
end
end)
local function grow_youngtree_node2(pos, height) abstract_bushes.grow_youngtree_node2 = function(pos, height)
local right_here = {x=pos.x, y=pos.y+1, z=pos.z} local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z} local above_right_here = {x=pos.x, y=pos.y+2, z=pos.z}
local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z} local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z}
local three_above_right_here = {x=pos.x, y=pos.y+4, z=pos.z} local three_above_right_here = {x=pos.x, y=pos.y+4, z=pos.z}
local nodename = minetest.get_node(right_here).name if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
if nodename == "air" or nodename == "default:junglegrass" then -- instead of check_air = true, or minetest.get_node(right_here).name == "default:junglegrass" then
if height == 4 then if height == 4 then
local two_above_right_here_south = {x=pos.x, y=pos.y+3, z=pos.z-1} local two_above_right_here_south = {x=pos.x, y=pos.y+3, z=pos.z-1}
local three_above_right_here_south = {x=pos.x, y=pos.y+4, z=pos.z-1} local three_above_right_here_south = {x=pos.x, y=pos.y+4, z=pos.z-1}
minetest.swap_node(right_here, {name="bushes:youngtree2_bottom"}) minetest.swap_node(right_here, {name="bushes:youngtree2_bottom"})
minetest.swap_node(above_right_here, {name="bushes:youngtree2_bottom"}) minetest.swap_node(above_right_here, {name="bushes:youngtree2_bottom"})
minetest.swap_node(two_above_right_here, {name="bushes:bushbranches2" , param2=2}) minetest.swap_node(two_above_right_here, {name="bushes:bushbranches2" , param2=2})
@ -268,50 +250,17 @@ local function grow_youngtree_node2(pos, height)
end end
end end
local function grow_youngtree2(pos)
local height = math.random(4,5)
grow_youngtree_node2(pos,height)
end
minetest.register_decoration({ pl.register_on_generate({
name = "bushes:youngtree", surface = {
decoration = {
"air"
},
fill_ratio = youngtree_rarity,
y_min = 1,
y_max = 40,
place_on = {
"default:dirt_with_grass", "default:dirt_with_grass",
"stoneage:grass_with_silex", "stoneage:grass_with_silex",
"sumpf:peat", "sumpf:peat",
"sumpf:sumpf" "sumpf:sumpf"
}, },
deco_type = "simple", noise_params = pl.generate_noise_params({rarity = bushes_youngtrees_rarity, rarity_fertility = bushes_youngtrees_rarity_fertility}),
flags = "all_floors", min_elevation = 1, -- above sea level
}) },
"bushes:youngtrees",
--[[ abstract_bushes.grow_youngtree2
this is purposefully wrapped in a on mods loaded callback to that it gets the proper ids )
if other mods clear the registered decorations
]]
local did2
minetest.register_on_mods_loaded(function()
did2 = minetest.get_decoration_id("bushes:youngtree")
minetest.set_gen_notify("decoration", {did2})
end)
minetest.register_on_generated(function(minp, maxp, blockseed)
local g = minetest.get_mapgen_object("gennotify")
local locations = {}
local deco_locations = g["decoration#" .. did2] or {}
for _, pos in pairs(deco_locations) do
locations[#locations+1] = pos
end
if #locations == 0 then return end
for _, pos in ipairs(locations) do
grow_youngtree2(pos)
end
end)

View File

@ -1,4 +1,10 @@
# textdomain: bushes # textdomain: bushes
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
Young Tree 2 (bottom)=Strauch 2 (Ansatz) Young Tree 2 (bottom)=Strauch 2 (Ansatz)
Bush Branches @1=Buschäste @1 Bush Branches @1=Buschäste @1
Bush Leaves @1=Buschblätter @1 Bush Leaves @1=Buschblätter @1

View File

@ -1,4 +1,10 @@
# textdomain: bushes # textdomain: bushes
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Jolesh, 2022.
Young Tree 2 (bottom)=Juna Arbo 2 (malsupro) Young Tree 2 (bottom)=Juna Arbo 2 (malsupro)
Bush Branches @1=Arbustaj Branĉoj @1 Bush Branches @1=Arbustaj Branĉoj @1
Bush Leaves @1=Arbustaj Folioj @1 Bush Leaves @1=Arbustaj Folioj @1

View File

@ -1,4 +1,11 @@
# textdomain: bushes # textdomain: bushes
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# fat115 <fat115@framasoft.org>, 2017.
#
Young Tree 2 (bottom)=Arbuste 2 (bas) Young Tree 2 (bottom)=Arbuste 2 (bas)
Bush Branches @1=Branches de buisson @1 Bush Branches @1=Branches de buisson @1
Bush Leaves @1=Feuilles de buisson @1 Bush Leaves @1=Feuilles de buisson @1

View File

@ -1,4 +1,10 @@
# textdomain: bushes # textdomain: bushes
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
Young Tree 2 (bottom)= Young Tree 2 (bottom)=
Bush Branches @1= Bush Branches @1=
Bush Leaves @1= Bush Leaves @1=

View File

@ -1,4 +1,3 @@
name = bushes name = bushes
title = Bushes depends = default, biome_lib
depends = default optional_depends = stoneage, sumpf
optional_depends = stoneage, sumpf, ebiomes

View File

@ -1,5 +1,17 @@
# Bush rarity (higher number -> higher probability) #Bush rarity %
bushes.bush_rarity (Bush rarity) float 0.008 0.0001 1 bushes_bush_rarity (Bush rarity %) float 99.9 0 100
# Youngtree rarity (higher number -> higher probability) #How much the rarity is reduced by fertility %
bushes.youngtree_rarity (Youngtree rarity) float 0.006 0.0001 1 bushes_bush_rarity_fertility (Bush rarity fertility reduction %) float 1.5 0 100
#Bush minimum fertility (-1 to +1)
bushes_bush_fertility (Bush minimum fertility) float -0.7 -1 1
#Youngtree (from bushes mod) rarity %
bushes_youngtrees_rarity (Youngtree bush rarity %) float 100 0 100
#How much the rarity is reduced by fertility %
bushes_youngtrees_rarity_fertility (Youngtree bush rarity fertility reduction %) float 0.6 0 100
#Youngtree (from bushes mod) minimum fertility (-1 to +1)
bushes_youngtrees_fertility (Youngtree bush minimum fertility) float -0.5 -1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

View File

@ -33,12 +33,9 @@ end
-- override farming_plus strawberry and add food_ group -- override farming_plus strawberry and add food_ group
if minetest.get_modpath("farming_plus") then if minetest.get_modpath("farming_plus") then
local groups = table.copy(minetest.registered_items["farming_plus:strawberry_item"].groups)
groups["food_strawberry"] = 1
groups["food_berry"] = 1
minetest.override_item("farming_plus:strawberry_item", { minetest.override_item("farming_plus:strawberry_item", {
groups = groups, groups = {food_strawberry = 1, food_berry = 1, flammable = 2},
}) })
end end

View File

@ -30,19 +30,12 @@ local modpath = minetest.get_modpath('bushes_classic')
dofile(modpath..'/cooking.lua') dofile(modpath..'/cooking.lua')
dofile(modpath..'/nodes.lua') dofile(modpath..'/nodes.lua')
local spawn_plants = bushes_classic.spawn_list biome_lib.register_active_spawner({
spawn_delay = 3600,
local function get_biome_data(pos, perlin_fertile) spawn_plants = bushes_classic.spawn_list,
local fertility = perlin_fertile:get_2d({x=pos.x, y=pos.z}) avoid_radius = 10,
spawn_chance = 100,
local data = minetest.get_biome_data(pos) spawn_surfaces = {
-- Original values this method returned were +1 (lowest) to -1 (highest)
-- so we need to convert the 0-100 range from get_biome_data() to that.
return fertility, 1 - (data.heat / 100 * 2), 1 - (data.humidity / 100 * 2)
end
minetest.register_abm({
nodenames = {
"default:dirt_with_grass", "default:dirt_with_grass",
"woodsoils:dirt_with_leaves_1", "woodsoils:dirt_with_leaves_1",
"woodsoils:grass_with_leaves_1", "woodsoils:grass_with_leaves_1",
@ -50,31 +43,16 @@ minetest.register_abm({
"farming:soil", "farming:soil",
"farming:soil_wet" "farming:soil_wet"
}, },
interval = 3600, avoid_nodes = {"group:bush"},
chance = 100, seed_diff = 545342534, -- chosen by a fair mashing of the keyboard - guaranteed to be random :P
label = "[bushes_classic] spawn bushes", plantlife_limit = -0.1,
min_y = -16, light_min = 10,
max_y = 48, temp_min = 0.15, -- approx 20C
action = function(pos, node) temp_max = -0.15, -- approx 35C
local p_top = {x = pos.x, y = pos.y + 1, z = pos.z} humidity_min = 0, -- 50% RH
local n_top = minetest.get_node_or_nil(p_top) humidity_max = -1, -- 100% RH
if not n_top or n_top.name ~= "air" then return end
local perlin_fertile_area = minetest.get_perlin(545342534, 3, 0.6, 100)
local fertility, temperature, humidity = get_biome_data(pos, perlin_fertile_area)
local pos_biome_ok = fertility > -0.1 and temperature <= 0.15 and temperature >= -0.15 and humidity <= 0 and humidity >= -1
if not pos_biome_ok then return end
if minetest.find_node_near(p_top, 10 + math.random(-1.5,2), {"group:bush"}) then
return -- Nodes to avoid are nearby
end
local plant_to_spawn = spawn_plants[math.random(1, #spawn_plants)]
minetest.swap_node(p_top, {name = plant_to_spawn, param2 = 0})
end
}) })
minetest.register_alias("bushes:basket_pies", "bushes:basket_strawberry") minetest.register_alias("bushes:basket_pies", "bushes:basket_strawberry")
print("[Bushes] Loaded.")

View File

@ -1,39 +1,46 @@
# textdomain: bushes_classic # textdomain: bushes_classic
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Xanthin, 2017.
#
Sugar=Zucker Sugar=Zucker
Strawberry=Erdbeere
Raw Strawberry pie=Rohe Erdbeertorte
Cooked Strawberry pie=Erdbeertorte
Slice of Strawberry pie=Erdbeertortenstück
Basket with Strawberry pies=Korb mit Erdbeertorten Basket with Strawberry pies=Korb mit Erdbeertorten
Cooked Strawberry pie=Erdbeertorte
Raw Strawberry pie=Rohe Erdbeertorte
Slice of Strawberry pie=Erdbeertortenstueck
Strawberry=Erdbeere
Strawberry Bush=Erdbeerbusch Strawberry Bush=Erdbeerbusch
Blackberry=Brombeere
Raw Blackberry pie=Rohe Brombeertorte
Cooked Blackberry pie=Brombeertorte
Slice of Blackberry pie=Brombeertortenstück
Basket with Blackberry pies=Korb mit Brombeertorten Basket with Blackberry pies=Korb mit Brombeertorten
Blackberry=Brombeere
Blackberry Bush=Brombeerbusch Blackberry Bush=Brombeerbusch
Blueberry=Blaubeere Cooked Blackberry pie=Brombeertorte
Raw Blueberry pie=Rohe Blaubeertorte Raw Blackberry pie=Rohe Brombeertorte
Cooked Blueberry pie=Blaubeertorte Slice of Blackberry pie=Brombeertortenstueck
Slice of Blueberry pie=Blaubeertortenstück
Basket with Blueberry pies=Korb mit Blaubeertorten Basket with Blueberry pies=Korb mit Blaubeertorten
Blueberry=Blaubeere
Blueberry Bush=Blaubeerbusch Blueberry Bush=Blaubeerbusch
Raspberry=Himbeere Cooked Blueberry pie=Blaubeertorte
Raw Raspberry pie=Rohe Himbeertorte Raw Blueberry pie=Rohe Blaubeertorte
Cooked Raspberry pie=Himbeertorte Slice of Blueberry pie=Blaubeertortenstueck
Slice of Raspberry pie=Himbeertortenstück
Basket with Raspberry pies=Korb mit Himbeertorten Basket with Raspberry pies=Korb mit Himbeertorten
Cooked Raspberry pie=Himbeertorte
Raspberry=Himbeere
Raspberry Bush=Himbeerbusch Raspberry Bush=Himbeerbusch
Gooseberry=Stachelbeere Raw Raspberry pie=Rohe Himbeertorte
Raw Gooseberry pie=Rohe Stachelbeertorte Slice of Raspberry pie=Himbeertortenstueck
Cooked Gooseberry pie=Stachelbeertorte
Slice of Gooseberry pie=Stachelbeertortenstück
Basket with Gooseberry pies=Korb mit Stachelbeertorten Basket with Gooseberry pies=Korb mit Stachelbeertorten
Cooked Gooseberry pie=Stachelbeertorte
Gooseberry=Stachelbeere
Gooseberry Bush=Stachelbeerbusch Gooseberry Bush=Stachelbeerbusch
Raw Gooseberry pie=Rohe Stachelbeertorte
Slice of Gooseberry pie=Stachelbeertortenstueck
Basket with Mixed Berry pies=Korb mit Beerenmixtorten
Cooked Mixed Berry pie=Beerenmixtorte
Currently fruitless Bush=zur Zeit fruechteloser
Mixed Berry=Beerenmix Mixed Berry=Beerenmix
Raw Mixed Berry pie=Rohe Beerenmixtorte Raw Mixed Berry pie=Rohe Beerenmixtorte
Cooked Mixed Berry pie=Beerenmixtorte Slice of Mixed Berry pie=Beerenmixtortenstueck
Slice of Mixed Berry pie=Beerenmixtortenstück
Basket with Mixed Berry pies=Korb mit Beerenmixtorten
Currently fruitless Bush=Zur Zeit früchteloser Busch
Basket=Korb Basket=Korb

View File

@ -1,39 +1,46 @@
# textdomain: bushes_classic # textdomain: bushes_classic
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Jolesh, 2022.
#
Sugar=Sukero Sugar=Sukero
Strawberry=Frago
Raw Strawberry pie=Kruda Fragokuko
Cooked Strawberry pie=Kuirita Fragokuko
Slice of Strawberry pie=Tranĉaĵo de Fragokuko
Basket with Strawberry pies=Korbo kun Fragokukoj Basket with Strawberry pies=Korbo kun Fragokukoj
Cooked Strawberry pie=Kuirita Fragokuko
Raw Strawberry pie=Kruda Fragokuko
Slice of Strawberry pie=Tranĉaĵo de Fragokuko
Strawberry=Frago
Strawberry Bush=Fraga Arbusto Strawberry Bush=Fraga Arbusto
Blackberry=Rubuso
Raw Blackberry pie=Kruda Rubusokuko
Cooked Blackberry pie=Kuirita Rubusokuko
Slice of Blackberry pie=Tranĉaĵo de Rubusokuko
Basket with Blackberry pies=Korbo kun Rubusokukoj Basket with Blackberry pies=Korbo kun Rubusokukoj
Cooked Blackberry pie=Kuirita Rubusokuko
Raw Blackberry pie=Kruda Rubusokuko
Slice of Blackberry pie=Tranĉaĵo de Rubusokuko
Blackberry=Rubuso
Blackberry Bush=Rubusa Arbusto Blackberry Bush=Rubusa Arbusto
Blueberry=Mirtelo
Raw Blueberry pie=Kruda Mirtelokuko
Cooked Blueberry pie=Kuirita Mirtelokuko
Slice of Blueberry pie=Tranĉaĵo de Mirtelokuko
Basket with Blueberry pies=Korbo kun Mirtelokukoj Basket with Blueberry pies=Korbo kun Mirtelokukoj
Blueberry=Mirtelo
Blueberry Bush=Mirtela Arbusto Blueberry Bush=Mirtela Arbusto
Raspberry=Frambo Cooked Blueberry pie=Kuirita Mirtelokuko
Raw Raspberry pie=Kruda Frambokuko Raw Blueberry pie=Kruda Mirtelokuko
Cooked Raspberry pie=Kuirita Frambokuko Slice of Blueberry pie=Tranĉaĵo de Mirtelokuko
Slice of Raspberry pie=Tranĉaĵo de Frambokuko
Basket with Raspberry pies=Korbo kun Frambokukoj Basket with Raspberry pies=Korbo kun Frambokukoj
Cooked Raspberry pie=Kuirita Frambokuko
Raspberry=Frambo
Raspberry Bush=Framba Arbusto Raspberry Bush=Framba Arbusto
Gooseberry=Grosbero Raw Raspberry pie=Kruda Frambokuko
Raw Gooseberry pie=Kruda Grosberkuko Slice of Raspberry pie=Tranĉaĵo de Frambokuko
Cooked Gooseberry pie=Kuirita Grosberkuko
Slice of Gooseberry pie=Tranĉaĵo de Grosberkuko
Basket with Gooseberry pies=Korbo kun Grosberkuko Basket with Gooseberry pies=Korbo kun Grosberkuko
Cooked Gooseberry pie=Kuirita Grosberkuko
Gooseberry=Grosbero
Gooseberry Bush=Grosberarbusto Gooseberry Bush=Grosberarbusto
Raw Gooseberry pie=Kruda Grosberkuko
Slice of Gooseberry pie=Tranĉaĵo de Grosberkuko
Basket with Mixed Berry pies=Korbo kun Miksitaj Beraj Kukoj
Cooked Mixed Berry pie=Kuirita Miksa Beraj Kukoj
Currently fruitless Bush=Nuntempe senfrukta Arbusto
Mixed Berry=Miksita Bero Mixed Berry=Miksita Bero
Raw Mixed Berry pie=Kruda Miksita Bera Kuko Raw Mixed Berry pie=Kruda Miksita Bera Kuko
Cooked Mixed Berry pie=Kuirita Miksa Beraj Kukoj
Slice of Mixed Berry pie=Tranĉaĵo de Miksita Bera Kuko Slice of Mixed Berry pie=Tranĉaĵo de Miksita Bera Kuko
Basket with Mixed Berry pies=Korbo kun Miksitaj Beraj Kukoj
Currently fruitless Bush=Nuntempe senfrukta Arbusto
Basket=Korbo Basket=Korbo

View File

@ -1,39 +1,46 @@
# textdomain: bushes_classic # textdomain: bushes_classic
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Carlos Barraza <carlosbarrazaes@gmail.com>, 2017.
#
Sugar=Azúcar Sugar=Azúcar
Strawberry=Frutilla
Raw Strawberry pie=Pastel de Frutilla Crudo
Cooked Strawberry pie=Pastel de Frutilla Cocido
Slice of Strawberry pie=Rebanada de Pastel de Frutilla
Basket with Strawberry pies=Cesta con Pasteles de Frutilla Basket with Strawberry pies=Cesta con Pasteles de Frutilla
Cooked Strawberry pie=Pastel de Frutilla Cocido
Raw Strawberry pie=Pastel de Frutilla Crudo
Slice of Strawberry pie=Rebanada de Pastel de Frutilla
Strawberry=Frutilla
Strawberry Bush=Arbusto de Frutilla Strawberry Bush=Arbusto de Frutilla
Blackberry=Mora
Raw Blackberry pie=Pastel de Mora Crudo
Cooked Blackberry pie=Pastel de Mora Cocido
Slice of Blackberry pie=Rebanada de Pastel de Mora
Basket with Blackberry pies=Cesta con Pasteles de Mora Basket with Blackberry pies=Cesta con Pasteles de Mora
Blackberry=Mora
Blackberry Bush=Arbusto de Mora Blackberry Bush=Arbusto de Mora
Blueberry=Arándano Cooked Blackberry pie=Pastel de Mora Cocido
Raw Blueberry pie=Pastel de Arándano Crudo Raw Blackberry pie=Pastel de Mora Crudo
Cooked Blueberry pie=Pastel de Arándano Cocido Slice of Blackberry pie=Rebanada de Pastel de Mora
Slice of Blueberry pie=Rebanada de Pastel de Arándano
Basket with Blueberry pies=Cesta con Pasteles de Arándano Basket with Blueberry pies=Cesta con Pasteles de Arándano
Blueberry=Arándano
Blueberry Bush=Arbusto de Arándano Blueberry Bush=Arbusto de Arándano
Raspberry=Frambuesa Cooked Blueberry pie=Pastel de Arándano Cocido
Raw Raspberry pie=Pastel de Frambuesa Crudo Raw Blueberry pie=Pastel de Arándano Crudo
Cooked Raspberry pie=Pastel de Frambuesa Cocido Slice of Blueberry pie=Rebanada de Pastel de Arándano
Slice of Raspberry pie=Rebanada de Pastel de Frambuesa
Basket with Raspberry pies=Cesta con Pasteles de Frambuesa Basket with Raspberry pies=Cesta con Pasteles de Frambuesa
Cooked Raspberry pie=Pastel de Frambuesa Cocido
Raspberry=Frambuesa
Raspberry Bush=Arbusto de Frambuesa Raspberry Bush=Arbusto de Frambuesa
Gooseberry=Grosella Raw Raspberry pie=Pastel de Frambuesa Crudo
Raw Gooseberry pie=Pastel de Grosella Crudo Slice of Raspberry pie=Rebanada de Pastel de Frambuesa
Cooked Gooseberry pie=Pastel de Grosella Cocido
Slice of Gooseberry pie=Rebanada de Pastel de Grosella
Basket with Gooseberry pies=Cesta con Pasteles de Grosella Basket with Gooseberry pies=Cesta con Pasteles de Grosella
Cooked Gooseberry pie=Pastel de Grosella Cocido
Gooseberry=Grosella
Gooseberry Bush=Arbusto de Grosella Gooseberry Bush=Arbusto de Grosella
Raw Gooseberry pie=Pastel de Grosella Crudo
Slice of Gooseberry pie=Rebanada de Pastel de Grosella
Basket with Mixed Berry pies=Cesta con Pasteles de Mezcla de Baya
Cooked Mixed Berry pie=Pastel de Mezcla de Bayas Cocido
Currently fruitless Bush=Arbusto actualmente infructuoso
Mixed Berry=Mezcla de Baya Mixed Berry=Mezcla de Baya
Raw Mixed Berry pie=Pastel de Mezcla de Bayas Cruda Raw Mixed Berry pie=Pastel de Mezcla de Bayas Cruda
Cooked Mixed Berry pie=Pastel de Mezcla de Bayas Cocido
Slice of Mixed Berry pie=Rebanada de Pastel de Mezcla de Bayas Slice of Mixed Berry pie=Rebanada de Pastel de Mezcla de Bayas
Basket with Mixed Berry pies=Cesta con Pasteles de Mezcla de Baya
Currently fruitless Bush=Arbusto actualmente infructuoso
Basket=Cesta Basket=Cesta

View File

@ -1,39 +1,46 @@
# textdomain: bushes_classic # textdomain: bushes_classic
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# fat115 <fat115@framasoft.org>, 2017.
#
Sugar=Sucre Sugar=Sucre
Strawberry=Fraises
Raw Strawberry pie=Tarte aux fraises (crue)
Cooked Strawberry pie=Tarte aux fraises (cuite)
Slice of Strawberry pie=Part de tarte aux fraises
Basket with Strawberry pies=Panier de tartes aux fraises Basket with Strawberry pies=Panier de tartes aux fraises
Cooked Strawberry pie=Tarte aux fraises (cuite)
Raw Strawberry pie=Tarte aux fraises (crue)
Slice of Strawberry pie=Part de tarte aux fraises
Strawberry=Fraises
Strawberry Bush=Buisson de fraises Strawberry Bush=Buisson de fraises
Blackberry=Mûres
Raw Blackberry pie=Tarte aux mûres (crue)
Cooked Blackberry pie=Tarte aux mûres (cuite)
Slice of Blackberry pie=Part de tarte aux mûres
Basket with Blackberry pies=Panier de tartes aux fraises Basket with Blackberry pies=Panier de tartes aux fraises
Blackberry=Mûres
Blackberry Bush=Buisson de mûres Blackberry Bush=Buisson de mûres
Blueberry=Myrtilles Cooked Blackberry pie=Tarte aux mûres (cuite)
Raw Blueberry pie=Tarte aux myrtilles (crue) Raw Blackberry pie=Tarte aux mûres (crue)
Cooked Blueberry pie=Tarte aux myrtilles (cuite) Slice of Blackberry pie=Part de tarte aux mûres
Slice of Blueberry pie=Part de tarte aux myrtilles
Basket with Blueberry pies=Panier de tartes aux mûres Basket with Blueberry pies=Panier de tartes aux mûres
Blueberry=Myrtilles
Blueberry Bush=Buisson de myrtilles Blueberry Bush=Buisson de myrtilles
Raspberry=Framboises Cooked Blueberry pie=Tarte aux myrtilles (cuite)
Raw Raspberry pie=Tarte aux framboises (crue) Raw Blueberry pie=Tarte aux myrtilles (crue)
Cooked Raspberry pie=Tarte aux framboises (cuite) Slice of Blueberry pie=Part de tarte aux myrtilles
Slice of Raspberry pie=Part de tarts aux framboises
Basket with Raspberry pies=Panier de tartes aux framboises Basket with Raspberry pies=Panier de tartes aux framboises
Cooked Raspberry pie=Tarte aux framboises (cuite)
Raspberry=Framboises
Raspberry Bush=Buisson de framboises Raspberry Bush=Buisson de framboises
Gooseberry=Groseilles Raw Raspberry pie=Tarte aux framboises (crue)
Raw Gooseberry pie=Tarte aux groseilles (crue) Slice of Raspberry pie=Part de tarts aux framboises
Cooked Gooseberry pie=Tarte aux groseilles (cuite)
Slice of Gooseberry pie=Part de tarte aux groseilles
Basket with Gooseberry pies=Panier de tartes aux groseilles Basket with Gooseberry pies=Panier de tartes aux groseilles
Cooked Gooseberry pie=Tarte aux groseilles (cuite)
Gooseberry=Groseilles
Gooseberry Bush=Buisson de groseilles Gooseberry Bush=Buisson de groseilles
Raw Gooseberry pie=Tarte aux groseilles (crue)
Slice of Gooseberry pie=Part de tarte aux groseilles
Basket with Mixed Berry pies=Panier de tartes aux fruits rouges
Cooked Mixed Berry pie=Tarte aux fruits rouges (cuite)
Currently fruitless Bush=Buisson sans fruits pour l'instant
Mixed Berry=Fruits rouges Mixed Berry=Fruits rouges
Raw Mixed Berry pie=Tarte aux fruits rouges (crue) Raw Mixed Berry pie=Tarte aux fruits rouges (crue)
Cooked Mixed Berry pie=Tarte aux fruits rouges (cuite)
Slice of Mixed Berry pie=Part de tarte aux fruits rouges Slice of Mixed Berry pie=Part de tarte aux fruits rouges
Basket with Mixed Berry pies=Panier de tartes aux fruits rouges
Currently fruitless Bush=Buisson sans fruits pour l'instant
Basket=Panier Basket=Panier

View File

@ -1,39 +1,46 @@
# textdomain: bushes_classic # textdomain: bushes_classic
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# mahmutelmas06@hotmail.com, 2017.
#
Sugar=Şeker Sugar=Şeker
Strawberry=Çilek
Raw Strawberry pie=Çilekli çiğ pasta
Cooked Strawberry pie=Pişmiş çilekli pasta
Slice of Strawberry pie=Çilekli pasta dilimi
Basket with Strawberry pies=Çilekli pasta sepeti Basket with Strawberry pies=Çilekli pasta sepeti
Cooked Strawberry pie=Pişmiş çilekli pasta
Raw Strawberry pie=Çilekli çiğ pasta
Slice of Strawberry pie=Çilekli pasta dilimi
Strawberry=Çilek
Strawberry Bush=Çilek fidanı Strawberry Bush=Çilek fidanı
Blackberry=Böğürtlen
Raw Blackberry pie=Böğürtlenli çiğ pasta
Cooked Blackberry pie=Pişmiş böğürtlenli pasta
Slice of Blackberry pie=Böğürtlenli pasta dilimi
Basket with Blackberry pies=Böğürtlenli pasta sepeti Basket with Blackberry pies=Böğürtlenli pasta sepeti
Blackberry=Böğürtlen
Blackberry Bush=Böğürtlen fidanı Blackberry Bush=Böğürtlen fidanı
Blueberry=Yaban mersini Cooked Blackberry pie=Pişmiş böğürtlenli pasta
Raw Blueberry pie=Yaban mersinli çiğ pasta Raw Blackberry pie=Böğürtlenli çiğ pasta
Cooked Blueberry pie=Pişmiş yaban mersinli pasta Slice of Blackberry pie=Böğürtlenli pasta dilimi
Slice of Blueberry pie=Yaban mersinli pasta dilimi
Basket with Blueberry pies=Yaban mersini pastalı sepet Basket with Blueberry pies=Yaban mersini pastalı sepet
Blueberry=Yaban mersini
Blueberry Bush=Yaban mersini fidanı Blueberry Bush=Yaban mersini fidanı
Raspberry=Ahududu Cooked Blueberry pie=Pişmiş yaban mersinli pasta
Raw Raspberry pie=Ahududulu çiğ pasta Raw Blueberry pie=Yaban mersinli çiğ pasta
Cooked Raspberry pie=Pişmiş ahududulu pasta Slice of Blueberry pie=Yaban mersinli pasta dilimi
Slice of Raspberry pie=Ahududulu pasta dilimi
Basket with Raspberry pies=Ahududulu pasta sepeti Basket with Raspberry pies=Ahududulu pasta sepeti
Cooked Raspberry pie=Pişmiş ahududulu pasta
Raspberry=Ahududu
Raspberry Bush=Ahududu fidanı Raspberry Bush=Ahududu fidanı
Gooseberry=Bektaşi üzümü Raw Raspberry pie=Ahududulu çiğ pasta
Raw Gooseberry pie=Bektaşi üzümlü çiğ pasta Slice of Raspberry pie=Ahududulu pasta dilimi
Cooked Gooseberry pie=Pişmiş bektaşi üzümlü pasta
Slice of Gooseberry pie=Bektaşi üzümlü pasta dilimi
Basket with Gooseberry pies=Bektaşi üzümlü pasta sepeti Basket with Gooseberry pies=Bektaşi üzümlü pasta sepeti
Cooked Gooseberry pie=Pişmiş bektaşi üzümlü pasta
Gooseberry=Bektaşi üzümü
Gooseberry Bush=Bektaşi üzümü fidanı Gooseberry Bush=Bektaşi üzümü fidanı
Raw Gooseberry pie=Bektaşi üzümlü çiğ pasta
Slice of Gooseberry pie=Bektaşi üzümlü pasta dilimi
Basket with Mixed Berry pies=Dutlu pasta sepeti
Cooked Mixed Berry pie=Pişmiş dutlu pasta
Currently fruitless Bush=Fidanı şu anda meyvesiz
Mixed Berry=Dut Mixed Berry=Dut
Raw Mixed Berry pie=Dutlu çiğ pasta Raw Mixed Berry pie=Dutlu çiğ pasta
Cooked Mixed Berry pie=Pişmiş dutlu pasta
Slice of Mixed Berry pie=Dutlu pasta dilimi Slice of Mixed Berry pie=Dutlu pasta dilimi
Basket with Mixed Berry pies=Dutlu pasta sepeti
Currently fruitless Bush=Fidanı şu anda meyvesiz
Basket=Sepet Basket=Sepet

View File

@ -1,39 +1,46 @@
# textdomain: bushes_classic # textdomain: bushes_classic
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
Sugar= Sugar=
Strawberry=
Raw Strawberry pie=
Cooked Strawberry pie=
Slice of Strawberry pie=
Basket with Strawberry pies= Basket with Strawberry pies=
Cooked Strawberry pie=
Raw Strawberry pie=
Slice of Strawberry pie=
Strawberry=
Strawberry Bush= Strawberry Bush=
Blackberry=
Raw Blackberry pie=
Cooked Blackberry pie=
Slice of Blackberry pie=
Basket with Blackberry pies= Basket with Blackberry pies=
Blackberry=
Blackberry Bush= Blackberry Bush=
Blueberry= Cooked Blackberry pie=
Raw Blueberry pie= Raw Blackberry pie=
Cooked Blueberry pie= Slice of Blackberry pie=
Slice of Blueberry pie=
Basket with Blueberry pies= Basket with Blueberry pies=
Blueberry=
Blueberry Bush= Blueberry Bush=
Raspberry= Cooked Blueberry pie=
Raw Raspberry pie= Raw Blueberry pie=
Cooked Raspberry pie= Slice of Blueberry pie=
Slice of Raspberry pie=
Basket with Raspberry pies= Basket with Raspberry pies=
Cooked Raspberry pie=
Raspberry=
Raspberry Bush= Raspberry Bush=
Gooseberry= Raw Raspberry pie=
Raw Gooseberry pie= Slice of Raspberry pie=
Cooked Gooseberry pie=
Slice of Gooseberry pie=
Basket with Gooseberry pies= Basket with Gooseberry pies=
Cooked Gooseberry pie=
Gooseberry=
Gooseberry Bush= Gooseberry Bush=
Raw Gooseberry pie=
Slice of Gooseberry pie=
Basket with Mixed Berry pies=
Cooked Mixed Berry pie=
Currently fruitless Bush=
Mixed Berry= Mixed Berry=
Raw Mixed Berry pie= Raw Mixed Berry pie=
Cooked Mixed Berry pie=
Slice of Mixed Berry pie= Slice of Mixed Berry pie=
Basket with Mixed Berry pies=
Currently fruitless Bush=
Basket= Basket=

View File

@ -1,2 +1,3 @@
name = bushes_classic name = bushes_classic
depends = biome_lib
optional_depends = farming, farming_plus optional_depends = farming, farming_plus

View File

@ -159,14 +159,19 @@ for i, bush_name in ipairs(bushes_classic.bushes) do
paramtype2 = "facedir", paramtype2 = "facedir",
on_use = minetest.item_eat(18), on_use = minetest.item_eat(18),
groups = { dig_immediate = 3 }, groups = { dig_immediate = 3 },
is_ground_content = false,
}) })
local texture_top, texture_bottom
local groups = {snappy = 3, bush = 1, flammable = 2, attached_node=1} local groups = {snappy = 3, bush = 1, flammable = 2, attached_node=1}
if bush_name == "mixed_berry" then if bush_name == "mixed_berry" then
bush_name = "fruitless"; bush_name = "fruitless";
texture_top = "bushes_fruitless_bush_top.png"
texture_bottom = "bushes_fruitless_bush_bottom.png"
groups.not_in_creative_inventory = 1 groups.not_in_creative_inventory = 1
else
texture_top = "bushes_bush_top.png"
texture_bottom = "bushes_bush_bottom.png"
end end
local node_dig_prediction local node_dig_prediction
@ -211,5 +216,4 @@ minetest.register_node(":bushes:basket_empty", {
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
groups = { dig_immediate = 3 }, groups = { dig_immediate = 3 },
is_ground_content = false,
}) })

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -1,2 +1,17 @@
-----------------------------------------------------------------------------------------------
local title = "Cave Stuff"
local version = "0.0.3"
local mname = "cavestuff"
-----------------------------------------------------------------------------------------------
-- support for i18n
local S = minetest.get_translator("cavestuff")
cavestuff = {}
dofile(minetest.get_modpath("cavestuff").."/nodes.lua") dofile(minetest.get_modpath("cavestuff").."/nodes.lua")
dofile(minetest.get_modpath("cavestuff").."/mapgen.lua") dofile(minetest.get_modpath("cavestuff").."/mapgen.lua")
-----------------------------------------------------------------------------------------------
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")

View File

@ -1,4 +1,11 @@
# textdomain: cavestuff # textdomain: cavestuff
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# reusityback, 2022.
#
Pebble=Kieselstein Pebble=Kieselstein
Desert Pebble=Wüstenkiesel Desert Pebble=Wüstenkiesel
Stalactite=Stalaktit Stalactite=Stalaktit

View File

@ -1,4 +1,11 @@
# textdomain: cavestuff # textdomain: cavestuff
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Jolesh, 2022.
#
Pebble=Ŝtoneto Pebble=Ŝtoneto
Desert Pebble=Dezerta Ŝtoneto Desert Pebble=Dezerta Ŝtoneto
Stalactite=Stalaktito Stalactite=Stalaktito

View File

@ -1,4 +1,11 @@
# textdomain: cavestuff # textdomain: cavestuff
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# fat115 <fat115@framasoft.org>, 2017.
#
Pebble=Caillou Pebble=Caillou
Desert Pebble=Caillou du désert Desert Pebble=Caillou du désert
Stalactite=Stalactite Stalactite=Stalactite

View File

@ -1,4 +1,11 @@
# textdomain: cavestuff # textdomain: cavestuff
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
Pebble= Pebble=
Desert Pebble= Desert Pebble=
Stalactite= Stalactite=

View File

@ -1,2 +1,2 @@
name = cavestuff name = cavestuff
depends = default depends = default,biome_lib

View File

@ -15,7 +15,7 @@ minetest.register_node("cavestuff:pebble_1",{
tiles = {"undergrowth_pebble.png"}, tiles = {"undergrowth_pebble.png"},
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {cracky=3, stone=1, attached_node=1, dig_immediate=3}, groups = {cracky=3, stone=1, attached_node=1},
selection_box = cbox, selection_box = cbox,
collision_box = cbox, collision_box = cbox,
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
@ -32,9 +32,10 @@ minetest.register_node("cavestuff:pebble_2",{
mesh = "cavestuff_pebble.obj", mesh = "cavestuff_pebble.obj",
tiles = {"undergrowth_pebble.png"}, tiles = {"undergrowth_pebble.png"},
drop = "cavestuff:pebble_1", drop = "cavestuff:pebble_1",
tiles = {"undergrowth_pebble.png"},
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1, dig_immediate=3}, groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1},
selection_box = cbox, selection_box = cbox,
collision_box = cbox, collision_box = cbox,
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -47,7 +48,7 @@ minetest.register_node("cavestuff:desert_pebble_1",{
tiles = {"default_desert_stone.png"}, tiles = {"default_desert_stone.png"},
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {cracky=3, stone=1, attached_node=1, dig_immediate=3}, groups = {cracky=3, stone=1, attached_node=1},
selection_box = cbox, selection_box = cbox,
collision_box = cbox, collision_box = cbox,
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
@ -66,7 +67,7 @@ minetest.register_node("cavestuff:desert_pebble_2",{
tiles = {"default_desert_stone.png"}, tiles = {"default_desert_stone.png"},
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1, dig_immediate=3}, groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1},
selection_box = cbox, selection_box = cbox,
collision_box = cbox, collision_box = cbox,
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
@ -78,7 +79,6 @@ minetest.register_node("cavestuff:stalactite_1",{
drawtype="nodebox", drawtype="nodebox",
tiles = {"undergrowth_pebble.png"}, tiles = {"undergrowth_pebble.png"},
groups = {cracky=3,attached_node=1}, groups = {cracky=3,attached_node=1},
is_ground_content = false,
description = S("Stalactite"), description = S("Stalactite"),
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
@ -113,7 +113,7 @@ minetest.register_node("cavestuff:stalactite_1",{
name = "cavestuff:stalactite_"..math.random(1,3), name = "cavestuff:stalactite_"..math.random(1,3),
param2 = minetest.dir_to_wallmounted(vector.multiply(dir, -1)) param2 = minetest.dir_to_wallmounted(vector.multiply(dir, -1))
}) })
if not minetest.is_creative_enabled(playername) then if not minetest.setting_getbool("creative_mode") then
itemstack:take_item() itemstack:take_item()
end end
end end
@ -125,7 +125,6 @@ minetest.register_node("cavestuff:stalactite_2",{
drawtype="nodebox", drawtype="nodebox",
tiles = {"undergrowth_pebble.png"}, tiles = {"undergrowth_pebble.png"},
groups = {cracky=3,attached_node=1,not_in_creative_inventory=1}, groups = {cracky=3,attached_node=1,not_in_creative_inventory=1},
is_ground_content = false,
drop = "cavestuff:stalactite_1", drop = "cavestuff:stalactite_1",
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
@ -144,7 +143,6 @@ minetest.register_node("cavestuff:stalactite_3",{
drawtype="nodebox", drawtype="nodebox",
tiles = {"undergrowth_pebble.png"}, tiles = {"undergrowth_pebble.png"},
groups = {cracky=3,attached_node=1,not_in_creative_inventory=1}, groups = {cracky=3,attached_node=1,not_in_creative_inventory=1},
is_ground_content = false,
drop = "cavestuff:stalactite_1", drop = "cavestuff:stalactite_1",
paramtype = "light", paramtype = "light",
paramtype2 = "wallmounted", paramtype2 = "wallmounted",
@ -158,3 +156,5 @@ minetest.register_node("cavestuff:stalactite_3",{
} }
}, },
}) })
--Stalagmites

View File

@ -53,7 +53,7 @@ minetest.register_craft({
{"default:stick",""} {"default:stick",""}
} }
}) })
if minetest.get_modpath("flint") then if minetest.get_modpath("flint") ~= nil then
minetest.register_craft({ minetest.register_craft({
output = "dryplants:sickle", output = "dryplants:sickle",
recipe = { recipe = {
@ -63,7 +63,7 @@ if minetest.get_modpath("flint") then
} }
}) })
end end
if minetest.get_modpath("stoneage") then if minetest.get_modpath("stoneage") ~= nil then
minetest.register_craft({ minetest.register_craft({
output = "dryplants:sickle", output = "dryplants:sickle",
recipe = { recipe = {

View File

@ -1,15 +1,33 @@
-----------------------------------------------------------------------------------------------
local title = "Grasses" -- former "Dry plants"
local version = "0.1.5"
local mname = "dryplants"
-----------------------------------------------------------------------------------------------
-- by Mossmanikin
-- textures & ideas partly by Neuromancer
-- Contains code from: default, farming
-- Looked at code from: darkage, sickle, stairs
-- Dependencies: default, farming, biome_lib
-- Supports:
-----------------------------------------------------------------------------------------------
abstract_dryplants = {}
-- support for i18n -- support for i18n
local S = minetest.get_translator("dryplants") local S = minetest.get_translator("dryplants")
abstract_dryplants = {}
dofile(minetest.get_modpath("dryplants").."/crafting.lua") dofile(minetest.get_modpath("dryplants").."/crafting.lua")
dofile(minetest.get_modpath("dryplants").."/settings.txt")
dofile(minetest.get_modpath("dryplants").."/reed.lua") dofile(minetest.get_modpath("dryplants").."/reed.lua")
if REEDMACE_GENERATES == true then
dofile(minetest.get_modpath("dryplants").."/reedmace.lua") dofile(minetest.get_modpath("dryplants").."/reedmace.lua")
end
if SMALL_JUNCUS_GENERATES == true then
dofile(minetest.get_modpath("dryplants").."/juncus.lua") dofile(minetest.get_modpath("dryplants").."/juncus.lua")
end
if EXTRA_TALL_GRASS_GENERATES == true then
dofile(minetest.get_modpath("dryplants").."/moregrass.lua") dofile(minetest.get_modpath("dryplants").."/moregrass.lua")
end
--dofile(minetest.get_modpath("dryplants").."/meadowvariation.lua") --dofile(minetest.get_modpath("dryplants").."/meadowvariation.lua")
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
@ -119,7 +137,6 @@ minetest.register_node("dryplants:grass", {
fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 }, fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 },
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
@ -128,7 +145,7 @@ minetest.register_node("dryplants:grass", {
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
minetest.register_abm({ minetest.register_abm({
nodenames = {"dryplants:grass"}, nodenames = {"dryplants:grass"},
interval = 3600, --1200, -- 20 minutes: a minetest-day/night-cycle interval = HAY_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
chance = 1, chance = 1,
action = function(pos) action = function(pos)
minetest.swap_node(pos, {name="dryplants:hay"}) minetest.swap_node(pos, {name="dryplants:hay"})
@ -152,7 +169,6 @@ minetest.register_node("dryplants:hay", {
fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 }, fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 },
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
@ -175,8 +191,8 @@ minetest.register_node("dryplants:grass_short", {
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
minetest.register_abm({ minetest.register_abm({
nodenames = {"dryplants:grass_short"}, nodenames = {"dryplants:grass_short"},
interval = 1200, --1200, -- 20 minutes: a minetest-day/night-cycle interval = GRASS_REGROWING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
chance = 100/1200, chance = 100/GRASS_REGROWING_CHANCE,
action = function(pos) action = function(pos)
-- Only become dirt with grass if no cut grass or hay lies on top -- Only become dirt with grass if no cut grass or hay lies on top
local above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}) local above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
@ -185,3 +201,7 @@ minetest.register_abm({
end end
end, end,
}) })
-----------------------------------------------------------------------------------------------
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
-----------------------------------------------------------------------------------------------

View File

@ -1,12 +1,21 @@
-----------------------------------------------------------------------------------------------
-- Grasses - Juncus 0.0.5
-----------------------------------------------------------------------------------------------
-- by Mossmanikin
-- textures & ideas partly by Neuromancer
-- Contains code from: biome_lib
-- Looked at code from: default
-----------------------------------------------------------------------------------------------
-- support for i18n -- support for i18n
local S = minetest.get_translator("dryplants") local S = minetest.get_translator("dryplants")
local function grow_juncus(pos) abstract_dryplants.grow_juncus = function(pos)
local juncus_type = math.random(2,3) local juncus_type = math.random(2,3)
local right_here = {x=pos.x, y=pos.y+1, z=pos.z} local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
local nodename = minetest.get_node(right_here).name or minetest.get_node(right_here).name == "default:junglegrass" then
if nodename == "air" or nodename == "default:junglegrass" then
if juncus_type == 2 then if juncus_type == 2 then
minetest.swap_node(right_here, {name="dryplants:juncus_02"}) minetest.swap_node(right_here, {name="dryplants:juncus_02"})
else else
@ -37,10 +46,6 @@ minetest.register_node("dryplants:juncus", {
fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
}, },
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
if not itemstack or not placer or not pointed_thing then
return
end
local playername = placer:get_player_name() local playername = placer:get_player_name()
if minetest.is_protected(pointed_thing.above, playername) or if minetest.is_protected(pointed_thing.above, playername) or
minetest.is_protected(pointed_thing.under, playername) then minetest.is_protected(pointed_thing.under, playername) then
@ -55,13 +60,12 @@ minetest.register_node("dryplants:juncus", {
else else
minetest.swap_node(right_here, {name="dryplants:juncus"}) minetest.swap_node(right_here, {name="dryplants:juncus"})
end end
if not minetest.is_creative_enabled(playername) then if not minetest.setting_getbool("creative_mode") then
itemstack:take_item() itemstack:take_item()
end end
return itemstack return itemstack
end, end,
}) })
minetest.register_node("dryplants:juncus_02", { minetest.register_node("dryplants:juncus_02", {
description = S("Juncus"), description = S("Juncus"),
drawtype = "plantlike", drawtype = "plantlike",
@ -88,69 +92,42 @@ minetest.register_node("dryplants:juncus_02", {
-- GENERATE SMALL JUNCUS -- GENERATE SMALL JUNCUS
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- near water or swamp -- near water or swamp
minetest.register_decoration({ pl.register_on_generate({
name = "dryplants:juncus_water", surface = {
decoration = {"air"},
fill_ratio = 0.16,
y_min = 1,
y_max = 40,
place_on = {
"default:dirt_with_grass", "default:dirt_with_grass",
--"default:desert_sand",
--"default:sand",
"stoneage:grass_with_silex", "stoneage:grass_with_silex",
"sumpf:peat", "sumpf:peat",
"sumpf:sumpf" "sumpf:sumpf"
}, },
deco_type = "simple", noise_params = pl.generate_noise_params({max_count = JUNCUS_NEAR_WATER_PER_MAPBLOCK, rarity = 101 - JUNCUS_NEAR_WATER_RARITY}),
flags = "all_floors", min_elevation = 1, -- above sea level
spawn_by = { near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
"default:water_source", near_nodes_size = 2,
"sumpf:dirtywater_source", near_nodes_vertical = 1,
"sumpf:sumpf" near_nodes_count = 1,
}, },
check_offset = -1, "dryplants:juncus_near_water",
num_spawn_by = 1 abstract_dryplants.grow_juncus
}) )
-- at dunes/beach -- at dunes/beach
minetest.register_decoration({ pl.register_on_generate({
name = "dryplants:juncus_beach", surface = {
decoration = {"air"}, --"default:dirt_with_grass",
fill_ratio = 0.08, --"default:desert_sand",
y_min = 1,
y_max = 40,
place_on = {
"default:sand", "default:sand",
--"stoneage:grass_with_silex",
--"sumpf:peat",
--"sumpf:sumpf"
}, },
deco_type = "simple", noise_params = pl.generate_noise_params({max_count = JUNCUS_AT_BEACH_PER_MAPBLOCK, rarity = 101 - JUNCUS_AT_BEACH_RARITY}),
flags = "all_floors", min_elevation = 1, -- above sea level
spawn_by = {"default:dirt_with_grass"}, near_nodes = {"default:dirt_with_grass"},
check_offset = -1, near_nodes_size = 2,
num_spawn_by = 1 near_nodes_vertical = 1,
}) near_nodes_count = 1,
},
local did, did2 "dryplants:junces_at_beach",
minetest.register_on_mods_loaded(function() abstract_dryplants.grow_juncus
did = minetest.get_decoration_id("dryplants:juncus_water") )
did2 = minetest.get_decoration_id("dryplants:juncus_beach")
minetest.set_gen_notify("decoration", {did, did2})
end)
minetest.register_on_generated(function(minp, maxp, blockseed)
local g = minetest.get_mapgen_object("gennotify")
local locations = {}
local deco_locations_1 = g["decoration#" .. did] or {}
local deco_locations_2 = g["decoration#" .. did2] or {}
for _, pos in pairs(deco_locations_1) do
locations[#locations+1] = pos
end
for _, pos in pairs(deco_locations_2) do
locations[#locations+1] = pos
end
if #locations == 0 then return end
for _, pos in ipairs(locations) do
grow_juncus(pos)
end
end)

View File

@ -1,18 +1,25 @@
# textdomain: dryplants # textdomain: dryplants
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# reusityback, 2022.
#
Sickle=Sichel Sickle=Sichel
Cut Grass=Grasschnitt Cut Grass=Gras schneiden
Hay=Heu Hay=Heu
Short Grass=Kurzes Gras Short Grass=Kurzes Gras
Juncus=Binsen Juncus=Binsen
Wet Reed=Nasses Schilf Wet Reed=Nasses Schilf
Wet Reed Slab=Nasse Schilfplatte Wet Reed Slab=Nasse Schilfstufe
Wet Reed Roof=Nasses Schilfdach Wet Reed Roof=Nasses Schilfdach
Wet Reed Roof Corner 1=Nasser Schilfdachwinkel 1 Wet Reed Roof Corner=Nasser Schilfdachwinkel
Wet Reed Roof Corner 2=Nasser Schilfdachwinkel 2 Wet Reed Roof Corner 2=Nasser Schilfdachwinkel 2
Reed=Schilf Reed=Schilf
Reed Slab=Schilfstufe Reed Slab=Schilfstufe
Reed Roof=Schilfdach Reed Roof=Schilfdach
Reed Roof Corner 1=Schilfdachwinkel 1 Reed Roof Corner=Schilfdachwinkel
Reed Roof Corner 2=Schilfdachwinkel Reed Roof Corner 2=Schilfdachwinkel
Reedmace=Rohrkolben Reedmace=Rohrkolben
Reedmace, height: 1=Rohrkolben, Höhe: 1 Reedmace, height: 1=Rohrkolben, Höhe: 1

View File

@ -1,4 +1,11 @@
# textdomain: dryplants # textdomain: dryplants
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Jolesh, 2022.
#
Sickle= Sickle=
Cut Grass=Tranĉita Herbenon Cut Grass=Tranĉita Herbenon
Hay=Fojno Hay=Fojno
@ -7,12 +14,12 @@ Juncus=Junko
Wet Reed=Malseka Kano Wet Reed=Malseka Kano
Wet Reed Slab=Slabo de Malseka Kano Wet Reed Slab=Slabo de Malseka Kano
Wet Reed Roof=Tegmento de Malseka Kano Wet Reed Roof=Tegmento de Malseka Kano
Wet Reed Roof Corner 1=Tegmentangulo 1 de Malseka Kano Wet Reed Roof Corner=Tegmentangulo de Malseka Kano
Wet Reed Roof Corner 2=Tegmentangulo 2 de Malseka Kano Wet Reed Roof Corner 2=Tegmentangulo 2 de Malseka Kano
Reed=Kano Reed=Kano
Reed Slab=Slabo de Kano Reed Slab=Slabo de Kano
Reed Roof=Tegmento de Kano Reed Roof=Tegmento de Kano
Reed Roof Corner 1=Tegmentangulo 1 de Kano Reed Roof Corner=Tegmentangulo de Kano
Reed Roof Corner 2=Tegmentangulo 2 de Kano Reed Roof Corner 2=Tegmentangulo 2 de Kano
Reedmace=Tifeo Reedmace=Tifeo
Reedmace, height: 1=Tifeo, alteco: 1 Reedmace, height: 1=Tifeo, alteco: 1

View File

@ -1,4 +1,11 @@
# textdomain: dryplants # textdomain: dryplants
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# fat115 <fat115@framasoft.org>, 2017.
#
Sickle=Faucille Sickle=Faucille
Cut Grass=Herbe coupée Cut Grass=Herbe coupée
Hay=Foin Hay=Foin
@ -7,12 +14,12 @@ Juncus=Joncs
Wet Reed=Bloc de roseau humide Wet Reed=Bloc de roseau humide
Wet Reed Slab=Dalle en roseau humide Wet Reed Slab=Dalle en roseau humide
Wet Reed Roof=Toit en roseau humide Wet Reed Roof=Toit en roseau humide
Wet Reed Roof Corner 1=Angle de toit en roseau humide 1 Wet Reed Roof Corner=Angle de toit en roseau humide
Wet Reed Roof Corner 2=Angle de toit en roseau humide 2 Wet Reed Roof Corner 2=Angle de toit en roseau humide 2
Reed=Roseau Reed=Roseau
Reed Slab=Dalle en roseau Reed Slab=Dalle en roseau
Reed Roof=Toit en roseau Reed Roof=Toit en roseau
Reed Roof Corner 1=Angle de toit en roseau 1 Reed Roof Corner=Angle de toit en roseau
Reed Roof Corner 2=Angle de toit en roseau 2 Reed Roof Corner 2=Angle de toit en roseau 2
Reedmace=Roseau Reedmace=Roseau
Reedmace, height: 1=Roseau, 1 de hauteur Reedmace, height: 1=Roseau, 1 de hauteur

View File

@ -1,4 +1,11 @@
# textdomain: dryplants # textdomain: dryplants
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
Sickle= Sickle=
Cut Grass= Cut Grass=
Hay= Hay=
@ -7,12 +14,12 @@ Juncus=
Wet Reed= Wet Reed=
Wet Reed Slab= Wet Reed Slab=
Wet Reed Roof= Wet Reed Roof=
Wet Reed Roof Corner 1= Wet Reed Roof Corner=
Wet Reed Roof Corner 2= Wet Reed Roof Corner 2=
Reed= Reed=
Reed Slab= Reed Slab=
Reed Roof= Reed Roof=
Reed Roof Corner 1= Reed Roof Corner=
Reed Roof Corner 2= Reed Roof Corner 2=
Reedmace= Reedmace=
Reedmace, height: 1= Reedmace, height: 1=

View File

@ -1,12 +1,24 @@
-- @reviewer: couldn't even find using biome_lib -----------------------------------------------------------------------------------------------
minetest.register_decoration({ -- Grasses - Meadow Variation 0.0.1
decoration = {"dryplants:grass_short"}, -----------------------------------------------------------------------------------------------
fill_ratio = 0.8, -- by Mossmanikin
y_min = 1,
y_max = 40, -- Contains code from: biome_lib
place_on = { -- Looked at code from: default
-----------------------------------------------------------------------------------------------
abstract_dryplants.grow_grass_variation = function(pos)
local right_here = {x=pos.x, y=pos.y, z=pos.z}
minetest.swap_node(right_here, {name="dryplants:grass_short"})
end
pl.register_on_generate({
surface = {
"default:dirt_with_grass", "default:dirt_with_grass",
}, },
deco_type = "simple", noise_params = pl.generate_noise_params({max_count = 4800, rarity = 25}),
flags = "all_floors" min_elevation = 1, -- above sea level
}) },
"dryplants:grass",
abstract_dryplants.grow_grass_variation
)

View File

@ -1,3 +1,3 @@
name = dryplants name = dryplants
depends = default depends = default, biome_lib
optional_depends = farming, ebiomes optional_depends = farming

View File

@ -1,3 +1,12 @@
-----------------------------------------------------------------------------------------------
-- Grasses - More Tall Grass 0.0.2
-----------------------------------------------------------------------------------------------
-- by Mossmanikin
-- Contains code from: biome_lib
-- Looked at code from: default
-----------------------------------------------------------------------------------------------
minetest.register_decoration({ minetest.register_decoration({
decoration = { decoration = {
"default:grass_1", "default:grass_1",
@ -6,15 +15,15 @@ minetest.register_decoration({
"default:grass_4", "default:grass_4",
"default:grass_5" "default:grass_5"
}, },
fill_ratio = 0.8,
y_min = 1,
y_max = 40,
place_on = { place_on = {
"default:dirt_with_grass", "default:dirt_with_grass",
"stoneage:grass_with_silex", "stoneage:grass_with_silex",
"sumpf:peat", "sumpf:peat",
"sumpf:sumpf" "sumpf:sumpf"
}, },
noise_params = pl.generate_noise_params({max_count = TALL_GRASS_PER_MAPBLOCK, rarity = 101 - TALL_GRASS_RARITY}),
flags = "all_floors",
deco_type = "simple", deco_type = "simple",
flags = "all_floors" y_min = 1,
y_max = 48
}) })

View File

@ -44,7 +44,6 @@ minetest.register_node("dryplants:wetreed_slab", {
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2}, fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
@ -73,10 +72,11 @@ minetest.register_node("dryplants:wetreed_roof", {
} }
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
if AUTO_ROOF_CORNER == true then
local CoRNeR = { local CoRNeR = {
-- MaTeRiaL -- MaTeRiaL
{"wetreed"}, {"wetreed"},
@ -168,12 +168,13 @@ for i in pairs(CoRNeR) do
end, end,
}) })
end end
end
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- Wet Reed Roof Corner 1 -- Wet Reed Roof Corner
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
minetest.register_node("dryplants:wetreed_roof_corner", { minetest.register_node("dryplants:wetreed_roof_corner", {
description = S("Wet Reed Roof Corner 1"), description = S("Wet Reed Roof Corner"),
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
@ -196,7 +197,6 @@ minetest.register_node("dryplants:wetreed_roof_corner", {
} }
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
@ -227,13 +227,14 @@ minetest.register_node("dryplants:wetreed_roof_corner_2", {
} }
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- Wet Reed becomes (dry) Reed over time -- Wet Reed becomes (dry) Reed over time
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
if REED_WILL_DRY == true then
local DRyiNG = { local DRyiNG = {
-- WeT DRy -- WeT DRy
{"dryplants:wetreed", "dryplants:reed"}, {"dryplants:wetreed", "dryplants:reed"},
@ -249,7 +250,7 @@ for i in pairs(DRyiNG) do
minetest.register_abm({ minetest.register_abm({
nodenames = {WeT}, nodenames = {WeT},
interval = 3600, --1200, -- 20 minutes: a minetest-day/night-cycle interval = REED_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
chance = 1, chance = 1,
action = function(pos) action = function(pos)
local direction = minetest.get_node(pos).param2 local direction = minetest.get_node(pos).param2
@ -257,6 +258,7 @@ for i in pairs(DRyiNG) do
end, end,
}) })
end end
end
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- Reed -- Reed
@ -267,7 +269,6 @@ minetest.register_node("dryplants:reed", {
paramtype2 = "facedir", paramtype2 = "facedir",
tiles = {"dryplants_reed.png"}, tiles = {"dryplants_reed.png"},
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
@ -289,7 +290,6 @@ minetest.register_node("dryplants:reed_slab", {
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2}, fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
@ -318,15 +318,14 @@ minetest.register_node("dryplants:reed_roof", {
} }
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- Reed Roof Corner 1 -- Reed Roof Corner
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
minetest.register_node("dryplants:reed_roof_corner", { minetest.register_node("dryplants:reed_roof_corner", {
description = S("Reed Roof Corner 1"), description = S("Reed Roof Corner"),
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
@ -349,7 +348,6 @@ minetest.register_node("dryplants:reed_roof_corner", {
} }
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })
@ -380,6 +378,5 @@ minetest.register_node("dryplants:reed_roof_corner_2", {
} }
}, },
groups = {snappy=3, flammable=2}, groups = {snappy=3, flammable=2},
is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
}) })

View File

@ -1,3 +1,13 @@
-----------------------------------------------------------------------------------------------
-- Grasses - Reedmace 0.1.1
-----------------------------------------------------------------------------------------------
-- by Mossmanikin
-- textures & ideas partly by Neuromancer
-- Contains code from: biome_lib
-- Looked at code from: default, trees
-----------------------------------------------------------------------------------------------
-- NOTES (from wikipedia, some of this might get implemented) -- NOTES (from wikipedia, some of this might get implemented)
-- rhizomes are edible -- rhizomes are edible
-- outer portion of young plants can be peeled and the heart can be eaten raw or boiled and eaten like asparagus -- outer portion of young plants can be peeled and the heart can be eaten raw or boiled and eaten like asparagus
@ -14,16 +24,14 @@ local S = minetest.get_translator("dryplants")
-- REEDMACE SHAPES -- REEDMACE SHAPES
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
local function grow_reedmace(pos) abstract_dryplants.grow_reedmace = function(pos)
local size = math.random(1,3) local size = math.random(1,3)
local spikes = math.random(1,3) local spikes = math.random(1,3)
local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z} local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z} local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z}
local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z} local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z}
if minetest.get_node(pos_01).name == "air" -- bug fix
local nodename = minetest.get_node(pos_01).name or minetest.get_node(pos_01).name == "dryplants:reedmace_sapling" then
if nodename == "air" -- bug fix
or nodename == "dryplants:reedmace_sapling" then
if minetest.get_node(pos_02).name ~= "air" then if minetest.get_node(pos_02).name ~= "air" then
minetest.swap_node(pos_01, {name="dryplants:reedmace_top"}) minetest.swap_node(pos_01, {name="dryplants:reedmace_top"})
elseif minetest.get_node(pos_03).name ~= "air" then elseif minetest.get_node(pos_03).name ~= "air" then
@ -42,16 +50,14 @@ local function grow_reedmace(pos)
end end
end end
local function grow_reedmace_water(pos) abstract_dryplants.grow_reedmace_water = function(pos)
local size = math.random(1,3) local size = math.random(1,3)
local spikes = math.random(1,3) local spikes = math.random(1,3)
local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z} local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z}
local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z} local pos_02 = {x = pos.x, y = pos.y + 2, z = pos.z}
local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z} local pos_03 = {x = pos.x, y = pos.y + 3, z = pos.z}
local pos_04 = {x = pos.x, y = pos.y + 4, z = pos.z} local pos_04 = {x = pos.x, y = pos.y + 4, z = pos.z}
minetest.add_entity(pos_01, "dryplants:reedmace_water_entity") minetest.add_entity(pos_01, "dryplants:reedmace_water_entity")
if minetest.get_node(pos_02).name == "air" then -- bug fix if minetest.get_node(pos_02).name == "air" then -- bug fix
if minetest.get_node(pos_03).name ~= "air" then if minetest.get_node(pos_03).name ~= "air" then
minetest.swap_node(pos_02, {name="dryplants:reedmace_top"}) minetest.swap_node(pos_02, {name="dryplants:reedmace_top"})
@ -71,8 +77,6 @@ local function grow_reedmace_water(pos)
end end
end end
abstract_dryplants.grow_reedmace = grow_reedmace -- compatibility
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- REEDMACE SPIKES -- REEDMACE SPIKES
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
@ -88,7 +92,6 @@ minetest.register_node("dryplants:reedmace_spikes", {
flammable=2, flammable=2,
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
is_ground_content = false,
drop = 'dryplants:reedmace_sapling', drop = 'dryplants:reedmace_sapling',
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
selection_box = { selection_box = {
@ -111,7 +114,6 @@ minetest.register_node("dryplants:reedmace_top", {
flammable=2, flammable=2,
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
is_ground_content = false,
drop = 'dryplants:reedmace_sapling', drop = 'dryplants:reedmace_sapling',
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
selection_box = { selection_box = {
@ -135,7 +137,6 @@ minetest.register_node("dryplants:reedmace_height_2", {
flammable=2--, flammable=2--,
--not_in_creative_inventory=1 --not_in_creative_inventory=1
}, },
is_ground_content = false,
drop = 'dryplants:reedmace_sapling', drop = 'dryplants:reedmace_sapling',
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
selection_box = { selection_box = {
@ -159,7 +160,6 @@ minetest.register_node("dryplants:reedmace_height_3", {
flammable=2--, flammable=2--,
--not_in_creative_inventory=1 --not_in_creative_inventory=1
}, },
is_ground_content = false,
drop = 'dryplants:reedmace_sapling', drop = 'dryplants:reedmace_sapling',
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
selection_box = { selection_box = {
@ -183,7 +183,6 @@ minetest.register_node("dryplants:reedmace_height_3_spikes", {
flammable=2--, flammable=2--,
--not_in_creative_inventory=1 --not_in_creative_inventory=1
}, },
is_ground_content = false,
drop = 'dryplants:reedmace_sapling', drop = 'dryplants:reedmace_sapling',
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
selection_box = { selection_box = {
@ -206,7 +205,6 @@ minetest.register_node("dryplants:reedmace", {
flammable=2, flammable=2,
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
is_ground_content = false,
drop = 'dryplants:reedmace_sapling', drop = 'dryplants:reedmace_sapling',
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
selection_box = { selection_box = {
@ -237,7 +235,6 @@ minetest.register_node("dryplants:reedmace_bottom", {
flammable=2, flammable=2,
not_in_creative_inventory=1 not_in_creative_inventory=1
}, },
is_ground_content = false,
drop = 'dryplants:reedmace_sapling', drop = 'dryplants:reedmace_sapling',
sounds = default.node_sound_leaves_defaults(), sounds = default.node_sound_leaves_defaults(),
selection_box = { selection_box = {
@ -279,19 +276,19 @@ minetest.register_node("dryplants:reedmace_sapling", {
-- abm -- abm
minetest.register_abm({ minetest.register_abm({
nodenames = "dryplants:reedmace_sapling", nodenames = "dryplants:reedmace_sapling",
interval = 600, interval = REEDMACE_GROWING_TIME,
chance = 100/5, chance = 100/REEDMACE_GROWING_CHANCE,
action = function(pos, node, _, _) action = function(pos, node, _, _)
if string.find(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z }).name, "default:water") if string.find(minetest.get_node({x = pos.x + 1, y = pos.y, z = pos.z }).name, "default:water")
or string.find(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}).name, "default:water") or string.find(minetest.get_node({x = pos.x, y = pos.y, z = pos.z + 1}).name, "default:water")
or string.find(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z }).name, "default:water") or string.find(minetest.get_node({x = pos.x - 1, y = pos.y, z = pos.z }).name, "default:water")
or string.find(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}).name, "default:water") then or string.find(minetest.get_node({x = pos.x, y = pos.y, z = pos.z - 1}).name, "default:water") then
if minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then if minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then
grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z}) abstract_dryplants.grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z})
end end
minetest.swap_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"}) minetest.swap_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"})
else else
grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z}) abstract_dryplants.grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z})
end end
end end
}) })
@ -321,7 +318,7 @@ minetest.register_entity("dryplants:reedmace_water_entity",{
collisionbox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}, collisionbox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
on_punch = function(self, puncher) on_punch = function(self, puncher)
if puncher:is_player() and puncher:get_inventory() then if puncher:is_player() and puncher:get_inventory() then
if not minetest.is_creative_enabled(puncher:get_player_name()) then if not minetest.setting_getbool("creative_mode") then
puncher:get_inventory():add_item("main", "dryplants:reedmace_sapling") puncher:get_inventory():add_item("main", "dryplants:reedmace_sapling")
end end
self.object:remove() self.object:remove()
@ -329,120 +326,86 @@ minetest.register_entity("dryplants:reedmace_water_entity",{
end, end,
}) })
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- SPAWN REEDMACE
-----------------------------------------------------------------------------------------------
--[[biome_lib.register_active_spawner({
spawn_delay = 1200,
spawn_plants = {"dryplants:reedmace_sapling"},
spawn_chance = 400,
spawn_surfaces = {
"default:dirt_with_grass",
"default:desert_sand",
"default:sand",
"dryplants:grass_short",
"stoneage:grass_with_silex"
},
seed_diff = 329,
near_nodes = {"default:water_source"},
near_nodes_size = 2,
near_nodes_vertical = 1,
near_nodes_count = 1,
})]]
-----------------------------------------------------------------------------------------------
-- GENERATE REEDMACE -- GENERATE REEDMACE
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- near water or swamp -- near water or swamp
minetest.register_decoration({ pl.register_on_generate({
name = "dryplants:reedmace_swamp", surface = {
decoration = {"air"},
fill_ratio = "0.05",
y_min = 1,
y_max = 40,
place_on = {
"default:dirt_with_grass", "default:dirt_with_grass",
"default:desert_sand", "default:desert_sand",
"stoneage:grass_with_silex", "stoneage:grass_with_silex",
"sumpf:peat", "sumpf:peat",
"sumpf:sumpf" "sumpf:sumpf"
}, },
deco_type = "simple", noise_params = pl.generate_noise_params({max_count = REEDMACE_NEAR_WATER_PER_MAPBLOCK, rarity = 101 - REEDMACE_NEAR_WATER_RARITY}),
flags = "all_floors", --rarity = 60,
spawn_by = { min_elevation = 1, -- above sea level
"default:water_source", near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
"sumpf:dirtywater_source", near_nodes_size = 2,
"sumpf:sumpf" near_nodes_vertical = 1,
near_nodes_count = 1,
}, },
check_offset = -1, "dryplants:reedmace_near_water",
num_spawn_by = 1 abstract_dryplants.grow_reedmace
}) )
-- in water -- in water
minetest.register_decoration({ pl.register_on_generate({
name = "dryplants:reedmace_water", surface = {
decoration = {"air"},
fill_ratio = "0.01",
y_min = 0,
y_max = 0,
place_on = {
"default:dirt", "default:dirt",
"default:dirt_with_grass", "default:dirt_with_grass",
--"default:desert_sand",
--"stoneage:grass_with_silex",
"stoneage:sand_with_silex", "stoneage:sand_with_silex",
"sumpf:peat", "sumpf:peat",
"sumpf:sumpf" "sumpf:sumpf"
}, },
deco_type = "simple", noise_params = pl.generate_noise_params({max_count = REEDMACE_IN_WATER_PER_MAPBLOCK, rarity = 101 - REEDMACE_IN_WATER_RARITY}),
flags = "all_floors", --rarity = 35,
spawn_by = { min_elevation = 0, -- a bit below sea level
"default:water_source", max_elevation = 0, -- ""
"sumpf:dirtywater_source" near_nodes = {"default:water_source","sumpf:dirtywater_source"},
near_nodes_size = 1,
near_nodes_count = 1,
}, },
check_offset = -1, "dryplants:reedmace_in_water",
num_spawn_by = 1 abstract_dryplants.grow_reedmace_water
}) )
-- for oases & tropical beaches & tropical swamps -- for oases & tropical beaches & tropical swamps
minetest.register_decoration({ pl.register_on_generate({
name = "dryplants:reedmace_beach", surface = {
decoration = {"air"},
fill_ratio = "0.05",
y_min = 1,
y_max = 40,
place_on = {
"default:sand", "default:sand",
"sumpf:sumpf" "sumpf:sumpf"
}, },
deco_type = "simple", noise_params = pl.generate_noise_params({max_count = REEDMACE_FOR_OASES_PER_MAPBLOCK, 101 - REEDMACE_FOR_OASES_RARITY}),
flags = "all_floors", --rarity = 10,
spawn_by = { neighbors = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
"default:water_source", ncount = 1,
"sumpf:dirtywater_source", min_elevation = 1, -- above sea level
"sumpf:sumpf", near_nodes = {"default:desert_sand","sumpf:sumpf"},
"default:desert_sand" near_nodes_size = 2,
near_nodes_vertical = 1,
near_nodes_count = 1,
}, },
check_offset = -1, "dryplants:reemace_oases",
num_spawn_by = 1 abstract_dryplants.grow_reedmace
}) )
local did, did2, did3
minetest.register_on_mods_loaded(function()
did = minetest.get_decoration_id("dryplants:reedmace_swamp")
did2 = minetest.get_decoration_id("dryplants:reedmace_water")
did3 = minetest.get_decoration_id("dryplants:reedmace_beach")
minetest.set_gen_notify("decoration", {did, did2, did3})
end)
minetest.register_on_generated(function(minp, maxp, blockseed)
local g = minetest.get_mapgen_object("gennotify")
local locations = {}
local deco_locations_1 = g["decoration#" .. did] or {}
local deco_locations_3 = g["decoration#" .. did3] or {}
for _, pos in pairs(deco_locations_1) do
locations[#locations+1] = pos
end
for _, pos in pairs(deco_locations_3) do
locations[#locations+1] = pos
end
if #locations == 0 then return end
for _, pos in ipairs(locations) do
grow_reedmace(pos)
end
end)
minetest.register_on_generated(function(minp, maxp, blockseed)
local g = minetest.get_mapgen_object("gennotify")
local locations = {}
local deco_locations_2 = g["decoration#" .. did2] or {}
for _, pos in pairs(deco_locations_2) do
locations[#locations+1] = pos
end
if #locations == 0 then return end
for _, pos in ipairs(locations) do
grow_reedmace_water(pos)
end
end)

52
dryplants/settings.txt Normal file
View File

@ -0,0 +1,52 @@
-- Here you can enable/disable the different plants
REEDMACE_GENERATES = true
SMALL_JUNCUS_GENERATES = true
EXTRA_TALL_GRASS_GENERATES = true
-- Amount of Reedmace near water or swamp
REEDMACE_NEAR_WATER_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
REEDMACE_NEAR_WATER_RARITY = 40 -- percent
-- Amount of Reedmace in water
REEDMACE_IN_WATER_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
REEDMACE_IN_WATER_RARITY = 65 -- percent
-- Amount of Reedmace for oases, tropical beaches and tropical swamps
REEDMACE_FOR_OASES_PER_MAPBLOCK = 35 -- plants per 80x80x80 nodes (absolute maximum number)
REEDMACE_FOR_OASES_RARITY = 90 -- percent
-- growing of reedmace sapling
REEDMACE_GROWING_TIME = 600 -- seconds
REEDMACE_GROWING_CHANCE = 5 -- percent
-- Amount of small Juncus near water or swamp
JUNCUS_NEAR_WATER_PER_MAPBLOCK = 70 -- plants per 80x80x80 nodes (absolute maximum number)
JUNCUS_NEAR_WATER_RARITY = 75 -- percent
-- Amount of small Juncus at dunes/beach
JUNCUS_AT_BEACH_PER_MAPBLOCK = 70 -- plants per 80x80x80 nodes (absolute maximum number)
JUNCUS_AT_BEACH_RARITY = 75 -- percent
-- Tall Grass on dirt with grass
TALL_GRASS_PER_MAPBLOCK = 4800 -- plants per 80x80x80 nodes (absolute maximum number)
TALL_GRASS_RARITY = 75 -- percent
-- short grass becomes dirt with grass again
GRASS_REGROWING_TIME = 1200 -- seconds
GRASS_REGROWING_CHANCE = 5 -- percent
HAY_DRYING_TIME = 3600 -- seconds
REED_WILL_DRY = false -- wet reed nodes will become dry reed nodes
REED_DRYING_TIME = 3600 -- seconds
AUTO_ROOF_CORNER = true

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 B

Some files were not shown because too many files have changed in this diff Show More