forked from mtcontrib/plantlife_modpack
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
cd93d09d01
13
.github/workflows/luacheck.yml
vendored
Normal file
13
.github/workflows/luacheck.yml
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
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
1
.gitignore
vendored
@ -1 +0,0 @@
|
||||
*~
|
23
.luacheckrc
23
.luacheckrc
@ -1,14 +1,21 @@
|
||||
unused_args = false
|
||||
allow_defined_top = true
|
||||
max_line_length = 185
|
||||
|
||||
read_globals = {
|
||||
exclude_files = {".luacheckrc"}
|
||||
|
||||
globals = {
|
||||
"biome_lib",
|
||||
"DIR_DELIM",
|
||||
"minetest", "core",
|
||||
"dump",
|
||||
"vector", "nodeupdate",
|
||||
"VoxelManip", "VoxelArea",
|
||||
"PseudoRandom", "ItemStack",
|
||||
"default",
|
||||
"bushes_classic",
|
||||
}
|
||||
|
||||
read_globals = {
|
||||
table = {fields = {"copy"}},
|
||||
|
||||
"minetest", "ItemStack",
|
||||
"vector",
|
||||
|
||||
"default",
|
||||
"moretrees",
|
||||
"dump",
|
||||
}
|
||||
|
@ -1,10 +1,5 @@
|
||||
-- 3D Mushroom mod by VanessaE
|
||||
|
||||
mushroom = {}
|
||||
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("3dmushrooms")
|
||||
|
||||
minetest.override_item("flowers:mushroom_fertile_brown", {
|
||||
drawtype = "mesh",
|
||||
mesh = "3dmushrooms.obj",
|
||||
@ -68,5 +63,3 @@ minetest.register_alias("mushroom:spore1", "flowers:mushroom_spores_red")
|
||||
minetest.register_alias("mushroom:poison", "flowers:mushroom_red")
|
||||
|
||||
minetest.register_alias("mushroom:identifier", "default:mese_crystal_fragment")
|
||||
|
||||
minetest.log("info", S("[3D Mushrooms] loaded."))
|
||||
|
@ -1,8 +0,0 @@
|
||||
# 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.
|
@ -1,8 +0,0 @@
|
||||
# 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.
|
@ -1,8 +0,0 @@
|
||||
# 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.=
|
@ -1,2 +1,2 @@
|
||||
name = 3dmushrooms
|
||||
depends = default, flowers
|
||||
depends = flowers
|
||||
|
217
bushes/init.lua
217
bushes/init.lua
@ -6,20 +6,11 @@
|
||||
-- (Leaf texture created by RealBadAngel or VanessaE)
|
||||
-- Branch textures created by Neuromancer.
|
||||
|
||||
local random = math.random
|
||||
|
||||
-- support for i18n
|
||||
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_bush_fertility = tonumber(minetest.settings:get("bushes_bush_fertility")) or -1
|
||||
|
||||
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 bushes_youngtrees_fertility = tonumber(minetest.settings:get("bushes_youngtrees_fertility")) or -0.5
|
||||
|
||||
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", {
|
||||
description = S("Young Tree 2 (bottom)"),
|
||||
@ -33,7 +24,6 @@ minetest.register_node("bushes:youngtree2_bottom", {
|
||||
node_box = {
|
||||
type = "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
|
||||
}
|
||||
},
|
||||
@ -42,10 +32,10 @@ minetest.register_node("bushes:youngtree2_bottom", {
|
||||
drop = 'default:stick'
|
||||
})
|
||||
|
||||
local BushBranchCenter = { {1,1}, {3,2} }
|
||||
local BushBranchCenter = { {1,1}, {3,2} }
|
||||
for i in pairs(BushBranchCenter) do
|
||||
local Num = BushBranchCenter[i][1]
|
||||
local TexNum = BushBranchCenter[i][2]
|
||||
local Num = BushBranchCenter[i][1]
|
||||
local TexNum = BushBranchCenter[i][2]
|
||||
minetest.register_node("bushes:bushbranches"..Num, {
|
||||
description = S("Bush Branches @1", Num),
|
||||
drawtype = "nodebox",
|
||||
@ -81,10 +71,10 @@ for i in pairs(BushBranchCenter) do
|
||||
})
|
||||
end
|
||||
|
||||
local BushBranchSide = { {2,1}, {4,2} }
|
||||
local BushBranchSide = { {2,1}, {4,2} }
|
||||
for i in pairs(BushBranchSide) do
|
||||
local Num = BushBranchSide[i][1]
|
||||
local TexNum = BushBranchSide[i][2]
|
||||
local Num = BushBranchSide[i][1]
|
||||
local TexNum = BushBranchSide[i][2]
|
||||
minetest.register_node("bushes:bushbranches"..Num, {
|
||||
description = S("Bush Branches @1", Num),
|
||||
drawtype = "nodebox",
|
||||
@ -126,7 +116,7 @@ for i in pairs(BushBranchSide) do
|
||||
})
|
||||
end
|
||||
|
||||
local BushLeafNode = { {1}, {2}}
|
||||
local BushLeafNode = { {1}, {2}}
|
||||
for i in pairs(BushLeafNode) do
|
||||
local Num = BushLeafNode[i][1]
|
||||
minetest.register_node("bushes:BushLeaves"..Num, {
|
||||
@ -145,33 +135,12 @@ for i in pairs(BushLeafNode) do
|
||||
})
|
||||
end
|
||||
|
||||
abstract_bushes.grow_bush = function(pos)
|
||||
local leaf_type = random(1,2)
|
||||
for _, pos_dir in ipairs({
|
||||
{ pos = {x=pos.x+1, y=pos.y+random(0,1), z=pos.z},
|
||||
dir = 3},
|
||||
{ pos = {x=pos.x-1, y=pos.y+random(0,1), z=pos.z},
|
||||
dir = 1},
|
||||
{ pos = {x=pos.x, y=pos.y+random(0,1), z=pos.z+1},
|
||||
dir = 2},
|
||||
{ pos = {x=pos.x, y=pos.y+random(0,1), z=pos.z-1},
|
||||
dir = 0}
|
||||
}) do
|
||||
if random(1,10) > 5 then
|
||||
abstract_bushes.grow_bush_node(pos_dir.pos, pos_dir.dir, leaf_type)
|
||||
end
|
||||
end
|
||||
abstract_bushes.grow_bush_node(pos,5,leaf_type)
|
||||
end
|
||||
|
||||
|
||||
abstract_bushes.grow_bush_node = function(pos,dir, leaf_type)
|
||||
local function grow_bush_node(pos, dir, leaf_type)
|
||||
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 bush_branch_type = 2
|
||||
|
||||
-- MM: I'm not sure if it's slower now than before...
|
||||
if dir ~= 5 and leaf_type == 1 then
|
||||
bush_branch_type = 2
|
||||
end
|
||||
@ -187,50 +156,108 @@ abstract_bushes.grow_bush_node = function(pos,dir, leaf_type)
|
||||
dir = 1
|
||||
end
|
||||
|
||||
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
|
||||
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||
local nodename = minetest.get_node(right_here).name
|
||||
if nodename == "air" or nodename == "default:junglegrass" then -- instead of check_air = true,
|
||||
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})
|
||||
if random(1,10) > 5 then
|
||||
--minetest.chat_send_all("leaf_type: (" .. leaf_type .. ")")
|
||||
minetest.swap_node({x=pos.x, y=pos.y+3, z=pos.z}, {name="bushes:BushLeaves"..leaf_type})
|
||||
|
||||
local chance_of_high_leaves = math.random(1,10)
|
||||
if chance_of_high_leaves > 5 then
|
||||
local two_above_right_here = {x=pos.x, y=pos.y+3, z=pos.z}
|
||||
minetest.swap_node(two_above_right_here, {name="bushes:BushLeaves"..leaf_type})
|
||||
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"})
|
||||
|
||||
biome_lib.register_on_generate({
|
||||
surface = {
|
||||
"default:dirt_with_grass",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
rarity = bushes_bush_rarity,
|
||||
rarity_fertility = bushes_bush_rarity_fertility,
|
||||
plantlife_limit = bushes_bush_fertility,
|
||||
min_elevation = 1, -- above sea level
|
||||
},
|
||||
abstract_bushes.grow_bush
|
||||
)
|
||||
local leaf_type = math.random(1,2)
|
||||
local bush_side_height = math.random(0,1)
|
||||
|
||||
abstract_bushes.grow_youngtree2 = function(pos)
|
||||
abstract_bushes.grow_youngtree_node2(pos, random(4,5))
|
||||
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",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
})
|
||||
|
||||
abstract_bushes.grow_youngtree_node2 = function(pos, height)
|
||||
--[[
|
||||
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 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
|
||||
|
||||
if #locations == 0 then return end
|
||||
for _, pos in ipairs(locations) do
|
||||
grow_bush(pos)
|
||||
end
|
||||
end)
|
||||
|
||||
local function grow_youngtree_node2(pos, height)
|
||||
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 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}
|
||||
|
||||
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
|
||||
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||
local nodename = minetest.get_node(right_here).name
|
||||
if nodename == "air" or nodename == "default:junglegrass" then -- instead of check_air = true,
|
||||
if height == 4 then
|
||||
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}
|
||||
|
||||
minetest.swap_node(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})
|
||||
@ -241,20 +268,52 @@ abstract_bushes.grow_youngtree_node2 = function(pos, height)
|
||||
end
|
||||
end
|
||||
|
||||
local function grow_youngtree2(pos)
|
||||
local height = math.random(4,5)
|
||||
grow_youngtree_node2(pos,height)
|
||||
end
|
||||
|
||||
biome_lib.register_on_generate({
|
||||
surface = {
|
||||
"default:dirt_with_grass",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
rarity = bushes_youngtrees_rarity,
|
||||
rarity_fertility = bushes_youngtrees_rarity_fertility,
|
||||
plantlife_limit = bushes_youngtrees_fertility,
|
||||
min_elevation = 1, -- above sea level
|
||||
minetest.register_decoration({
|
||||
name = "bushes:youngtree",
|
||||
decoration = {
|
||||
"air"
|
||||
},
|
||||
abstract_bushes.grow_youngtree2
|
||||
)
|
||||
fill_ratio = youngtree_rarity,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:dirt_with_grass",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
})
|
||||
|
||||
--[[
|
||||
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)
|
||||
|
||||
minetest.log("action", "[bushes] loaded.")
|
||||
|
@ -1,10 +1,4 @@
|
||||
# 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)
|
||||
Bush Branches @1=Buschäste @1
|
||||
Bush Leaves @1=Buschblätter @1
|
||||
|
@ -1,10 +1,4 @@
|
||||
# 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)
|
||||
Bush Branches @1=Arbustaj Branĉoj @1
|
||||
Bush Leaves @1=Arbustaj Folioj @1
|
||||
|
@ -1,11 +1,4 @@
|
||||
# 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)
|
||||
Bush Branches @1=Branches de buisson @1
|
||||
Bush Leaves @1=Feuilles de buisson @1
|
||||
|
@ -1,10 +1,4 @@
|
||||
# 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)=
|
||||
Bush Branches @1=
|
||||
Bush Leaves @1=
|
||||
|
@ -1,3 +1,4 @@
|
||||
name = bushes
|
||||
depends = default, biome_lib
|
||||
optional_depends = stoneage, sumpf
|
||||
title = Bushes
|
||||
depends = default
|
||||
optional_depends = stoneage, sumpf, ebiomes
|
||||
|
@ -1,17 +1,5 @@
|
||||
#Bush rarity %
|
||||
bushes_bush_rarity (Bush rarity %) float 99.9 0 100
|
||||
# Bush rarity (higher number -> higher probability)
|
||||
bushes.bush_rarity (Bush rarity) float 0.008 0.0001 1
|
||||
|
||||
#How much the rarity is reduced by fertility %
|
||||
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
|
||||
# Youngtree rarity (higher number -> higher probability)
|
||||
bushes.youngtree_rarity (Youngtree rarity) float 0.006 0.0001 1
|
||||
|
@ -33,9 +33,12 @@ end
|
||||
|
||||
-- override farming_plus strawberry and add food_ group
|
||||
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", {
|
||||
groups = {food_strawberry = 1, food_berry = 1, flammable = 2},
|
||||
groups = groups,
|
||||
})
|
||||
end
|
||||
|
||||
|
@ -7,7 +7,7 @@ bushes_classic = {}
|
||||
local S = minetest.get_translator("bushes_classic")
|
||||
|
||||
bushes_classic.bushes = {
|
||||
"strawberry",
|
||||
"strawberry",
|
||||
"blackberry",
|
||||
"blueberry",
|
||||
"raspberry",
|
||||
@ -30,12 +30,19 @@ local modpath = minetest.get_modpath('bushes_classic')
|
||||
dofile(modpath..'/cooking.lua')
|
||||
dofile(modpath..'/nodes.lua')
|
||||
|
||||
biome_lib.register_active_spawner({
|
||||
spawn_delay = 3600,
|
||||
spawn_plants = bushes_classic.spawn_list,
|
||||
avoid_radius = 10,
|
||||
spawn_chance = 100,
|
||||
spawn_surfaces = {
|
||||
local spawn_plants = bushes_classic.spawn_list
|
||||
|
||||
local function get_biome_data(pos, perlin_fertile)
|
||||
local fertility = perlin_fertile:get_2d({x=pos.x, y=pos.z})
|
||||
|
||||
local data = minetest.get_biome_data(pos)
|
||||
-- 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",
|
||||
"woodsoils:dirt_with_leaves_1",
|
||||
"woodsoils:grass_with_leaves_1",
|
||||
@ -43,16 +50,31 @@ biome_lib.register_active_spawner({
|
||||
"farming:soil",
|
||||
"farming:soil_wet"
|
||||
},
|
||||
avoid_nodes = {"group:bush"},
|
||||
seed_diff = 545342534, -- chosen by a fair mashing of the keyboard - guaranteed to be random :P
|
||||
plantlife_limit = -0.1,
|
||||
light_min = 10,
|
||||
temp_min = 0.15, -- approx 20C
|
||||
temp_max = -0.15, -- approx 35C
|
||||
humidity_min = 0, -- 50% RH
|
||||
humidity_max = -1, -- 100% RH
|
||||
interval = 3600,
|
||||
chance = 100,
|
||||
label = "[bushes_classic] spawn bushes",
|
||||
min_y = -16,
|
||||
max_y = 48,
|
||||
action = function(pos, node)
|
||||
local p_top = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
local n_top = minetest.get_node_or_nil(p_top)
|
||||
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")
|
||||
|
||||
print("[Bushes] Loaded.")
|
||||
|
@ -1,46 +1,39 @@
|
||||
# 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
|
||||
Basket with Strawberry pies=Korb mit Erdbeertorten
|
||||
Cooked Strawberry pie=Erdbeertorte
|
||||
Raw Strawberry pie=Rohe Erdbeertorte
|
||||
Slice of Strawberry pie=Erdbeertortenstueck
|
||||
Strawberry=Erdbeere
|
||||
Raw Strawberry pie=Rohe Erdbeertorte
|
||||
Cooked Strawberry pie=Erdbeertorte
|
||||
Slice of Strawberry pie=Erdbeertortenstück
|
||||
Basket with Strawberry pies=Korb mit Erdbeertorten
|
||||
Strawberry Bush=Erdbeerbusch
|
||||
Basket with Blackberry pies=Korb mit Brombeertorten
|
||||
Blackberry=Brombeere
|
||||
Blackberry Bush=Brombeerbusch
|
||||
Cooked Blackberry pie=Brombeertorte
|
||||
Raw Blackberry pie=Rohe Brombeertorte
|
||||
Slice of Blackberry pie=Brombeertortenstueck
|
||||
Basket with Blueberry pies=Korb mit Blaubeertorten
|
||||
Cooked Blackberry pie=Brombeertorte
|
||||
Slice of Blackberry pie=Brombeertortenstück
|
||||
Basket with Blackberry pies=Korb mit Brombeertorten
|
||||
Blackberry Bush=Brombeerbusch
|
||||
Blueberry=Blaubeere
|
||||
Blueberry Bush=Blaubeerbusch
|
||||
Cooked Blueberry pie=Blaubeertorte
|
||||
Raw Blueberry pie=Rohe Blaubeertorte
|
||||
Slice of Blueberry pie=Blaubeertortenstueck
|
||||
Basket with Raspberry pies=Korb mit Himbeertorten
|
||||
Cooked Raspberry pie=Himbeertorte
|
||||
Cooked Blueberry pie=Blaubeertorte
|
||||
Slice of Blueberry pie=Blaubeertortenstück
|
||||
Basket with Blueberry pies=Korb mit Blaubeertorten
|
||||
Blueberry Bush=Blaubeerbusch
|
||||
Raspberry=Himbeere
|
||||
Raspberry Bush=Himbeerbusch
|
||||
Raw Raspberry pie=Rohe Himbeertorte
|
||||
Slice of Raspberry pie=Himbeertortenstueck
|
||||
Basket with Gooseberry pies=Korb mit Stachelbeertorten
|
||||
Cooked Gooseberry pie=Stachelbeertorte
|
||||
Cooked Raspberry pie=Himbeertorte
|
||||
Slice of Raspberry pie=Himbeertortenstück
|
||||
Basket with Raspberry pies=Korb mit Himbeertorten
|
||||
Raspberry Bush=Himbeerbusch
|
||||
Gooseberry=Stachelbeere
|
||||
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
|
||||
Cooked Gooseberry pie=Stachelbeertorte
|
||||
Slice of Gooseberry pie=Stachelbeertortenstück
|
||||
Basket with Gooseberry pies=Korb mit Stachelbeertorten
|
||||
Gooseberry Bush=Stachelbeerbusch
|
||||
Mixed Berry=Beerenmix
|
||||
Raw Mixed Berry pie=Rohe Beerenmixtorte
|
||||
Slice of Mixed Berry pie=Beerenmixtortenstueck
|
||||
Cooked Mixed Berry pie=Beerenmixtorte
|
||||
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
|
||||
|
@ -1,46 +1,39 @@
|
||||
# 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
|
||||
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
|
||||
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
|
||||
Strawberry Bush=Fraga Arbusto
|
||||
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
|
||||
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
|
||||
Blackberry Bush=Rubusa Arbusto
|
||||
Basket with Blueberry pies=Korbo kun Mirtelokukoj
|
||||
Blueberry=Mirtelo
|
||||
Blueberry Bush=Mirtela Arbusto
|
||||
Cooked Blueberry pie=Kuirita Mirtelokuko
|
||||
Raw Blueberry pie=Kruda Mirtelokuko
|
||||
Cooked Blueberry pie=Kuirita Mirtelokuko
|
||||
Slice of Blueberry pie=Tranĉaĵo de Mirtelokuko
|
||||
Basket with Raspberry pies=Korbo kun Frambokukoj
|
||||
Cooked Raspberry pie=Kuirita Frambokuko
|
||||
Basket with Blueberry pies=Korbo kun Mirtelokukoj
|
||||
Blueberry Bush=Mirtela Arbusto
|
||||
Raspberry=Frambo
|
||||
Raspberry Bush=Framba Arbusto
|
||||
Raw Raspberry pie=Kruda Frambokuko
|
||||
Cooked Raspberry pie=Kuirita Frambokuko
|
||||
Slice of Raspberry pie=Tranĉaĵo de Frambokuko
|
||||
Basket with Gooseberry pies=Korbo kun Grosberkuko
|
||||
Cooked Gooseberry pie=Kuirita Grosberkuko
|
||||
Basket with Raspberry pies=Korbo kun Frambokukoj
|
||||
Raspberry Bush=Framba Arbusto
|
||||
Gooseberry=Grosbero
|
||||
Gooseberry Bush=Grosberarbusto
|
||||
Raw Gooseberry pie=Kruda Grosberkuko
|
||||
Cooked Gooseberry pie=Kuirita 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
|
||||
Basket with Gooseberry pies=Korbo kun Grosberkuko
|
||||
Gooseberry Bush=Grosberarbusto
|
||||
Mixed Berry=Miksita Bero
|
||||
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
|
||||
Basket with Mixed Berry pies=Korbo kun Miksitaj Beraj Kukoj
|
||||
Currently fruitless Bush=Nuntempe senfrukta Arbusto
|
||||
Basket=Korbo
|
||||
|
@ -1,46 +1,39 @@
|
||||
# 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
|
||||
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
|
||||
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
|
||||
Strawberry Bush=Arbusto de Frutilla
|
||||
Basket with Blackberry pies=Cesta con Pasteles de Mora
|
||||
Blackberry=Mora
|
||||
Blackberry Bush=Arbusto de Mora
|
||||
Cooked Blackberry pie=Pastel de Mora Cocido
|
||||
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 Blueberry pies=Cesta con Pasteles de Arándano
|
||||
Basket with Blackberry pies=Cesta con Pasteles de Mora
|
||||
Blackberry Bush=Arbusto de Mora
|
||||
Blueberry=Arándano
|
||||
Blueberry Bush=Arbusto de Arándano
|
||||
Cooked Blueberry pie=Pastel de Arándano Cocido
|
||||
Raw Blueberry pie=Pastel de Arándano Crudo
|
||||
Cooked Blueberry pie=Pastel de Arándano Cocido
|
||||
Slice of Blueberry pie=Rebanada de Pastel de Arándano
|
||||
Basket with Raspberry pies=Cesta con Pasteles de Frambuesa
|
||||
Cooked Raspberry pie=Pastel de Frambuesa Cocido
|
||||
Basket with Blueberry pies=Cesta con Pasteles de Arándano
|
||||
Blueberry Bush=Arbusto de Arándano
|
||||
Raspberry=Frambuesa
|
||||
Raspberry Bush=Arbusto de Frambuesa
|
||||
Raw Raspberry pie=Pastel de Frambuesa Crudo
|
||||
Cooked Raspberry pie=Pastel de Frambuesa Cocido
|
||||
Slice of Raspberry pie=Rebanada de Pastel de Frambuesa
|
||||
Basket with Gooseberry pies=Cesta con Pasteles de Grosella
|
||||
Cooked Gooseberry pie=Pastel de Grosella Cocido
|
||||
Basket with Raspberry pies=Cesta con Pasteles de Frambuesa
|
||||
Raspberry Bush=Arbusto de Frambuesa
|
||||
Gooseberry=Grosella
|
||||
Gooseberry Bush=Arbusto de Grosella
|
||||
Raw Gooseberry pie=Pastel de Grosella Crudo
|
||||
Cooked Gooseberry pie=Pastel de Grosella Cocido
|
||||
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
|
||||
Basket with Gooseberry pies=Cesta con Pasteles de Grosella
|
||||
Gooseberry Bush=Arbusto de Grosella
|
||||
Mixed Berry=Mezcla de Baya
|
||||
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
|
||||
Basket with Mixed Berry pies=Cesta con Pasteles de Mezcla de Baya
|
||||
Currently fruitless Bush=Arbusto actualmente infructuoso
|
||||
Basket=Cesta
|
||||
|
@ -1,46 +1,39 @@
|
||||
# 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
|
||||
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
|
||||
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
|
||||
Strawberry Bush=Buisson de fraises
|
||||
Basket with Blackberry pies=Panier de tartes aux fraises
|
||||
Blackberry=Mûres
|
||||
Blackberry Bush=Buisson de mûres
|
||||
Cooked Blackberry pie=Tarte aux mûres (cuite)
|
||||
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 Blueberry pies=Panier de tartes aux mûres
|
||||
Basket with Blackberry pies=Panier de tartes aux fraises
|
||||
Blackberry Bush=Buisson de mûres
|
||||
Blueberry=Myrtilles
|
||||
Blueberry Bush=Buisson de myrtilles
|
||||
Cooked Blueberry pie=Tarte aux myrtilles (cuite)
|
||||
Raw Blueberry pie=Tarte aux myrtilles (crue)
|
||||
Cooked Blueberry pie=Tarte aux myrtilles (cuite)
|
||||
Slice of Blueberry pie=Part de tarte aux myrtilles
|
||||
Basket with Raspberry pies=Panier de tartes aux framboises
|
||||
Cooked Raspberry pie=Tarte aux framboises (cuite)
|
||||
Basket with Blueberry pies=Panier de tartes aux mûres
|
||||
Blueberry Bush=Buisson de myrtilles
|
||||
Raspberry=Framboises
|
||||
Raspberry Bush=Buisson de framboises
|
||||
Raw Raspberry pie=Tarte aux framboises (crue)
|
||||
Cooked Raspberry pie=Tarte aux framboises (cuite)
|
||||
Slice of Raspberry pie=Part de tarts aux framboises
|
||||
Basket with Gooseberry pies=Panier de tartes aux groseilles
|
||||
Cooked Gooseberry pie=Tarte aux groseilles (cuite)
|
||||
Basket with Raspberry pies=Panier de tartes aux framboises
|
||||
Raspberry Bush=Buisson de framboises
|
||||
Gooseberry=Groseilles
|
||||
Gooseberry Bush=Buisson de groseilles
|
||||
Raw Gooseberry pie=Tarte aux groseilles (crue)
|
||||
Cooked Gooseberry pie=Tarte aux groseilles (cuite)
|
||||
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
|
||||
Basket with Gooseberry pies=Panier de tartes aux groseilles
|
||||
Gooseberry Bush=Buisson de groseilles
|
||||
Mixed Berry=Fruits rouges
|
||||
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
|
||||
Basket with Mixed Berry pies=Panier de tartes aux fruits rouges
|
||||
Currently fruitless Bush=Buisson sans fruits pour l'instant
|
||||
Basket=Panier
|
||||
|
@ -1,46 +1,39 @@
|
||||
# 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
|
||||
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
|
||||
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
|
||||
Strawberry Bush=Çilek fidanı
|
||||
Basket with Blackberry pies=Böğürtlenli pasta sepeti
|
||||
Blackberry=Böğürtlen
|
||||
Blackberry Bush=Böğürtlen fidanı
|
||||
Cooked Blackberry pie=Pişmiş böğürtlenli pasta
|
||||
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 Blueberry pies=Yaban mersini pastalı sepet
|
||||
Basket with Blackberry pies=Böğürtlenli pasta sepeti
|
||||
Blackberry Bush=Böğürtlen fidanı
|
||||
Blueberry=Yaban mersini
|
||||
Blueberry Bush=Yaban mersini fidanı
|
||||
Cooked Blueberry pie=Pişmiş yaban mersinli pasta
|
||||
Raw Blueberry pie=Yaban mersinli çiğ pasta
|
||||
Cooked Blueberry pie=Pişmiş yaban mersinli pasta
|
||||
Slice of Blueberry pie=Yaban mersinli pasta dilimi
|
||||
Basket with Raspberry pies=Ahududulu pasta sepeti
|
||||
Cooked Raspberry pie=Pişmiş ahududulu pasta
|
||||
Basket with Blueberry pies=Yaban mersini pastalı sepet
|
||||
Blueberry Bush=Yaban mersini fidanı
|
||||
Raspberry=Ahududu
|
||||
Raspberry Bush=Ahududu fidanı
|
||||
Raw Raspberry pie=Ahududulu çiğ pasta
|
||||
Cooked Raspberry pie=Pişmiş ahududulu pasta
|
||||
Slice of Raspberry pie=Ahududulu pasta dilimi
|
||||
Basket with Gooseberry pies=Bektaşi üzümlü pasta sepeti
|
||||
Cooked Gooseberry pie=Pişmiş bektaşi üzümlü pasta
|
||||
Basket with Raspberry pies=Ahududulu pasta sepeti
|
||||
Raspberry Bush=Ahududu fidanı
|
||||
Gooseberry=Bektaşi üzümü
|
||||
Gooseberry Bush=Bektaşi üzümü fidanı
|
||||
Raw Gooseberry pie=Bektaşi üzümlü çiğ pasta
|
||||
Cooked Gooseberry pie=Pişmiş bektaşi üzümlü 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
|
||||
Basket with Gooseberry pies=Bektaşi üzümlü pasta sepeti
|
||||
Gooseberry Bush=Bektaşi üzümü fidanı
|
||||
Mixed Berry=Dut
|
||||
Raw Mixed Berry pie=Dutlu çiğ pasta
|
||||
Cooked Mixed Berry pie=Pişmiş dutlu pasta
|
||||
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
|
||||
|
@ -1,46 +1,39 @@
|
||||
# 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=
|
||||
Basket with Strawberry pies=
|
||||
Cooked Strawberry pie=
|
||||
Raw Strawberry pie=
|
||||
Slice of Strawberry pie=
|
||||
Strawberry=
|
||||
Raw Strawberry pie=
|
||||
Cooked Strawberry pie=
|
||||
Slice of Strawberry pie=
|
||||
Basket with Strawberry pies=
|
||||
Strawberry Bush=
|
||||
Basket with Blackberry pies=
|
||||
Blackberry=
|
||||
Blackberry Bush=
|
||||
Cooked Blackberry pie=
|
||||
Raw Blackberry pie=
|
||||
Cooked Blackberry pie=
|
||||
Slice of Blackberry pie=
|
||||
Basket with Blueberry pies=
|
||||
Basket with Blackberry pies=
|
||||
Blackberry Bush=
|
||||
Blueberry=
|
||||
Blueberry Bush=
|
||||
Cooked Blueberry pie=
|
||||
Raw Blueberry pie=
|
||||
Cooked Blueberry pie=
|
||||
Slice of Blueberry pie=
|
||||
Basket with Raspberry pies=
|
||||
Cooked Raspberry pie=
|
||||
Basket with Blueberry pies=
|
||||
Blueberry Bush=
|
||||
Raspberry=
|
||||
Raspberry Bush=
|
||||
Raw Raspberry pie=
|
||||
Cooked Raspberry pie=
|
||||
Slice of Raspberry pie=
|
||||
Basket with Gooseberry pies=
|
||||
Cooked Gooseberry pie=
|
||||
Basket with Raspberry pies=
|
||||
Raspberry Bush=
|
||||
Gooseberry=
|
||||
Gooseberry Bush=
|
||||
Raw Gooseberry pie=
|
||||
Cooked Gooseberry pie=
|
||||
Slice of Gooseberry pie=
|
||||
Basket with Mixed Berry pies=
|
||||
Cooked Mixed Berry pie=
|
||||
Currently fruitless Bush=
|
||||
Basket with Gooseberry pies=
|
||||
Gooseberry Bush=
|
||||
Mixed Berry=
|
||||
Raw Mixed Berry pie=
|
||||
Cooked Mixed Berry pie=
|
||||
Slice of Mixed Berry pie=
|
||||
Basket with Mixed Berry pies=
|
||||
Currently fruitless Bush=
|
||||
Basket=
|
||||
|
@ -1,3 +1,2 @@
|
||||
name = bushes_classic
|
||||
depends = biome_lib
|
||||
optional_depends = farming, farming_plus
|
||||
|
@ -163,19 +163,13 @@ for i, bush_name in ipairs(bushes_classic.bushes) do
|
||||
groups = { dig_immediate = 3 },
|
||||
})
|
||||
|
||||
local texture_top, texture_bottom
|
||||
|
||||
local groups = {snappy = 3, bush = 1, flammable = 2, attached_node=1}
|
||||
if bush_name == "mixed_berry" then
|
||||
bush_name = "fruitless";
|
||||
texture_top = "bushes_fruitless_bush_top.png"
|
||||
texture_bottom = "bushes_fruitless_bush_bottom.png"
|
||||
groups.not_in_creative_inventory = 1
|
||||
else
|
||||
texture_top = "bushes_bush_top.png"
|
||||
texture_bottom = "bushes_bush_bottom.png"
|
||||
end
|
||||
|
||||
|
||||
local node_dig_prediction
|
||||
local node_placement_prediction
|
||||
if bush_name ~= "fruitless" then
|
||||
|
@ -1,17 +1,2 @@
|
||||
-----------------------------------------------------------------------------------------------
|
||||
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").."/mapgen.lua")
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
|
||||
|
@ -1,11 +1,4 @@
|
||||
# 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
|
||||
Desert Pebble=Wüstenkiesel
|
||||
Stalactite=Stalaktit
|
||||
|
@ -1,11 +1,4 @@
|
||||
# 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
|
||||
Desert Pebble=Dezerta Ŝtoneto
|
||||
Stalactite=Stalaktito
|
||||
|
@ -1,11 +1,4 @@
|
||||
# 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
|
||||
Desert Pebble=Caillou du désert
|
||||
Stalactite=Stalactite
|
||||
|
@ -1,11 +1,4 @@
|
||||
# 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=
|
||||
Desert Pebble=
|
||||
Stalactite=
|
||||
|
@ -1,39 +1,65 @@
|
||||
--Map Generation Stuff
|
||||
|
||||
biome_lib.register_on_generate(
|
||||
{
|
||||
surface = {
|
||||
"default:dirt_with_grass",
|
||||
"default:gravel",
|
||||
"default:stone",
|
||||
"default:permafrost_with_stones"
|
||||
},
|
||||
max_count = 50,
|
||||
rarity = 0,
|
||||
plantlife_limit = -1,
|
||||
check_air = true,
|
||||
random_facedir = {0, 3}
|
||||
},
|
||||
{
|
||||
minetest.register_decoration({
|
||||
decoration = {
|
||||
"cavestuff:pebble_1",
|
||||
"cavestuff:pebble_2"
|
||||
}
|
||||
)
|
||||
|
||||
biome_lib.register_on_generate(
|
||||
{
|
||||
surface = {
|
||||
"default:desert_sand",
|
||||
"default:desert_stone"
|
||||
},
|
||||
max_count = 50,
|
||||
rarity = 0,
|
||||
plantlife_limit = -1,
|
||||
check_air = true,
|
||||
random_facedir = {0, 3}
|
||||
},
|
||||
{
|
||||
place_on = {
|
||||
"default:dirt_with_grass",
|
||||
"default:gravel",
|
||||
"default:stone",
|
||||
"default:permafrost_with_stones"
|
||||
},
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.0078125,
|
||||
spread = {
|
||||
y = 100,
|
||||
z = 100,
|
||||
x = 100
|
||||
},
|
||||
seed = 0,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
flags = "absvalue",
|
||||
lacunarity = 2
|
||||
},
|
||||
param2 = 0,
|
||||
flags = "all_floors",
|
||||
deco_type = "simple",
|
||||
param2_max = 3,
|
||||
y_min = -16,
|
||||
y_max = 48
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
decoration = {
|
||||
"cavestuff:desert_pebble_1",
|
||||
"cavestuff:desert_pebble_2"
|
||||
}
|
||||
)
|
||||
},
|
||||
place_on = {
|
||||
"default:desert_sand",
|
||||
"default:desert_stone"
|
||||
},
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
scale = 0.0078125,
|
||||
spread = {
|
||||
y = 100,
|
||||
z = 100,
|
||||
x = 100
|
||||
},
|
||||
seed = 0,
|
||||
octaves = 3,
|
||||
persist = 0.6,
|
||||
flags = "absvalue",
|
||||
lacunarity = 2
|
||||
},
|
||||
param2 = 0,
|
||||
flags = "all_floors",
|
||||
deco_type = "simple",
|
||||
param2_max = 3,
|
||||
y_min = -16,
|
||||
y_max = 48
|
||||
})
|
@ -1,2 +1,2 @@
|
||||
name = cavestuff
|
||||
depends = default,biome_lib
|
||||
depends = default
|
||||
|
@ -14,33 +14,32 @@ minetest.register_node("cavestuff:pebble_1",{
|
||||
description = S("Pebble"),
|
||||
drawtype = "mesh",
|
||||
mesh = "cavestuff_pebble.obj",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
paramtype = "light",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=3, stone=1, attached_node=1},
|
||||
selection_box = cbox,
|
||||
collision_box = cbox,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
groups = {cracky=3, stone=1, attached_node=1},
|
||||
selection_box = cbox,
|
||||
collision_box = cbox,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
-- place a random pebble node
|
||||
local stack = ItemStack("cavestuff:pebble_"..random(1,2))
|
||||
local ret = minetest.item_place(stack, placer, pointed_thing)
|
||||
return ItemStack("cavestuff:pebble_1 "..itemstack:get_count()-(1-ret:get_count()))
|
||||
end,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("cavestuff:pebble_2",{
|
||||
drawtype = "mesh",
|
||||
mesh = "cavestuff_pebble.obj",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
drop = "cavestuff:pebble_1",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
paramtype = "light",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1},
|
||||
groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1},
|
||||
selection_box = cbox,
|
||||
collision_box = cbox,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("cavestuff:desert_pebble_1",{
|
||||
@ -102,7 +101,7 @@ minetest.register_node("cavestuff:stalactite_1",{
|
||||
if not placer then return end
|
||||
local playername = placer:get_player_name()
|
||||
if minetest.is_protected(place, playername)
|
||||
or minetest.is_protected(above, playername) then
|
||||
or minetest.is_protected(above, playername) then
|
||||
minetest.record_protection_violation(place, playername)
|
||||
return
|
||||
end
|
||||
@ -115,7 +114,7 @@ minetest.register_node("cavestuff:stalactite_1",{
|
||||
name = "cavestuff:stalactite_"..math.random(1,3),
|
||||
param2 = minetest.dir_to_wallmounted(vector.multiply(dir, -1))
|
||||
})
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
if not minetest.is_creative_enabled(playername) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
end
|
||||
@ -158,5 +157,3 @@ minetest.register_node("cavestuff:stalactite_3",{
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
--Stalagmites
|
||||
|
@ -53,7 +53,7 @@ minetest.register_craft({
|
||||
{"default:stick",""}
|
||||
}
|
||||
})
|
||||
if minetest.get_modpath("flint") ~= nil then
|
||||
if minetest.get_modpath("flint") then
|
||||
minetest.register_craft({
|
||||
output = "dryplants:sickle",
|
||||
recipe = {
|
||||
@ -63,7 +63,7 @@ if minetest.get_modpath("flint") ~= nil then
|
||||
}
|
||||
})
|
||||
end
|
||||
if minetest.get_modpath("stoneage") ~= nil then
|
||||
if minetest.get_modpath("stoneage") then
|
||||
minetest.register_craft({
|
||||
output = "dryplants:sickle",
|
||||
recipe = {
|
||||
|
@ -1,33 +1,15 @@
|
||||
-----------------------------------------------------------------------------------------------
|
||||
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
|
||||
local S = minetest.get_translator("dryplants")
|
||||
|
||||
abstract_dryplants = {}
|
||||
|
||||
dofile(minetest.get_modpath("dryplants").."/crafting.lua")
|
||||
dofile(minetest.get_modpath("dryplants").."/settings.txt")
|
||||
dofile(minetest.get_modpath("dryplants").."/reed.lua")
|
||||
if REEDMACE_GENERATES == true then
|
||||
|
||||
dofile(minetest.get_modpath("dryplants").."/reedmace.lua")
|
||||
end
|
||||
if SMALL_JUNCUS_GENERATES == true then
|
||||
dofile(minetest.get_modpath("dryplants").."/juncus.lua")
|
||||
end
|
||||
if EXTRA_TALL_GRASS_GENERATES == true then
|
||||
dofile(minetest.get_modpath("dryplants").."/moregrass.lua")
|
||||
end
|
||||
|
||||
--dofile(minetest.get_modpath("dryplants").."/meadowvariation.lua")
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
@ -145,7 +127,7 @@ minetest.register_node("dryplants:grass", {
|
||||
-----------------------------------------------------------------------------------------------
|
||||
minetest.register_abm({
|
||||
nodenames = {"dryplants:grass"},
|
||||
interval = HAY_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||
interval = 3600, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.swap_node(pos, {name="dryplants:hay"})
|
||||
@ -191,8 +173,8 @@ minetest.register_node("dryplants:grass_short", {
|
||||
-----------------------------------------------------------------------------------------------
|
||||
minetest.register_abm({
|
||||
nodenames = {"dryplants:grass_short"},
|
||||
interval = GRASS_REGROWING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||
chance = 100/GRASS_REGROWING_CHANCE,
|
||||
interval = 1200, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||
chance = 100/1200,
|
||||
action = function(pos)
|
||||
-- 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})
|
||||
@ -201,7 +183,3 @@ minetest.register_abm({
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
@ -1,24 +1,12 @@
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- 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
|
||||
local S = minetest.get_translator("dryplants")
|
||||
|
||||
local random = math.random
|
||||
local sqrt = math.sqrt
|
||||
|
||||
abstract_dryplants.grow_juncus = function(pos)
|
||||
local juncus_type = random(2,3)
|
||||
local function grow_juncus(pos)
|
||||
local juncus_type = math.random(2,3)
|
||||
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,
|
||||
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||
|
||||
local nodename = minetest.get_node(right_here).name
|
||||
if nodename == "air" or nodename == "default:junglegrass" then
|
||||
if juncus_type == 2 then
|
||||
minetest.swap_node(right_here, {name="dryplants:juncus_02"})
|
||||
else
|
||||
@ -30,7 +18,7 @@ end
|
||||
minetest.register_node("dryplants:juncus", {
|
||||
description = S("Juncus"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = sqrt(8),
|
||||
visual_scale = math.sqrt(8),
|
||||
paramtype = "light",
|
||||
tiles = {"dryplants_juncus_03.png"},
|
||||
inventory_image = "dryplants_juncus_inv.png",
|
||||
@ -49,6 +37,10 @@ minetest.register_node("dryplants:juncus", {
|
||||
fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16},
|
||||
},
|
||||
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()
|
||||
if minetest.is_protected(pointed_thing.above, playername) or
|
||||
minetest.is_protected(pointed_thing.under, playername) then
|
||||
@ -56,23 +48,24 @@ minetest.register_node("dryplants:juncus", {
|
||||
return
|
||||
end
|
||||
local pos = pointed_thing.under
|
||||
local juncus_type = random(2,3)
|
||||
local juncus_type = math.random(2,3)
|
||||
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
if juncus_type == 2 then
|
||||
minetest.swap_node(right_here, {name="dryplants:juncus_02"})
|
||||
else
|
||||
minetest.swap_node(right_here, {name="dryplants:juncus"})
|
||||
end
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
if not minetest.is_creative_enabled(playername) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
return itemstack
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("dryplants:juncus_02", {
|
||||
description = S("Juncus"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = sqrt(8),
|
||||
visual_scale = math.sqrt(8),
|
||||
paramtype = "light",
|
||||
tiles = {"dryplants_juncus_02.png"},
|
||||
walkable = false,
|
||||
@ -95,44 +88,69 @@ minetest.register_node("dryplants:juncus_02", {
|
||||
-- GENERATE SMALL JUNCUS
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- near water or swamp
|
||||
biome_lib.register_on_generate({
|
||||
surface = {
|
||||
minetest.register_decoration({
|
||||
name = "dryplants:juncus_water",
|
||||
decoration = {"air"},
|
||||
fill_ratio = 0.16,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:dirt_with_grass",
|
||||
--"default:desert_sand",
|
||||
--"default:sand",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
max_count = JUNCUS_NEAR_WATER_PER_MAPBLOCK,
|
||||
rarity = 101 - JUNCUS_NEAR_WATER_RARITY,
|
||||
min_elevation = 1, -- above sea level
|
||||
near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
|
||||
near_nodes_size = 2,
|
||||
near_nodes_vertical = 1,
|
||||
near_nodes_count = 1,
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_dryplants.grow_juncus
|
||||
)
|
||||
-- at dunes/beach
|
||||
biome_lib.register_on_generate({
|
||||
surface = {
|
||||
--"default:dirt_with_grass",
|
||||
--"default:desert_sand",
|
||||
"default:sand",
|
||||
--"stoneage:grass_with_silex",
|
||||
--"sumpf:peat",
|
||||
--"sumpf:sumpf"
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {
|
||||
"default:water_source",
|
||||
"sumpf:dirtywater_source",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
max_count = JUNCUS_AT_BEACH_PER_MAPBLOCK,
|
||||
rarity = 101 - JUNCUS_AT_BEACH_RARITY,
|
||||
min_elevation = 1, -- above sea level
|
||||
near_nodes = {"default:dirt_with_grass"},
|
||||
near_nodes_size = 2,
|
||||
near_nodes_vertical = 1,
|
||||
near_nodes_count = 1,
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_dryplants.grow_juncus
|
||||
)
|
||||
check_offset = -1,
|
||||
num_spawn_by = 1
|
||||
})
|
||||
|
||||
-- at dunes/beach
|
||||
minetest.register_decoration({
|
||||
name = "dryplants:juncus_beach",
|
||||
decoration = {"air"},
|
||||
fill_ratio = 0.08,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:sand",
|
||||
},
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {"default:dirt_with_grass"},
|
||||
check_offset = -1,
|
||||
num_spawn_by = 1
|
||||
})
|
||||
|
||||
local did, did2
|
||||
minetest.register_on_mods_loaded(function()
|
||||
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)
|
||||
|
@ -1,25 +1,18 @@
|
||||
# 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
|
||||
Cut Grass=Gras schneiden
|
||||
Cut Grass=Grasschnitt
|
||||
Hay=Heu
|
||||
Short Grass=Kurzes Gras
|
||||
Juncus=Binsen
|
||||
Wet Reed=Nasses Schilf
|
||||
Wet Reed Slab=Nasse Schilfstufe
|
||||
Wet Reed Slab=Nasse Schilfplatte
|
||||
Wet Reed Roof=Nasses Schilfdach
|
||||
Wet Reed Roof Corner=Nasser Schilfdachwinkel
|
||||
Wet Reed Roof Corner 1=Nasser Schilfdachwinkel 1
|
||||
Wet Reed Roof Corner 2=Nasser Schilfdachwinkel 2
|
||||
Reed=Schilf
|
||||
Reed Slab=Schilfstufe
|
||||
Reed Roof=Schilfdach
|
||||
Reed Roof Corner=Schilfdachwinkel
|
||||
Reed Roof Corner 1=Schilfdachwinkel 1
|
||||
Reed Roof Corner 2=Schilfdachwinkel
|
||||
Reedmace=Rohrkolben
|
||||
Reedmace, height: 1=Rohrkolben, Höhe: 1
|
||||
|
@ -1,11 +1,4 @@
|
||||
# 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=
|
||||
Cut Grass=Tranĉita Herbenon
|
||||
Hay=Fojno
|
||||
@ -14,12 +7,12 @@ Juncus=Junko
|
||||
Wet Reed=Malseka Kano
|
||||
Wet Reed Slab=Slabo de Malseka Kano
|
||||
Wet Reed Roof=Tegmento de Malseka Kano
|
||||
Wet Reed Roof Corner=Tegmentangulo de Malseka Kano
|
||||
Wet Reed Roof Corner 1=Tegmentangulo 1 de Malseka Kano
|
||||
Wet Reed Roof Corner 2=Tegmentangulo 2 de Malseka Kano
|
||||
Reed=Kano
|
||||
Reed Slab=Slabo de Kano
|
||||
Reed Roof=Tegmento de Kano
|
||||
Reed Roof Corner=Tegmentangulo de Kano
|
||||
Reed Roof Corner 1=Tegmentangulo 1 de Kano
|
||||
Reed Roof Corner 2=Tegmentangulo 2 de Kano
|
||||
Reedmace=Tifeo
|
||||
Reedmace, height: 1=Tifeo, alteco: 1
|
||||
|
@ -1,11 +1,4 @@
|
||||
# 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
|
||||
Cut Grass=Herbe coupée
|
||||
Hay=Foin
|
||||
@ -14,12 +7,12 @@ Juncus=Joncs
|
||||
Wet Reed=Bloc de roseau humide
|
||||
Wet Reed Slab=Dalle en roseau humide
|
||||
Wet Reed Roof=Toit en roseau humide
|
||||
Wet Reed Roof Corner=Angle de toit en roseau humide
|
||||
Wet Reed Roof Corner 1=Angle de toit en roseau humide 1
|
||||
Wet Reed Roof Corner 2=Angle de toit en roseau humide 2
|
||||
Reed=Roseau
|
||||
Reed Slab=Dalle en roseau
|
||||
Reed Roof=Toit en roseau
|
||||
Reed Roof Corner=Angle de toit en roseau
|
||||
Reed Roof Corner 1=Angle de toit en roseau 1
|
||||
Reed Roof Corner 2=Angle de toit en roseau 2
|
||||
Reedmace=Roseau
|
||||
Reedmace, height: 1=Roseau, 1 de hauteur
|
||||
|
@ -1,11 +1,4 @@
|
||||
# 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=
|
||||
Cut Grass=
|
||||
Hay=
|
||||
@ -14,12 +7,12 @@ Juncus=
|
||||
Wet Reed=
|
||||
Wet Reed Slab=
|
||||
Wet Reed Roof=
|
||||
Wet Reed Roof Corner=
|
||||
Wet Reed Roof Corner 1=
|
||||
Wet Reed Roof Corner 2=
|
||||
Reed=
|
||||
Reed Slab=
|
||||
Reed Roof=
|
||||
Reed Roof Corner=
|
||||
Reed Roof Corner 1=
|
||||
Reed Roof Corner 2=
|
||||
Reedmace=
|
||||
Reedmace, height: 1=
|
||||
|
@ -1,24 +1,12 @@
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Grasses - Meadow Variation 0.0.1
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- by Mossmanikin
|
||||
|
||||
-- Contains code from: biome_lib
|
||||
-- Looked at code from: default
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
abstract_dryplants.grow_grass_variation = function(pos)
|
||||
minetest.swap_node(pos, {name="dryplants:grass_short"})
|
||||
end
|
||||
|
||||
biome_lib.register_on_generate({
|
||||
surface = {
|
||||
-- @reviewer: couldn't even find using biome_lib
|
||||
minetest.register_decoration({
|
||||
decoration = {"dryplants:grass_short"},
|
||||
fill_ratio = 0.8,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:dirt_with_grass",
|
||||
},
|
||||
max_count = 4800,
|
||||
rarity = 25,
|
||||
min_elevation = 1, -- above sea level
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_dryplants.grow_grass_variation
|
||||
)
|
||||
deco_type = "simple",
|
||||
flags = "all_floors"
|
||||
})
|
||||
|
@ -1,3 +1,3 @@
|
||||
name = dryplants
|
||||
depends = default, biome_lib
|
||||
optional_depends = farming
|
||||
depends = default
|
||||
optional_depends = farming, ebiomes
|
||||
|
@ -1,30 +1,20 @@
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Grasses - More Tall Grass 0.0.2
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- by Mossmanikin
|
||||
|
||||
-- Contains code from: biome_lib
|
||||
-- Looked at code from: default
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
biome_lib.register_on_generate(
|
||||
{
|
||||
surface = {
|
||||
"default:dirt_with_grass",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
max_count = TALL_GRASS_PER_MAPBLOCK,
|
||||
rarity = 101 - TALL_GRASS_RARITY,
|
||||
min_elevation = 1, -- above sea level
|
||||
plantlife_limit = -0.9,
|
||||
check_air = true,
|
||||
},
|
||||
{ "default:grass_1",
|
||||
minetest.register_decoration({
|
||||
decoration = {
|
||||
"default:grass_1",
|
||||
"default:grass_2",
|
||||
"default:grass_3",
|
||||
"default:grass_4",
|
||||
"default:grass_5"
|
||||
}
|
||||
)
|
||||
},
|
||||
fill_ratio = 0.8,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:dirt_with_grass",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
deco_type = "simple",
|
||||
flags = "all_floors"
|
||||
})
|
||||
|
@ -75,106 +75,103 @@ minetest.register_node("dryplants:wetreed_roof", {
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
if AUTO_ROOF_CORNER == true then
|
||||
|
||||
local CoRNeR = {
|
||||
local CoRNeR = {
|
||||
-- MaTeRiaL
|
||||
{"wetreed"},
|
||||
{"reed"}
|
||||
}
|
||||
{"wetreed"},
|
||||
{"reed"}
|
||||
}
|
||||
|
||||
for i in pairs(CoRNeR) do
|
||||
for i in pairs(CoRNeR) do
|
||||
|
||||
local MaTeRiaL = CoRNeR[i][1]
|
||||
local roof = "dryplants:"..MaTeRiaL.."_roof"
|
||||
local corner = "dryplants:"..MaTeRiaL.."_roof_corner"
|
||||
local corner_2 = "dryplants:"..MaTeRiaL.."_roof_corner_2"
|
||||
local MaTeRiaL = CoRNeR[i][1]
|
||||
local roof = "dryplants:"..MaTeRiaL.."_roof"
|
||||
local corner = "dryplants:"..MaTeRiaL.."_roof_corner"
|
||||
local corner_2 = "dryplants:"..MaTeRiaL.."_roof_corner_2"
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {roof},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
minetest.register_abm({
|
||||
nodenames = {roof},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
|
||||
local node_east = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z })
|
||||
local node_west = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z })
|
||||
local node_north = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
||||
local node_south = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
||||
-- corner 1
|
||||
if ((node_west.name == roof and node_west.param2 == 0)
|
||||
or (node_west.name == corner and node_west.param2 == 1))
|
||||
and ((node_north.name == roof and node_north.param2 == 3)
|
||||
or (node_north.name == corner and node_north.param2 == 3))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner, param2=0})
|
||||
end
|
||||
local node_east = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z })
|
||||
local node_west = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z })
|
||||
local node_north = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
||||
local node_south = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
||||
-- corner 1
|
||||
if ((node_west.name == roof and node_west.param2 == 0)
|
||||
or (node_west.name == corner and node_west.param2 == 1))
|
||||
and ((node_north.name == roof and node_north.param2 == 3)
|
||||
or (node_north.name == corner and node_north.param2 == 3))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner, param2=0})
|
||||
end
|
||||
|
||||
if ((node_north.name == roof and node_north.param2 == 1)
|
||||
or (node_north.name == corner and node_north.param2 == 2))
|
||||
and ((node_east.name == roof and node_east.param2 == 0)
|
||||
or (node_east.name == corner and node_east.param2 == 0))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner, param2=1})
|
||||
end
|
||||
if ((node_north.name == roof and node_north.param2 == 1)
|
||||
or (node_north.name == corner and node_north.param2 == 2))
|
||||
and ((node_east.name == roof and node_east.param2 == 0)
|
||||
or (node_east.name == corner and node_east.param2 == 0))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner, param2=1})
|
||||
end
|
||||
|
||||
if ((node_east.name == roof and node_east.param2 == 2)
|
||||
or (node_east.name == corner and node_east.param2 == 3))
|
||||
and ((node_south.name == roof and node_south.param2 == 1)
|
||||
or (node_south.name == corner and node_south.param2 == 1))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner, param2=2})
|
||||
end
|
||||
if ((node_east.name == roof and node_east.param2 == 2)
|
||||
or (node_east.name == corner and node_east.param2 == 3))
|
||||
and ((node_south.name == roof and node_south.param2 == 1)
|
||||
or (node_south.name == corner and node_south.param2 == 1))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner, param2=2})
|
||||
end
|
||||
|
||||
if ((node_south.name == roof and node_south.param2 == 3)
|
||||
or (node_south.name == corner and node_south.param2 == 0))
|
||||
and ((node_west.name == roof and node_west.param2 == 2)
|
||||
or (node_west.name == corner and node_west.param2 == 2))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner, param2=3})
|
||||
end
|
||||
-- corner 2
|
||||
if ((node_west.name == roof and node_west.param2 == 2)
|
||||
or (node_west.name == corner_2 and node_west.param2 == 1))
|
||||
and ((node_north.name == roof and node_north.param2 == 1)
|
||||
or (node_north.name == corner_2 and node_north.param2 == 3))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner_2, param2=0})
|
||||
end
|
||||
if ((node_south.name == roof and node_south.param2 == 3)
|
||||
or (node_south.name == corner and node_south.param2 == 0))
|
||||
and ((node_west.name == roof and node_west.param2 == 2)
|
||||
or (node_west.name == corner and node_west.param2 == 2))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner, param2=3})
|
||||
end
|
||||
-- corner 2
|
||||
if ((node_west.name == roof and node_west.param2 == 2)
|
||||
or (node_west.name == corner_2 and node_west.param2 == 1))
|
||||
and ((node_north.name == roof and node_north.param2 == 1)
|
||||
or (node_north.name == corner_2 and node_north.param2 == 3))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner_2, param2=0})
|
||||
end
|
||||
|
||||
if ((node_north.name == roof and node_north.param2 == 3)
|
||||
or (node_north.name == corner_2 and node_north.param2 == 2))
|
||||
and ((node_east.name == roof and node_east.param2 == 2)
|
||||
or (node_east.name == corner_2 and node_east.param2 == 0))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner_2, param2=1})
|
||||
end
|
||||
if ((node_north.name == roof and node_north.param2 == 3)
|
||||
or (node_north.name == corner_2 and node_north.param2 == 2))
|
||||
and ((node_east.name == roof and node_east.param2 == 2)
|
||||
or (node_east.name == corner_2 and node_east.param2 == 0))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner_2, param2=1})
|
||||
end
|
||||
|
||||
if ((node_east.name == roof and node_east.param2 == 0)
|
||||
or (node_east.name == corner_2 and node_east.param2 == 3))
|
||||
and ((node_south.name == roof and node_south.param2 == 3)
|
||||
or (node_south.name == corner_2 and node_south.param2 == 1))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner_2, param2=2})
|
||||
end
|
||||
if ((node_east.name == roof and node_east.param2 == 0)
|
||||
or (node_east.name == corner_2 and node_east.param2 == 3))
|
||||
and ((node_south.name == roof and node_south.param2 == 3)
|
||||
or (node_south.name == corner_2 and node_south.param2 == 1))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner_2, param2=2})
|
||||
end
|
||||
|
||||
if ((node_south.name == roof and node_south.param2 == 1)
|
||||
or (node_south.name == corner_2 and node_south.param2 == 0))
|
||||
and ((node_west.name == roof and node_west.param2 == 0)
|
||||
or (node_west.name == corner_2 and node_west.param2 == 2))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner_2, param2=3})
|
||||
end
|
||||
if ((node_south.name == roof and node_south.param2 == 1)
|
||||
or (node_south.name == corner_2 and node_south.param2 == 0))
|
||||
and ((node_west.name == roof and node_west.param2 == 0)
|
||||
or (node_west.name == corner_2 and node_west.param2 == 2))
|
||||
then
|
||||
minetest.swap_node(pos, {name=corner_2, param2=3})
|
||||
end
|
||||
|
||||
end,
|
||||
})
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Wet Reed Roof Corner
|
||||
-- Wet Reed Roof Corner 1
|
||||
-----------------------------------------------------------------------------------------------
|
||||
minetest.register_node("dryplants:wetreed_roof_corner", {
|
||||
description = S("Wet Reed Roof Corner"),
|
||||
description = S("Wet Reed Roof Corner 1"),
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
@ -233,31 +230,28 @@ minetest.register_node("dryplants:wetreed_roof_corner_2", {
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Wet Reed becomes (dry) Reed over time
|
||||
-----------------------------------------------------------------------------------------------
|
||||
if REED_WILL_DRY == true then
|
||||
|
||||
local DRyiNG = {
|
||||
local DRyiNG = {
|
||||
-- WeT DRy
|
||||
{"dryplants:wetreed", "dryplants:reed"},
|
||||
{"dryplants:wetreed_slab", "dryplants:reed_slab"},
|
||||
{"dryplants:wetreed_roof", "dryplants:reed_roof"},
|
||||
{"dryplants:wetreed_roof_corner", "dryplants:reed_roof_corner"},
|
||||
{"dryplants:wetreed_roof_corner_2", "dryplants:reed_roof_corner_2"}
|
||||
}
|
||||
for i in pairs(DRyiNG) do
|
||||
{"dryplants:wetreed", "dryplants:reed"},
|
||||
{"dryplants:wetreed_slab", "dryplants:reed_slab"},
|
||||
{"dryplants:wetreed_roof", "dryplants:reed_roof"},
|
||||
{"dryplants:wetreed_roof_corner", "dryplants:reed_roof_corner"},
|
||||
{"dryplants:wetreed_roof_corner_2", "dryplants:reed_roof_corner_2"}
|
||||
}
|
||||
for i in pairs(DRyiNG) do
|
||||
|
||||
local WeT = DRyiNG[i][1]
|
||||
local DRy = DRyiNG[i][2]
|
||||
local WeT = DRyiNG[i][1]
|
||||
local DRy = DRyiNG[i][2]
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {WeT},
|
||||
interval = REED_DRYING_TIME, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
local direction = minetest.get_node(pos).param2
|
||||
minetest.swap_node(pos, {name=DRy, param2=direction})
|
||||
end,
|
||||
})
|
||||
end
|
||||
minetest.register_abm({
|
||||
nodenames = {WeT},
|
||||
interval = 3600, --1200, -- 20 minutes: a minetest-day/night-cycle
|
||||
chance = 1,
|
||||
action = function(pos)
|
||||
local direction = minetest.get_node(pos).param2
|
||||
minetest.swap_node(pos, {name=DRy, param2=direction})
|
||||
end,
|
||||
})
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
@ -322,10 +316,10 @@ minetest.register_node("dryplants:reed_roof", {
|
||||
})
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Reed Roof Corner
|
||||
-- Reed Roof Corner 1
|
||||
-----------------------------------------------------------------------------------------------
|
||||
minetest.register_node("dryplants:reed_roof_corner", {
|
||||
description = S("Reed Roof Corner"),
|
||||
description = S("Reed Roof Corner 1"),
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
|
@ -1,13 +1,3 @@
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- 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)
|
||||
-- rhizomes are edible
|
||||
-- outer portion of young plants can be peeled and the heart can be eaten raw or boiled and eaten like asparagus
|
||||
@ -20,21 +10,20 @@
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("dryplants")
|
||||
|
||||
local random = math.random
|
||||
local sqrt = math.sqrt
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- REEDMACE SHAPES
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
abstract_dryplants.grow_reedmace = function(pos)
|
||||
local size = random(1,3)
|
||||
local spikes = random(1,3)
|
||||
local function grow_reedmace(pos)
|
||||
local size = 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_02 = {x = pos.x, y = pos.y + 2, 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
|
||||
or minetest.get_node(pos_01).name == "dryplants:reedmace_sapling" then
|
||||
|
||||
local nodename = minetest.get_node(pos_01).name
|
||||
if nodename == "air" -- bug fix
|
||||
or nodename == "dryplants:reedmace_sapling" then
|
||||
if minetest.get_node(pos_02).name ~= "air" then
|
||||
minetest.swap_node(pos_01, {name="dryplants:reedmace_top"})
|
||||
elseif minetest.get_node(pos_03).name ~= "air" then
|
||||
@ -53,14 +42,16 @@ abstract_dryplants.grow_reedmace = function(pos)
|
||||
end
|
||||
end
|
||||
|
||||
abstract_dryplants.grow_reedmace_water = function(pos)
|
||||
local size = random(1,3)
|
||||
local spikes = random(1,3)
|
||||
local function grow_reedmace_water(pos)
|
||||
local size = 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_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_04 = {x = pos.x, y = pos.y + 4, z = pos.z}
|
||||
|
||||
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_03).name ~= "air" then
|
||||
minetest.swap_node(pos_02, {name="dryplants:reedmace_top"})
|
||||
@ -80,6 +71,8 @@ abstract_dryplants.grow_reedmace_water = function(pos)
|
||||
end
|
||||
end
|
||||
|
||||
abstract_dryplants.grow_reedmace = grow_reedmace -- compatibility
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- REEDMACE SPIKES
|
||||
-----------------------------------------------------------------------------------------------
|
||||
@ -130,7 +123,7 @@ minetest.register_node("dryplants:reedmace_top", {
|
||||
minetest.register_node("dryplants:reedmace_height_2", {
|
||||
description = S("Reedmace, height: 2"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = sqrt(8),
|
||||
visual_scale = math.sqrt(8),
|
||||
paramtype = "light",
|
||||
tiles = {"dryplants_reedmace_height_2.png"},
|
||||
inventory_image = "dryplants_reedmace_top.png",
|
||||
@ -153,7 +146,7 @@ minetest.register_node("dryplants:reedmace_height_2", {
|
||||
minetest.register_node("dryplants:reedmace_height_3", {
|
||||
description = S("Reedmace, height: 3"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = sqrt(8),
|
||||
visual_scale = math.sqrt(8),
|
||||
paramtype = "light",
|
||||
tiles = {"dryplants_reedmace_height_3.png"},
|
||||
inventory_image = "dryplants_reedmace_top.png",
|
||||
@ -176,7 +169,7 @@ minetest.register_node("dryplants:reedmace_height_3", {
|
||||
minetest.register_node("dryplants:reedmace_height_3_spikes", {
|
||||
description = S("Reedmace, height: 3 & Spikes"),
|
||||
drawtype = "plantlike",
|
||||
visual_scale = sqrt(8),
|
||||
visual_scale = math.sqrt(8),
|
||||
paramtype = "light",
|
||||
tiles = {"dryplants_reedmace_height_3_spikes.png"},
|
||||
inventory_image = "dryplants_reedmace_top.png",
|
||||
@ -279,19 +272,19 @@ minetest.register_node("dryplants:reedmace_sapling", {
|
||||
-- abm
|
||||
minetest.register_abm({
|
||||
nodenames = "dryplants:reedmace_sapling",
|
||||
interval = REEDMACE_GROWING_TIME,
|
||||
chance = 100/REEDMACE_GROWING_CHANCE,
|
||||
interval = 600,
|
||||
chance = 100/5,
|
||||
action = function(pos, node, _, _)
|
||||
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 - 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
|
||||
if minetest.get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" then
|
||||
abstract_dryplants.grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
grow_reedmace_water({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
end
|
||||
minetest.swap_node({x=pos.x, y=pos.y, z=pos.z}, {name="default:water_source"})
|
||||
else
|
||||
abstract_dryplants.grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
grow_reedmace({x = pos.x, y = pos.y - 1, z = pos.z})
|
||||
end
|
||||
end
|
||||
})
|
||||
@ -321,7 +314,7 @@ minetest.register_entity("dryplants:reedmace_water_entity",{
|
||||
collisionbox = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
|
||||
on_punch = function(self, puncher)
|
||||
if puncher:is_player() and puncher:get_inventory() then
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
if not minetest.is_creative_enabled(puncher:get_player_name()) then
|
||||
puncher:get_inventory():add_item("main", "dryplants:reedmace_sapling")
|
||||
end
|
||||
self.object:remove()
|
||||
@ -329,89 +322,120 @@ minetest.register_entity("dryplants:reedmace_water_entity",{
|
||||
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
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- near water or swamp
|
||||
biome_lib.register_on_generate({
|
||||
surface = {
|
||||
minetest.register_decoration({
|
||||
name = "dryplants:reedmace_swamp",
|
||||
decoration = {"air"},
|
||||
fill_ratio = "0.05",
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:dirt_with_grass",
|
||||
"default:desert_sand",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
max_count = REEDMACE_NEAR_WATER_PER_MAPBLOCK,
|
||||
rarity = 101 - REEDMACE_NEAR_WATER_RARITY,
|
||||
--rarity = 60,
|
||||
min_elevation = 1, -- above sea level
|
||||
near_nodes = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
|
||||
near_nodes_size = 2,
|
||||
near_nodes_vertical = 1,
|
||||
near_nodes_count = 1,
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_dryplants.grow_reedmace
|
||||
)
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {
|
||||
"default:water_source",
|
||||
"sumpf:dirtywater_source",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
check_offset = -1,
|
||||
num_spawn_by = 1
|
||||
})
|
||||
|
||||
-- in water
|
||||
biome_lib.register_on_generate({
|
||||
surface = {
|
||||
minetest.register_decoration({
|
||||
name = "dryplants:reedmace_water",
|
||||
decoration = {"air"},
|
||||
fill_ratio = "0.01",
|
||||
y_min = 0,
|
||||
y_max = 0,
|
||||
place_on = {
|
||||
"default:dirt",
|
||||
"default:dirt_with_grass",
|
||||
--"default:desert_sand",
|
||||
--"stoneage:grass_with_silex",
|
||||
"stoneage:sand_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
max_count = REEDMACE_IN_WATER_PER_MAPBLOCK,
|
||||
rarity = 101 - REEDMACE_IN_WATER_RARITY,
|
||||
--rarity = 35,
|
||||
min_elevation = 0, -- a bit below sea level
|
||||
max_elevation = 0, -- ""
|
||||
near_nodes = {"default:water_source","sumpf:dirtywater_source"},
|
||||
near_nodes_size = 1,
|
||||
near_nodes_count = 1,
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_dryplants.grow_reedmace_water
|
||||
)
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {
|
||||
"default:water_source",
|
||||
"sumpf:dirtywater_source"
|
||||
},
|
||||
check_offset = -1,
|
||||
num_spawn_by = 1
|
||||
})
|
||||
|
||||
-- for oases & tropical beaches & tropical swamps
|
||||
biome_lib.register_on_generate({
|
||||
surface = {
|
||||
minetest.register_decoration({
|
||||
name = "dryplants:reedmace_beach",
|
||||
decoration = {"air"},
|
||||
fill_ratio = "0.05",
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:sand",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
max_count = REEDMACE_FOR_OASES_PER_MAPBLOCK,
|
||||
rarity = 101 - REEDMACE_FOR_OASES_RARITY,
|
||||
--rarity = 10,
|
||||
neighbors = {"default:water_source","sumpf:dirtywater_source","sumpf:sumpf"},
|
||||
ncount = 1,
|
||||
min_elevation = 1, -- above sea level
|
||||
near_nodes = {"default:desert_sand","sumpf:sumpf"},
|
||||
near_nodes_size = 2,
|
||||
near_nodes_vertical = 1,
|
||||
near_nodes_count = 1,
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_dryplants.grow_reedmace
|
||||
)
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {
|
||||
"default:water_source",
|
||||
"sumpf:dirtywater_source",
|
||||
"sumpf:sumpf",
|
||||
"default:desert_sand"
|
||||
},
|
||||
check_offset = -1,
|
||||
num_spawn_by = 1
|
||||
})
|
||||
|
||||
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)
|
||||
|
@ -1,52 +0,0 @@
|
||||
-- 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 = false
|
||||
|
@ -30,7 +30,7 @@ minetest.register_craft({
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- FIDDLEHEAD
|
||||
-----------------------------------------------------------------------------------------------
|
||||
minetest.register_alias("archaeplantae:fiddlehead", "ferns:fiddlehead")
|
||||
minetest.register_alias("archaeplantae:fiddlehead", "ferns:fiddlehead")
|
||||
|
||||
minetest.register_craftitem("ferns:fiddlehead", {
|
||||
description = S("Fiddlehead"),
|
||||
@ -51,7 +51,7 @@ minetest.register_craftitem("ferns:fiddlehead_roasted", {
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- FERN TUBER
|
||||
-----------------------------------------------------------------------------------------------
|
||||
minetest.register_alias("archaeplantae:ferntuber", "ferns:ferntuber")
|
||||
minetest.register_alias("archaeplantae:ferntuber", "ferns:ferntuber")
|
||||
|
||||
minetest.register_craftitem("ferns:ferntuber", {
|
||||
description = S("Fern Tuber"),
|
||||
@ -64,7 +64,7 @@ minetest.register_craft({
|
||||
cooktime = 3,
|
||||
})
|
||||
|
||||
minetest.register_alias("archaeplantae:ferntuber_roasted", "ferns:ferntuber_roasted")
|
||||
minetest.register_alias("archaeplantae:ferntuber_roasted", "ferns:ferntuber_roasted")
|
||||
|
||||
minetest.register_craftitem("ferns:ferntuber_roasted", {
|
||||
description = S("Roasted Fern Tuber"),
|
||||
|
@ -84,8 +84,8 @@ abstract_ferns.grow_giant_tree_fern = function(pos)
|
||||
local brk = false
|
||||
for i = 1, size-3 do
|
||||
pos_aux.y = pos.y + i
|
||||
local name = minetest.get_node(pos_aux).name
|
||||
if not (name == "air" or (i == 1 and name == "ferns:sapling_giant_tree_fern")) then
|
||||
local nodename = minetest.get_node(pos_aux).name
|
||||
if not (nodename == "air" or (i == 1 and nodename == "ferns:sapling_giant_tree_fern")) then
|
||||
brk = true
|
||||
break
|
||||
end
|
||||
|
@ -34,13 +34,13 @@ local function create_nodes()
|
||||
local node_drop = "ferns:horsetail_04"
|
||||
|
||||
if i == 1 then
|
||||
node_desc = S("Young Horsetail (Equisetum)")
|
||||
node_desc = S("Young Horsetail (Equisetum) @1", 1)
|
||||
node_on_use = minetest.item_eat(1) -- young ones edible https://en.wikipedia.org/wiki/Equisetum
|
||||
node_drop = node_name
|
||||
elseif i == 4 then
|
||||
node_desc = S("Horsetail (Equisetum)")
|
||||
else
|
||||
node_desc = S("Horsetail (Equisetum)").." ".. string.format("%02d", i)
|
||||
node_desc = S("Horsetail (Equisetum) @1", i)
|
||||
end
|
||||
|
||||
node_names[i] = node_name
|
||||
@ -75,13 +75,10 @@ create_nodes()
|
||||
-- Spawning
|
||||
-----------------------------------------------------------------------------------------------
|
||||
if abstract_ferns.config.enable_horsetails_spawning == true then
|
||||
biome_lib.register_active_spawner({
|
||||
spawn_delay = 1200,
|
||||
spawn_plants = node_names,
|
||||
spawn_chance = 400,
|
||||
spawn_surfaces = {
|
||||
minetest.register_abm({
|
||||
nodenames = {
|
||||
"default:dirt_with_grass",
|
||||
"default:dirt_with_coniferous_litter", -- minetest >= 0.5
|
||||
"default:dirt_with_coniferous_litter",
|
||||
"default:desert_sand",
|
||||
"default:sand",
|
||||
"dryplants:grass_short",
|
||||
@ -89,13 +86,28 @@ if abstract_ferns.config.enable_horsetails_spawning == true then
|
||||
"default:mossycobble",
|
||||
"default:gravel"
|
||||
},
|
||||
seed_diff = 329,
|
||||
min_elevation = 1, -- above sea level
|
||||
near_nodes = {"default:water_source","default:river_water_source","default:gravel"},
|
||||
near_nodes_size = 2,
|
||||
near_nodes_vertical = 1,
|
||||
near_nodes_count = 1,
|
||||
--random_facedir = { 0, 179 },
|
||||
interval = 1200,
|
||||
chance = 400,
|
||||
label = "[ferns] spawn horsetails",
|
||||
min_y = 1,
|
||||
max_y = 48,
|
||||
action = function(pos, node)
|
||||
local p_top = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
local n_top = minetest.get_node_or_nil(p_top)
|
||||
if not n_top or n_top.name ~= "air" then return end
|
||||
|
||||
local NEAR_DST = 2
|
||||
if #minetest.find_nodes_in_area(
|
||||
{x=pos.x-NEAR_DST, y=pos.y-1, z=pos.z-NEAR_DST},
|
||||
{x=pos.x+NEAR_DST, y=pos.y+1, z=pos.z+NEAR_DST},
|
||||
{"default:water_source","default:river_water_source","default:gravel"}
|
||||
) < 1 then return
|
||||
end
|
||||
|
||||
local plant_to_spawn = node_names[math.random(1, #node_names)]
|
||||
|
||||
minetest.swap_node(p_top, {name = plant_to_spawn, param2 = 0})
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
|
@ -1,16 +1,5 @@
|
||||
-----------------------------------------------------------------------------------------------
|
||||
local title = "Ferns" -- former "Archae Plantae"
|
||||
local version = "0.2.1"
|
||||
local mname = "ferns" -- former "archaeplantae"
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- (by Mossmanikin)
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
abstract_ferns = {}
|
||||
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("ferns")
|
||||
|
||||
dofile(minetest.get_modpath("ferns").."/settings.lua")
|
||||
|
||||
if abstract_ferns.config.enable_lady_fern == true then
|
||||
@ -30,42 +19,3 @@ if abstract_ferns.config.enable_giant_treefern == true then
|
||||
end
|
||||
|
||||
dofile(minetest.get_modpath("ferns").."/crafting.lua")
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- TESTS
|
||||
-----------------------------------------------------------------------------
|
||||
local run_tests = true -- set to false to skip
|
||||
|
||||
if run_tests then
|
||||
|
||||
-- These are, essentially, unit tests to make sure that all required item
|
||||
-- strings are registered. The init sequence is not time critical so leaving
|
||||
-- them here won't affect performance.
|
||||
|
||||
-- Check node names
|
||||
if abstract_ferns.config.enable_horsetails then
|
||||
print("[Mod] " ..title.. " Checking horsetail item strings")
|
||||
assert(minetest.registered_items["ferns:horsetail_01"] ~= nil)
|
||||
assert(minetest.registered_items["ferns:horsetail_02"] ~= nil)
|
||||
assert(minetest.registered_items["ferns:horsetail_03"] ~= nil)
|
||||
assert(minetest.registered_items["ferns:horsetail_04"] ~= nil)
|
||||
end
|
||||
if abstract_ferns.config.enable_lady_fern then
|
||||
print("[Mod] ".. title .." Checking lady fern item strings")
|
||||
assert(minetest.registered_items["ferns:fern_01"] ~= nil)
|
||||
assert(minetest.registered_items["ferns:fern_02"] ~= nil)
|
||||
assert(minetest.registered_items["ferns:fern_03"] ~= nil)
|
||||
end
|
||||
if abstract_ferns.config.enable_treefern then
|
||||
print("[Mod] ".. title .." Checking tree fern item strings")
|
||||
assert(minetest.registered_items["ferns:tree_fern_leaves"] ~= nil)
|
||||
assert(minetest.registered_items["ferns:tree_fern_leaves_02"] ~= nil)
|
||||
assert(minetest.registered_items["ferns:fern_trunk"] ~= nil)
|
||||
assert(minetest.registered_items["ferns:sapling_tree_fern"] ~= nil)
|
||||
end
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
@ -1,23 +1,16 @@
|
||||
# textdomain: ferns
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Fiddlehead=Geigenkopf
|
||||
Roasted Fiddlehead=Gerösteter Geigenkopf
|
||||
Fern Tuber=Farnknolle
|
||||
Roasted Fern Tuber=Geröstete Farnknolle
|
||||
Lady-fern (Athyrium)=Frauenfarn (Athyrium)
|
||||
Tree Fern Crown (Dicksonia)=Baumfarnkrone (Dicksonia)
|
||||
Giant Tree Fern Leaves=Riesige Baumfarnblätter
|
||||
Giant Tree Fern Leave End=Riesiges Baumfarnblattende
|
||||
Giant Fern Trunk=Riesiger Baumfarnstamm
|
||||
Giant Tree Fern Sapling=Riesiger Baumfarnsetzling
|
||||
Young Horsetail (Equisetum)=Junger Schachtelhalm (Equisetum)
|
||||
Tree Fern Crown (Dicksonia)=Baumfarnkrone (Dicksonia)
|
||||
Young Horsetail (Equisetum) @1=Junger Schachtelhalm (Equisetum) @1
|
||||
Horsetail (Equisetum)=Schachtelhalm (Equisetum)
|
||||
Horsetail (Equisetum) @1= Schachtelhalm (Equisetum) @1
|
||||
Fern Trunk (Dicksonia)=Farnstamm (Dicksonia)
|
||||
Tree Fern Sapling (Dicksonia)=Baumfarnsetzling (Dicksonia)
|
||||
|
@ -1,23 +1,16 @@
|
||||
# textdomain: ferns
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Fiddlehead=Filika Supro
|
||||
Roasted Fiddlehead=Rostita Filika Supro
|
||||
Fern Tuber=Filika Tubero
|
||||
Roasted Fern Tuber=Rostita Filika Tubero
|
||||
Lady-fern (Athyrium)=Afiriumo (Athyrium)
|
||||
Tree Fern Crown (Dicksonia)=Krono de Arba Filiko
|
||||
Giant Tree Fern Leaves=Folioj de Giganta Arba Filiko
|
||||
Giant Tree Fern Leave End=Folifino de Giganta Arba Filiko
|
||||
Giant Fern Trunk=Trunko de Giganta Arba Filiko
|
||||
Giant Tree Fern Sapling=Arbido de Giganta Arba Filiko
|
||||
Young Horsetail (Equisetum)=Juna Ekvizeto (Equisetum)
|
||||
Tree Fern Crown (Dicksonia)=Krono de Arba Filiko
|
||||
Young Horsetail (Equisetum) @1=Juna Ekvizeto (Equisetum) @1
|
||||
Horsetail (Equisetum)=Ekvizeto (Equisetum)
|
||||
Horsetail (Equisetum) @1=Ekvizeto (Equisetum) @1
|
||||
Fern Trunk (Dicksonia)=Trunko de Arba Filiko (Dicksonia)
|
||||
Tree Fern Sapling (Dicksonia)=Arbido de Arba Filiko (Dicksonia)
|
||||
|
@ -1,22 +1,16 @@
|
||||
# textdomain: ferns
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Fiddlehead=Crosse de fougère
|
||||
Roasted Fiddlehead=Crosse de fougère rôtie
|
||||
Fern Tuber=Tubercule de fougère
|
||||
Roasted Fern Tuber=Tubercule de fougère rôti
|
||||
Lady-fern (Athyrium)=Fougère (Athyrium)
|
||||
Tree Fern Crown (Dicksonia)=Fougère en couronne (Dicksonia)
|
||||
Giant Tree Fern Leaves=Feuilles de fougère géante
|
||||
Giant Tree Fern Leave End=Feuilles de fougère géante (extrémité)
|
||||
Giant Fern Trunk=Tronc de fougère géante
|
||||
Giant Tree Fern Sapling=Pousse de fougère géante
|
||||
Young Horsetail (Equisetum)=Pousse de prêle (Equisetum)
|
||||
Tree Fern Crown (Dicksonia)=Fougère en couronne (Dicksonia)
|
||||
Young Horsetail (Equisetum) @1=Pousse de prêle (Equisetum) @1
|
||||
Horsetail (Equisetum)=Prêle (Equisetum)
|
||||
Horsetail (Equisetum) @1=Prêle (Equisetum) @1
|
||||
Fern Trunk (Dicksonia)=Tronc de fougère en couronne (Dicksonia)
|
||||
Tree Fern Sapling (Dicksonia)=Pousse de fougère en couronne (Dicksonia)
|
||||
|
@ -1,23 +1,16 @@
|
||||
# textdomain: ferns
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Fiddlehead=
|
||||
Roasted Fiddlehead=
|
||||
Fern Tuber=
|
||||
Roasted Fern Tuber=
|
||||
Lady-fern (Athyrium)=
|
||||
Tree Fern Crown (Dicksonia)=
|
||||
Giant Tree Fern Leaves=
|
||||
Giant Tree Fern Leave End=
|
||||
Giant Fern Trunk=
|
||||
Giant Tree Fern Sapling=
|
||||
Young Horsetail (Equisetum)=
|
||||
Tree Fern Crown (Dicksonia)=
|
||||
Young Horsetail (Equisetum) @1=
|
||||
Horsetail (Equisetum)=
|
||||
Horsetail (Equisetum) @1=
|
||||
Fern Trunk (Dicksonia)=
|
||||
Tree Fern Sapling (Dicksonia)=
|
||||
|
@ -1 +1 @@
|
||||
min_minetest_version = 5.2.0
|
||||
min_minetest_version = 5.3.0
|
||||
|
@ -1,20 +1,12 @@
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Idea by Sokomine
|
||||
-- Code & textures by Mossmanikin
|
||||
|
||||
abstract_molehills = {}
|
||||
|
||||
local molehills_rarity = tonumber(minetest.settings:get("molehills_rarity")) or 99.5
|
||||
local molehills_rarity_fertility = tonumber(minetest.settings:get("molehills_rarity_fertility")) or 1
|
||||
local molehills_fertility = tonumber(minetest.settings:get("molehills_fertility")) or -0.6
|
||||
|
||||
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("molehills")
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- NoDe
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
local molehill_rarity = minetest.settings:get("molehills.molehill_rarity") or 0.002
|
||||
|
||||
-- Node
|
||||
local mh_cbox = {
|
||||
type = "fixed",
|
||||
fixed = { -0.5, -0.5, -0.5, 0.5, -0.125, 0.5}
|
||||
@ -34,9 +26,7 @@ minetest.register_node("molehills:molehill",{
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- CRaFTiNG
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Crafting
|
||||
minetest.register_craft({ -- molehills --> dirt
|
||||
output = "default:dirt",
|
||||
recipe = {
|
||||
@ -45,32 +35,19 @@ minetest.register_craft({ -- molehills --> dirt
|
||||
}
|
||||
})
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- GeNeRaTiNG
|
||||
-----------------------------------------------------------------------------------------------
|
||||
abstract_molehills.place_molehill = function(pos)
|
||||
local right_here = {x=pos.x , y=pos.y+1, z=pos.z }
|
||||
if minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z }).name ~= "air"
|
||||
and minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z }).name ~= "air"
|
||||
and minetest.get_node({x=pos.x , y=pos.y, z=pos.z+1}).name ~= "air"
|
||||
and minetest.get_node({x=pos.x , y=pos.y, z=pos.z-1}).name ~= "air"
|
||||
and minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z+1}).name ~= "air"
|
||||
and minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z-1}).name ~= "air"
|
||||
and minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z+1}).name ~= "air"
|
||||
and minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z-1}).name ~= "air" then
|
||||
minetest.swap_node(right_here, {name="molehills:molehill"})
|
||||
end
|
||||
end
|
||||
|
||||
biome_lib.register_on_generate({
|
||||
surface = {"default:dirt_with_grass"},
|
||||
rarity = molehills_rarity,
|
||||
rarity_fertility = molehills_rarity_fertility,
|
||||
plantlife_limit = molehills_fertility,
|
||||
min_elevation = 1,
|
||||
max_elevation = 40,
|
||||
avoid_nodes = {"group:tree","group:liquid","group:stone","group:falling_node"--[[,"air"]]},
|
||||
avoid_radius = 4,
|
||||
-- Generating
|
||||
minetest.register_decoration({
|
||||
decoration = {
|
||||
"molehills:molehill"
|
||||
},
|
||||
abstract_molehills.place_molehill
|
||||
)
|
||||
fill_ratio = molehill_rarity,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:dirt_with_grass"
|
||||
},
|
||||
spawn_by = "air",
|
||||
num_spawn_by = 3,
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
})
|
||||
|
@ -1,9 +1,2 @@
|
||||
# textdomain: molehills
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Mole Hill=Maulwurfshügel
|
||||
|
@ -1,9 +1,2 @@
|
||||
# textdomain: molehills
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Mole Hill=Talpa Monteto
|
||||
|
@ -1,9 +1,2 @@
|
||||
# textdomain: molehills
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Mole Hill=Taupinière
|
||||
|
@ -1,9 +1,2 @@
|
||||
# textdomain: molehills
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Mole Hill=
|
||||
|
@ -1,2 +1,2 @@
|
||||
name = molehills
|
||||
depends = default, biome_lib
|
||||
depends = default
|
||||
|
@ -1,8 +1,2 @@
|
||||
#Molehills rarity %
|
||||
molehills_rarity (Molehills rarity %) float 99.5 0 100
|
||||
|
||||
#How much the rarity is reduced by fertility %
|
||||
molehills_rarity_fertility (Molehills rarity fertility reduction %) float 1 0 100
|
||||
|
||||
#Molehills minimum fertility (-1 to +1)
|
||||
molehills_fertility (Molehills minimum fertility) float -0.6 -1 1
|
||||
# Molehill rarity (higher number -> higher probability)
|
||||
molehills.molehill_rarity (Molehill rarity) float 0.002 0.0001 1
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
local function process_blossom_queue_item()
|
||||
local pos = nature.blossomqueue[1][1]
|
||||
local node = nature.blossomqueue[1][2]
|
||||
-- local node = nature.blossomqueue[1][2]
|
||||
local replace = nature.blossomqueue[1][3]
|
||||
if (nature.blossomqueue[1][3] == nature.blossom_node and not nature:is_near_water(pos)) then
|
||||
table.remove(nature.blossomqueue, 1) -- don't grow if it's not near water, pop from queue.
|
||||
@ -32,7 +32,7 @@ end)
|
||||
function nature.enqueue_node(pos, node, replace)
|
||||
local idx = #nature.blossomqueue
|
||||
if idx < nature.blossomqueue_max then
|
||||
local enqueue_prob = 0
|
||||
local enqueue_prob
|
||||
if idx < nature.blossomqueue_max * 0.8 then
|
||||
enqueue_prob = 1
|
||||
else
|
||||
|
@ -6,8 +6,6 @@
|
||||
local current_mod_name = minetest.get_current_modname()
|
||||
|
||||
nature = {}
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("nature_classic")
|
||||
|
||||
nature.blossomqueue = {}
|
||||
nature.blossomqueue_max = 1000
|
||||
@ -25,7 +23,7 @@ if minetest.get_modpath("moretrees") then
|
||||
nature.blossom_node = "moretrees:apple_blossoms"
|
||||
nature.blossom_leaves = "moretrees:apple_tree_leaves"
|
||||
nature.blossom_textures = { "moretrees_apple_tree_leaves.png^nature_blossom.png" }
|
||||
nature.blossom_groups = { snappy = 3, leafdecay = 1, leaves = 1, flammable = 2, moretrees_leaves = 1 },
|
||||
nature.blossom_groups = { snappy = 3, leafdecay = 1, leaves = 1, flammable = 2, moretrees_leaves = 1 }
|
||||
minetest.register_alias("nature:blossom", "default:leaves")
|
||||
end
|
||||
|
||||
@ -39,10 +37,6 @@ nature.apple_spread = 2
|
||||
nature.meta_blossom_time = "blossom_time"
|
||||
nature.blossom_duration = nature.blossom_delay
|
||||
|
||||
function dumppos(pos)
|
||||
return "("..pos.x..","..pos.y..","..pos.z..")"
|
||||
end
|
||||
|
||||
dofile(minetest.get_modpath(current_mod_name) .. "/config.lua")
|
||||
dofile(minetest.get_modpath(current_mod_name) .. "/global_function.lua")
|
||||
dofile(minetest.get_modpath(current_mod_name) .. "/blossom.lua")
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: nature_classic
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Apple blossoms=Apfelblüten
|
||||
[Nature Classic] loaded!=[Nature Classic] geladen!
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: nature_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.
|
||||
#
|
||||
|
||||
Apple blossoms=Fleurs de pommier
|
||||
[Nature Classic] loaded!=[Nature Classic] chargé.!
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: nature_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.
|
||||
#
|
||||
|
||||
Apple blossoms=
|
||||
[Nature Classic] loaded!=
|
||||
|
@ -1,11 +1,11 @@
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("pl_seaweed")
|
||||
|
||||
pl_seaweed = {}
|
||||
|
||||
local seaweed_max_count = tonumber(minetest.settings:get("pl_seaweed_max_count")) or 320
|
||||
local seaweed_rarity = tonumber(minetest.settings:get("pl_seaweed_rarity")) or 33
|
||||
local seaweed_rarity = minetest.settings:get("pl_seaweed.seaweed_rarity") or 0.06
|
||||
|
||||
local function get_ndef(name)
|
||||
return minetest.registered_nodes[name] or {}
|
||||
end
|
||||
|
||||
local algae_list = { {nil}, {2}, {3}, {4} }
|
||||
|
||||
@ -47,7 +47,11 @@ for i in ipairs(algae_list) do
|
||||
liquids_pointable = true,
|
||||
drop = "flowers:seaweed",
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local keys=placer:get_player_control()
|
||||
if not itemstack or not placer or not pointed_thing then
|
||||
return
|
||||
end
|
||||
|
||||
local keys = placer:get_player_control()
|
||||
local pt = pointed_thing
|
||||
|
||||
local place_pos = nil
|
||||
@ -55,22 +59,21 @@ for i in ipairs(algae_list) do
|
||||
local under_node = minetest.get_node(pt.under)
|
||||
local above_node = minetest.get_node(pt.above)
|
||||
local top_node = minetest.get_node(top_pos)
|
||||
|
||||
if biome_lib.get_nodedef_field(under_node.name, "buildable_to") then
|
||||
if get_ndef(under_node.name)["buildable_to"] then
|
||||
if under_node.name ~= "default:water_source" then
|
||||
place_pos = pt.under
|
||||
elseif top_node.name ~= "default:water_source"
|
||||
and biome_lib.get_nodedef_field(top_node.name, "buildable_to") then
|
||||
elseif top_node.name ~= "default:water_source" and get_ndef(top_node.name)["buildable_to"] then
|
||||
place_pos = top_pos
|
||||
else
|
||||
return
|
||||
end
|
||||
elseif biome_lib.get_nodedef_field(above_node.name, "buildable_to") then
|
||||
elseif get_ndef(above_node.name)["buildable_to"] then
|
||||
place_pos = pt.above
|
||||
end
|
||||
if not place_pos then return end -- something went wrong :P
|
||||
|
||||
if not minetest.is_protected(place_pos, placer:get_player_name()) then
|
||||
local pname = placer:get_player_name()
|
||||
if not minetest.is_protected(place_pos, pname) then
|
||||
|
||||
local nodename = "default:cobble" -- :D
|
||||
|
||||
@ -92,78 +95,46 @@ for i in ipairs(algae_list) do
|
||||
minetest.swap_node(place_pos, {name = "flowers:seaweed", param2 = fdir})
|
||||
end
|
||||
|
||||
if not biome_lib.expect_infinite_stacks then
|
||||
if not minetest.is_creative_enabled(pname) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "flowers:seaweed"..num,
|
||||
decoration = {"flowers:seaweed"..num},
|
||||
place_on = {"default:water_source"},
|
||||
deco_type = "simple",
|
||||
flags = "liquid_surface",
|
||||
spawn_by = {"default:dirt_with_grass", "default:sand"},
|
||||
num_spawn_by = 1,
|
||||
fill_ratio = seaweed_rarity,
|
||||
check_offset = -1,
|
||||
y_min = 1,
|
||||
y_max = 1,
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "flowers:seaweed"..num .."_sand",
|
||||
decoration = {"flowers:seaweed"..num},
|
||||
place_on = {"default:sand"},
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = "default:water_source",
|
||||
num_spawn_by = 1,
|
||||
fill_ratio = seaweed_rarity*1.2,
|
||||
check_offset = -1,
|
||||
y_min = 1,
|
||||
y_max = 1,
|
||||
})
|
||||
end
|
||||
|
||||
pl_seaweed.grow_seaweed = function(pos)
|
||||
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
local seaweed = math.random(1,4)
|
||||
local node_name = "flowers:seaweed"
|
||||
if seaweed > 1 then
|
||||
node_name = node_name .. "_" .. seaweed
|
||||
end
|
||||
minetest.swap_node(right_here, {name=node_name, param2=math.random(1,3)})
|
||||
end
|
||||
|
||||
biome_lib.register_on_generate({
|
||||
surface = {"default:water_source"},
|
||||
max_count = seaweed_max_count,
|
||||
rarity = seaweed_rarity,
|
||||
min_elevation = 1,
|
||||
max_elevation = 40,
|
||||
near_nodes = {"default:dirt_with_grass"},
|
||||
near_nodes_size = 4,
|
||||
near_nodes_vertical = 1,
|
||||
near_nodes_count = 1,
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
pl_seaweed.grow_seaweed
|
||||
)
|
||||
|
||||
-- pl_seaweed at beaches
|
||||
-- MM: not satisfied with it, but IMHO some beaches should have some algae
|
||||
biome_lib.register_on_generate({
|
||||
surface = {"default:water_source"},
|
||||
max_count = seaweed_max_count,
|
||||
rarity = seaweed_rarity,
|
||||
min_elevation = 1,
|
||||
max_elevation = 40,
|
||||
near_nodes = {"default:sand"},
|
||||
near_nodes_size = 1,
|
||||
near_nodes_vertical = 0,
|
||||
near_nodes_count = 3,
|
||||
plantlife_limit = -0.9,
|
||||
temp_max = -0.64, -- MM: more or less random values, just to make sure it's not everywhere
|
||||
temp_min = -0.22, -- MM: more or less random values, just to make sure it's not everywhere
|
||||
},
|
||||
pl_seaweed.grow_seaweed
|
||||
)
|
||||
biome_lib.register_on_generate({
|
||||
surface = {"default:sand"},
|
||||
max_count = seaweed_max_count*2,
|
||||
rarity = seaweed_rarity/2,
|
||||
min_elevation = 1,
|
||||
max_elevation = 40,
|
||||
near_nodes = {"default:water_source"},
|
||||
near_nodes_size = 1,
|
||||
near_nodes_vertical = 0,
|
||||
near_nodes_count = 3,
|
||||
plantlife_limit = -0.9,
|
||||
temp_max = -0.64, -- MM: more or less random values, just to make sure it's not everywhere
|
||||
temp_min = -0.22, -- MM: more or less random values, just to make sure it's not everywhere
|
||||
},
|
||||
pl_seaweed.grow_seaweed
|
||||
)
|
||||
|
||||
minetest.register_alias( "flowers:flower_seaweed" , "flowers:seaweed" )
|
||||
minetest.register_alias( "along_shore:pondscum_1" , "flowers:seaweed" )
|
||||
minetest.register_alias( "along_shore:seaweed_1" , "flowers:seaweed" )
|
||||
minetest.register_alias( "along_shore:seaweed_2" , "flowers:seaweed_2" )
|
||||
minetest.register_alias( "along_shore:seaweed_3" , "flowers:seaweed_3" )
|
||||
minetest.register_alias( "along_shore:seaweed_4" , "flowers:seaweed_4" )
|
||||
minetest.register_alias("flowers:flower_seaweed", "flowers:seaweed")
|
||||
minetest.register_alias("along_shore:pondscum_1", "flowers:seaweed")
|
||||
minetest.register_alias("along_shore:seaweed_1", "flowers:seaweed")
|
||||
minetest.register_alias("along_shore:seaweed_2", "flowers:seaweed_2")
|
||||
minetest.register_alias("along_shore:seaweed_3", "flowers:seaweed_3")
|
||||
minetest.register_alias("along_shore:seaweed_4", "flowers:seaweed_4")
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_seaweed
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
Seaweed=Seetang
|
||||
Seaweed=Seegras
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_seaweed
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Seaweed=Algues
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_seaweed
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Seaweed=Deniz yosunu
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_seaweed
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
Seaweed=Algo
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_seaweed
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Seaweed=Algas marinas
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_seaweed
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
Seaweed=
|
||||
|
@ -1,3 +1,2 @@
|
||||
name = pl_seaweed
|
||||
depends = biome_lib
|
||||
optional_depends = farming, flowers
|
||||
|
@ -1,5 +1,2 @@
|
||||
#Seaweed maximum count
|
||||
pl_seaweed_max_count (Seaweed maximum count) int 320 1 1000
|
||||
|
||||
#Seaweed rarity
|
||||
pl_seaweed_rarity (Seaweed rarity) int 33 0 100
|
||||
# Seaweed rarity (higher number -> higher probability)
|
||||
pl_seaweed.seaweed_rarity (Seaweed rarity) float 0.06 0.0001 1
|
||||
|
@ -1,9 +1,7 @@
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("pl_sunflowers")
|
||||
|
||||
local sunflowers_max_count = tonumber(minetest.settings:get("pl_sunflowers_max_count")) or 10
|
||||
local sunflowers_rarity = tonumber(minetest.settings:get("pl_sunflowers_rarity")) or 25
|
||||
|
||||
local sunflower_rarity = minetest.settings:get("pl_sunflowers.sunflower_rarity") or 0.005
|
||||
|
||||
local box = {
|
||||
type="fixed",
|
||||
@ -19,7 +17,7 @@ minetest.register_node(":flowers:sunflower", {
|
||||
description = S("Sunflower"),
|
||||
drawtype = "mesh",
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
paramtype2 = "degrotate",
|
||||
inventory_image = "flowers_sunflower_inv.png",
|
||||
mesh = "flowers_sunflower.obj",
|
||||
tiles = { "flowers_sunflower.png" },
|
||||
@ -40,17 +38,20 @@ minetest.register_node(":flowers:sunflower", {
|
||||
}
|
||||
})
|
||||
|
||||
biome_lib.register_on_generate({
|
||||
surface = {"default:dirt_with_grass"},
|
||||
avoid_nodes = { "flowers:sunflower" },
|
||||
max_count = sunflowers_max_count,
|
||||
rarity = sunflowers_rarity,
|
||||
min_elevation = 0,
|
||||
plantlife_limit = -0.9,
|
||||
temp_max = -0.1,
|
||||
random_facedir = {0,3},
|
||||
minetest.register_decoration({
|
||||
decoration = {
|
||||
"flowers:sunflower"
|
||||
},
|
||||
"flowers:sunflower"
|
||||
)
|
||||
fill_ratio = sunflower_rarity,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
param2 = 0,
|
||||
param2_max = 239,
|
||||
place_on = {
|
||||
"default:dirt_with_grass"
|
||||
},
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
})
|
||||
|
||||
minetest.register_alias("sunflower:sunflower", "flowers:sunflower")
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_sunflowers
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
Sunflower=Sonnenblume
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_sunflowers
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
Sunflower=Sunfloro
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_sunflowers
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Sunflower=Girasol
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_sunflowers
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Sunflower=Tournesol
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_sunflowers
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Sunflower=Ayçiçeği
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_sunflowers
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
Sunflower=
|
||||
|
@ -1,3 +1,2 @@
|
||||
name = pl_sunflowers
|
||||
depends = biome_lib
|
||||
optional_depends = farming, flowers
|
||||
|
@ -1,5 +1,2 @@
|
||||
#Sunflowers maximum count
|
||||
pl_sunflowers_max_count (Sunflowers maximum count) int 10 1 1000
|
||||
|
||||
#Sunflowers rarity
|
||||
pl_sunflowers_rarity (Sunflowers rarity) int 25 0 100
|
||||
# Sunflower rarity (higher number -> higher probability)
|
||||
pl_sunflowers.sunflower_rarity (Sunflower rarity) float 0.005 0.0001 1
|
||||
|
@ -1,11 +1,11 @@
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("pl_waterlilies")
|
||||
|
||||
pl_waterlilies = {}
|
||||
|
||||
local lilies_max_count = tonumber(minetest.settings:get("pl_waterlilies_max_count")) or 320
|
||||
local lilies_rarity = tonumber(minetest.settings:get("pl_waterlilies_rarity")) or 33
|
||||
local fill_ratio = minetest.settings:get("pl_waterlilies.waterlily_rarity") or 0.03
|
||||
|
||||
local function get_ndef(name)
|
||||
return minetest.registered_nodes[name] or {}
|
||||
end
|
||||
|
||||
local lilies_list = {
|
||||
{ nil , nil , 1 },
|
||||
@ -18,6 +18,15 @@ local lilies_list = {
|
||||
{ "s4" , "small_4" , 8 },
|
||||
}
|
||||
|
||||
local lilynames_list = {}
|
||||
for i in ipairs(lilies_list) do
|
||||
local deg1 = ""
|
||||
if lilies_list[i][1] ~= nil then
|
||||
deg1 = "_"..lilies_list[i][1]
|
||||
end
|
||||
table.insert(lilynames_list, "flowers:waterlily"..deg1)
|
||||
end
|
||||
|
||||
for i in ipairs(lilies_list) do
|
||||
local deg1 = ""
|
||||
local deg2 = ""
|
||||
@ -59,7 +68,11 @@ for i in ipairs(lilies_list) do
|
||||
liquids_pointable = true,
|
||||
drop = "flowers:waterlily",
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local keys=placer:get_player_control()
|
||||
if not itemstack or not placer or not pointed_thing then
|
||||
return
|
||||
end
|
||||
|
||||
local keys = placer:get_player_control()
|
||||
local pt = pointed_thing
|
||||
|
||||
local place_pos = nil
|
||||
@ -68,25 +81,24 @@ for i in ipairs(lilies_list) do
|
||||
local above_node = minetest.get_node(pt.above)
|
||||
local top_node = minetest.get_node(top_pos)
|
||||
|
||||
if biome_lib.get_nodedef_field(under_node.name, "buildable_to") then
|
||||
if get_ndef(under_node.name)["buildable_to"] then
|
||||
if under_node.name ~= "default:water_source" then
|
||||
place_pos = pt.under
|
||||
elseif top_node.name ~= "default:water_source"
|
||||
and biome_lib.get_nodedef_field(top_node.name, "buildable_to") then
|
||||
elseif top_node.name ~= "default:water_source" and get_ndef(top_node.name)["buildable_to"] then
|
||||
place_pos = top_pos
|
||||
else
|
||||
return
|
||||
end
|
||||
elseif biome_lib.get_nodedef_field(above_node.name, "buildable_to") then
|
||||
elseif get_ndef(above_node.name)["buildable_to"] then
|
||||
place_pos = pt.above
|
||||
end
|
||||
|
||||
if place_pos and not minetest.is_protected(place_pos, placer:get_player_name()) then
|
||||
local pname = placer:get_player_name()
|
||||
if place_pos and not minetest.is_protected(place_pos, pname) then
|
||||
|
||||
local nodename = "default:cobble" -- if this block appears, something went....wrong :-)
|
||||
|
||||
if not keys["sneak"] then
|
||||
local node = minetest.get_node(pt.under)
|
||||
local waterlily = math.random(1,8)
|
||||
if waterlily == 1 then
|
||||
nodename = "flowers:waterlily"
|
||||
@ -111,55 +123,63 @@ for i in ipairs(lilies_list) do
|
||||
minetest.swap_node(place_pos, {name = "flowers:waterlily", param2 = fdir})
|
||||
end
|
||||
|
||||
if not biome_lib.expect_infinite_stacks then
|
||||
if not minetest.is_creative_enabled(pname) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "flowers:waterlily"..deg1,
|
||||
decoration = {"flowers:waterlily"..deg1},
|
||||
place_on = {"default:water_source"},
|
||||
deco_type = "simple",
|
||||
flags = "liquid_surface",
|
||||
spawn_by = "default:sand",
|
||||
num_spawn_by = 1,
|
||||
fill_ratio = fill_ratio,
|
||||
check_offset = -1,
|
||||
y_min = 1,
|
||||
y_max = 1,
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "flowers:waterlily"..deg1 .."_relative",
|
||||
decoration = {"flowers:waterlily"..deg1},
|
||||
place_on = {"default:water_source"},
|
||||
deco_type = "simple",
|
||||
flags = "liquid_surface",
|
||||
spawn_by = lilynames_list,
|
||||
num_spawn_by = 1,
|
||||
fill_ratio = fill_ratio*1.25,
|
||||
check_offset = -1,
|
||||
y_min = 1,
|
||||
y_max = 1,
|
||||
})
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "flowers:waterlily"..deg1 .."_relative",
|
||||
decoration = {"flowers:waterlily"..deg1},
|
||||
place_on = {"default:water_source"},
|
||||
deco_type = "simple",
|
||||
flags = "liquid_surface",
|
||||
spawn_by = lilynames_list,
|
||||
num_spawn_by = 1,
|
||||
fill_ratio = fill_ratio*1.5,
|
||||
check_offset = -1,
|
||||
y_min = 1,
|
||||
y_max = 1,
|
||||
})
|
||||
end
|
||||
|
||||
pl_waterlilies.grow_waterlily = function(pos)
|
||||
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
for i in ipairs(lilies_list) do
|
||||
local chance = math.random(1,8)
|
||||
local ext = ""
|
||||
local num = lilies_list[i][3]
|
||||
|
||||
if lilies_list[i][1] ~= nil then
|
||||
ext = "_"..lilies_list[i][1]
|
||||
end
|
||||
|
||||
if chance == num then
|
||||
minetest.swap_node(right_here, {name="flowers:waterlily"..ext, param2=math.random(0,3)})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
biome_lib.register_on_generate({
|
||||
surface = {"default:water_source"},
|
||||
max_count = lilies_max_count,
|
||||
rarity = lilies_rarity,
|
||||
min_elevation = 1,
|
||||
max_elevation = 40,
|
||||
near_nodes = {"default:dirt_with_grass"},
|
||||
near_nodes_size = 4,
|
||||
near_nodes_vertical = 1,
|
||||
near_nodes_count = 1,
|
||||
plantlife_limit = -0.9,
|
||||
temp_max = -0.22,
|
||||
temp_min = 0.22,
|
||||
},
|
||||
pl_waterlilies.grow_waterlily
|
||||
)
|
||||
|
||||
minetest.register_alias( "flowers:flower_waterlily", "flowers:waterlily")
|
||||
minetest.register_alias( "flowers:flower_waterlily_225", "flowers:waterlily_225")
|
||||
minetest.register_alias( "flowers:flower_waterlily_45", "flowers:waterlily_45")
|
||||
minetest.register_alias( "flowers:flower_waterlily_675", "flowers:waterlily_675")
|
||||
minetest.register_alias( "trunks:lilypad" , "flowers:waterlily_s1" )
|
||||
minetest.register_alias( "along_shore:lilypads_1" , "flowers:waterlily_s1" )
|
||||
minetest.register_alias( "along_shore:lilypads_2" , "flowers:waterlily_s2" )
|
||||
minetest.register_alias( "along_shore:lilypads_3" , "flowers:waterlily_s3" )
|
||||
minetest.register_alias( "along_shore:lilypads_4" , "flowers:waterlily_s4" )
|
||||
minetest.register_alias( "trunks:lilypad", "flowers:waterlily_s1")
|
||||
minetest.register_alias( "along_shore:lilypads_1", "flowers:waterlily_s1")
|
||||
minetest.register_alias( "along_shore:lilypads_2", "flowers:waterlily_s2")
|
||||
minetest.register_alias( "along_shore:lilypads_3", "flowers:waterlily_s3")
|
||||
minetest.register_alias( "along_shore:lilypads_4", "flowers:waterlily_s4")
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_waterlilies
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
Waterlily=Seerose
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_waterlillies
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
# textdomain: pl_waterlilies
|
||||
Waterlily=Akvolilio
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_waterlilies
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Waterlily=Lirio de agua
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_waterlilies
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Waterlily=Nénuphar
|
||||
|
@ -1,10 +1,2 @@
|
||||
# textdomain: pl_waterlilies
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
Waterlily=Nilüfer
|
||||
|
@ -1,11 +1,2 @@
|
||||
# textdomain: pl_waterlillies
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
|
||||
|
||||
# textdomain: pl_waterlilies
|
||||
Waterlily=
|
||||
|
@ -1,3 +1,2 @@
|
||||
name = pl_waterlilies
|
||||
depends = biome_lib
|
||||
optional_depends = farming, flowers
|
||||
|
@ -1,5 +1,2 @@
|
||||
#Water-lilies maximum count
|
||||
pl_waterlilies_max_count (Water-lilies maximum count) int 320 1 1000
|
||||
|
||||
#Water-lilies rarity
|
||||
pl_waterlilies_rarity (Water-lilies rarity) int 33 0 100
|
||||
# Waterlily rarity (higher number -> higher probability)
|
||||
pl_waterlilies.waterlily_rarity (Waterlily rarity) float 0.03 0.0001 1
|
||||
|
@ -1,14 +1,8 @@
|
||||
-- This file supplies poison ivy for the plantlife modpack
|
||||
-- Last revision: 2013-01-24
|
||||
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("poisonivy")
|
||||
|
||||
local SPAWN_DELAY = 1000
|
||||
local SPAWN_CHANCE = 200
|
||||
local GROW_DELAY = 500
|
||||
local GROW_CHANCE = 30
|
||||
local poisonivy_seed_diff = 339
|
||||
local walls_list = {
|
||||
"default:dirt",
|
||||
"default:dirt_with_grass",
|
||||
@ -20,7 +14,7 @@ local walls_list = {
|
||||
"default:jungletree",
|
||||
"default:stone_with_coal",
|
||||
"default:stone_with_iron"
|
||||
},
|
||||
}
|
||||
minetest.register_node('poisonivy:seedling', {
|
||||
description = S("Poison ivy (seedling)"),
|
||||
drawtype = 'plantlike',
|
||||
@ -31,7 +25,7 @@ minetest.register_node('poisonivy:seedling', {
|
||||
sunlight_propagates = true,
|
||||
paramtype = 'light',
|
||||
walkable = false,
|
||||
groups = { snappy = 3, poisonivy=1, flora_block=1 },
|
||||
groups = { snappy = 3, poisonivy=1, flora_block=1, attached_node=1 },
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
buildable_to = true,
|
||||
})
|
||||
@ -46,7 +40,7 @@ minetest.register_node('poisonivy:sproutling', {
|
||||
sunlight_propagates = true,
|
||||
paramtype = 'light',
|
||||
walkable = false,
|
||||
groups = { snappy = 3, poisonivy=1, flora_block=1 },
|
||||
groups = { snappy = 3, poisonivy=1, flora_block=1, attached_node=1 },
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
buildable_to = true,
|
||||
})
|
||||
@ -61,7 +55,7 @@ minetest.register_node('poisonivy:climbing', {
|
||||
paramtype = 'light',
|
||||
paramtype2 = 'wallmounted',
|
||||
walkable = false,
|
||||
groups = { snappy = 3, poisonivy=1, flora_block=1 },
|
||||
groups = { snappy = 3, poisonivy=1, flora_block=1, attached_node=1 },
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
type = "wallmounted",
|
||||
@ -70,35 +64,75 @@ minetest.register_node('poisonivy:climbing', {
|
||||
buildable_to = true,
|
||||
})
|
||||
|
||||
biome_lib.register_active_spawner({
|
||||
spawn_delay = SPAWN_DELAY,
|
||||
spawn_plants = {"poisonivy:seedling"},
|
||||
avoid_radius = 10,
|
||||
spawn_chance = SPAWN_CHANCE/10,
|
||||
spawn_surfaces = {"default:dirt_with_grass"},
|
||||
avoid_nodes = {"group:poisonivy", "group:flower", "group:flora"},
|
||||
seed_diff = poisonivy_seed_diff,
|
||||
light_min = 7,
|
||||
alt_wallnode = "poisonivy:climbing",
|
||||
verticals_list = walls_list
|
||||
local function find_adjacent_wall(pos, verticals, randomflag)
|
||||
local verts = dump(verticals)
|
||||
|
||||
if string.find(verts, minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z }).name) then return 3 end
|
||||
if string.find(verts, minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z }).name) then return 2 end
|
||||
if string.find(verts, minetest.get_node({x=pos.x , y=pos.y, z=pos.z-1}).name) then return 5 end
|
||||
if string.find(verts, minetest.get_node({x=pos.x , y=pos.y, z=pos.z+1}).name) then return 4 end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"default:dirt_with_grass"},
|
||||
interval = 1000,
|
||||
chance = 20,
|
||||
label = "[poisoninvy] spawn plants",
|
||||
min_y = -16,
|
||||
max_y = 48,
|
||||
action = function(pos, node)
|
||||
local p_top = {x = pos.x, y = pos.y + 1, z = pos.z}
|
||||
local n_top = minetest.get_node_or_nil(p_top)
|
||||
if not n_top or n_top.name ~= "air" then return end
|
||||
|
||||
local n_light = minetest.get_node_light(p_top)
|
||||
if n_light < 7 then
|
||||
return
|
||||
end
|
||||
|
||||
if minetest.find_node_near(p_top, 10 + math.random(-1.5,2), {"group:poisonivy", "group:flower"}) then
|
||||
return -- Nodes to avoid are nearby
|
||||
end
|
||||
|
||||
local walldir = find_adjacent_wall(p_top, walls_list)
|
||||
if walldir then
|
||||
minetest.swap_node(p_top, {name = "poisonivy:climbing", param2 = walldir})
|
||||
return
|
||||
end
|
||||
|
||||
minetest.swap_node(p_top, {name = "poisonivy:seedling", param2 = 0})
|
||||
end
|
||||
})
|
||||
|
||||
biome_lib.update_plant({
|
||||
grow_delay = SPAWN_DELAY,
|
||||
grow_chance = GROW_CHANCE,
|
||||
grow_plant = "poisonivy:seedling",
|
||||
grow_result = "poisonivy:sproutling",
|
||||
grow_nodes = {"default:dirt_with_grass"}
|
||||
minetest.register_abm({
|
||||
nodenames = {"poisonivy:seedling"},
|
||||
interval = 1000,
|
||||
chance = 30,
|
||||
label = "grow poisonivy",
|
||||
action = function(pos, node)
|
||||
local p_top = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
local n_top = minetest.get_node(p_top)
|
||||
|
||||
if n_top.name == "air" then
|
||||
minetest.swap_node(pos, {name = "poisonivy:sproutling"})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
biome_lib.update_plant({
|
||||
grow_delay = GROW_DELAY,
|
||||
grow_chance = GROW_CHANCE*2,
|
||||
grow_plant = "poisonivy:climbing",
|
||||
need_wall = true,
|
||||
grow_vertically = true,
|
||||
verticals_list = walls_list,
|
||||
ground_nodes = {"default:dirt_with_grass"}
|
||||
})
|
||||
minetest.register_abm({
|
||||
nodenames = {"poisonivy:climbing"},
|
||||
interval = 500,
|
||||
chance = 60,
|
||||
label = "grow climbing poisonivy",
|
||||
action = function(pos, node)
|
||||
local p_top = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
local n_top = minetest.get_node(p_top)
|
||||
|
||||
print("[Poison Ivy] Loaded.")
|
||||
local walldir = find_adjacent_wall(p_top, walls_list)
|
||||
if n_top.name == "air" and walldir then
|
||||
minetest.swap_node(p_top, {name = "poisonivy:climbing", param2 = walldir})
|
||||
end
|
||||
end
|
||||
})
|
@ -1,12 +1,4 @@
|
||||
# textdomain: poisonivy
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Poison ivy (seedling)=Giftefeu (Saemling)
|
||||
Poison ivy (sproutling)=Giftefeu (Sproessling)
|
||||
Poison ivy (seedling)=Giftefeu (Sämling)
|
||||
Poison ivy (sproutling)=Giftefeu (Sprössling)
|
||||
Poison ivy (climbing plant)=Giftefeu (Kletterpflanze)
|
||||
[Poison Ivy] Loaded.=[Poison Ivy] Geladen.
|
||||
|
@ -1,12 +1,4 @@
|
||||
# textdomain: poisonivy
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Poison ivy (seedling)=Venena hedero (plantido)
|
||||
Poison ivy (sproutling)=Venena hedero (ĝermanta)
|
||||
Poison ivy (climbing plant)=Venena hedero (grimpplanto)
|
||||
[Poison Ivy] Loaded.=[Poison Ivy] ŝarĝita.
|
||||
|
@ -1,12 +1,4 @@
|
||||
# textdomain: poisonivy
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Poison ivy (seedling)=Hiedra venenosa (retoño)
|
||||
Poison ivy (sproutling)=Hiedra venenosa (brotes)
|
||||
Poison ivy (climbing plant)=Hiedra venenosa (planta trepadora)
|
||||
[Poison Ivy] Loaded.=[Poison Ivy] Cargado.
|
||||
|
@ -1,12 +1,4 @@
|
||||
# textdomain: poisonivy
|
||||
|
||||
# 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.
|
||||
#
|
||||
|
||||
Poison ivy (seedling)=Sumac vénéneux (semis)
|
||||
Poison ivy (sproutling)=Sumac vénéneux (pousse)
|
||||
Poison ivy (climbing plant)=Sumac vénéneux (grimpant)
|
||||
[Poison Ivy] Loaded.=[Poison Ivy] chargé.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user