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

29 Commits

Author SHA1 Message Date
ef7d33f740 Remove biome_lib usage from vines (#66)
* stuff

* Increase spawn chances
2024-06-14 20:40:11 +02:00
5a8794cd84 make pebbles and their desert variant break with fist (#70) 2024-04-12 12:20:39 +02:00
f629f54d43 Is ground content revision (#69)
* bushes ground content

minetest default game treats all bush parts as ground
content, so we do that here too. The baskets however are
player made and placed, so they aren't ground content

* cavestuff ground content

Pebbles are given to mapgen as decorations, so they have
been left as ground content.
The stalactites are not ground content

* user 'placed' nodes -> not ground content

* ground content revision
2024-03-15 17:54:16 +01:00
455f891275 Optimize textures and delete unused textures (#68) 2023-12-23 23:45:46 +11:00
54a3e1d98b patch ebiomes being bad by loading after it (#67) 2023-11-03 21:20:01 +01:00
a6c8e4a9d3 Remove biome_lib dep from pl_seaweed (#64)
* Remove biome_lib dep from pl_seaweed

* Push changes (new approach tomorrow)

* no.2
Co-authored-by: wsor4035 <24964441+wsor4035@users.noreply.github.com>
2023-10-27 11:45:01 -04:00
e9eb1f51e8 Re-add grow_reedmace to global namespace 2023-10-27 13:47:52 +02:00
fc1d05978e Remove biome lib from pl_waterlilies (#65)
* remove biome lib from pl_waterlilies

* Add rarity setting

---------

Co-authored-by: Niklp09 <89982526+Niklp09@users.noreply.github.com>
2023-10-27 09:29:04 +02:00
9aa5d85218 Reduce reemace spawn chance 2023-10-26 19:52:30 +02:00
fbd4aaf034 Remove biome_lib dep from dryplants (#63) 2023-10-26 11:53:09 -04:00
3fce92a9f5 Re-add simple spawn settings for some plants (#62)
* Red-add simple spawn settings for some plants

* Add pl_
2023-10-24 06:52:42 -04:00
46608a7fb9 Remove biome_lib dep from bushes (#61)
* Remove biome_lib dep from bushes

* Indent using tabs

* Add configurable spawn rarity
2023-10-23 19:33:59 -04:00
ab9a912598 bump min minetest version to 5.3.0 for is_creative_enabled 2023-09-24 16:55:42 +10:00
72572bb5c8 Use proper creative mode check (#59) 2023-09-23 13:18:18 -04:00
6a3c47157f Add protection check when digging vines (#58) 2023-08-30 23:30:10 +02:00
9e771e2988 Add attached_node group to poisonivy nodes (#56) 2023-08-28 11:34:00 +02:00
69e272cd64 Fix naming incositencies (#54)
* Fix naming incositencies

* Update translations
2023-07-23 15:51:09 -04:00
12cfbe3cb5 Luacheck things (#53)
* add luacheck workflow

* get rid of ancient settings in dryplants

* toss settings.txt code file

* get rid of settings in trunks

* Update .github/workflows/luacheck.yml

Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>

---------

Co-authored-by: OgelGames <olliverdc28@gmail.com>
Co-authored-by: SX <50966843+S-S-X@users.noreply.github.com>
2023-07-21 15:29:53 -04:00
2af1d996d2 replace biome_lib ABM's (#48)
* replace biome_lib ABM's

* fix some params

* remove 'group:flora' from poisonivy avoid list

* fixes
2023-07-21 11:09:53 -04:00
3b7fa4e8ea alias obsolete item 2023-07-21 11:06:06 -04:00
877d94dace remove biomelib usage from youngtrees (#52)
* remove biomelib usage from youngtrees

* remove unneeded settingtypes.txt file now
2023-07-21 08:16:57 -04:00
ded2685047 fix farming plus groups override 2023-07-19 23:34:31 -04:00
e58042acd0 use degrotate for sunflowers (#49) 2023-07-15 15:57:47 -04:00
f4185762d5 Some minor German translation fixes (#47) 2023-07-14 07:07:24 -04:00
c7f65aac83 cleanup codebase (#46)
* cleanup codebase

* fix typo

* add nil checks to on_place

* nuke all mod loaded statements
2023-07-10 18:24:25 -04:00
d9782771c3 remove biomelib usage from sunflowers (#44) 2023-07-09 16:14:45 -04:00
d483c2a1ae bump the number of spawnby in molehills decoration registration 2023-07-09 15:55:06 -04:00
c6b1ce5ca5 remove biome lib usage from molehills (#43) 2023-07-09 21:52:04 +02:00
23d04af7d6 remove biomelib dep from cavestuff (#42)
Co-authored-by: Niklp09 <89982526+Niklp09@users.noreply.github.com>
2023-07-09 15:14:43 -04:00
273 changed files with 1315 additions and 2187 deletions

13
.github/workflows/luacheck.yml vendored Normal file
View 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
View File

@ -1 +0,0 @@
*~

View File

@ -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",
}

View File

@ -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."))

View File

@ -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.

View File

@ -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.

View File

@ -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.=

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -8,14 +8,9 @@
-- 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_youngtrees_rarity = tonumber(minetest.settings:get("bushes_youngtrees_rarity")) or 100
local bushes_youngtrees_rarity_fertility = tonumber(minetest.settings:get("bushes_youngtrees_rarity_fertility")) or 0.6
local bush_rarity = minetest.settings:get("bushes.bush_rarity") or 0.008
local youngtree_rarity = minetest.settings:get("youngtree.bush_rarity") or 0.006
minetest.register_node("bushes:youngtree2_bottom", {
description = S("Young Tree 2 (bottom)"),
@ -29,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
}
},
@ -38,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",
@ -77,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",
@ -122,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, {
@ -141,44 +135,12 @@ for i in pairs(BushLeafNode) do
})
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
@ -194,52 +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
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"})
pl.register_on_generate({
surface = {
"default:dirt_with_grass",
"stoneage:grass_with_silex",
"sumpf:peat",
"sumpf:sumpf"
},
noise_params = pl.generate_noise_params({rarity = bushes_bush_rarity, rarity_fertility = bushes_bush_rarity_fertility}),
min_elevation = 1, -- above sea level
},
"bushes:bushes",
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)
local height = math.random(4,5)
abstract_bushes.grow_youngtree_node2(pos,height)
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})
@ -250,17 +268,50 @@ 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
pl.register_on_generate({
surface = {
"default:dirt_with_grass",
"stoneage:grass_with_silex",
"sumpf:peat",
"sumpf:sumpf"
},
noise_params = pl.generate_noise_params({rarity = bushes_youngtrees_rarity, rarity_fertility = bushes_youngtrees_rarity_fertility}),
min_elevation = 1, -- above sea level
minetest.register_decoration({
name = "bushes:youngtree",
decoration = {
"air"
},
"bushes:youngtrees",
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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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=

View File

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

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 609 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 540 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 657 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 525 B

View File

@ -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

View File

@ -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.")

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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=

View File

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

View File

@ -159,19 +159,14 @@ 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
@ -216,4 +211,5 @@ minetest.register_node(":bushes:basket_empty", {
paramtype = "light",
paramtype2 = "facedir",
groups = { dig_immediate = 3 },
is_ground_content = false,
})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -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...")

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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=

View File

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

View File

@ -12,33 +12,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, 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 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, dig_immediate=3},
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",{
@ -48,7 +47,7 @@ minetest.register_node("cavestuff:desert_pebble_1",{
tiles = {"default_desert_stone.png"},
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky=3, stone=1, attached_node=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)
@ -67,7 +66,7 @@ minetest.register_node("cavestuff:desert_pebble_2",{
tiles = {"default_desert_stone.png"},
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, dig_immediate=3},
selection_box = cbox,
collision_box = cbox,
sounds = default.node_sound_stone_defaults(),
@ -79,6 +78,7 @@ 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",
@ -113,7 +113,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
@ -125,6 +125,7 @@ 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",
@ -143,6 +144,7 @@ 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",
@ -156,5 +158,3 @@ minetest.register_node("cavestuff:stalactite_3",{
}
},
})
--Stalagmites

View File

@ -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 = {

View File

@ -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")
-----------------------------------------------------------------------------------------------
@ -137,6 +119,7 @@ minetest.register_node("dryplants:grass", {
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(),
})
@ -145,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"})
@ -169,6 +152,7 @@ minetest.register_node("dryplants:hay", {
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(),
})
@ -191,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})
@ -201,7 +185,3 @@ minetest.register_abm({
end
end,
})
-----------------------------------------------------------------------------------------------
print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...")
-----------------------------------------------------------------------------------------------

View File

@ -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 = 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,42 +88,69 @@ minetest.register_node("dryplants:juncus_02", {
-- GENERATE SMALL JUNCUS
-----------------------------------------------------------------------------------------------
-- near water or swamp
pl.register_on_generate({
surface = {
"default:dirt_with_grass",
--"default:desert_sand",
--"default:sand",
"stoneage:grass_with_silex",
"sumpf:peat",
"sumpf:sumpf"
},
noise_params = pl.generate_noise_params({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,
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",
"stoneage:grass_with_silex",
"sumpf:peat",
"sumpf:sumpf"
},
"dryplants:juncus_near_water",
abstract_dryplants.grow_juncus
)
deco_type = "simple",
flags = "all_floors",
spawn_by = {
"default:water_source",
"sumpf:dirtywater_source",
"sumpf:sumpf"
},
check_offset = -1,
num_spawn_by = 1
})
-- at dunes/beach
pl.register_on_generate({
surface = {
--"default:dirt_with_grass",
--"default:desert_sand",
"default:sand",
--"stoneage:grass_with_silex",
--"sumpf:peat",
--"sumpf:sumpf"
},
noise_params = pl.generate_noise_params({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,
minetest.register_decoration({
name = "dryplants:juncus_beach",
decoration = {"air"},
fill_ratio = 0.08,
y_min = 1,
y_max = 40,
place_on = {
"default:sand",
},
"dryplants:junces_at_beach",
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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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=

View File

@ -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)
local right_here = {x=pos.x, y=pos.y, z=pos.z}
minetest.swap_node(right_here, {name="dryplants:grass_short"})
end
pl.register_on_generate({
surface = {
"default:dirt_with_grass",
},
noise_params = pl.generate_noise_params({max_count = 4800, rarity = 25}),
min_elevation = 1, -- above sea level
},
"dryplants:grass",
abstract_dryplants.grow_grass_variation
)
-- @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",
},
deco_type = "simple",
flags = "all_floors"
})

View File

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

View File

@ -1,12 +1,3 @@
-----------------------------------------------------------------------------------------------
-- Grasses - More Tall Grass 0.0.2
-----------------------------------------------------------------------------------------------
-- by Mossmanikin
-- Contains code from: biome_lib
-- Looked at code from: default
-----------------------------------------------------------------------------------------------
minetest.register_decoration({
decoration = {
"default:grass_1",
@ -15,15 +6,15 @@ minetest.register_decoration({
"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"
},
noise_params = pl.generate_noise_params({max_count = TALL_GRASS_PER_MAPBLOCK, rarity = 101 - TALL_GRASS_RARITY}),
flags = "all_floors",
deco_type = "simple",
y_min = 1,
y_max = 48
flags = "all_floors"
})

View File

@ -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,109 +73,107 @@ 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 = {
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",
@ -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,37 +227,35 @@ 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 = {
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
-----------------------------------------------------------------------------------------------
@ -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(),
})

View File

@ -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
@ -24,14 +14,16 @@ 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 = {
@ -276,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
})
@ -318,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()
@ -326,86 +329,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
pl.register_on_generate({
surface = {
"default:dirt_with_grass",
"default:desert_sand",
"stoneage:grass_with_silex",
"sumpf:peat",
"sumpf:sumpf"
},
noise_params = pl.generate_noise_params({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,
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"
},
"dryplants:reedmace_near_water",
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
pl.register_on_generate({
surface = {
"default:dirt",
"default:dirt_with_grass",
--"default:desert_sand",
--"stoneage:grass_with_silex",
"stoneage:sand_with_silex",
"sumpf:peat",
"sumpf:sumpf"
},
noise_params = pl.generate_noise_params({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,
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",
"stoneage:sand_with_silex",
"sumpf:peat",
"sumpf:sumpf"
},
"dryplants:reedmace_in_water",
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
pl.register_on_generate({
surface = {
"default:sand",
"sumpf:sumpf"
},
noise_params = pl.generate_noise_params({max_count = REEDMACE_FOR_OASES_PER_MAPBLOCK, 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,
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"
},
"dryplants:reemace_oases",
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)

View File

@ -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 = true

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 393 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 708 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 333 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 823 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

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