Compare commits
129 Commits
Author | SHA1 | Date | |
---|---|---|---|
6d096beca8 | |||
|
ef7d33f740 | ||
|
5a8794cd84 | ||
|
f629f54d43 | ||
|
455f891275 | ||
ee51e847df | |||
cd93d09d01 | |||
|
54a3e1d98b | ||
|
a6c8e4a9d3 | ||
|
e9eb1f51e8 | ||
|
fc1d05978e | ||
|
9aa5d85218 | ||
|
fbd4aaf034 | ||
|
3fce92a9f5 | ||
|
46608a7fb9 | ||
|
ab9a912598 | ||
|
72572bb5c8 | ||
|
6a3c47157f | ||
|
9e771e2988 | ||
|
69e272cd64 | ||
|
12cfbe3cb5 | ||
|
2af1d996d2 | ||
|
3b7fa4e8ea | ||
|
877d94dace | ||
|
ded2685047 | ||
|
e58042acd0 | ||
|
f4185762d5 | ||
|
c7f65aac83 | ||
|
d9782771c3 | ||
|
d483c2a1ae | ||
|
c6b1ce5ca5 | ||
|
23d04af7d6 | ||
ac33f684b2 | |||
|
577404c850 | ||
|
a2cbc18351 | ||
|
9483fee7b3 | ||
|
1894d91609 | ||
|
438a1adb32 | ||
|
e159b843d2 | ||
|
6e842d9b0d | ||
|
8287ae2476 | ||
079a5c1ff8 | |||
|
ca2b47492e | ||
|
f5490e3b58 | ||
156d31280a | |||
|
bde2082ee1 | ||
|
d33907ca75 | ||
|
244d5da0e2 | ||
183c043066 | |||
|
8de8b889c2 | ||
|
1d71e2c64e | ||
3239650e68 | |||
|
d3edfbeace | ||
|
c82ba38e68 | ||
|
031d5f4e4e | ||
|
32bab30e1f | ||
|
7094d8a369 | ||
|
c990942ba2 | ||
|
4953b1ba54 | ||
|
cb2373f089 | ||
|
1a96ac87a7 | ||
|
a6dc4890d9 | ||
|
a5b752f8b2 | ||
|
4c48e5be29 | ||
|
a7d0e42cd1 | ||
|
2e4e4a2412 | ||
|
1d3751d755 | ||
|
e2486ca7f5 | ||
|
98f0c6c20f | ||
|
54d3b669be | ||
|
93265656cc | ||
|
c76fd45a2c | ||
|
c7d0fd3c53 | ||
|
a66b82f1f0 | ||
|
63914caed1 | ||
|
ba98359dd0 | ||
|
6df36da4e1 | ||
|
28ef3e0c4b | ||
6bdb533906 | |||
c62610f544 | |||
8e2148ffc3 | |||
|
680b02f7e2 | ||
|
a2976c609a | ||
|
46717958bc | ||
5ac025cda4 | |||
|
52b2d18523 | ||
efe869d386 | |||
b597f99014 | |||
|
bfd08f01c8 | ||
|
9ed4771515 | ||
|
3f107a8067 | ||
|
b3cbd3df2e | ||
|
b1b4a08834 | ||
|
f01e4bb55f | ||
637f96e215 | |||
|
7b4f54ead0 | ||
|
c061ef23cf | ||
|
d87d8e51f5 | ||
fa9f30043f | |||
|
70df655a42 | ||
|
4876fc1265 | ||
|
81b2b0898b | ||
d97f25e112 | |||
|
a750bac532 | ||
|
b4b24dedba | ||
86896848d5 | |||
|
622016713e | ||
5b66d54632 | |||
031260a62d | |||
d4e83d7e78 | |||
8d65559828 | |||
ec8132b06c | |||
4dcf14ce1f | |||
d7b543f5d7 | |||
f661500cb3 | |||
c2681261e0 | |||
2c433e0b57 | |||
1f52bbea19 | |||
10ff005066 | |||
|
9963e588d6 | ||
80b548535a | |||
|
686dd21b9d | ||
|
47c20dc550 | ||
45a8064d3d | |||
|
31e0066238 | ||
|
3d13053d97 | ||
1696d8bd8f | |||
|
07b6fc48ea | ||
|
9a3d101c89 |
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 +0,0 @@
|
|||
*~
|
24
.luacheckrc
|
@ -1,15 +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",
|
||||
"intllib",
|
||||
"default",
|
||||
"bushes_classic",
|
||||
}
|
||||
|
||||
read_globals = {
|
||||
table = {fields = {"copy"}},
|
||||
|
||||
"minetest", "ItemStack",
|
||||
"vector",
|
||||
|
||||
"default",
|
||||
"moretrees",
|
||||
"dump",
|
||||
}
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
default
|
||||
flowers
|
|
@ -1,7 +1,5 @@
|
|||
-- 3D Mushroom mod by VanessaE
|
||||
|
||||
mushroom = {}
|
||||
|
||||
minetest.override_item("flowers:mushroom_fertile_brown", {
|
||||
drawtype = "mesh",
|
||||
mesh = "3dmushrooms.obj",
|
||||
|
@ -10,7 +8,8 @@ minetest.override_item("flowers:mushroom_fertile_brown", {
|
|||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
|
||||
},
|
||||
inventory_image = "3dmushrooms_brown_inv.png"
|
||||
inventory_image = "3dmushrooms_brown_inv.png",
|
||||
wield_image = "3dmushrooms_brown_inv.png"
|
||||
})
|
||||
|
||||
minetest.override_item("flowers:mushroom_brown", {
|
||||
|
@ -21,7 +20,8 @@ minetest.override_item("flowers:mushroom_brown", {
|
|||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
|
||||
},
|
||||
inventory_image = "3dmushrooms_brown_inv.png"
|
||||
inventory_image = "3dmushrooms_brown_inv.png",
|
||||
wield_image = "3dmushrooms_brown_inv.png"
|
||||
})
|
||||
|
||||
minetest.override_item("flowers:mushroom_fertile_red", {
|
||||
|
@ -32,7 +32,8 @@ minetest.override_item("flowers:mushroom_fertile_red", {
|
|||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
|
||||
},
|
||||
inventory_image = "3dmushrooms_red_inv.png"
|
||||
inventory_image = "3dmushrooms_red_inv.png",
|
||||
wield_image = "3dmushrooms_red_inv.png"
|
||||
})
|
||||
|
||||
minetest.override_item("flowers:mushroom_red", {
|
||||
|
@ -43,7 +44,8 @@ minetest.override_item("flowers:mushroom_red", {
|
|||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, 0, 0.3}
|
||||
},
|
||||
inventory_image = "3dmushrooms_red_inv.png"
|
||||
inventory_image = "3dmushrooms_red_inv.png",
|
||||
wield_image = "3dmushrooms_red_inv.png"
|
||||
})
|
||||
|
||||
-- aliases to the default mushrooms
|
||||
|
@ -61,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")
|
||||
|
||||
print("[3D Mushrooms] loaded.")
|
||||
|
|
2
3dmushrooms/mod.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
name = 3dmushrooms
|
||||
depends = flowers
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.0 KiB |
|
@ -1,3 +0,0 @@
|
|||
default
|
||||
biome_lib
|
||||
flowers_plus?
|
|
@ -1,9 +0,0 @@
|
|||
-----------------------------------------------------------------------------------------------
|
||||
local title = "Along the Shore"
|
||||
local version = "0.0.4"
|
||||
local mname = "along_shore"
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
|
||||
-----------------------------------------------------------------------------------------------
|
Before Width: | Height: | Size: 234 B |
|
@ -1,30 +0,0 @@
|
|||
-------------------------------------------------------------
|
||||
Credit for textures of "along_shore"
|
||||
-------------------------------------------------------------
|
||||
(If more than one author is listed the names are in alphabetical order)
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
FOLDER TEXTURE AUTHORS
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
../along_shore/textures along_shore_seaweed_1Darker.png Neuromancer, VanessaE
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
../along_shore/textures/old (along_shore_empty.png) (Mossmanikin)
|
||||
along_shore_lilypads_1.png Mossmanikin, Neuromancer
|
||||
along_shore_lilypads_2.png Mossmanikin, Neuromancer
|
||||
along_shore_lilypads_3.png Mossmanikin, Neuromancer
|
||||
along_shore_lilypads_4.png Mossmanikin, Neuromancer
|
||||
along_shore_pondscum_1.png Neuromancer
|
||||
along_shore_seaweed_1.png Neuromancer, VanessaE
|
||||
along_shore_seaweed_2.png Mossmanikin, Neuromancer, VanessaE
|
||||
along_shore_seaweed_3.png Mossmanikin, Neuromancer, VanessaE
|
||||
along_shore_seaweed_4.png Mossmanikin, Neuromancer, VanessaE
|
||||
flowers_seaweed.png Neuromancer, VanessaE
|
||||
flowers_waterlily.png Mossmanikin, VanessaE
|
||||
flowers_waterlily_22.5.png Mossmanikin, VanessaE
|
||||
flowers_waterlily_45.png Mossmanikin, VanessaE
|
||||
flowers_waterlily_67.5.png Mossmanikin, VanessaE
|
||||
lillypad3Flower16x.png Neuromancer
|
||||
LillyPad3x16.png Neuromancer
|
||||
lillyPad5x16.png Neuromancer
|
||||
MultiLilly16x.png Neuromancer
|
||||
pondscum16xc.png Neuromancer
|
||||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
Before Width: | Height: | Size: 439 B |
Before Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 74 B |
Before Width: | Height: | Size: 305 B |
Before Width: | Height: | Size: 382 B |
Before Width: | Height: | Size: 314 B |
Before Width: | Height: | Size: 209 B |
Before Width: | Height: | Size: 543 B |
Before Width: | Height: | Size: 222 B |
Before Width: | Height: | Size: 224 B |
Before Width: | Height: | Size: 226 B |
Before Width: | Height: | Size: 178 B |
Before Width: | Height: | Size: 222 B |
Before Width: | Height: | Size: 404 B |
Before Width: | Height: | Size: 429 B |
Before Width: | Height: | Size: 424 B |
Before Width: | Height: | Size: 427 B |
Before Width: | Height: | Size: 308 B |
Before Width: | Height: | Size: 411 B |
Before Width: | Height: | Size: 543 B |
|
@ -1,5 +0,0 @@
|
|||
default
|
||||
biome_lib
|
||||
plantlife_i18n
|
||||
stonage?
|
||||
sumpf?
|
201
bushes/init.lua
|
@ -7,8 +7,10 @@
|
|||
-- Branch textures created by Neuromancer.
|
||||
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
abstract_bushes = {}
|
||||
local S = minetest.get_translator("bushes")
|
||||
|
||||
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)"),
|
||||
|
@ -22,11 +24,10 @@ paramtype = "light",
|
|||
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
|
||||
}
|
||||
},
|
||||
groups = {snappy=3,flammable=2},
|
||||
groups = {snappy=3,flammable=2,attached_node=1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
drop = 'default:stick'
|
||||
})
|
||||
|
@ -42,6 +43,7 @@ for i in pairs(BushBranchCenter) do
|
|||
"bushes_leaves_"..TexNum..".png",
|
||||
"bushes_branches_center_"..TexNum..".png"
|
||||
},
|
||||
use_texture_alpha = "clip",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
|
@ -61,7 +63,8 @@ for i in pairs(BushBranchCenter) do
|
|||
-- tree=1, -- MM: disabled because some recipes use group:tree for trunks
|
||||
snappy=3,
|
||||
flammable=2,
|
||||
leaves=1
|
||||
leaves=1,
|
||||
attached_node=1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
drop = 'default:stick 4'
|
||||
|
@ -83,6 +86,7 @@ for i in pairs(BushBranchSide) do
|
|||
--[[back]] "bushes_branches_center_"..TexNum..".png",-- unless U really want 'em 2 B different
|
||||
--[[front]] "bushes_branches_right_"..TexNum..".png"
|
||||
},
|
||||
use_texture_alpha = "clip",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
|
@ -104,7 +108,8 @@ for i in pairs(BushBranchSide) do
|
|||
-- tree=1, -- MM: disabled because some recipes use group:tree for trunks
|
||||
snappy=3,
|
||||
flammable=2,
|
||||
leaves=1
|
||||
leaves=1,
|
||||
attached_node=1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
drop = 'default:stick 3'
|
||||
|
@ -118,55 +123,24 @@ for i in pairs(BushLeafNode) do
|
|||
description = S("Bush Leaves @1", Num),
|
||||
drawtype = "allfaces_optional",
|
||||
tiles = {"bushes_leaves_"..Num..".png"},
|
||||
use_texture_alpha = "clip",
|
||||
paramtype = "light",
|
||||
groups = { -- MM: Should we add leafdecay?
|
||||
snappy=3,
|
||||
flammable=2,
|
||||
attached_node=1
|
||||
attached_node=1,
|
||||
leaves=1
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
end
|
||||
|
||||
abstract_bushes.grow_bush = function(pos)
|
||||
local leaf_type = math.random(1,2)
|
||||
local bush_side_height = math.random(0,1)
|
||||
local chance_of_bush_node_right = math.random(1,10)
|
||||
if chance_of_bush_node_right> 5 then
|
||||
local right_pos = {x=pos.x+1, y=pos.y+bush_side_height, z=pos.z}
|
||||
abstract_bushes.grow_bush_node(right_pos,3,leaf_type)
|
||||
end
|
||||
local chance_of_bush_node_left = math.random(1,10)
|
||||
if chance_of_bush_node_left> 5 then
|
||||
bush_side_height = math.random(0,1)
|
||||
local left_pos = {x=pos.x-1, y=pos.y+bush_side_height, z=pos.z}
|
||||
abstract_bushes.grow_bush_node(left_pos,1,leaf_type)
|
||||
end
|
||||
local chance_of_bush_node_front = math.random(1,10)
|
||||
if chance_of_bush_node_front> 5 then
|
||||
bush_side_height = math.random(0,1)
|
||||
local front_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z+1}
|
||||
abstract_bushes.grow_bush_node(front_pos,2,leaf_type)
|
||||
end
|
||||
local chance_of_bush_node_back = math.random(1,10)
|
||||
if chance_of_bush_node_back> 5 then
|
||||
bush_side_height = math.random(0,1)
|
||||
local back_pos = {x=pos.x, y=pos.y+bush_side_height, z=pos.z-1}
|
||||
abstract_bushes.grow_bush_node(back_pos,0,leaf_type)
|
||||
end
|
||||
|
||||
abstract_bushes.grow_bush_node(pos,5,leaf_type)
|
||||
end
|
||||
|
||||
abstract_bushes.grow_bush_node = function(pos,dir, leaf_type)
|
||||
|
||||
|
||||
local 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
|
||||
|
@ -182,54 +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})
|
||||
|
||||
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.chat_send_all("leaf_type: (" .. leaf_type .. ")")
|
||||
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_generate_plant({
|
||||
surface = {
|
||||
local leaf_type = math.random(1,2)
|
||||
local bush_side_height = math.random(0,1)
|
||||
|
||||
local chance_of_bush_node_right = math.random(1,10)
|
||||
if chance_of_bush_node_right > 5 then
|
||||
local right_pos = {x=pos.x+1, y=pos.y+bush_side_height, z=pos.z}
|
||||
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"
|
||||
},
|
||||
max_count = 15, --10,15
|
||||
rarity = 101 - 4, --3,4
|
||||
min_elevation = 1, -- above sea level
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_bushes.grow_bush
|
||||
)
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
})
|
||||
|
||||
abstract_bushes.grow_youngtree2 = function(pos)
|
||||
local height = math.random(4,5)
|
||||
abstract_bushes.grow_youngtree_node2(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
|
||||
|
||||
abstract_bushes.grow_youngtree_node2 = function(pos, height)
|
||||
|
||||
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})
|
||||
|
@ -237,26 +265,55 @@ abstract_bushes.grow_youngtree_node2 = function(pos, height)
|
|||
minetest.swap_node(three_above_right_here, {name="bushes:BushLeaves1" })
|
||||
minetest.swap_node(three_above_right_here_south, {name="bushes:BushLeaves1" })
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
local function grow_youngtree2(pos)
|
||||
local height = math.random(4,5)
|
||||
grow_youngtree_node2(pos,height)
|
||||
end
|
||||
|
||||
biome_lib:register_generate_plant({
|
||||
surface = {
|
||||
minetest.register_decoration({
|
||||
name = "bushes:youngtree",
|
||||
decoration = {
|
||||
"air"
|
||||
},
|
||||
fill_ratio = youngtree_rarity,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:dirt_with_grass",
|
||||
"stoneage:grass_with_silex",
|
||||
"sumpf:peat",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
max_count = 55, --10,15
|
||||
rarity = 101 - 4, --3,4
|
||||
min_elevation = 1, -- above sea level
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_bushes.grow_youngtree2
|
||||
)
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
})
|
||||
|
||||
--http://dev.minetest.net/Node_Drawtypes
|
||||
--[[
|
||||
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.")
|
||||
|
|
4
bushes/locale/bushes.de.tr
Normal file
|
@ -0,0 +1,4 @@
|
|||
# textdomain: bushes
|
||||
Young Tree 2 (bottom)=Strauch 2 (Ansatz)
|
||||
Bush Branches @1=Buschäste @1
|
||||
Bush Leaves @1=Buschblätter @1
|
4
bushes/locale/bushes.eo.tr
Normal file
|
@ -0,0 +1,4 @@
|
|||
# textdomain: bushes
|
||||
Young Tree 2 (bottom)=Juna Arbo 2 (malsupro)
|
||||
Bush Branches @1=Arbustaj Branĉoj @1
|
||||
Bush Leaves @1=Arbustaj Folioj @1
|
4
bushes/locale/bushes.fr.tr
Normal file
|
@ -0,0 +1,4 @@
|
|||
# textdomain: bushes
|
||||
Young Tree 2 (bottom)=Arbuste 2 (bas)
|
||||
Bush Branches @1=Branches de buisson @1
|
||||
Bush Leaves @1=Feuilles de buisson @1
|
4
bushes/locale/template.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
# textdomain: bushes
|
||||
Young Tree 2 (bottom)=
|
||||
Bush Branches @1=
|
||||
Bush Leaves @1=
|
4
bushes/mod.conf
Normal file
|
@ -0,0 +1,4 @@
|
|||
name = bushes
|
||||
title = Bushes
|
||||
depends = default
|
||||
optional_depends = stoneage, sumpf, ebiomes
|
5
bushes/settingtypes.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Bush rarity (higher number -> higher probability)
|
||||
bushes.bush_rarity (Bush rarity) float 0.008 0.0001 1
|
||||
|
||||
# Youngtree rarity (higher number -> higher probability)
|
||||
bushes.youngtree_rarity (Youngtree rarity) float 0.006 0.0001 1
|
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 609 B |
Before Width: | Height: | Size: 620 B |
Before Width: | Height: | Size: 396 B |
Before Width: | Height: | Size: 540 B |
Before Width: | Height: | Size: 285 B |
Before Width: | Height: | Size: 657 B |
Before Width: | Height: | Size: 693 B |
Before Width: | Height: | Size: 83 B |
Before Width: | Height: | Size: 525 B |
|
@ -1,5 +1,5 @@
|
|||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
local S = minetest.get_translator("bushes_classic")
|
||||
|
||||
-- Basket
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
biome_lib
|
||||
plantlife_i18n
|
||||
farming?
|
||||
farming_plus?
|
|
@ -4,7 +4,7 @@
|
|||
bushes_classic = {}
|
||||
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
local S = minetest.get_translator("bushes_classic")
|
||||
|
||||
bushes_classic.bushes = {
|
||||
"strawberry",
|
||||
|
@ -30,12 +30,19 @@ local modpath = minetest.get_modpath('bushes_classic')
|
|||
dofile(modpath..'/cooking.lua')
|
||||
dofile(modpath..'/nodes.lua')
|
||||
|
||||
biome_lib:spawn_on_surfaces({
|
||||
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:spawn_on_surfaces({
|
|||
"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(S("[Bushes_classic] Loaded."))
|
||||
|
|
39
bushes_classic/locale/bushes_classic.de.tr
Normal file
|
@ -0,0 +1,39 @@
|
|||
# textdomain: bushes_classic
|
||||
Sugar=Zucker
|
||||
Strawberry=Erdbeere
|
||||
Raw Strawberry pie=Rohe Erdbeertorte
|
||||
Cooked Strawberry pie=Erdbeertorte
|
||||
Slice of Strawberry pie=Erdbeertortenstück
|
||||
Basket with Strawberry pies=Korb mit Erdbeertorten
|
||||
Strawberry Bush=Erdbeerbusch
|
||||
Blackberry=Brombeere
|
||||
Raw Blackberry pie=Rohe Brombeertorte
|
||||
Cooked Blackberry pie=Brombeertorte
|
||||
Slice of Blackberry pie=Brombeertortenstück
|
||||
Basket with Blackberry pies=Korb mit Brombeertorten
|
||||
Blackberry Bush=Brombeerbusch
|
||||
Blueberry=Blaubeere
|
||||
Raw Blueberry pie=Rohe Blaubeertorte
|
||||
Cooked Blueberry pie=Blaubeertorte
|
||||
Slice of Blueberry pie=Blaubeertortenstück
|
||||
Basket with Blueberry pies=Korb mit Blaubeertorten
|
||||
Blueberry Bush=Blaubeerbusch
|
||||
Raspberry=Himbeere
|
||||
Raw Raspberry pie=Rohe Himbeertorte
|
||||
Cooked Raspberry pie=Himbeertorte
|
||||
Slice of Raspberry pie=Himbeertortenstück
|
||||
Basket with Raspberry pies=Korb mit Himbeertorten
|
||||
Raspberry Bush=Himbeerbusch
|
||||
Gooseberry=Stachelbeere
|
||||
Raw Gooseberry pie=Rohe Stachelbeertorte
|
||||
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
|
||||
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
|
39
bushes_classic/locale/bushes_classic.eo.tr
Normal file
|
@ -0,0 +1,39 @@
|
|||
# textdomain: bushes_classic
|
||||
Sugar=Sukero
|
||||
Strawberry=Frago
|
||||
Raw Strawberry pie=Kruda Fragokuko
|
||||
Cooked Strawberry pie=Kuirita Fragokuko
|
||||
Slice of Strawberry pie=Tranĉaĵo de Fragokuko
|
||||
Basket with Strawberry pies=Korbo kun Fragokukoj
|
||||
Strawberry Bush=Fraga Arbusto
|
||||
Blackberry=Rubuso
|
||||
Raw Blackberry pie=Kruda Rubusokuko
|
||||
Cooked Blackberry pie=Kuirita Rubusokuko
|
||||
Slice of Blackberry pie=Tranĉaĵo de Rubusokuko
|
||||
Basket with Blackberry pies=Korbo kun Rubusokukoj
|
||||
Blackberry Bush=Rubusa Arbusto
|
||||
Blueberry=Mirtelo
|
||||
Raw Blueberry pie=Kruda Mirtelokuko
|
||||
Cooked Blueberry pie=Kuirita Mirtelokuko
|
||||
Slice of Blueberry pie=Tranĉaĵo de Mirtelokuko
|
||||
Basket with Blueberry pies=Korbo kun Mirtelokukoj
|
||||
Blueberry Bush=Mirtela Arbusto
|
||||
Raspberry=Frambo
|
||||
Raw Raspberry pie=Kruda Frambokuko
|
||||
Cooked Raspberry pie=Kuirita Frambokuko
|
||||
Slice of Raspberry pie=Tranĉaĵo de Frambokuko
|
||||
Basket with Raspberry pies=Korbo kun Frambokukoj
|
||||
Raspberry Bush=Framba Arbusto
|
||||
Gooseberry=Grosbero
|
||||
Raw Gooseberry pie=Kruda Grosberkuko
|
||||
Cooked Gooseberry pie=Kuirita Grosberkuko
|
||||
Slice of Gooseberry pie=Tranĉaĵo de Grosberkuko
|
||||
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
|
39
bushes_classic/locale/bushes_classic.es.tr
Normal file
|
@ -0,0 +1,39 @@
|
|||
# textdomain: bushes_classic
|
||||
Sugar=Azúcar
|
||||
Strawberry=Frutilla
|
||||
Raw Strawberry pie=Pastel de Frutilla Crudo
|
||||
Cooked Strawberry pie=Pastel de Frutilla Cocido
|
||||
Slice of Strawberry pie=Rebanada de Pastel de Frutilla
|
||||
Basket with Strawberry pies=Cesta con Pasteles de Frutilla
|
||||
Strawberry Bush=Arbusto de Frutilla
|
||||
Blackberry=Mora
|
||||
Raw Blackberry pie=Pastel de Mora Crudo
|
||||
Cooked Blackberry pie=Pastel de Mora Cocido
|
||||
Slice of Blackberry pie=Rebanada de Pastel de Mora
|
||||
Basket with Blackberry pies=Cesta con Pasteles de Mora
|
||||
Blackberry Bush=Arbusto de Mora
|
||||
Blueberry=Arándano
|
||||
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 Blueberry pies=Cesta con Pasteles de Arándano
|
||||
Blueberry Bush=Arbusto de Arándano
|
||||
Raspberry=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 Raspberry pies=Cesta con Pasteles de Frambuesa
|
||||
Raspberry Bush=Arbusto de Frambuesa
|
||||
Gooseberry=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 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
|
39
bushes_classic/locale/bushes_classic.fr.tr
Normal file
|
@ -0,0 +1,39 @@
|
|||
# textdomain: bushes_classic
|
||||
Sugar=Sucre
|
||||
Strawberry=Fraises
|
||||
Raw Strawberry pie=Tarte aux fraises (crue)
|
||||
Cooked Strawberry pie=Tarte aux fraises (cuite)
|
||||
Slice of Strawberry pie=Part de tarte aux fraises
|
||||
Basket with Strawberry pies=Panier de tartes aux fraises
|
||||
Strawberry Bush=Buisson de fraises
|
||||
Blackberry=Mûres
|
||||
Raw Blackberry pie=Tarte aux mûres (crue)
|
||||
Cooked Blackberry pie=Tarte aux mûres (cuite)
|
||||
Slice of Blackberry pie=Part de tarte aux mûres
|
||||
Basket with Blackberry pies=Panier de tartes aux fraises
|
||||
Blackberry Bush=Buisson de mûres
|
||||
Blueberry=Myrtilles
|
||||
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 Blueberry pies=Panier de tartes aux mûres
|
||||
Blueberry Bush=Buisson de myrtilles
|
||||
Raspberry=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 Raspberry pies=Panier de tartes aux framboises
|
||||
Raspberry Bush=Buisson de framboises
|
||||
Gooseberry=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 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
|
39
bushes_classic/locale/bushes_classic.tr.tr
Normal file
|
@ -0,0 +1,39 @@
|
|||
# textdomain: bushes_classic
|
||||
Sugar=Şeker
|
||||
Strawberry=Çilek
|
||||
Raw Strawberry pie=Çilekli çiğ pasta
|
||||
Cooked Strawberry pie=Pişmiş çilekli pasta
|
||||
Slice of Strawberry pie=Çilekli pasta dilimi
|
||||
Basket with Strawberry pies=Çilekli pasta sepeti
|
||||
Strawberry Bush=Çilek fidanı
|
||||
Blackberry=Böğürtlen
|
||||
Raw Blackberry pie=Böğürtlenli çiğ pasta
|
||||
Cooked Blackberry pie=Pişmiş böğürtlenli pasta
|
||||
Slice of Blackberry pie=Böğürtlenli pasta dilimi
|
||||
Basket with Blackberry pies=Böğürtlenli pasta sepeti
|
||||
Blackberry Bush=Böğürtlen fidanı
|
||||
Blueberry=Yaban mersini
|
||||
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 Blueberry pies=Yaban mersini pastalı sepet
|
||||
Blueberry Bush=Yaban mersini fidanı
|
||||
Raspberry=Ahududu
|
||||
Raw Raspberry pie=Ahududulu çiğ pasta
|
||||
Cooked Raspberry pie=Pişmiş ahududulu pasta
|
||||
Slice of Raspberry pie=Ahududulu pasta dilimi
|
||||
Basket with Raspberry pies=Ahududulu pasta sepeti
|
||||
Raspberry Bush=Ahududu fidanı
|
||||
Gooseberry=Bektaşi üzümü
|
||||
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 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
|
39
bushes_classic/locale/template.txt
Normal file
|
@ -0,0 +1,39 @@
|
|||
# textdomain: bushes_classic
|
||||
Sugar=
|
||||
Strawberry=
|
||||
Raw Strawberry pie=
|
||||
Cooked Strawberry pie=
|
||||
Slice of Strawberry pie=
|
||||
Basket with Strawberry pies=
|
||||
Strawberry Bush=
|
||||
Blackberry=
|
||||
Raw Blackberry pie=
|
||||
Cooked Blackberry pie=
|
||||
Slice of Blackberry pie=
|
||||
Basket with Blackberry pies=
|
||||
Blackberry Bush=
|
||||
Blueberry=
|
||||
Raw Blueberry pie=
|
||||
Cooked Blueberry pie=
|
||||
Slice of Blueberry pie=
|
||||
Basket with Blueberry pies=
|
||||
Blueberry Bush=
|
||||
Raspberry=
|
||||
Raw Raspberry pie=
|
||||
Cooked Raspberry pie=
|
||||
Slice of Raspberry pie=
|
||||
Basket with Raspberry pies=
|
||||
Raspberry Bush=
|
||||
Gooseberry=
|
||||
Raw Gooseberry pie=
|
||||
Cooked Gooseberry pie=
|
||||
Slice of Gooseberry pie=
|
||||
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=
|
2
bushes_classic/mod.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
name = bushes_classic
|
||||
optional_depends = farming, farming_plus
|
|
@ -1,9 +1,11 @@
|
|||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
local S = minetest.get_translator("bushes_classic")
|
||||
|
||||
plantlife_bushes = {}
|
||||
|
||||
-- TODO: add support for nodebreakers? those dig like mese picks
|
||||
local random = math.random
|
||||
|
||||
plantlife_bushes.after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
if not (digger and pos and oldnode) then
|
||||
return
|
||||
|
@ -63,7 +65,7 @@ plantlife_bushes.after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
|||
|
||||
-- with a chance of 1/3, return 2 bushes
|
||||
local amount
|
||||
if math.random(1,3) == 1 then
|
||||
if can_harvest and random(1,3) == 1 then
|
||||
amount = "2"
|
||||
else
|
||||
amount = "1"
|
||||
|
@ -75,7 +77,7 @@ plantlife_bushes.after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
|||
elseif groupcaps.choppy then
|
||||
|
||||
-- the amount of sticks may vary
|
||||
local amount = math.random(4, 20)
|
||||
local amount = random(4, 20)
|
||||
-- return some sticks
|
||||
harvested = "default:stick " .. amount
|
||||
|
||||
|
@ -136,7 +138,7 @@ minetest.register_abm({
|
|||
local dirt = minetest.get_node(dirtpos)
|
||||
local is_soil = minetest.get_item_group(dirt.name, "soil") or minetest.get_item_group(dirt.name, "potting_soil")
|
||||
|
||||
if is_soil and (dirt.name == "farming:soil_wet" or math.random(1,3) == 1) then
|
||||
if is_soil and (dirt.name == "farming:soil_wet" or random(1,3) == 1) then
|
||||
minetest.swap_node( pos, {name = "bushes:" .. bush_name .. "_bush"})
|
||||
end
|
||||
end
|
||||
|
@ -159,19 +161,21 @@ for i, bush_name in ipairs(bushes_classic.bushes) do
|
|||
paramtype2 = "facedir",
|
||||
on_use = minetest.item_eat(18),
|
||||
groups = { dig_immediate = 3 },
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
||||
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
|
||||
node_dig_prediction = "bushes:fruitless_bush"
|
||||
node_placement_prediction = "bushes:fruitless_bush"
|
||||
end
|
||||
|
||||
minetest.register_node(":bushes:" .. bush_name .. "_bush", {
|
||||
|
@ -185,6 +189,8 @@ for i, bush_name in ipairs(bushes_classic.bushes) do
|
|||
groups = groups,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
drop = "",
|
||||
node_dig_prediction = node_dig_prediction,
|
||||
node_placement_prediction = node_placement_prediction,
|
||||
after_dig_node = function( pos, oldnode, oldmetadata, digger )
|
||||
return plantlife_bushes.after_dig_node(pos, oldnode, oldmetadata, digger);
|
||||
end,
|
||||
|
@ -207,4 +213,5 @@ minetest.register_node(":bushes:basket_empty", {
|
|||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = { dig_immediate = 3 },
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 2.7 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 6.7 KiB |
|
@ -1,2 +0,0 @@
|
|||
default
|
||||
plantlife_i18n
|
|
@ -1,15 +1,2 @@
|
|||
-----------------------------------------------------------------------------------------------
|
||||
local title = "Cave Stuff"
|
||||
local version = "0.0.3"
|
||||
local mname = "cavestuff"
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
|
||||
dofile(minetest.get_modpath("cavestuff").."/nodes.lua")
|
||||
dofile(minetest.get_modpath("cavestuff").."/mapgen.lua")
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
|
||||
|
|
4
cavestuff/locale/cavestuff.de.tr
Normal file
|
@ -0,0 +1,4 @@
|
|||
# textdomain: cavestuff
|
||||
Pebble=Kieselstein
|
||||
Desert Pebble=Wüstenkiesel
|
||||
Stalactite=Stalaktit
|
4
cavestuff/locale/cavestuff.eo.tr
Normal file
|
@ -0,0 +1,4 @@
|
|||
# textdomain: cavestuff
|
||||
Pebble=Ŝtoneto
|
||||
Desert Pebble=Dezerta Ŝtoneto
|
||||
Stalactite=Stalaktito
|
4
cavestuff/locale/cavestuff.fr.tr
Normal file
|
@ -0,0 +1,4 @@
|
|||
# textdomain: cavestuff
|
||||
Pebble=Caillou
|
||||
Desert Pebble=Caillou du désert
|
||||
Stalactite=Stalactite
|
4
cavestuff/locale/template.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
# textdomain: cavestuff
|
||||
Pebble=
|
||||
Desert Pebble=
|
||||
Stalactite=
|
|
@ -1,52 +1,65 @@
|
|||
--Map Generation Stuff
|
||||
|
||||
minetest.register_on_generated(function(minp, maxp, seed)
|
||||
if maxp.y >= 2 and minp.y <= 0 then
|
||||
-- Generate pebbles
|
||||
local perlin1 = minetest.get_perlin(329, 3, 0.6, 100)
|
||||
-- Assume X and Z lengths are equal
|
||||
local divlen = 16
|
||||
local divs = (maxp.x-minp.x)/divlen+1;
|
||||
for divx=0,divs-1 do
|
||||
for divz=0,divs-1 do
|
||||
local x0 = minp.x + math.floor((divx+0)*divlen)
|
||||
local z0 = minp.z + math.floor((divz+0)*divlen)
|
||||
local x1 = minp.x + math.floor((divx+1)*divlen)
|
||||
local z1 = minp.z + math.floor((divz+1)*divlen)
|
||||
-- Determine pebble amount from perlin noise
|
||||
local pebble_amount = math.floor(perlin1:get2d({x=x0, y=z0}) ^ 2 * 2)
|
||||
-- Find random positions for pebbles based on this random
|
||||
local pr = PseudoRandom(seed+1)
|
||||
for i=0,pebble_amount do
|
||||
local x = pr:next(x0, x1)
|
||||
local z = pr:next(z0, z1)
|
||||
-- Find ground level (0...15)
|
||||
local ground_y = nil
|
||||
for y=30,0,-1 do
|
||||
if minetest.get_node({x=x,y=y,z=z}).name ~= "air" then
|
||||
ground_y = y
|
||||
break
|
||||
end
|
||||
end
|
||||
minetest.register_decoration({
|
||||
decoration = {
|
||||
"cavestuff:pebble_1",
|
||||
"cavestuff:pebble_2"
|
||||
},
|
||||
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
|
||||
})
|
||||
|
||||
if ground_y then
|
||||
local p = {x=x,y=ground_y+1,z=z}
|
||||
local nn = minetest.get_node(p).name
|
||||
-- Check if the node can be replaced
|
||||
if minetest.registered_nodes[nn] and
|
||||
minetest.registered_nodes[nn].buildable_to then
|
||||
nn = minetest.get_node({x=x,y=ground_y,z=z}).name
|
||||
-- If desert sand, add dry shrub
|
||||
if nn == "default:dirt_with_grass" then
|
||||
minetest.swap_node(p,{name="cavestuff:pebble_"..pr:next(1,2), param2=math.random(0,3)})
|
||||
elseif nn == "default:desert_sand" then
|
||||
minetest.swap_node(p,{name="cavestuff:desert_pebble_"..pr:next(1,2), param2=math.random(0,3)})
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
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
|
||||
})
|
2
cavestuff/mod.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
name = cavestuff
|
||||
depends = default
|
|
@ -1,5 +1,7 @@
|
|||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
local S = minetest.get_translator("cavestuff")
|
||||
|
||||
local random = math.random
|
||||
|
||||
--Rocks
|
||||
|
||||
|
@ -15,12 +17,12 @@ minetest.register_node("cavestuff:pebble_1",{
|
|||
tiles = {"undergrowth_pebble.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=3, stone=1},
|
||||
groups = {cracky=3, stone=1, attached_node=1, dig_immediate=3},
|
||||
selection_box = cbox,
|
||||
collision_box = cbox,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
-- place a random pebble node
|
||||
local stack = ItemStack("cavestuff:pebble_"..math.random(1,2))
|
||||
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,
|
||||
|
@ -32,10 +34,9 @@ minetest.register_node("cavestuff:pebble_2",{
|
|||
mesh = "cavestuff_pebble.obj",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
drop = "cavestuff:pebble_1",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=3, stone=1, not_in_creative_inventory=1},
|
||||
groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1, dig_immediate=3},
|
||||
selection_box = cbox,
|
||||
collision_box = cbox,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
|
@ -48,12 +49,12 @@ minetest.register_node("cavestuff:desert_pebble_1",{
|
|||
tiles = {"default_desert_stone.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=3, stone=1},
|
||||
groups = {cracky=3, stone=1, attached_node=1, dig_immediate=3},
|
||||
selection_box = cbox,
|
||||
collision_box = cbox,
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
-- place a random pebble node
|
||||
local stack = ItemStack("cavestuff:desert_pebble_"..math.random(1,2))
|
||||
local stack = ItemStack("cavestuff:desert_pebble_"..random(1,2))
|
||||
local ret = minetest.item_place(stack, placer, pointed_thing)
|
||||
return ItemStack("cavestuff:desert_pebble_1 "..itemstack:get_count()-(1-ret:get_count()))
|
||||
end,
|
||||
|
@ -67,7 +68,7 @@ minetest.register_node("cavestuff:desert_pebble_2",{
|
|||
tiles = {"default_desert_stone.png"},
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
groups = {cracky=3, stone=1, not_in_creative_inventory=1},
|
||||
groups = {cracky=3, stone=1, attached_node=1, not_in_creative_inventory=1, dig_immediate=3},
|
||||
selection_box = cbox,
|
||||
collision_box = cbox,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
|
@ -79,26 +80,42 @@ minetest.register_node("cavestuff:stalactite_1",{
|
|||
drawtype="nodebox",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
groups = {cracky=3,attached_node=1},
|
||||
is_ground_content = false,
|
||||
description = S("Stalactite"),
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.187500,0.425000,-0.150003,0.162500,0.500000,0.162500},
|
||||
{-0.112500,0.162500,-0.100000,0.087500,0.475000,0.087500},
|
||||
{-0.062500,-0.275000,-0.062500,0.062500,0.500000,0.062500},
|
||||
{-0.037500,-0.837500,0.037500,0.037500,0.500000,-0.025000},
|
||||
{-0.187500,-0.425000,-0.150003,0.162500,-0.500000,0.162500},
|
||||
{-0.112500,-0.162500,-0.100000,0.087500,-0.475000,0.087500},
|
||||
{-0.062500,0.275000,-0.062500,0.062500,-0.500000,0.062500},
|
||||
{-0.037500,0.837500,0.037500,0.037500,-0.500000,-0.025000},
|
||||
}
|
||||
},
|
||||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local pt = pointed_thing
|
||||
if minetest.get_node(pt.under).name=="default:stone"
|
||||
and minetest.get_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}).name=="air"
|
||||
and minetest.get_node({x=pt.under.x, y=pt.under.y-2, z=pt.under.z}).name=="air" then
|
||||
minetest.swap_node({x=pt.under.x, y=pt.under.y-1, z=pt.under.z}, {name="cavestuff:stalactite_"..math.random(1,3)})
|
||||
if not minetest.setting_getbool("creative_mode") then
|
||||
local dir = vector.subtract(pointed_thing.above, pointed_thing.under)
|
||||
local base = pointed_thing.under
|
||||
local place = vector.add(base, dir)
|
||||
local above = vector.add(place, dir)
|
||||
|
||||
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
|
||||
minetest.record_protection_violation(place, playername)
|
||||
return
|
||||
end
|
||||
|
||||
if minetest.get_node(base).name == "default:stone"
|
||||
and minetest.get_node(place).name == "air"
|
||||
and minetest.get_node(above).name == "air"
|
||||
then
|
||||
minetest.swap_node(place, {
|
||||
name = "cavestuff:stalactite_"..math.random(1,3),
|
||||
param2 = minetest.dir_to_wallmounted(vector.multiply(dir, -1))
|
||||
})
|
||||
if not minetest.is_creative_enabled(playername) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
end
|
||||
|
@ -110,16 +127,17 @@ minetest.register_node("cavestuff:stalactite_2",{
|
|||
drawtype="nodebox",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
groups = {cracky=3,attached_node=1,not_in_creative_inventory=1},
|
||||
is_ground_content = false,
|
||||
drop = "cavestuff:stalactite_1",
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.187500,0.387500,-0.150003,0.162500,0.500000,0.162500},
|
||||
{-0.112500,0.112500,-0.100000,0.087500,0.475000,0.087500},
|
||||
{-0.062500,-0.675000,-0.062500,0.062500,0.500000,0.062500},
|
||||
{-0.037500,-0.975000,0.037500,0.037500,0.500000,-0.025000},
|
||||
{-0.187500,-0.387500,-0.150003,0.162500,-0.500000,0.162500},
|
||||
{-0.112500,-0.112500,-0.100000,0.087500,-0.475000,0.087500},
|
||||
{-0.062500,0.675000,-0.062500,0.062500,-0.500000,0.062500},
|
||||
{-0.037500,0.975000,0.037500,0.037500,-0.500000,-0.025000},
|
||||
}
|
||||
},
|
||||
})
|
||||
|
@ -128,18 +146,17 @@ minetest.register_node("cavestuff:stalactite_3",{
|
|||
drawtype="nodebox",
|
||||
tiles = {"undergrowth_pebble.png"},
|
||||
groups = {cracky=3,attached_node=1,not_in_creative_inventory=1},
|
||||
is_ground_content = false,
|
||||
drop = "cavestuff:stalactite_1",
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.187500,0.387500,-0.150003,0.162500,0.500000,0.162500},
|
||||
{-0.112500,0.037500,-0.100000,0.087500,0.475000,0.087500},
|
||||
{-0.062500,-0.437500,-0.062500,0.062500,0.500000,0.062500},
|
||||
{-0.037500,-1.237500,0.037500,0.037500,0.500000,-0.025000},
|
||||
{-0.187500,-0.387500,-0.150003,0.162500,-0.500000,0.162500},
|
||||
{-0.112500,-0.037500,-0.100000,0.087500,-0.475000,0.087500},
|
||||
{-0.062500,0.437500,-0.062500,0.062500,-0.500000,0.062500},
|
||||
{-0.037500,1.237500,0.037500,0.037500,-0.500000,-0.025000},
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
--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,4 +0,0 @@
|
|||
default
|
||||
biome_lib
|
||||
plantlife_i18n
|
||||
farming?
|
|
@ -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
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("dryplants")
|
||||
|
||||
-- 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 = plantlife_i18n.gettext
|
||||
|
||||
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")
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
@ -130,12 +112,14 @@ minetest.register_node("dryplants:grass", {
|
|||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
tiles = {"dryplants_grass.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 },
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
|
@ -144,7 +128,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"})
|
||||
|
@ -161,12 +145,14 @@ minetest.register_node("dryplants:hay", {
|
|||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
tiles = {"dryplants_hay.png"},
|
||||
use_texture_alpha = "clip",
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5 , -0.5 , -0.5 , 0.5 , -0.4375, 0.5 },
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
|
@ -189,8 +175,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})
|
||||
|
@ -199,7 +185,3 @@ minetest.register_abm({
|
|||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -1,21 +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 = plantlife_i18n.gettext
|
||||
local S = minetest.get_translator("dryplants")
|
||||
|
||||
abstract_dryplants.grow_juncus = function(pos)
|
||||
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
|
||||
|
@ -46,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
|
||||
|
@ -60,12 +55,13 @@ minetest.register_node("dryplants:juncus", {
|
|||
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",
|
||||
|
@ -92,44 +88,69 @@ minetest.register_node("dryplants:juncus_02", {
|
|||
-- GENERATE SMALL JUNCUS
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- near water or swamp
|
||||
biome_lib:register_generate_plant({
|
||||
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,
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {
|
||||
"default:water_source",
|
||||
"sumpf:dirtywater_source",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
abstract_dryplants.grow_juncus
|
||||
)
|
||||
check_offset = -1,
|
||||
num_spawn_by = 1
|
||||
})
|
||||
|
||||
-- at dunes/beach
|
||||
biome_lib:register_generate_plant({
|
||||
surface = {
|
||||
--"default:dirt_with_grass",
|
||||
--"default:desert_sand",
|
||||
minetest.register_decoration({
|
||||
name = "dryplants:juncus_beach",
|
||||
decoration = {"air"},
|
||||
fill_ratio = 0.08,
|
||||
y_min = 1,
|
||||
y_max = 40,
|
||||
place_on = {
|
||||
"default:sand",
|
||||
--"stoneage:grass_with_silex",
|
||||
--"sumpf:peat",
|
||||
--"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
|
||||
)
|
||||
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)
|
||||
|
|
21
dryplants/locale/dryplants.de.tr
Normal file
|
@ -0,0 +1,21 @@
|
|||
# textdomain: dryplants
|
||||
Sickle=Sichel
|
||||
Cut Grass=Grasschnitt
|
||||
Hay=Heu
|
||||
Short Grass=Kurzes Gras
|
||||
Juncus=Binsen
|
||||
Wet Reed=Nasses Schilf
|
||||
Wet Reed Slab=Nasse Schilfplatte
|
||||
Wet Reed Roof=Nasses Schilfdach
|
||||
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 1=Schilfdachwinkel 1
|
||||
Reed Roof Corner 2=Schilfdachwinkel
|
||||
Reedmace=Rohrkolben
|
||||
Reedmace, height: 1=Rohrkolben, Höhe: 1
|
||||
Reedmace, height: 2=Rohrkolben, Höhe: 2
|
||||
Reedmace, height: 3=Rohrkolben, Höhe: 3
|
||||
Reedmace, height: 3 & Spikes=Rohrkolben, Höhe: 3 & Rispe
|
21
dryplants/locale/dryplants.eo.tr
Normal file
|
@ -0,0 +1,21 @@
|
|||
# textdomain: dryplants
|
||||
Sickle=
|
||||
Cut Grass=Tranĉita Herbenon
|
||||
Hay=Fojno
|
||||
Short Grass=Mallonga Herbo
|
||||
Juncus=Junko
|
||||
Wet Reed=Malseka Kano
|
||||
Wet Reed Slab=Slabo de Malseka Kano
|
||||
Wet Reed Roof=Tegmento 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 1=Tegmentangulo 1 de Kano
|
||||
Reed Roof Corner 2=Tegmentangulo 2 de Kano
|
||||
Reedmace=Tifeo
|
||||
Reedmace, height: 1=Tifeo, alteco: 1
|
||||
Reedmace, height: 2=Tifeo, alteco: 2
|
||||
Reedmace, height: 3=Tifeo, alteco: 3
|
||||
Reedmace, height: 3 & Spikes=Tifeo, alteco: 3 & Pikiloj
|
21
dryplants/locale/dryplants.fr.tr
Normal file
|
@ -0,0 +1,21 @@
|
|||
# textdomain: dryplants
|
||||
Sickle=Faucille
|
||||
Cut Grass=Herbe coupée
|
||||
Hay=Foin
|
||||
Short Grass=Herbes courtes
|
||||
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 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 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
|
||||
Reedmace, height: 2=Roseau, 2 de hauteur
|
||||
Reedmace, height: 3=Roseau, 3 de hauteur
|
||||
Reedmace, height: 3 & Spikes=Roseau, 3 de hauteur avec panicules
|
21
dryplants/locale/template.txt
Normal file
|
@ -0,0 +1,21 @@
|
|||
# textdomain: dryplants
|
||||
Sickle=
|
||||
Cut Grass=
|
||||
Hay=
|
||||
Short Grass=
|
||||
Juncus=
|
||||
Wet Reed=
|
||||
Wet Reed Slab=
|
||||
Wet Reed Roof=
|
||||
Wet Reed Roof Corner 1=
|
||||
Wet Reed Roof Corner 2=
|
||||
Reed=
|
||||
Reed Slab=
|
||||
Reed Roof=
|
||||
Reed Roof Corner 1=
|
||||
Reed Roof Corner 2=
|
||||
Reedmace=
|
||||
Reedmace, height: 1=
|
||||
Reedmace, height: 2=
|
||||
Reedmace, height: 3=
|
||||
Reedmace, height: 3 & Spikes=
|
|
@ -1,25 +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)
|
||||
local right_here = {x=pos.x, y=pos.y, z=pos.z}
|
||||
minetest.swap_node(right_here, {name="dryplants:grass_short"})
|
||||
end
|
||||
|
||||
biome_lib:register_generate_plant({
|
||||
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"
|
||||
})
|
||||
|
|
3
dryplants/mod.conf
Normal file
|
@ -0,0 +1,3 @@
|
|||
name = dryplants
|
||||
depends = default
|
||||
optional_depends = farming, ebiomes
|
|
@ -1,32 +1,20 @@
|
|||
-----------------------------------------------------------------------------------------------
|
||||
-- Grasses - More Tall Grass 0.0.2
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- by Mossmanikin
|
||||
|
||||
-- Contains code from: biome_lib
|
||||
-- Looked at code from: default
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
abstract_dryplants.grow_grass = function(pos)
|
||||
local right_here = {x=pos.x, y=pos.y+1, z=pos.z}
|
||||
local grass_size = math.random(1,5)
|
||||
if minetest.get_node(right_here).name == "air" -- instead of check_air = true,
|
||||
or minetest.get_node(right_here).name == "default:junglegrass" then
|
||||
minetest.swap_node(right_here, {name="default:grass_"..grass_size})
|
||||
end
|
||||
end
|
||||
|
||||
biome_lib:register_generate_plant({
|
||||
surface = {
|
||||
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"
|
||||
},
|
||||
max_count = TALL_GRASS_PER_MAPBLOCK,
|
||||
rarity = 101 - TALL_GRASS_RARITY,
|
||||
min_elevation = 1, -- above sea level
|
||||
plantlife_limit = -0.9,
|
||||
},
|
||||
abstract_dryplants.grow_grass
|
||||
)
|
||||
deco_type = "simple",
|
||||
flags = "all_floors"
|
||||
})
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- Dependencies: default
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
local S = minetest.get_translator("dryplants")
|
||||
|
||||
minetest.register_alias("stairs:stair_wetreed", "dryplants:wetreed_roof")
|
||||
minetest.register_alias("stairs:slab_wetreed", "dryplants:wetreed_slab")
|
||||
|
@ -44,6 +44,7 @@ minetest.register_node("dryplants:wetreed_slab", {
|
|||
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
|
@ -72,11 +73,10 @@ minetest.register_node("dryplants:wetreed_roof", {
|
|||
}
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
if AUTO_ROOF_CORNER == true then
|
||||
|
||||
local CoRNeR = {
|
||||
-- MaTeRiaL
|
||||
{"wetreed"},
|
||||
|
@ -168,13 +168,12 @@ if AUTO_ROOF_CORNER == true then
|
|||
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",
|
||||
|
@ -197,6 +196,7 @@ minetest.register_node("dryplants:wetreed_roof_corner", {
|
|||
}
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
|
@ -227,14 +227,13 @@ minetest.register_node("dryplants:wetreed_roof_corner_2", {
|
|||
}
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Wet Reed becomes (dry) Reed over time
|
||||
-----------------------------------------------------------------------------------------------
|
||||
if REED_WILL_DRY == true then
|
||||
|
||||
local DRyiNG = {
|
||||
-- WeT DRy
|
||||
{"dryplants:wetreed", "dryplants:reed"},
|
||||
|
@ -250,7 +249,7 @@ if REED_WILL_DRY == true then
|
|||
|
||||
minetest.register_abm({
|
||||
nodenames = {WeT},
|
||||
interval = REED_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)
|
||||
local direction = minetest.get_node(pos).param2
|
||||
|
@ -258,7 +257,6 @@ if REED_WILL_DRY == true then
|
|||
end,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Reed
|
||||
|
@ -269,6 +267,7 @@ minetest.register_node("dryplants:reed", {
|
|||
paramtype2 = "facedir",
|
||||
tiles = {"dryplants_reed.png"},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
|
@ -290,6 +289,7 @@ minetest.register_node("dryplants:reed_slab", {
|
|||
fixed = {-1/2, -1/2, -1/2, 1/2, 0, 1/2},
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
|
@ -318,14 +318,15 @@ minetest.register_node("dryplants:reed_roof", {
|
|||
}
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- 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",
|
||||
|
@ -348,6 +349,7 @@ minetest.register_node("dryplants:reed_roof_corner", {
|
|||
}
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
||||
|
@ -378,5 +380,6 @@ minetest.register_node("dryplants:reed_roof_corner_2", {
|
|||
}
|
||||
},
|
||||
groups = {snappy=3, flammable=2},
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
})
|
||||
|
|
|
@ -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
|
||||
|
@ -18,20 +8,22 @@
|
|||
-- The seed hairs were used by some Native American groups as tinder for starting fires
|
||||
|
||||
-- support for i18n
|
||||
local S = plantlife_i18n.gettext
|
||||
local S = minetest.get_translator("dryplants")
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- REEDMACE SHAPES
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
||||
abstract_dryplants.grow_reedmace = function(pos)
|
||||
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
|
||||
|
@ -50,14 +42,16 @@ abstract_dryplants.grow_reedmace = function(pos)
|
|||
end
|
||||
end
|
||||
|
||||
abstract_dryplants.grow_reedmace_water = function(pos)
|
||||
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"})
|
||||
|
@ -77,6 +71,8 @@ abstract_dryplants.grow_reedmace_water = function(pos)
|
|||
end
|
||||
end
|
||||
|
||||
abstract_dryplants.grow_reedmace = grow_reedmace -- compatibility
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- REEDMACE SPIKES
|
||||
-----------------------------------------------------------------------------------------------
|
||||
|
@ -92,6 +88,7 @@ minetest.register_node("dryplants:reedmace_spikes", {
|
|||
flammable=2,
|
||||
not_in_creative_inventory=1
|
||||
},
|
||||
is_ground_content = false,
|
||||
drop = 'dryplants:reedmace_sapling',
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -114,6 +111,7 @@ minetest.register_node("dryplants:reedmace_top", {
|
|||
flammable=2,
|
||||
not_in_creative_inventory=1
|
||||
},
|
||||
is_ground_content = false,
|
||||
drop = 'dryplants:reedmace_sapling',
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -137,6 +135,7 @@ minetest.register_node("dryplants:reedmace_height_2", {
|
|||
flammable=2--,
|
||||
--not_in_creative_inventory=1
|
||||
},
|
||||
is_ground_content = false,
|
||||
drop = 'dryplants:reedmace_sapling',
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -160,6 +159,7 @@ minetest.register_node("dryplants:reedmace_height_3", {
|
|||
flammable=2--,
|
||||
--not_in_creative_inventory=1
|
||||
},
|
||||
is_ground_content = false,
|
||||
drop = 'dryplants:reedmace_sapling',
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -183,6 +183,7 @@ minetest.register_node("dryplants:reedmace_height_3_spikes", {
|
|||
flammable=2--,
|
||||
--not_in_creative_inventory=1
|
||||
},
|
||||
is_ground_content = false,
|
||||
drop = 'dryplants:reedmace_sapling',
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -205,6 +206,7 @@ minetest.register_node("dryplants:reedmace", {
|
|||
flammable=2,
|
||||
not_in_creative_inventory=1
|
||||
},
|
||||
is_ground_content = false,
|
||||
drop = 'dryplants:reedmace_sapling',
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -235,6 +237,7 @@ minetest.register_node("dryplants:reedmace_bottom", {
|
|||
flammable=2,
|
||||
not_in_creative_inventory=1
|
||||
},
|
||||
is_ground_content = false,
|
||||
drop = 'dryplants:reedmace_sapling',
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -264,7 +267,8 @@ minetest.register_node("dryplants:reedmace_sapling", {
|
|||
groups = {
|
||||
snappy=3,
|
||||
flammable=2,
|
||||
attached_node=1
|
||||
attached_node=1,
|
||||
sapling=1,
|
||||
},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
selection_box = {
|
||||
|
@ -275,19 +279,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
|
||||
})
|
||||
|
@ -317,7 +321,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()
|
||||
|
@ -325,89 +329,120 @@ minetest.register_entity("dryplants:reedmace_water_entity",{
|
|||
end,
|
||||
})
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- SPAWN REEDMACE
|
||||
-----------------------------------------------------------------------------------------------
|
||||
--[[biome_lib:spawn_on_surfaces({
|
||||
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_generate_plant({
|
||||
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,
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {
|
||||
"default:water_source",
|
||||
"sumpf:dirtywater_source",
|
||||
"sumpf:sumpf"
|
||||
},
|
||||
abstract_dryplants.grow_reedmace
|
||||
)
|
||||
check_offset = -1,
|
||||
num_spawn_by = 1
|
||||
})
|
||||
|
||||
-- in water
|
||||
biome_lib:register_generate_plant({
|
||||
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,
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {
|
||||
"default:water_source",
|
||||
"sumpf:dirtywater_source"
|
||||
},
|
||||
abstract_dryplants.grow_reedmace_water
|
||||
)
|
||||
check_offset = -1,
|
||||
num_spawn_by = 1
|
||||
})
|
||||
|
||||
-- for oases & tropical beaches & tropical swamps
|
||||
biome_lib:register_generate_plant({
|
||||
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,
|
||||
deco_type = "simple",
|
||||
flags = "all_floors",
|
||||
spawn_by = {
|
||||
"default:water_source",
|
||||
"sumpf:dirtywater_source",
|
||||
"sumpf:sumpf",
|
||||
"default:desert_sand"
|
||||
},
|
||||
abstract_dryplants.grow_reedmace
|
||||
)
|
||||
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)
|
||||
|
|