From 6efda7cfde22ce007d6ce689668185c23de3247b Mon Sep 17 00:00:00 2001 From: Mossmanikin Date: Fri, 20 Dec 2013 19:04:27 +0100 Subject: [PATCH] Ferns 0.1.2 --- .gitattributes | 22 + .gitignore | 215 +++++++++ ferns/SeTTiNGS.txt | 42 ++ ferns/crafting.lua | 104 +++++ ferns/depends.txt | 2 + ferns/fern.lua | 250 +++++++++++ ferns/gianttreefern.lua | 408 ++++++++++++++++++ ferns/horsetail.lua | 174 ++++++++ ferns/init.lua | 33 ++ ferns/textures/ferns_5.png | Bin 0 -> 630 bytes ferns/textures/ferns_6.png | Bin 0 -> 753 bytes ferns/textures/ferns_7.png | Bin 0 -> 753 bytes ferns/textures/ferns_8.png | Bin 0 -> 596 bytes ferns/textures/ferns_fern.png | Bin 0 -> 448 bytes ferns/textures/ferns_fern_big.png | Bin 0 -> 1431 bytes ferns/textures/ferns_fern_mid.png | Bin 0 -> 969 bytes ferns/textures/ferns_fern_tree.png | Bin 0 -> 1650 bytes ferns/textures/ferns_fern_tree_giant.png | Bin 0 -> 3771 bytes ferns/textures/ferns_fern_tree_inv.png | Bin 0 -> 495 bytes ferns/textures/ferns_fern_tree_tl.png | Bin 0 -> 356 bytes ferns/textures/ferns_fern_tree_tr.png | Bin 0 -> 349 bytes ferns/textures/ferns_fern_trunk.png | Bin 0 -> 765 bytes ferns/textures/ferns_fern_trunk_big.png | Bin 0 -> 767 bytes ferns/textures/ferns_fern_trunk_big_top.png | Bin 0 -> 494 bytes ferns/textures/ferns_fern_trunk_top.png | Bin 0 -> 342 bytes ferns/textures/ferns_ferntuber.png | Bin 0 -> 552 bytes ferns/textures/ferns_ferntuber_roasted.png | Bin 0 -> 558 bytes ferns/textures/ferns_fiddlehead.png | Bin 0 -> 437 bytes ferns/textures/ferns_fiddlehead_roasted.png | Bin 0 -> 648 bytes ferns/textures/ferns_horsetail_01.png | Bin 0 -> 230 bytes ferns/textures/ferns_horsetail_02.png | Bin 0 -> 256 bytes ferns/textures/ferns_horsetail_03.png | Bin 0 -> 294 bytes ferns/textures/ferns_horsetail_04.png | Bin 0 -> 308 bytes ferns/textures/ferns_sapling_tree_fern.png | Bin 0 -> 284 bytes .../ferns_sapling_tree_fern_giant.png | Bin 0 -> 306 bytes ferns/textures/ferns_tree_fern_leave_big.png | Bin 0 -> 645 bytes .../ferns_tree_fern_leave_big_cross.png | Bin 0 -> 816 bytes .../ferns_tree_fern_leave_big_end.png | Bin 0 -> 541 bytes .../not_in_use/archaeplantae_horsetails.png | Bin 0 -> 401 bytes ferns/textures/not_in_use/big picture 3.png | Bin 0 -> 2091 bytes .../not_in_use/ferns_fern_big_left.png | Bin 0 -> 744 bytes .../not_in_use/ferns_fern_big_right.png | Bin 0 -> 719 bytes .../not_in_use/ferns_fern_mid_left.png | Bin 0 -> 482 bytes .../not_in_use/ferns_fern_mid_right.png | Bin 0 -> 515 bytes .../not_in_use/ferns_fern_tree_bl.png | Bin 0 -> 656 bytes .../not_in_use/ferns_fern_tree_br.png | Bin 0 -> 651 bytes .../not_in_use/ferns_fern_trunk_big_crown.png | Bin 0 -> 794 bytes .../textures/old/archaeplantae_fern_old4.png | Bin 0 -> 458 bytes ferns/textures/old/comb.png | Bin 0 -> 225 bytes ferns/textures/old/ferns_5_old.png | Bin 0 -> 552 bytes ferns/textures/old/ferns_6_old.png | Bin 0 -> 782 bytes ferns/textures/old/ferns_7_old.png | Bin 0 -> 759 bytes ferns/textures/old/ferns_fern_big_old.png | Bin 0 -> 1245 bytes ferns/textures/old/ferns_fern_mid_old.png | Bin 0 -> 760 bytes ferns/textures/old/ferns_fern_tree_old.png | Bin 0 -> 1395 bytes .../old/ferns_fern_trunk_big_old2.png | Bin 0 -> 669 bytes .../old/ferns_fern_trunk_big_top_old.png | Bin 0 -> 911 bytes .../old/ferns_fern_trunk_big_top_old2.png | Bin 0 -> 820 bytes .../textures/old/ferns_fern_trunk_top_old.png | Bin 0 -> 340 bytes .../textures/old/ferns_horsetail_01_old2.png | Bin 0 -> 295 bytes .../textures/old/ferns_horsetail_02_old2.png | Bin 0 -> 328 bytes .../textures/old/ferns_horsetail_03_old2.png | Bin 0 -> 362 bytes .../textures/old/ferns_horsetail_04_old2.png | Bin 0 -> 404 bytes .../ferns_tree_fern_leave_big_cross_old.png | Bin 0 -> 793 bytes .../old/ferns_tree_fern_leave_big_end_old.png | Bin 0 -> 563 bytes .../old/ferns_tree_fern_leave_big_old.png | Bin 0 -> 617 bytes ferns/treefern.lua | 247 +++++++++++ modpack.txt | 0 68 files changed, 1497 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 ferns/SeTTiNGS.txt create mode 100644 ferns/crafting.lua create mode 100644 ferns/depends.txt create mode 100644 ferns/fern.lua create mode 100644 ferns/gianttreefern.lua create mode 100644 ferns/horsetail.lua create mode 100644 ferns/init.lua create mode 100644 ferns/textures/ferns_5.png create mode 100644 ferns/textures/ferns_6.png create mode 100644 ferns/textures/ferns_7.png create mode 100644 ferns/textures/ferns_8.png create mode 100644 ferns/textures/ferns_fern.png create mode 100644 ferns/textures/ferns_fern_big.png create mode 100644 ferns/textures/ferns_fern_mid.png create mode 100644 ferns/textures/ferns_fern_tree.png create mode 100644 ferns/textures/ferns_fern_tree_giant.png create mode 100644 ferns/textures/ferns_fern_tree_inv.png create mode 100644 ferns/textures/ferns_fern_tree_tl.png create mode 100644 ferns/textures/ferns_fern_tree_tr.png create mode 100644 ferns/textures/ferns_fern_trunk.png create mode 100644 ferns/textures/ferns_fern_trunk_big.png create mode 100644 ferns/textures/ferns_fern_trunk_big_top.png create mode 100644 ferns/textures/ferns_fern_trunk_top.png create mode 100644 ferns/textures/ferns_ferntuber.png create mode 100644 ferns/textures/ferns_ferntuber_roasted.png create mode 100644 ferns/textures/ferns_fiddlehead.png create mode 100644 ferns/textures/ferns_fiddlehead_roasted.png create mode 100644 ferns/textures/ferns_horsetail_01.png create mode 100644 ferns/textures/ferns_horsetail_02.png create mode 100644 ferns/textures/ferns_horsetail_03.png create mode 100644 ferns/textures/ferns_horsetail_04.png create mode 100644 ferns/textures/ferns_sapling_tree_fern.png create mode 100644 ferns/textures/ferns_sapling_tree_fern_giant.png create mode 100644 ferns/textures/ferns_tree_fern_leave_big.png create mode 100644 ferns/textures/ferns_tree_fern_leave_big_cross.png create mode 100644 ferns/textures/ferns_tree_fern_leave_big_end.png create mode 100644 ferns/textures/not_in_use/archaeplantae_horsetails.png create mode 100644 ferns/textures/not_in_use/big picture 3.png create mode 100644 ferns/textures/not_in_use/ferns_fern_big_left.png create mode 100644 ferns/textures/not_in_use/ferns_fern_big_right.png create mode 100644 ferns/textures/not_in_use/ferns_fern_mid_left.png create mode 100644 ferns/textures/not_in_use/ferns_fern_mid_right.png create mode 100644 ferns/textures/not_in_use/ferns_fern_tree_bl.png create mode 100644 ferns/textures/not_in_use/ferns_fern_tree_br.png create mode 100644 ferns/textures/not_in_use/ferns_fern_trunk_big_crown.png create mode 100644 ferns/textures/old/archaeplantae_fern_old4.png create mode 100644 ferns/textures/old/comb.png create mode 100644 ferns/textures/old/ferns_5_old.png create mode 100644 ferns/textures/old/ferns_6_old.png create mode 100644 ferns/textures/old/ferns_7_old.png create mode 100644 ferns/textures/old/ferns_fern_big_old.png create mode 100644 ferns/textures/old/ferns_fern_mid_old.png create mode 100644 ferns/textures/old/ferns_fern_tree_old.png create mode 100644 ferns/textures/old/ferns_fern_trunk_big_old2.png create mode 100644 ferns/textures/old/ferns_fern_trunk_big_top_old.png create mode 100644 ferns/textures/old/ferns_fern_trunk_big_top_old2.png create mode 100644 ferns/textures/old/ferns_fern_trunk_top_old.png create mode 100644 ferns/textures/old/ferns_horsetail_01_old2.png create mode 100644 ferns/textures/old/ferns_horsetail_02_old2.png create mode 100644 ferns/textures/old/ferns_horsetail_03_old2.png create mode 100644 ferns/textures/old/ferns_horsetail_04_old2.png create mode 100644 ferns/textures/old/ferns_tree_fern_leave_big_cross_old.png create mode 100644 ferns/textures/old/ferns_tree_fern_leave_big_end_old.png create mode 100644 ferns/textures/old/ferns_tree_fern_leave_big_old.png create mode 100644 ferns/treefern.lua create mode 100644 modpack.txt diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..412eeda --- /dev/null +++ b/.gitattributes @@ -0,0 +1,22 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b9d6bd9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,215 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results + +[Dd]ebug/ +[Rr]elease/ +x64/ +build/ +[Bb]in/ +[Oo]bj/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +*_i.c +*_p.c +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.log +*.scc + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +*.ncrunch* +.*crunch*.local.xml + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.Publish.xml +*.pubxml + +# NuGet Packages Directory +## TODO: If you have NuGet Package Restore enabled, uncomment the next line +#packages/ + +# Windows Azure Build Output +csx +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.[Pp]ublish.xml +*.pfx +*.publishsettings + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +App_Data/*.mdf +App_Data/*.ldf + +############# +## Windows detritus +############# + +# Windows image file caches +Thumbs.db +ehthumbs.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Mac crap +.DS_Store + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +dist/ +build/ +eggs/ +parts/ +var/ +sdist/ +develop-eggs/ +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg diff --git a/ferns/SeTTiNGS.txt b/ferns/SeTTiNGS.txt new file mode 100644 index 0000000..6a82e4f --- /dev/null +++ b/ferns/SeTTiNGS.txt @@ -0,0 +1,42 @@ +-- In case you don't wanna have errors: + +-- Only change what's behind a "=" (or "--"). +-- Don't use caps (behind a "="). + +-- If there's a "false" (behind a "=") you can change it to "true" (and the other way around). +-- Spelling is important. +-- If "true" or "false" is necessary as setting, everything(!) which is not spelled "true" will be read as if it were "false" (even "1", "True"...) + +-- If you wanna comment something (for example to remember the default value), you can do this by putting "--" in front of the comment. +-- You can put "--" at the end of a line with "=" in it, or at the beginning of an empty/new line (minetest will ignore what's behind it then). +-- But don't put "--" in front of a line with "=" in it (or else minetest will ignore the setting and you might get an error). + +-- If something is still unclear, don't hesitate to post your question @ https://forum.minetest.net/viewtopic.php?id=6921 + + +-- Which plants should generate/spawn? +Lady_fern = true +Horsetails = true +Tree_Fern = true +Giant_Tree_Fern = true + +-- Where should they generate/spawn? (if they generate/spawn) +-- +-- Lady-Fern +Ferns_near_Tree = true +Ferns_near_Rock = true +Ferns_near_Ores = true -- if there's a bunch of ferns there's ores nearby, this one causes a huge fps drop +Ferns_in_Groups = false -- this one is meant as a replacement of Ferns_near_Ores: ferns tend to generate in groups, less fps drop, no hint for nearby ores +-- +-- Horsetails +Horsetails_Spawning = true -- horsetails will grow in already explored areas, over time, near water or gravel +Horsetails_on_Grass = true -- on dirt with grass and swamp (sumpf mod) +Horsetails_on_Stony = true -- on gravel, mossy cobble and silex (stoneage mod) +-- +-- Tree_Fern +Tree_Ferns_in_Jungle = true +Tree_Ferns_for_Oases = true -- for oases and tropical beaches +-- +-- Giant_Tree_Fern +Giant_Tree_Ferns_in_Jungle = true +Giant_Tree_Ferns_for_Oases = true -- for oases and tropical beaches diff --git a/ferns/crafting.lua b/ferns/crafting.lua new file mode 100644 index 0000000..656a763 --- /dev/null +++ b/ferns/crafting.lua @@ -0,0 +1,104 @@ +----------------------------------------------------------------------------------------------- +-- Ferns - Crafting 0.0.5 +----------------------------------------------------------------------------------------------- +-- (by Mossmanikin) +-- License (everything): WTFPL +----------------------------------------------------------------------------------------------- +minetest.register_craft({ + type = "shapeless", + output = "ferns:fiddlehead 3", + recipe = {"ferns:fern_01"}, + replacements = { + {"ferns:fern_01", "ferns:ferntuber"} + }, +}) + +minetest.register_craft({ + type = "shapeless", + output = "ferns:fiddlehead 3", + recipe = {"ferns:tree_fern_leaves"}, + replacements = { + {"ferns:tree_fern_leaves", "ferns:sapling_tree_fern"} + }, +}) +----------------------------------------------------------------------------------------------- +-- FIDDLEHEAD +----------------------------------------------------------------------------------------------- +minetest.register_alias("archaeplantae:fiddlehead", "ferns:fiddlehead") + +minetest.register_craftitem("ferns:fiddlehead", { + description = "Fiddlehead", + inventory_image = "ferns_fiddlehead.png", + on_use = minetest.item_eat(-1), -- slightly poisonous when raw +}) +minetest.register_craft({ + type = "cooking", + output = "ferns:fiddlehead_roasted", + recipe = "ferns:fiddlehead", + cooktime = 1, +}) +minetest.register_craftitem("ferns:fiddlehead_roasted", { + description = "Roasted Fiddlehead", + inventory_image = "ferns_fiddlehead_roasted.png", + on_use = minetest.item_eat(1), -- edible when cooked +}) +----------------------------------------------------------------------------------------------- +-- FERN TUBER +----------------------------------------------------------------------------------------------- +minetest.register_alias("archaeplantae:ferntuber", "ferns:ferntuber") + +minetest.register_craftitem("ferns:ferntuber", { + description = "Fern Tuber", + inventory_image = "ferns_ferntuber.png", +}) +minetest.register_craft({ + type = "cooking", + output = "ferns:ferntuber_roasted", + recipe = "ferns:ferntuber", + cooktime = 3, +}) + +minetest.register_alias("archaeplantae:ferntuber_roasted", "ferns:ferntuber_roasted") + +minetest.register_craftitem("ferns:ferntuber_roasted", { + description = "Roasted Fern Tuber", + inventory_image = "ferns_ferntuber_roasted.png", + on_use = minetest.item_eat(3), +}) +----------------------------------------------------------------------------------------------- +-- HORSETAIL (EQUISETUM) --> GREEN DYE https://en.wikipedia.org/wiki/Equisetum +----------------------------------------------------------------------------------------------- +minetest.register_craft({ + type = "shapeless", + output = "dye:green", + recipe = {"group:horsetail"}, +}) +----------------------------------------------------------------------------------------------- +-- GLUE WOODEN TOOLS with RESIN & POLISH them with HORSETAIL (planned) +----------------------------------------------------------------------------------------------- +--[[minetest.register_craft({ + type = "shapeless", + output = "default:pick_wood", + recipe = {"default:pick_wood","group:horsetail","farming:string","default:stick"}, +}) +minetest.register_craft({ + type = "shapeless", + output = "default:shovel_wood", + recipe = {"default:shovel_wood","group:horsetail","farming:string","default:stick"}, +}) +minetest.register_craft({ + type = "shapeless", + output = "default:axe_wood", + recipe = {"default:axe_wood","group:horsetail","farming:string","default:stick"}, +}) +minetest.register_craft({ + type = "shapeless", + output = "default:sword_wood", + recipe = {"default:sword_wood","group:horsetail","farming:string","default:stick"}, +}) +minetest.register_craft({ + type = "shapeless", + output = "farming:hoe_wood", + recipe = {"farming:hoe_wood","group:horsetail","farming:string","default:stick"}, +})]] + diff --git a/ferns/depends.txt b/ferns/depends.txt new file mode 100644 index 0000000..bde0bdf --- /dev/null +++ b/ferns/depends.txt @@ -0,0 +1,2 @@ +default +plants_lib \ No newline at end of file diff --git a/ferns/fern.lua b/ferns/fern.lua new file mode 100644 index 0000000..9a12f23 --- /dev/null +++ b/ferns/fern.lua @@ -0,0 +1,250 @@ +----------------------------------------------------------------------------------------------- +-- Ferns - Fern 0.1.0 +----------------------------------------------------------------------------------------------- +-- by Mossmanikin +-- License (everything): WTFPL +-- Contains code from: plants_lib +-- Looked at code from: default, flowers, painting, trees +-- Dependencies: plants_lib +-- Supports: dryplants, stoneage, sumpf +----------------------------------------------------------------------------------------------- +-- some inspiration from here +-- https://en.wikipedia.org/wiki/Athyrium_yokoscense +-- http://www.mygarden.net.au/gardening/athyrium-yokoscense/3900/1 +----------------------------------------------------------------------------------------------- + +abstract_ferns.grow_fern = function(pos) + local fern_size = math.random(1,4) + local right_here = {x=pos.x, y=pos.y+1, z=pos.z} + + if minetest.env:get_node(right_here).name == "air" -- instead of check_air = true, + or minetest.env:get_node(right_here).name == "default:junglegrass" then + + if fern_size == 1 then + minetest.env:add_node(right_here, {name="ferns:fern_01"}) + elseif fern_size <= 3 then + minetest.env:add_node(right_here, {name="ferns:fern_02"}) + else -- fern_size == 4 then + minetest.env:add_node(right_here, {name="ferns:fern_03"}) + end + end +end + +----------------------------------------------------------------------------------------------- +-- FERN (large) +----------------------------------------------------------------------------------------------- +minetest.register_alias("archaeplantae:fern", "ferns:fern_03") -- support old versions + +minetest.register_node("ferns:fern_03", { + drawtype = "plantlike", + visual_scale = 2, + paramtype = "light", + --tiles = {"[combine:32x32:0,0=top_left.png:0,16=bottom_left.png:16,0=top_right.png:16,16=bottom_right.png"}, + tiles = {"ferns_fern_big.png"}, + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1,not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, + }, + drop = "ferns:fern_01", +}) +----------------------------------------------------------------------------------------------- +-- FERN (medium) +----------------------------------------------------------------------------------------------- +minetest.register_alias("archaeplantae:fern_mid", "ferns:fern_02") -- support old versions + +minetest.register_node("ferns:fern_02", { + drawtype = "plantlike", + visual_scale = 2, + paramtype = "light", + tiles = {"ferns_fern_mid.png"}, + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1,not_in_creative_inventory=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, + }, + drop = "ferns:fern_01", +}) +----------------------------------------------------------------------------------------------- +-- FERN (small) +----------------------------------------------------------------------------------------------- +minetest.register_alias("archaeplantae:fern_small", "ferns:fern_01") -- support old versions +minetest.register_alias("ferns:fern_04", "ferns:fern_02") -- for placing + +minetest.register_node("ferns:fern_01", { + description = "Lady-fern (Athyrium)", -- divinationis + drawtype = "plantlike", + paramtype = "light", + tiles = {"ferns_fern.png"}, + inventory_image = "ferns_fern.png", + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, + }, + on_place = function(itemstack, placer, pointed_thing) + -- place a random fern + local stack = ItemStack("ferns:fern_0"..math.random(1,4)) + local ret = minetest.item_place(stack, placer, pointed_thing) + return ItemStack("ferns:fern_01 "..itemstack:get_count()-(1-ret:get_count())) + end, +}) +----------------------------------------------------------------------------------------------- +-- Spawning +----------------------------------------------------------------------------------------------- +--[[plantslib:spawn_on_surfaces({ + spawn_delay = 1200, + spawn_plants = {"ferns:fern"}, + spawn_chance = 800, + spawn_surfaces = { + "default:dirt_with_grass", + "default:mossycobble", + "dryplants:grass_short", + "default:jungletree", + "stoneage:grass_with_silex" + }, + seed_diff = 329, +}) +plantslib:spawn_on_surfaces({ + spawn_delay = 1200, + spawn_plants = {"ferns:fern_mid"}, + spawn_chance = 400, + spawn_surfaces = { + "default:dirt_with_grass", + "default:mossycobble", + "dryplants:grass_short", + "default:jungletree", + "stoneage:grass_with_silex" + }, + seed_diff = 329, +})]] +if Ferns_near_Tree == true then +plantslib:register_generate_plant({ -- near trees (woodlands) + surface = { + "default:dirt_with_grass", + "default:mossycobble", + "default:desert_sand", + "default:sand", + "default:jungletree", + "stoneage:grass_with_silex", + "sumpf:sumpf" + }, + max_count = 30, + rarity = 62,--63, + min_elevation = 1, -- above sea level + near_nodes = {"group:tree"}, + near_nodes_size = 3,--4, + near_nodes_vertical = 2,--3, + near_nodes_count = 1, + plantlife_limit = -0.9, + humidity_max = -1.0, + humidity_min = 0.4, + temp_max = -0.5, -- 55 °C (too hot?) + temp_min = 0.75, -- -12 °C + check_air = false, + }, + "abstract_ferns.grow_fern" +) +end + +if Ferns_near_Rock == true then +plantslib:register_generate_plant({ -- near stone (mountains) + surface = { + "default:dirt_with_grass", + "default:mossycobble", + "group:falling_node", + --"default:jungletree", + "stoneage:grass_with_silex", + "sumpf:sumpf" + }, + max_count = 35, + rarity = 40, + min_elevation = 1, -- above sea level + near_nodes = {"group:stone"}, + near_nodes_size = 1, + near_nodes_count = 16, + plantlife_limit = -0.9, + humidity_max = -1.0, + humidity_min = 0.4, + temp_max = -0.5, -- 55 °C (too hot?) + temp_min = 0.75, -- -12 °C + check_air = false, + }, + "abstract_ferns.grow_fern" +) +end + +if Ferns_near_Ores == true then -- this one causes a huge fps drop +plantslib:register_generate_plant({ -- near ores (potential mining sites) + surface = { + "default:dirt_with_grass", + "default:mossycobble", + "default:stone_with_coal", + "default:stone_with_iron", + "moreores:mineral_tin", + "moreores:mineral_silver", + "sumpf:sumpf" + }, + max_count = 1200,--1600, -- maybe too much? :D + rarity = 25,--15, + min_elevation = 1, -- above sea level + near_nodes = { + "default:stone_with_iron", + --"default:stone_with_copper", + --"default:stone_with_mese", + --"default:stone_with_gold", + --"default:stone_with_diamond", + "moreores:mineral_tin", + "moreores:mineral_silver" + --"moreores:mineral_mithril" + }, + near_nodes_size = 2, + near_nodes_vertical = 4,--5,--6, + near_nodes_count = 2,--3, + plantlife_limit = -0.9, + humidity_max = -1.0, + humidity_min = 0.4, + temp_max = -0.5, -- 55 °C (too hot?) + temp_min = 0.75, -- -12 °C + check_air = false, + }, + "abstract_ferns.grow_fern" +) +end + +if Ferns_in_Groups == true then -- this one is meant as a replacement of Ferns_near_Ores +plantslib:register_generate_plant({ + surface = { + "default:dirt_with_grass", + "default:mossycobble", + "default:stone_with_coal", + "default:stone_with_iron", + "moreores:mineral_tin", + "moreores:mineral_silver", + "sumpf:sumpf" + }, + max_count = 70, + rarity = 25,--15, + min_elevation = 1, -- above sea level + near_nodes = { + "default:stone" + }, + near_nodes_size = 2, + near_nodes_vertical = 2,--6, + near_nodes_count = 3, + plantlife_limit = -0.9, + humidity_max = -1.0, + humidity_min = 0.4, + temp_max = -0.5, -- 55 °C (too hot?) + temp_min = 0.75, -- -12 °C + check_air = false, + }, + "abstract_ferns.grow_fern" +) +end \ No newline at end of file diff --git a/ferns/gianttreefern.lua b/ferns/gianttreefern.lua new file mode 100644 index 0000000..bc45f76 --- /dev/null +++ b/ferns/gianttreefern.lua @@ -0,0 +1,408 @@ +----------------------------------------------------------------------------------------------- +-- Ferns - Giant Tree Fern 0.1.1 +----------------------------------------------------------------------------------------------- +-- by Mossmanikin +-- License (everything): WTFPL +-- Contains code from: plants_lib +-- Looked at code from: 4seasons, default +-- Supports: vines +----------------------------------------------------------------------------------------------- + +-- lot of code, lot to load + +abstract_ferns.grow_giant_tree_fern = function(pos) + local size = math.random(12,16) + local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z} + + local leave_a_1 = {x = pos.x + 1, y = pos.y + size - 1, z = pos.z } + local leave_a_2 = {x = pos.x + 2, y = pos.y + size , z = pos.z } + local leave_a_3 = {x = pos.x + 3, y = pos.y + size - 1, z = pos.z } + local leave_a_4 = {x = pos.x + 4, y = pos.y + size - 2, z = pos.z } + + local leave_b_1 = {x = pos.x - 1, y = pos.y + size - 1, z = pos.z } + local leave_b_2 = {x = pos.x - 2, y = pos.y + size, z = pos.z } + local leave_b_3 = {x = pos.x - 3, y = pos.y + size - 1, z = pos.z } + local leave_b_4 = {x = pos.x - 4, y = pos.y + size - 2, z = pos.z } + + local leave_c_1 = {x = pos.x , y = pos.y + size - 1, z = pos.z + 1} + local leave_c_2 = {x = pos.x , y = pos.y + size , z = pos.z + 2} + local leave_c_3 = {x = pos.x , y = pos.y + size - 1, z = pos.z + 3} + local leave_c_4 = {x = pos.x , y = pos.y + size - 2, z = pos.z + 4} + + local leave_d_1 = {x = pos.x , y = pos.y + size - 1, z = pos.z - 1} + local leave_d_2 = {x = pos.x , y = pos.y + size , z = pos.z - 2} + local leave_d_3 = {x = pos.x , y = pos.y + size - 1, z = pos.z - 3} + local leave_d_4 = {x = pos.x , y = pos.y + size - 2, z = pos.z - 4} + + if minetest.env:get_node(pos_01).name == "air" -- instead of check_air = true, + or minetest.env:get_node(pos_01).name == "ferns:sapling_giant_tree_fern" + or minetest.env:get_node(pos_01).name == "default:junglegrass" then + + minetest.env:add_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name="ferns:fern_trunk_big"}) + minetest.env:add_node({x = pos.x, y = pos.y + 2, z = pos.z}, {name="ferns:fern_trunk_big"}) + minetest.env:add_node({x = pos.x, y = pos.y + 3, z = pos.z}, {name="ferns:fern_trunk_big"}) + minetest.env:add_node({x = pos.x, y = pos.y + 4, z = pos.z}, {name="ferns:fern_trunk_big"}) + minetest.env:add_node({x = pos.x, y = pos.y + 5, z = pos.z}, {name="ferns:fern_trunk_big"}) + minetest.env:add_node({x = pos.x, y = pos.y + 6, z = pos.z}, {name="ferns:fern_trunk_big"}) + minetest.env:add_node({x = pos.x, y = pos.y + 7, z = pos.z}, {name="ferns:fern_trunk_big"}) + minetest.env:add_node({x = pos.x, y = pos.y + 8, z = pos.z}, {name="ferns:fern_trunk_big"}) + + if size > 11 then + minetest.env:add_node({x = pos.x, y = pos.y + 9, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 12 then + minetest.env:add_node({x = pos.x, y = pos.y + 10, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 13 then + minetest.env:add_node({x = pos.x, y = pos.y + 11, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 14 then + minetest.env:add_node({x = pos.x, y = pos.y + 12, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 15 then + minetest.env:add_node({x = pos.x, y = pos.y + 13, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 16 then + minetest.env:add_node({x = pos.x, y = pos.y + 14, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 17 then + minetest.env:add_node({x = pos.x, y = pos.y + 15, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 18 then + minetest.env:add_node({x = pos.x, y = pos.y + 16, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 19 then + minetest.env:add_node({x = pos.x, y = pos.y + 17, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 20 then + minetest.env:add_node({x = pos.x, y = pos.y + 18, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + if size > 21 then + minetest.env:add_node({x = pos.x, y = pos.y + 19, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + + minetest.env:add_node({x = pos.x, y = pos.y + size - 2, z = pos.z }, {name="ferns:fern_trunk_big_top"}) + + -- all the checking for air below is to prevent some ugly bugs (incomplete trunks of neighbouring trees), it's a bit slower, but worth the result + + if minetest.env:get_node(leave_a_1).name == "air" then + minetest.env:add_node(leave_a_1, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_a_2).name == "air" then + minetest.env:add_node(leave_a_2, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_a_3).name == "air" then + minetest.env:add_node(leave_a_3, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_a_4).name == "air" then + minetest.env:add_node(leave_a_4, {name="ferns:tree_fern_leave_big_end", param2=3}) + end + end + end + end + + if minetest.env:get_node(leave_b_1).name == "air" then + minetest.env:add_node(leave_b_1, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_b_2).name == "air" then + minetest.env:add_node(leave_b_2, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_b_3).name == "air" then + minetest.env:add_node(leave_b_3, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_b_4).name == "air" then + minetest.env:add_node(leave_b_4, {name="ferns:tree_fern_leave_big_end", param2=1}) + end + end + end + end + + if minetest.env:get_node(leave_c_1).name == "air" then + minetest.env:add_node(leave_c_1, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_c_2).name == "air" then + minetest.env:add_node(leave_c_2, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_c_3).name == "air" then + minetest.env:add_node(leave_c_3, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_c_4).name == "air" then + minetest.env:add_node(leave_c_4, {name="ferns:tree_fern_leave_big_end", param2=2}) + end + end + end + end + + if minetest.env:get_node(leave_d_1).name == "air" then + minetest.env:add_node(leave_d_1, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_d_2).name == "air" then + minetest.env:add_node(leave_d_2, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_d_3).name == "air" then + minetest.env:add_node(leave_d_3, {name="ferns:tree_fern_leave_big"}) + if minetest.env:get_node(leave_d_4).name == "air" then + minetest.env:add_node(leave_d_4, {name="ferns:tree_fern_leave_big_end", param2=0}) + end + end + end + end + + minetest.env:add_node({x = pos.x, y = pos.y + size - 1, z = pos.z }, {name="ferns:tree_fern_leaves_giant"}) + + -- bug fixes # 2 - doesn't really work, so disabled for now + --[[if minetest.env:get_node(leave_a_4).name == "ferns:tree_fern_leave_big_end" + and minetest.env:get_node(leave_a_3).name == "ferns:fern_trunk_big" then + minetest.env:add_node(leave_a_4, {name="air"}) + end + + if minetest.env:get_node(leave_b_4).name == "ferns:tree_fern_leave_big_end" + and minetest.env:get_node(leave_b_3).name == "ferns:fern_trunk_big" then + minetest.env:add_node(leave_b_4, {name="air"}) + end + + if minetest.env:get_node(leave_c_4).name == "ferns:tree_fern_leave_big_end" + and minetest.env:get_node(leave_c_3).name == "ferns:fern_trunk_big" then + minetest.env:add_node(leave_c_4, {name="air"}) + end + + if minetest.env:get_node(leave_d_4).name == "ferns:tree_fern_leave_big_end" + and minetest.env:get_node(leave_d_3).name == "ferns:fern_trunk_big" then + minetest.env:add_node(leave_d_4, {name="air"}) + end]] + + end +end + +----------------------------------------------------------------------------------------------- +-- GIANT TREE FERN LEAVES +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:tree_fern_leaves_giant", { + description = "Tree Fern Crown (Dicksonia)", + drawtype = "plantlike", + visual_scale = math.sqrt(8), + paramtype = "light", + --paramtype2 = "facedir", + --tiles = {"[combine:"..TSS..T1.."ferns_5.png"..T2.."ferns_6.png"..T3.."ferns_7.png"..T4.."ferns_8.png^[transformFX^[combine:"..TSS..T1.."ferns_5.png"..T2.."ferns_6.png"..T3.."ferns_7.png"..T4.."ferns_8.png"}, + tiles = {"ferns_fern_tree_giant.png"}, + inventory_image = "ferns_fern_tree.png", + walkable = false, + groups = { + snappy=3, + flammable=2, + attached_node=1, + not_in_creative_inventory=1 + }, + drop = { + max_items = 1, + items = { + { + items = {"ferns:sapling_giant_tree_fern"}, + rarity = 40, + }, + { + items = {"ferns:tree_fern_leaves"}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, + }, +}) +----------------------------------------------------------------------------------------------- +-- GIANT TREE FERN LEAVE PART +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:tree_fern_leave_big", { + description = "Giant Tree Fern Leave", + drawtype = "raillike", + paramtype = "light", + tiles = { + "ferns_tree_fern_leave_big.png", + }, + walkable = false, + groups = { + snappy=3, + flammable=2, + attached_node=1, + not_in_creative_inventory=1 + }, + drop = "", + sounds = default.node_sound_leaves_defaults(), +}) + +----------------------------------------------------------------------------------------------- +-- GIANT TREE FERN LEAVE END +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:tree_fern_leave_big_end", { + description = "Giant Tree Fern Leave End", + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + tiles = { "ferns_tree_fern_leave_big_end.png" }, + walkable = false, + node_box = { + type = "fixed", +-- {left, bottom, front, right, top, back } + fixed = {-1/2, -1/2, 1/2, 1/2, 33/64, 1/2}, + }, + selection_box = { + type = "fixed", + fixed = {-1/2, -1/2, 1/2, 1/2, 33/64, 1/2}, + }, + groups = { + snappy=3, + flammable=2, + attached_node=1, + not_in_creative_inventory=1 + }, + drop = "", + sounds = default.node_sound_leaves_defaults(), +}) + +----------------------------------------------------------------------------------------------- +-- GIANT TREE FERN TRUNK TOP +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:fern_trunk_big_top", { + description = "Giant Fern Trunk", + drawtype = "nodebox", + paramtype = "light", + tiles = { + "ferns_fern_trunk_big_top.png^ferns_tree_fern_leave_big_cross.png", + "ferns_fern_trunk_big_top.png^ferns_tree_fern_leave_big_cross.png", + "ferns_fern_trunk_big.png" + }, + node_box = { + type = "fixed", +-- {left, bottom, front, right, top, back } + fixed = { + {-1/2, 33/64, -1/2, 1/2, 33/64, 1/2}, + {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}, + } + }, + selection_box = { + type = "fixed", + fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}, + }, + groups = { + tree=1, + choppy=2, + oddly_breakable_by_hand=2, + flammable=3, + wood=1, + not_in_creative_inventory=1, + leafdecay=3 -- to support vines + }, + drop = "ferns:fern_trunk_big", + sounds = default.node_sound_wood_defaults(), +}) + +----------------------------------------------------------------------------------------------- +-- GIANT TREE FERN TRUNK +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:fern_trunk_big", { + description = "Giant Fern Trunk", + drawtype = "nodebox", + paramtype = "light", + tiles = { + "ferns_fern_trunk_big_top.png", + "ferns_fern_trunk_big_top.png", + "ferns_fern_trunk_big.png" + }, + node_box = { + type = "fixed", + fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}, + }, + selection_box = { + type = "fixed", + fixed = {-1/4, -1/2, -1/4, 1/4, 1/2, 1/4}, + }, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1}, + sounds = default.node_sound_wood_defaults(), + after_destruct = function(pos,oldnode) + local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) + if node.name == "ferns:fern_trunk_big" or node.name == "ferns:fern_trunk_big_top" then + minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z}) + minetest.add_item(pos,"ferns:fern_trunk_big") + end + end, +}) + +----------------------------------------------------------------------------------------------- +-- GIANT TREE FERN SAPLING +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:sapling_giant_tree_fern", { + description = "Giant Tree Fern Sapling", + drawtype = "plantlike", + paramtype = "light", + tiles = {"ferns_sapling_tree_fern_giant.png"}, + inventory_image = "ferns_sapling_tree_fern_giant.png", + walkable = false, + groups = {snappy=3,flammable=2,flora=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, + }, +}) + +-- abm +minetest.register_abm({ + nodenames = "ferns:sapling_giant_tree_fern", + interval = 1000, + chance = 4, + action = function(pos, node, _, _) + abstract_ferns.grow_giant_tree_fern({x = pos.x, y = pos.y-1, z = pos.z}) + end +}) + +----------------------------------------------------------------------------------------------- +-- GENERATE GIANT TREE FERN +----------------------------------------------------------------------------------------------- +-- in jungles +if Giant_Tree_Ferns_in_Jungle == true then +plantslib:register_generate_plant({ + surface = { + "default:dirt_with_grass", + "default:sand", + "default:desert_sand"--, + --"dryplants:grass_short" + }, + max_count = 12,--27, + avoid_nodes = {"group:tree"}, + avoid_radius = 3,--4, + rarity = 85, + seed_diff = 329, + min_elevation = 1, + near_nodes = {"default:jungletree"}, + near_nodes_size = 6, + near_nodes_vertical = 2,--4, + near_nodes_count = 1, + plantlife_limit = -0.9, + --humidity_max = 0.39,--1.0, + --humidity_min = 0.5, + --temp_max = -1,-- -1.2,-- -0.5, -- ~ 55 °C + --temp_min = -0.35,-- -0.07, -- ~ 25 °C + check_air = false, + }, + "abstract_ferns.grow_giant_tree_fern" +) +end + +-- for oases & tropical beaches +if Giant_Tree_Ferns_for_Oases == true then +plantslib:register_generate_plant({ + surface = { + "default:sand"--, + --"default:desert_sand" + }, + max_count = 10,--27, + rarity = 90, + seed_diff = 329, + neighbors = {"default:desert_sand"}, + ncount = 1, + min_elevation = 1, + near_nodes = {"default:water_source"}, + near_nodes_size = 2, + near_nodes_vertical = 1, + near_nodes_count = 1, + plantlife_limit = -0.9, + humidity_max = -1.0, + humidity_min = 1.0, + temp_max = -1.0, + temp_min = 1.0, + check_air = false, + }, + "abstract_ferns.grow_giant_tree_fern" +) +end \ No newline at end of file diff --git a/ferns/horsetail.lua b/ferns/horsetail.lua new file mode 100644 index 0000000..464e8c9 --- /dev/null +++ b/ferns/horsetail.lua @@ -0,0 +1,174 @@ +----------------------------------------------------------------------------------------------- +-- Archae Plantae - Horsetail 0.0.5 +----------------------------------------------------------------------------------------------- +-- by Mossmanikin +-- License (everything): WTFPL +-- Contains code from: plants_lib +-- Looked at code from: default, flowers, trees +-- Dependencies: plants_lib +-- Supports: dryplants, stoneage, sumpf +----------------------------------------------------------------------------------------------- + +abstract_ferns.grow_horsetail = function(pos) + local horsetail_size = math.random(1,4) + if horsetail_size == 1 then + minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="ferns:horsetail_01"}) + elseif horsetail_size == 2 then + minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="ferns:horsetail_02"}) + elseif horsetail_size == 3 then + minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="ferns:horsetail_03"}) + elseif horsetail_size == 4 then + minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, {name="ferns:horsetail_04"}) + end +end + +----------------------------------------------------------------------------------------------- +-- HORSETAIL (EQUISETUM) +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:horsetail_01", { + description = "Young Horsetail (Equisetum)", + drawtype = "plantlike", + paramtype = "light", + tiles = {"ferns_horsetail_01.png"}, + inventory_image = "ferns_horsetail_01.png", + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1,horsetail=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -1/2, -0.15, 0.15, -1/16, 0.15 }, + }, + on_use = minetest.item_eat(1), -- young ones edible https://en.wikipedia.org/wiki/Equisetum +}) +minetest.register_node("ferns:horsetail_02", { + drawtype = "plantlike", + paramtype = "light", + tiles = {"ferns_horsetail_02.png"}, + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1,horsetail=1,not_in_creative_inventory=1}, + drop = "ferns:horsetail_04", + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -1/2, -0.15, 0.15, 1/16, 0.15 }, + }, +}) +minetest.register_node("ferns:horsetail_03", { + drawtype = "plantlike", + paramtype = "light", + tiles = {"ferns_horsetail_03.png"}, + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1,horsetail=1,not_in_creative_inventory=1}, + drop = "ferns:horsetail_04", + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -1/2, -0.15, 0.15, 4/16, 0.15 }, + }, +}) +minetest.register_node("ferns:horsetail_04", { -- the one in inventory + description = "Horsetail (Equisetum)", + drawtype = "plantlike", + paramtype = "light", + tiles = {"ferns_horsetail_04.png"}, + inventory_image = "ferns_horsetail_04.png", + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1,horsetail=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -1/2, -0.15, 0.15, 7/16, 0.15 }, + }, + on_place = function(itemstack, placer, pointed_thing) + -- place a random horsetail + local stack = ItemStack("ferns:horsetail_0"..math.random(2,4)) + local ret = minetest.item_place(stack, placer, pointed_thing) + return ItemStack("ferns:horsetail_04 "..itemstack:get_count()-(1-ret:get_count())) + end, +}) + +----------------------------------------------------------------------------------------------- +-- Spawning +----------------------------------------------------------------------------------------------- +if Horsetails_Spawning == true then +plantslib:spawn_on_surfaces({ + spawn_delay = 1200, + spawn_plants = { + "ferns:horsetail_01", + "ferns:horsetail_02", + "ferns:horsetail_03", + "ferns:horsetail_04" + }, + spawn_chance = 400, + spawn_surfaces = { + "default:dirt_with_grass", + "default:desert_sand", + "default:sand", + "dryplants:grass_short", + "stoneage:grass_with_silex", + "default:mossycobble", + "default:gravel" + }, + seed_diff = 329, + min_elevation = 1, -- above sea level + near_nodes = {"default:water_source","default:gravel"}, + near_nodes_size = 2, + near_nodes_vertical = 1, + near_nodes_count = 1, +}) +end +----------------------------------------------------------------------------------------------- +-- Generating +----------------------------------------------------------------------------------------------- +if Horsetails_on_Grass == true then +plantslib:register_generate_plant({ + surface = { + "default:dirt_with_grass", + "sumpf:sumpf" + }, + max_count = 35, + rarity = 40, + min_elevation = 1, -- above sea level + near_nodes = { + "group:water", -- likes water (of course) + "default:gravel", -- near those on gravel + "default:sand", -- some like sand + "default:clay", -- some like clay + "stoneage:grass_with_silex", + "default:mossycobble", + "default:cobble", + "sumpf:sumpf" + }, + near_nodes_size = 3, + near_nodes_vertical = 2,--3, + near_nodes_count = 1, + plantlife_limit = -0.9, + humidity_min = 0.4, + temp_max = -0.5, -- 55 °C + temp_min = 0.53, -- 0 °C, dies back in winter + }, + "abstract_ferns.grow_horsetail" +) +end + +if Horsetails_on_Stony == true then +plantslib:register_generate_plant({ + surface = { + "default:gravel", -- roots go deep + "default:mossycobble", + "stoneage:dirt_with_silex", + "stoneage:grass_with_silex", + "stoneage:sand_with_silex"--, -- roots go deep + --"sumpf:sumpf" + }, + max_count = 35, + rarity = 20, + min_elevation = 1, -- above sea level + plantlife_limit = -0.9, + humidity_min = 0.4, + temp_max = -0.5, -- 55 °C + temp_min = 0.53, -- 0 °C, dies back in winter + }, + "abstract_ferns.grow_horsetail" +) +end \ No newline at end of file diff --git a/ferns/init.lua b/ferns/init.lua new file mode 100644 index 0000000..2d389ce --- /dev/null +++ b/ferns/init.lua @@ -0,0 +1,33 @@ +----------------------------------------------------------------------------------------------- +local title = "Ferns" -- former "Archae Plantae" +local version = "0.1.2" +local mname = "ferns" -- former "archaeplantae" +----------------------------------------------------------------------------------------------- +-- (by Mossmanikin) +-- License (everything): WTFPL +----------------------------------------------------------------------------------------------- +abstract_ferns = {} + +dofile(minetest.get_modpath("ferns").."/SeTTiNGS.txt") + +if Lady_fern == true then +dofile(minetest.get_modpath("ferns").."/fern.lua") +end + +if Horsetails == true then + dofile(minetest.get_modpath("ferns").."/horsetail.lua") +end + +if Tree_Fern == true then + dofile(minetest.get_modpath("ferns").."/treefern.lua") +end + +if Giant_Tree_Fern == true then + dofile(minetest.get_modpath("ferns").."/gianttreefern.lua") +end + +dofile(minetest.get_modpath("ferns").."/crafting.lua") + +----------------------------------------------------------------------------------------------- +print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...") +----------------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/ferns/textures/ferns_5.png b/ferns/textures/ferns_5.png new file mode 100644 index 0000000000000000000000000000000000000000..de87d3a016947b56684548800af0d1dc60f6aad3 GIT binary patch literal 630 zcmV-+0*U>JP)N2bPDNB8 zb~7$DE-^4L^m3s900HtzL_t(IPt8-`Pt#Bs?VsR-Z$#Z@AcAa`mHhw=n;`+BPZP!z z7Fn4L*$jD6D^v39_=rgdYE(avd%KKdsf@4d~S$k126m)?H&JLfy+H08Mex(q9b zx*0-GWV3U5zEL;@(Mzf2$FX$@_>-(JL0TJzZrTKS2Y6c_g?euH`&P4KUv7W$Vz2JQ zDj`}dy0CIGh_vcPu^s3OK4_ADi7+1%pR2kLiL!?crVKw`9*wbcx)H?NFOgf$%?A|$ zYC8(4Iti|N9>BukJ*0Fm#5#{xniugy7ZQpaOR5K%c7%5lR6hq%X+*Ja&LGz!3p14= zh>b9wf4GYkBY;io2~qL@DMPp>TRRJ*+nqy34?#SgAgXzAFOG(hPzTxOCFMQ?EfhUe zw#zA7E=}R*uNaag9?7yB*=`hBYZ_cu3t~|jWx!bRA!72KYn!R(uibg98`GFA+{SX* zk7SJ}mdR(PVJ$0OP$Ka}AkC|xNjsA;e>}xTeS*oRi=OQc*kL!wd#*Ol!0&24yjJYw zdqu&e(-35B7O}k%#z*>9=`7Hrk8DeL592DG>|F0kDH`&e?jXVNo QfdBvi07*qoM6N<$g3|{GG5`Po literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_6.png b/ferns/textures/ferns_6.png new file mode 100644 index 0000000000000000000000000000000000000000..7ca1c3f4f44f9d84f7dc7430a6e4d898e2cc9f9a GIT binary patch literal 753 zcmVN2bPDNB8 zb~7$DE-^4L^m3s900M1EL_t(IPo+}}Q&M3Nz5hWc3-A>wl@2N|xkjQPX)13?20;ih zNWe@@^8xrQ5sdKx;){VMrGI(ad(lj5oN4-I?%dt|cF&&OdoIKL!$}q_SSso08@17+LmH8t%Q4{6?3OO zFn?}>J=qLnRDk}u$8hhoz_2O42@p-nF_w_Pky60BuY)NjfNiZ7rWGlMzO=!)tAIIH z1H+;aBMCWXf0)YvT;b+LFA^7BaPP9{osnQTDZ|iu9R?RG;Y_L!De7R{lw#mhC9Ls! z494r=*?R&eoL0d+DI%u>)|FNS59%=R@hQA}EZ%?D6Wt29Xzq#p3ygeKqJO>u!y66o zrk`QzTn8qUeF)Ei8m^3jF7MGJfICG%C!O$RG_c01VO*}I1}vt}`(TL*VOp-ntNBI* zj#@TAr7Wi@c^s9;>GfoF%s%*6m0 zOSBgH4-y1&N`#8tR4gJERq*dCX^ajYz#13Au_Z^ipu=2A1^c=P&O{S2=muk05b#NF zvoZvaS>CpyKC zqx==Ku9b^sN?JG)k9d3hkd!!1aN2bPDNB8 zb~7$DE-^4L^m3s900M1EL_t(IPoi?@=q#ed5^F;8;^(UsYj?C~@wn@gB5bkJd7_Q%&T&gJ80bjf-{; zt_GP&Xzzl0(slH$$}k2Cc{N*x_xL5=Q#AwI)%1iEyq>L~Z|OOc=?+HrG`M4GTrmy% z=Xz3?Hl)#13&ub`=8&B3B{`<$3Oq;cc)z}&Ybl@Mk9CagH{ng|FfSKlTr9@Aqrsc( zz`CJAavy2Y&p*Txkzop!GMQ+^e>{l6pGQx)2;J;c#-du*FI<=wOR#MzL}|^;o%V`% z1xSv#8grzSq0I_97mBci6}%Db1_5eXEET=bF#f3-gD(%AuRvrgXHeMeu|^SJg5){Y z(iN058dqfzUBcl$Y!xMmbOSQXVI_;-hcOB8ZV@-US%*8_hGnfB-CRDBHCiK>WDIRo zVp%D}@cuF5hxK%a3bWmwPj_Myjq43Rq0?VNzW{J18nA9vWr?McJ*9A52iv16`XbfY zyER&g-uDdaZY?ust@N)~GJTN2bPDNB8 zb~7$DE-^4L^m3s900GcRL_t(IPsNh&OH)x8$9>g55QT!SEt8^{mWC;nTR#Nby8D&W z>rn4zQE@lisP3H2Rl`QJoZD?^I&@lDUYOX6*#5mwcQ+8imPRi+a5$Xr^YG#Oea>lW z`tNH=6Zj_+Bk3NNcSUxp4_Nyq{yoe;-;OtVfv4*ZqAR!9txcm%!<{m5CwT^C)lH?AI0y-sZ3N%<;+ZoUMQQOeo>U7?C_#}em%#dQXjJJR7iB_cN5Xo^XygQjR!ln@Dt?ESdjF1q2d+B7dr`LPH}JE zOeo*a()Q@#Ph5w{8`qi0b?!F@)h;4ic7i%Y-3$B~B5w>Zp1ZW)6j(S*Sl5iW*&dWH i_M^FI^c$n)oBROl`0a=IsDj)800002B literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern.png b/ferns/textures/ferns_fern.png new file mode 100644 index 0000000000000000000000000000000000000000..36f50f92ba2a3167514f178991b72b7307d3def7 GIT binary patch literal 448 zcmV;x0YCnUP)N2bPDNB8 zb~7$DE-^4L^m3s900BHnL_t(IPwkP-N=(RX}&--pNhs#GJ578vFN#g-d~4<1xM zqv&vJud(r~FF{{>@uL17pOhZg#yWoCDTw1H2eIww-t{P1VIbYoIQv+~&IPO8ke89U zX0Tm#LIJ7|+N(&Plh|*%{)c}_Vx5C<>O}sTN4!MAzh?xWUPR=Cf-h@Aut4??=WaM8 z%68=Ly~s8QgtBHhV+J^QEj*hBgcL}o!JzsUhgfEC_Z|5I?Y2U&C5>1JXb>$~;ZDs% zkO^#E+K{f05E>K$ISaxPjj-Z(+WKX-w~716+%;D6G>F&?EW8ehq6t)L8cV(@u!5z3 qaL^}b?Gw<=sX@E+uo9Yqqx}HM7lonJ(i{l@0000N2bPDNB8 zb~7$DE-^7j^FlWO00k3CL_t(|UhP@=Q&U$MRf{u@Q|XLWp$J7GB%naZ%K}**goF@C zVpb9s2_TC=0tul30tqB60m@>~f?5}(%4lgv^r!xNr!S9zsfwL;@&k{_y)&6NbLZZ7 zzwdnKp6|TL831R}`IpwoCksyiNN4&J29PU2G=PX8=>nt+5GP2ia9Zm?S|?AOAaR1k z2@)qrM36W^;sl8kOluuT>*R?OBuH{D@9e;l3T;z@I!rY%tmlyV3d7*a(L|&^A+|eWY)}A%_%5rJ+ zvEh9GlJ@K&2t!XAF_5Um@RAZuAu-(Rm7f61DFAvCIySheH;pj&UwOtXj*Y6fILSL|$nzx+=v`T#Si#chE7fM0-q;GxtZ+O~;rB9diowEXvTm ztVCX;xI0CmZKetqzYrR?0A2BFbjDQZ3{g;7ufxi$Ij-`D zXK@mM!{Gc+^>9a(@NR113Ra=TFNXK2j-9jrB!+EN1br6|ZPQiIb(g?3DTl=;Mn_13 z`d&V}u5n0sY~?u#Kxj*j_^uZ7FSLm7s4==GVRS%_iN}>}GX7sJ&~+5R8InQaD1g~p zfodlYO`~EctVJ*ml)~aEgWAQ1XP!dzr5e6P38F7*5q_>h7epioy4K)Ic5Du@2;9I9qY39Sw!9$hpCe+OWRO)h|X)l4a?g!|)gpe7F z;bVaFt}8LIUx)Cn9q|t?xEau<-x`tlV8PUmiCb-O_M@Fix)I}lS>gIw2G^1l)^Qco z-eUAW(4u2ej^+r3d$U6H$4c1>*L3sIyP|?)u#nLOC45h6+4=j?QuJ@?U>c&B_Gf~F zVNOy6-HSAQFO2YRXfcwg=N16T``EdBP!+0$$36uOS790}hs2%_eV`0DM??g8+* zdmETHvq9?mDxkVw27bde+-}H$El9x`6JvNw2fbeabx$6QOb3v+-hk0p1jnQZ1#~ug zA6jt7SIoYH?i74g2sxtx$Jy89oPO*;xM)u?sOCb@y#mzU7oa)7T!A$j;fZi=GzcxvSAO2pmN_pkv$Iv%8|JP3r@s3^aRa(lslPW;p` z;5b$!tCpLW2?_Nhq*NYmmEiGnKR1rMw`w0V1 ldj(UCpD-X*1W)_^zX1lr66;l7gaQBn002ovPDHLkV1o4xi|qga literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern_mid.png b/ferns/textures/ferns_fern_mid.png new file mode 100644 index 0000000000000000000000000000000000000000..4270e967e8260b4797f53335b089b0b9316dce34 GIT binary patch literal 969 zcmV;)12+7LP)N2bPDNB8 zb~7$DE-^7j^FlWO00TuyL_t(|UhS6qPf~Fh#%-;wwdD^k%b5%>2->E|UBsgZL)5%- z^OB;Ws3BqyByvfod0A>%sk!N#OINd2{)tb3X?C&o!yB0(ZSB0&m4B0(ZSwj`L9=8N^lGS7fC z>u29Db4Szc0P}vC7bF9IIN)F55Z&SM=uJJMUpf=mb$Z1PyROfFw>k>JY@<>k&LK zWA=mPPGGy`+Ss!3O7a=+yJn2PYQW^O4g>3&^LLpKjCsLdHXw4?jCQvWp3Qo=U+OWo zU5EHl*UhUIy@E7JH+rT z$l+U3Vs@_q(cKK)0Qam6<1cgw?zh0RVZiu?9{xlQOs>h$=qy8vQ-tcSB4|wcF!Yzh z)Gb6~;@`KX#KgJ|(IX2MPaGIX81?F;1CfK))J8BL81sVPH(+q374jZYs%c46E|eA_ z%>D{+eI;;&Dq$QF!#*#EDV2(6cq?-3&MX5i zM#1<(J525>)Q(m_+;kgVK{@Pm3QTU9pdS|C{*)Bj-a=SsWGLqHF!H)1C6*hM{FVdE z2gbbMB_U`I)trj*lz|(OpkY*kZoe3cz5;ams}lF6u*EqvdF6i$zl;pQ%b>8bwGalb z1b2(Gp{f-?BF#fpW$s^v|5pZ_i75~y43GN2bPDNB8 zb~7$DE-^7j^FlWO00r(zL_t(|UhP=A=Cve&ix_Lyf>41Gxyzh-uIpF ze9O%)0J}2zm(k8A1J4tX$@1qFz^4FT1Nb7ycLBZ&@RJ}v3TJd3$Y|&JNsyle`ALwU z1o6qV0#eHWbpWXWQtN;E6v2zHJcvKF;L-~xf>SDV zFISVZ=KELI)#}~D_pEy-o;da=p1ZTA|8yUkdRd3bb>|PUhqeQKE9}0en0n84oOa!; zLG(rwhVED~uS&NCgT6Ep4M8~2Y6E7WG#*W;t-xGi8+&}Yo z!=X#Byg9Mwb%;OFV`z;<;+gB%*kk*_!P|BFLJP*-o3Ooi%m^=6p>IKrhL{AwrHc26 zrM90M;2i?mmra~;<4?`7b>t$psz&!MLd11FLbr7w1neczJ~;itePZ~L6~Sp027c4R z8<)aAr6vk;9wU1WL{`}EB9Ceiyre__H90)}r8pN?a@c82z$O=sV=^?3%MpKU#Nag< zdgmkQC91AFrY!~^>&r;h@4e*&R(0`XjFrh}zEhD@` z3N-dh&~w+st+{@cz&R)e+ggagqynb4VtB`tuty|lj!99|F5vc=dqvwuJ}n7|ttv6M zZp7>ZBj(oh7+jQ+I-tbp?F!DB{@?8|HRr<Z~+ z3v;i%2olmJpINZ{+K%xxYkIZ8i*H=SX){Ltalm^;4)1~tju8#?Jw*szH==o7316JS z`HLcirc1a8SGEbzepLf^R{^ODYDDf-aqFFl5`=DM>#Z| zr4ZB}#o5|yIENT`rX}cGHG%CHLVqC#7SaKf{ybPBr{NwGBVYS7+HcrVA1UH6v@OC< z7DDP2rUv*-7f3#0hc^nBwz~+7uK?P1A*wos@I^@qENUSMoPZ-*PS#E%x8^V!Cbg&~ z^5@j#{j}q0*#)-aqOv7-FGm2G=8|_?RE(+)A*_*d=sOEx4wFLY%ZIs7gu@lzb9)La zkAAlGz55;N08#_|j{-h?TxQLKlP$$@>5uRyirb&W1pc1x9q_+a{n&kq?RJC@dz@232y@vsG}_vyh2P5pc`l zvygFEQSe11P%D@kV23FX@@t`%o`l(OmUB>2b`}nc3HDke^y-ZxZn&))TKRFa32JA+zd zCEPX^2908C{k&HJAG^^8cXCk&kQ!hoR=(ZS#BLmIlb22@gW0Gv;?O5eQE|%?Evlfc>-t|{Mz6D7yF}P0^)Ht&Hw-a07*qoM6N<$g7FOXi~s-t literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern_tree_giant.png b/ferns/textures/ferns_fern_tree_giant.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f1189b927ba2d34fd89a9b089df9517047336e GIT binary patch literal 3771 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 aW~dGdU$|`I!A{qf0Hf<>dgZz<5&r`2hasQ< literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern_tree_inv.png b/ferns/textures/ferns_fern_tree_inv.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea2e43c28decb9921b29be738daadd9ceb722c0 GIT binary patch literal 495 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0004ANklHt=w6pSy*Cb zG-K+Fq7ItitISt5K1fO((9!}mNz^bhQVJLJQ*uAl#_8NrnuKHtW^z4n5*B|U?Jcq}Nw<{xppTF~Bzhyz9W9-iLDO#mb zyrgjSvWBe_vvj?@g!DO$Sj_|;D9&^oNF9?%wyZzHJyN1!0efgd?%s)TNe}mq63)~- z0tb4yI2F8ka&S0%VL_x~K=#@Wu1UbhsbLB!V021h+fcyAL()wewWlx=6&hFXfiKW@ z+Xr1#i8+r1!IBnCd=_k(z~-qAsVWJ!sfQ=4fxk$>&-=o*?y|Xm6J}4{HI{P}h|m-? zP8lKv74-2*EV?FOW;KI@!+z4VVGObvF(|7XT0%1XXoCQm7z3|k0lY*)MOH~LwCwi~ lE^O)!_W(klWIw&{`T*k3oPHpNM_2#=002ovPDHLkV1mPr$|wK; literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern_tree_tl.png b/ferns/textures/ferns_fern_tree_tl.png new file mode 100644 index 0000000000000000000000000000000000000000..6b2f2864e2e0a1dbb55f593b0e42ce5e45ce202b GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fvPThx;Tbd_$Mbwur5|KkYdtMys$&>Oa0lT_y2XZng1WZ7Ww!5tMZ@y zaxODt^?H_Wu8CMB&RTFqpZ{5QgrH8#qGhGdKmH%$yZ!&FanApAzfJ$=-+KIEe^oBS zoduh2?(;G2X11Ia*3PkY4fo`=5${^FJiYd7M=Z$N_`H69$j|?x!E67g`!Y&hdH%t^ zcGlhc1&lgdy_qVd!`MzwIrsUe{OyF+hh7`Hm9%{SyNAsDyME^TKl@kQ{!;I^`s4pk zPxt+QJZtU$<0cWFrfazZdGt*G$X`$SD$n4$H+-G%;Z7Z(_ZU1~{an^LB{Ts5J6V&0 literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern_tree_tr.png b/ferns/textures/ferns_fern_tree_tr.png new file mode 100644 index 0000000000000000000000000000000000000000..c00aeecf620ce809fd95366980fa8e411b6cd6b3 GIT binary patch literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fvV1Ux;Tbd_$Mbwur5|KkYaiuup;{P*ZpOl3iU^0?AP7le7D9>^qS9& zCbi;8xBnmNH2m+q?Drr28B+h`*DXt%c=-P$)_4D3PiO56KllB)?yP4=XWe^uh9h`_ z@!ik$Zu=kqzf<=5zoO`||H;*71!p;SajD(@$G_U}r+j4k-~DNY3o35r#IM`K`R+{R z=R5z7Z@cmL{Cl(C^0U_ew%>J3XpP|Eh9_p5|9i?_`>(uO_up;Tm5n?Pxz`%}oqzB3 t7yE54pX-Cx+TFNzq)a+w_Ch}v25bM|>~79AlY#zX@O1TaS?83{1OU3{mFEBe literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern_trunk.png b/ferns/textures/ferns_fern_trunk.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e1bf6f3dd9440890ed54969af11a6aa87847a4 GIT binary patch literal 765 zcmVK~y+T9g^8@+b|GC^(jS@ z#U$QE;~we#zXAhk23w&+Fwp z%2S_9hA(~92>;h*IQ`GpK377da%2eCC^=!~rsinO=v1EQJG`mCIa}f}EN>w6%}NxfA&1-1m~6$1-&FK4CF3eqWD= zJovaSWrURo8zJ8N*2dGmMUL9Vq~uOS)RdUO0MBzv<<=JRTHrdy%8=1Ep;*6zC23$^ z*XC5mYm+vSH_3)MY6S2%3&Y>qX6@%397 z>{HKJha@5Uh*{c4+$*@~L7|#g(PaWautU*2NTh zD5?4R10)5Pu?*~OpYfDf@Au=B1uy5JmmGS~6Ce53oj|&@!DU+tie$@`Ym-- v5Z}NpwgM2_$O8sW_6(^48yPq#0yx3HPp-cfKb@n+00000NkvXXu0mjf0;gUM literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern_trunk_big.png b/ferns/textures/ferns_fern_trunk_big.png new file mode 100644 index 0000000000000000000000000000000000000000..057e5ece3e8360b7e10885c99b11be826ad78580 GIT binary patch literal 767 zcmVN2bPDNB8 zb~7$DE-^4L^m3s900MhSL_t(IPc4ycZ<&T-#0~- zTA?djqy8-Sd{d%`B`QK^dmko&nh=RN+}nBeZ8u%aoG6r!yJ9-gb=2pX*26N%BZCsU zEk$fws5=cuvCYR0Al3<<*qmn#9n1#4Y^WS?!+h2_nley-zs@|J^$j*4{P}5-2T~a- zDUnb6xgmA<;T1c$tV^OxJ%DOTe>xdO{)pJz`Lt+CavSTR&7bylm06L840X6$7FlX4 zB0cDQq1H`0ofw`aAw)l}vw1$Q5}XnAcD!o}Cw66py_%QAcNEW%6p5jRgG&qF7(&lh zSz_{8s88HsXynNiG^O+Nb=l~vktdH2?p#AP40S`<|7TQ?qCZQ6T+y`Z-!O&xq zvte!`VwD5_dw{INIty$rwz(t}Uw_<{F#->*P*+@b(G;V5dS&bJN{`IG?L3$o5rZhU?|Qv`yU?Y>rVh>2@L$lX8(Ao x!7H3BWBlj$zDzBc0e0KoMdD2x&=3tn{R6N2bPDNB8 zb~7$DE-^4L^m3s900C-AL_t(IPqmZXD?@P{#{ESuP{J^qoweEK?CkBFGus*RF3Zxg zh6{z1qL7;v#gw-ckrt9NMIkA2= z2e>;L=XfKE+g?wb&`=zpsZIvMb{3~(vY8bQ(n~yL57|$Raea^=APT5{YaS%eLC7bN z9Cqu3rjx(WYL7?HS(C5=KbZI?ubfsxRclWT~_D9 zXnqUb9nPNt0ntdnW#lX!XD=1!uJYfs{6f#P{4uER7ydRYH=3#B^w1ZhjeD89*`g8%>k07*qoM6N<$g53nqkpKVy literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fern_trunk_top.png b/ferns/textures/ferns_fern_trunk_top.png new file mode 100644 index 0000000000000000000000000000000000000000..03d789b8c7ce98569aa3700c55e824554cf9926a GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=G`dAk3J{(y|>W$X?><>&kwIi;quN(An9q5GW*7;u=vBoS#-wo>-L15RjOeSEA?V z8lq5UtY@lcXkhTAXdzJ5eoq(25DWk01PN9P=Y*=2_y50M&HaD=-0A=7%VJ;DPipdt zj{CEJW80s4_29Gr?Y6c3pL+D?|K=kdMk!~n1Z`lGRbBaiAD`O)wWU)JgC zd-8MU&4g%2skduH{-vwzY~W?u`Rv;Nr literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_ferntuber.png b/ferns/textures/ferns_ferntuber.png new file mode 100644 index 0000000000000000000000000000000000000000..c7451944603c757a37e13bd56db401a357102051 GIT binary patch literal 552 zcmV+@0@wYCP)N2bPDNB8 zb~7$DE-^4L^m3s900E>)L_t(IPmPn^OPWy}$7QhCT@VzA#RhAeWQh%)G_z5b&5B-K zWX@$qEz5Fc7M1J0^dZW+sBMn1HrBKkVmG_l-TtyZ^%TaVq)!J92hKU)&-uN4k4mL5 z09CH3q`y9w15$$2-n{_wOS?WBM~kj2{Y_+w<9{N?&xoI8r$DIJf;iGlVmqV^IEl^h z@7pS$7X~<78AcqkGSOYlM5l23Y}N?=94zr`{XO5qeSG@RMr5Ft@S93DJyx7`+T4J% zy;7^mwV zf~{J@P9rl8fx*{$I%>4^HW_mR5>Y?V!FuA;U5vNt2y|7^X?#M{%g5Nw<##t-9>GVa z3DNuNN?eAc<~gR)0&2@O=u7gmJ0{gjDPPgoav}A(p{x)?@gpocjk48J0BJpr%_<8r qy(Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00048$eMMNPbkr9L_MApJu)G}K52c4dh^~`4| zT^MFy=KSuxXJ!cb3NDwMUlz>(NU2d$^n0UX0EfdVU{nO)@p#|jrwc!xulC?G$l;tC zq&bD{kW#%roNwdpCV}nB0 zHZ}YvHD;7Oe*-e92x7ZSc)#AlozH;u(F!g%^pMsQxQrT9)5-H$vsDyD^4N`Jz=5!3 z7%`6?VY?Pl&m6>j0$CRiEmbT4KA)chUF|#ZkvKuzZ-&0F7D4MMtSS*qN)fcucGNJk z=Y1%s;Pzk@@sJZQr|Vc!31OkdHjNnGg)t0>8epDO7u1|#Q-Ax1%L1R(FMS#O)9d?Wg7>7DB(%XuT8Ug`ro=n)x;?`I3zaNI%sDiYOLLH&9 wqS8XPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0003bNklwo zVPS=pg@vS%5-QkKktk9bol(+?S6z2u1e z*U8=sTkl~q)n;NwBfom*&=Y2_G}5~f@^?b%Ekv>+Y7o;F^jnS54Ixz&#>)|Q+!hvV z!dOlLV!0vWM;+|hT@-6QoIFK|=|av9Fq2n^qB|N>n?Vkqqpa+AbN10of1w@gS{PbV zaIozPhIcu(9LBorBw+|^=U%KEVPH-H@ZEOyK}a79meb0_x>w?71Id!2xPC6no3n7C zF_H?YtxylhJ56Lx+x&^mM`5)p^iBJ;Z@fg9ulTfHehstWwLd)T6JR>RWHI0``%jUB fiQwM=DnIZGWLJdxCHlRH00000NkvXXu0mjfiW{;_ literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_fiddlehead_roasted.png b/ferns/textures/ferns_fiddlehead_roasted.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3d72c308cf234a718c13ae51a1f50d83d63174 GIT binary patch literal 648 zcmV;30(bq1P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0005^NklMw;qCe3i^jm zcV>2W#~q94n}@mc-Fwb=?)km}jF8RO|3(0=GtfjJfu(n?eD>DEg}j@iPeQDY`~IE& zbX()0p@bP{(@ArERg1`E9v=(Rk4e-(T zLEf3~=IhTBtho&?O@UYXK$}>T$6e&}3L`zj%NM&IQMrr#SHYG1D0_Or$#sblQJ~R?E2-FU< ze~$K9Nc)B&RK5At%IQU?bba*wVn3-i0pWxfVSiDxP1pDw*qj9i(q)2hv4@gS_vgPy z(hQoHUmH1g9ZUv;C0b1wF53n{S7}6J%mnFixwbs(*LuwAc9Zo^>EG?}IDND-RTi^U iZ=^cT5p2L^3BLh^XN9~Dh;bhP0000!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P^!c=q9iy!t)x7$D3u`~F*C13&(AePq0Cs%RL{`B;7id$psFNK z7sn6_|KtP-*2RhruLVv-XZ(^+IsX5DLYK*eJL^B&*DpKwe@UI~f;uCf6SGtQ*)MYV zS%0p?_!E!E+-0BlSL{3Zf6L62T?)CI6mPH=-o5o?Cxb|msW!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P^!c=q9iy!t)x7$D3u`~F*C13&(AePq0Cs%RL{`B;7id$psE^A z7sn6_|KuP4|JyUG&QLn5(CyBPyK7=KmS+P znO`X$ZrBs~?7uSCl>g6t%$3hGOqd*fJ>Ws>l}xMuo71KK`OoJ3$fVa3tdzS+@dkI{ w-CIv29X5(PuwBtHRj`+GWNX;tpdrh^P`hrAc6DBhCeR%Wp00i_>zopr0Lgt=jQ{`u literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_horsetail_03.png b/ferns/textures/ferns_horsetail_03.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec3a1d125740d1178d40caa1d12466270646553 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+K$tP>S|=w^P^!c=q9iy!t)x7$D3u`~F*C13&(AePq0Cs%RL{`B;7id$psGcl zE{-7<{>eZ7|F>sWouPDAp__drBTvAD?H5E|xN#g1^@~t-kec+n^q>0I%zyr`t}{zJ zZDOq4eCEHqh{pf(GxOZ$F)BnyU!U-@b&~6^|G~>&{y9G{^M`%zvU~q0wN^REC;01I z99GEPq;CGc&)~=dQZiK$uPgHZR71-wy8kZGI+ZBxvX!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3Q$0figD*u3fvPrm zx;Tbd_$MbUP(2Zy@k>7K-~aywYK38H-(Uane|7oK{449(uX%1_tlWI&zq^RW|MN5R z+~zSVL`Pqr@UnH1>#zU8%U}LEKQHr#eeSY*|0lIpIml0tV9T7$doZr!^))#L{V958 zKj+)|zOO&$v-p2z@YjFgI)=)3xg~>p7sOqVVbFha-tfzopr02WAi A=>Px# literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_sapling_tree_fern.png b/ferns/textures/ferns_sapling_tree_fern.png new file mode 100644 index 0000000000000000000000000000000000000000..63d5d59ee0c043a9c1815d0d8ed99c1b33c7128a GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fvUPaT^vI!{F8tD|8LK%Iz#EKLbp4w#FWGX4h##HOZH?exxtVky+P9L z0_%e-tSm3s9(uit2v*v~=z4iigs0Jhs@wzrZ&YP3kn?c+eBSuq`Pq*dF`~P0q86SPgg&ebxsLQ050TZS^xk5 literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_sapling_tree_fern_giant.png b/ferns/textures/ferns_sapling_tree_fern_giant.png new file mode 100644 index 0000000000000000000000000000000000000000..6bccc996cb91e438dbc6b01f71c90f38a768ed64 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Dh+L6~vJ#O${~L8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3Q$0figD*u3fvVPd zx;Tbd_$Mbwur5|KuyI~cv-JM|H<@|=FV;@K_5R0w<7jzj8P`~!)o1Ico2>n>cT(#A z-=eJ#yDnGf{HtD;^>=%3_`m%5tD5dkxKh>qKT*}~zpm1h|F>PV|Cjq;{qcV8vY+?m zJD3}8n8tnGUpeJY{dS$V{}p@NX0-kJ|9?JX%UdDSf3sUP{%z+7{g*Gj?9Y8gj*h<~ z|E-yL*>3U$w+lAjQ2A0L@^AL76N_%Nt>a?|KNa>N2bPDNB8 zb~7$DE-^4L^m3s900IF?L_t(IPnFZ#P7_fW1>nAjF%bhn1DR=|v}G6yl~AHVQ7HBx z5ekGE9BI*n7`4W7Dy_7kwbZ1Cgcga{@J_rzuNQl5A%V~ootvG>{ImAA55LWJ`MgR# z#QcGRnQaBjl_AXT^kQ+}1uH*@PSPOyABsUTW%;oZ@&e7DW#?Ra1J%EAvP zek>Gw5X`Aq$vaRyd)mC3q~&NGON{LPe-2_{lgn|3nc?E7)x4Qb7$>)KN(-)i-`N1#u>+ zBJ^Fw+l-3Ef(P+KH>hZT4{G|kQPD7!=*07{_wgd}2$NsLOj#$4Y>!mLe(Q*4e4y^X z_8|Go-K4^-j7k-CR8reA$Pi~6*tKI$tb3`ZVXHAA75>DyX4~Ix7EpAJ~ahP(u}U fRL-XCpqfD!emPopUkEXF00000NkvXXu0mjf14krl literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_tree_fern_leave_big_cross.png b/ferns/textures/ferns_tree_fern_leave_big_cross.png new file mode 100644 index 0000000000000000000000000000000000000000..b1c9600e6377d38a1d427143c6d6557578dd580b GIT binary patch literal 816 zcmV-01JC@4P)N2bPDNB8 zb~7$DE-^4L^m3s900OK@L_t(IPlc0PPZLoTh5Ji1Di0(^s0fwP>2*4k)>cbPOIzAb z3rsIV)ryx^K?J;^qNsQaK@8#cATcpM>7V;Na|jv?iIbe5R<2KWlS!TuKb*ld>@2qZ6w+R*#RRpg#^beKUTqCwYb~GS;U_0`p>`%7 zpqx=ydJtl&(!*G~gZyZRxZ7!6cTvuInaGPSYeT%6BJjN4eWUc``s@G|G_ALA4a6nD%h@dRov5P|98+ ztO{Wb6=VJ4UmLBlJZ$I5dJsbhR4xos5{_7W^^~wMsft0;(90g~fAAa~q{F$MUO6iR z`85}X)ox0riYdfuOocJ7YQ$d-5MS<-n8h!yH=G literal 0 HcmV?d00001 diff --git a/ferns/textures/ferns_tree_fern_leave_big_end.png b/ferns/textures/ferns_tree_fern_leave_big_end.png new file mode 100644 index 0000000000000000000000000000000000000000..d850d3a879aad00f2a574e57cc25fe356104e328 GIT binary patch literal 541 zcmV+&0^<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900EgvL_t(IPnFYKO9DX{#&N$$1PMif;womEs2#wfumfeNDX9f% zEhz*Nm64rHOGz^WQ%EbiuFvN6lg~sE9dw(!g?az;n}JoST1&onU@5J~TE&LtqJ+6* zFMN3miz!*2;}-Pv)>JWPJ(N%3loVRq;AbkMyR2RIx2rXFeqYd#JvxxX}gF-c%91u!ghw6^uqsDt= zwP+D4>Zqjl$8ad$5C5eFuH7yK3wq2a`%rnAXfoo-=y3EL26b&ujn&8DJvYL4WrF)c zi%9F?80kp;xs*E zvpQ^7j7>&@1q0lt5~x#ja;T(%Cof^+S}P)ohQ4o#RxMa>oy-U|RQ)@&dO0K_)ckvx f1N@a4X*c`^fW85WjH)0500000NkvXXu0mjfun*l1 literal 0 HcmV?d00001 diff --git a/ferns/textures/not_in_use/archaeplantae_horsetails.png b/ferns/textures/not_in_use/archaeplantae_horsetails.png new file mode 100644 index 0000000000000000000000000000000000000000..f3558f7ec336cd25ce1f3c6f8326d5b3e5320766 GIT binary patch literal 401 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 BJO=;( literal 0 HcmV?d00001 diff --git a/ferns/textures/not_in_use/ferns_fern_mid_left.png b/ferns/textures/not_in_use/ferns_fern_mid_left.png new file mode 100644 index 0000000000000000000000000000000000000000..64cc6a7b6c75fe63ffa843d31ef753987db38807 GIT binary patch literal 482 zcmV<80UiE{P)N2bPDNB8 zb~7$DE-^4L^m3s900CY}L_t(IPtB3dO9BB9#XWY(Lr{lO%n#IylA31PrnzjIn6!Q+ zQQDz3(>!dsXj&+mAQd5@;vpnZh>H3bUnvNom|B+x<}io%n>TNG0C<1t0WojV>fb)8 z{+~Nw%LK9w0w)g^WZ!qtJMXeZPZi#LGuIyh;m8v*tu4425n@#fn0qUZ>+85`)6@AE zuYha124C18V(>zbV8(#6TRl!oI;5Vrv7a~17hZj0FQ*v|=m8IMX2h!`0!bs{4GNvv zbFTXtP->GXK9VRsS&^=-B2{1M3aO9;{TCsxt${}&5 z!DdJaXGjJkEglXCmtD{XW!>Zzj#(^wM6k0e5PMPtI5o&aIs66fco{^CZcxk;)*>p% z9dn?QTKMxiBx=-nfQ}10XX?5kVoDH43T#9a*k$G81HQjk?OKG5kYYi?{~e$Q6A1bE Y1jjaVx_*(IYXATM07*qoM6N<$g0xb)bN~PV literal 0 HcmV?d00001 diff --git a/ferns/textures/not_in_use/ferns_fern_mid_right.png b/ferns/textures/not_in_use/ferns_fern_mid_right.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6c4e856eba2ca3c3d3d04f6581a03de81d2845 GIT binary patch literal 515 zcmV+e0{s1nP)N2bPDNB8 zb~7$DE-^4L^m3s900DnVL_t(IPtA}?OF~f?hK*>`qD2&mBt#*()S1JUw)UlS{SXUAUEh=Z~Yp^6$Gs0;^(HwO4}3iwZTIIb-Z z(pT1g`oV(4g$mw;80$H0_kwUq1?pS}e^!Is)9R2ntwgk90+lCP!R@mCb9$44L15kD zA&}R=Oo`y2<=99oV2KD|j}u>l9aot1^599zG3(^R5fg*-2@osFK$jFK+#8Xt{Xn2L zb6^UJU|ySm<^82E71*!nkbQRHtl>i_twOcoK&HObB4VsSWe7x@B8zg6K_1*GHCB>J zNPQfLY{RXP)-^GbdEIGWK!&+kOc2oeC*eMkV#>fqnKsF=R!!ZA(IG`Bk``#5ZGGfe`P7cRm0B002ovPDHLk FV1n4)*Zu$i literal 0 HcmV?d00001 diff --git a/ferns/textures/not_in_use/ferns_fern_tree_bl.png b/ferns/textures/not_in_use/ferns_fern_tree_bl.png new file mode 100644 index 0000000000000000000000000000000000000000..b96e4fab329e808abfe5310a81fc9c5633819bf4 GIT binary patch literal 656 zcmV;B0&o3^P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00061NklIvA>nV7p&V z_Bwm5v)A4^eSQB3<>@$WxbR#cTAASGj}U90+>~1$p1k*wS#l7on@KKNw7LtUais8Y z(?k70Cb#0G&=9E~g*7bmOeDQ*{aaw;&_(M+X6Kts>o~yjo{cuP{&`9xHNGSXmvm$| z9Juf4NYwx6pt@;g{WwHz*Tc&9DD(Sj+b0UO{Q%7aKMQ+S7C#6~CGcC z9c=&1sHADuPE+LGImo@SlUnl>DpDh7hH2J%hS!k%>b8rwvFdFYBJ&@gGm ziKdlc)j)jFLSXjHZcky350h3*+_YVzxasI!K%5-F=N{(P?W@>?!QKRdP95T8Ke4d7 zMz@2zO0au@xuS%}Hpq0ysF6gokyI?)y+Ez#C7ZOL6C|fywbIG|JIG4L$xKl^7ZA+j qL}Y*W9kgF~pmaWu&t+#?_VEh=H1CCfHK$Pk0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv0005{Nklk5! z+`KpE`MvLRp7V~Zv`FZ0S;#L5Bn%%a#|tRGi=o^k5zCJuzdMH!tBg~|KChKnaYJvj z5UPG?2NB3-2y4wSQkz~FohULp#J`1o(!#PEg}o5w^Bzd`0OZCDc+HE(5sA(>9_C3H zo%1*j&tiCUHh&$)2u>tc{h*Q$Ayf#^(lpEuVQim9vHv@X!ygKcFEkiU8ttDFx)(B9 z-?Iad`g{r-@1rok#_gN8Isw$a2*~b`sCTnaEgP5qjS~*$xrFVHi`ea^27qddKgm`BgX6*9>xd6vRdVLCpz&`rg$bBg%xM_3POHz;BF0vJ!}tCLx&~s0Tr~xChw$ zBxA{(wi~&!@Bf1g>5q_qHHY|?2NS7L6xtlp*7Glgq;`X_pF*bY15<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900NdtL_t(IPYsbvM)@;+nxtu`>DW=n%LphU2po{Z;eNje z96!k!zQ-$n4J&K2fr;$UuAdv{MPs_Ha&ygaig|$>Ks9d zn2zgt#_#SL!&CvqbpOSud4#DdkJ9{CV+iHEJ?|J^oyyW3C-yC66Vd&pwv$7|Kln zPkZH3p;IZHvD*7m!6uX192^t5!!YsLJQfHXiZ}r{5pJDZC!oJMmGbXf*kD+dGET*7 zYiEIwg<=tjx7H!b5X8pjd+jzEYW8{&O25wT%R%c7S`}~KTDR@{^IhSKU2Wn>Ch`av zknSoo3dDURcpme1jV~wbRHG~vZ)XojyV#cumF|C1raNM{nF3*C$kY*|Kwo(p-McA~ z3uyx`Ep2%yprNicc?mX;c>oA;HEs$^6KA?OH4*vxJ@$>IuPqIA*)=gwKP+Znrjw7M z4>wqwH$*Z=Y!Gx9g(M&sc>LR zEvSd4a?$`~z7SjNzt{2*%8s^TCZ8h@C?XBkB(?ZPOh{rW^zKW1i#IgVLyUbhN@c;k- literal 0 HcmV?d00001 diff --git a/ferns/textures/old/archaeplantae_fern_old4.png b/ferns/textures/old/archaeplantae_fern_old4.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd33e96875f8e19ce32be71831e0fe1a842329e GIT binary patch literal 458 zcmV;*0X6=KP)<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900BlxL_t(IPwi4oO9D|8brZC5Cy^z6nc8M-oMsfqp-Gy|GR>(b z6Q!D@%#T28DEz>vNU0=gQLQU#RsF=1BV~xTYU_aqm-Fs9_ua$OXu9YoP)`8BzfLp6 zOohY#-8Ay=%TUR}bFlZ~LoyVec$8knzU=)%kIJVWyhxW>M632jUkgGx2H9&G$8SrB zoI3R@3W=Rd1{-+?>W13AsvC0AitVziRjjV@gJ_9`bmTztQGj?z!LwzAAWtB0Kw&Os zf;VMtpR5|huUI5%Zp3Rm(l;dReiIzQ5!eMi=-GZSixwoSEb=cRq9+V)KLfu;n-w2y zAtTK5I!uW};KE~&6as5!Hpn?Eq;m><#0YMaG%wVeiHhvEGP${Uo!GoLr3-v0N`_3f;Sg&!9_t-I&~ PG@HTG)z4*}Q$iB})n-c; literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_5_old.png b/ferns/textures/old/ferns_5_old.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ee89a07b1aec3091fda8bb5193ab30207f3001 GIT binary patch literal 552 zcmV+@0@wYCP)<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900E>)L_t(IPt}syO9D|8#`_~8u#D8Gpdh48ZFEM*Trems3fHip zUV>7?EfW=tb{DM4%C$uw`xC#MD@{s;)m!J~o_jgp?|$cSdV2nKL>epjbpyVOX{?`( z!CNrEc0TfR051&JO^DXDu;x^-T+G7rxX>No<(h?=IT-fDaFtk?5^~tDB~ZsE;CW)d z2gGmZz>9Y;=i%aHa8?*B-^@T0>H{6>huSA?Ix&0=;Kc`58aN(wa290H_=mBYQDLW{ z#aezEOh^Q3PXabN`5BPBQ{uX6f+MTIMoov6tQ-rmAyB?CY`;+Cjg5+-KN^BADC-0S zQWWlAt+1x#SUQoyUDd)}qM?oSlR`T;MO^SX8yy6-FZlrQQ|4-BIC3;p{$8lPQrNf| zY?Ns%o{qLek*13}LvsC*s8gJ+Tj0#Ah(*4D2@jCdUD3f-P{NoHx9-Jx!G*9yp&JDP zX(Nn>afJv>Z<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900N3hL_t(IPo+}tPf}qNzJEbqbdeyanVIPT0g<6xxNt!VBm7A% zeoYWtZfR>Nfq)>^M99!Gw-7-^`raS-bnd-rxwX~S^W{C~J?DAebKY|p<}cW+Phq9u zMEvUrVn;)W9+?m>oALg;2g?WJxJHkD)FGA|#|kC;Gkr+3hA~&@!F)-FsiGcp6*^05 z%V`VVSaT7%uHbzlUX$;O9spxIAG7n;mUV`-&Di9$2&8nA#t}(<%$g zdb=cGTD<{wO$P4GeFTp=ESx)GS!;urN)OfSnEx_H$!&O8=z}|_N3`icpgIocmI|hq zx4}fuCg9rarjnG@8;fv*hclyueWQyKImDZ8@M#74O0es95x;QLLo6KWE{v^E1)&B9 z|0g5tB;YF=5UTUyXq-6({k92_QyxzaEfiP5mDXVC!UO-INfdN!bbtxgZ6d+4F2kdp zegvy_Ng%7hL{5W9-GQZ+k^ZKW;)7Iy2eTC|tO+6u2-ijtZ`t6^_k!C{QQuYwqW07+ zxN^PXKg3&9a#k)9BBw6#0xiYf5c!Y1vhhC_p380F*>!*3tF&FaQ7m M07*qoM6N<$g8e66*#H0l literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_7_old.png b/ferns/textures/old/ferns_7_old.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ee0c6b119a72cc1816ae16fec3b24d1c76c760 GIT binary patch literal 759 zcmV<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900MJKL_t(IPoQ&Le7$M1J2$0wAj7{P`{5fTx&z=a#+LnuhV z%_~S+GwC#0BAPsi7N!nlh=`z=SfkN6&D00{cen`Jn{1}@YIo0`-~P|pv((FzUZj4E zA(+!(DksNmwh!y)MkIgQ5I8V^x^CG&bb;U1!TC-B$67b|JskpjdN`6QxKlk?IJ4qa z_CCU87F)l(c)m;j3FUGuyq`@lMVg_VmmqLxfsd$iWYn<5x?q@>Vla9Se8CFWCpEb3 zUU;_ENSqBIdCr5SEP7R9>pYqGSNoRZ)9-qXfgNA1$Lzsrf@4p zQfkbVoEX_qfMTPa=#O{6y4D6J(vHVT1>)alKrc3cjkkcF??fPLMWj3hCM<$+Nd!+y zhnbTx=tE5e5EH>&&|-K~3d2$hMiNT+Np(7OlN@M=B`n9&BMazY19ZVAFw0`NvNXo? zi~ytTI|}%Y&2Xg^0&#S;2h*oEawQ^nxeY@J6<&XR0*1gX5itxQ8MuNGw)Y*-E;NF2 zW;7TtnlQW}gKbp;!`s{N27=w4=-tQ-h3>Zkr;42T@m_DV!AL{Xd6dPPtf(m>wW8wnva9s?J z9H?woAXbvV?P~L0_oEhn%`-<^@dcU1k2`o$JZma2BG zz_U{V_a7VU04`sxR#|N976PTNxrV~ po3iT%>2HJPOkc{sZXo|_|2J0#S(jjB?Ck&m002ovPDHLkV1mT8M4$iw literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_fern_big_old.png b/ferns/textures/old/ferns_fern_big_old.png new file mode 100644 index 0000000000000000000000000000000000000000..46445f0e7ea2fa4e75ab7c71c798f61f8a33994b GIT binary patch literal 1245 zcmV<31S0#1P)N2bPDNB8 zb~7$DE-^4L^m3s900db{L_t(oN9~nsQ&U$IhSBPb<5W7MRV+$TE(s{NBqWdKK1WCJsbz8RjH1hUOr^coY^z$ti9Ls zzI*L+GBVO5?LgXrv;%1e(hj5@_`f)C>7|$W6DyaWyYSCy2&~rgF5BRh`dwppZF{C4 zJNG4?c`}nfdk)UNXl7>9^;PVFegE*9Wp77JyZb|$25&SFx!ytawvCbX*7x=n*Q8#z z5?RtSeMisWjavGa4NSjqzD*v#cV>6|iEH27uPp~Jzx3tAo;4GHY#_Q}A@S6mHTlSK zVDwh=-u^|?u5E~++f59t)-k-Or6s1ozf$$#;#&)PSIy$fsV7a?`*Mk`YYE&GK&~0+ zzg2?(ut!jPAo<*LeC(kOe^SH94|;s@O3uz|1qWSOLeBosn&peo!v_49YY1Oe;SHB^ zF0K~${!4&u>b6NGZBr`Zk4%hSRWg)PF!AgRo%32clA7$fUs_Ij#${YDpl0G$mAF~>M+fH4JiIX#8c!bfUCN_)=T+tGJ*i2weuzl0Qz?y-G(1^p!GD0hI zs_YV)I}50Goy5>8rOKR*v7;De{WqAq%TZa22npc96)h7l>zUqklX~UDFF?;cwX*uk z!PJKB&mfmxyM>}njQ{4u_q__=q7vu04nwer{%a;W7u2-I<($7%PJgmQR9M?1q4$ao z&tSgL7g|EM>%{oQL<#*j&De(I!u7M^5uDp%L4=VFPJqHoVf;m*P*#7x~1ymN9Qca8K+2~b;Cab6)7Hgpu=iB@4BRbmO0 zAoFEY+<5S9BdXoGUr#;n`*>dr%-h8zb6*9zi={{!k8rv%8&_10H>qHF-HatH#c&}9 zt8fFp`Y!3m3-0twu#CNF9DSe&d22rUUMY1KrL;zb zBUsj>Xg`iKQX#|&$!$19%Z#2z!G6(A-`^;_4OH8eyGH~NzGhpqJtD(qKaJFQ6n9L9 z&VPbJOBOaq35Tk_6mtq{k9@x3ot)T?m)TBW)aP?7FB84F0HrPmY57qq$_`WJ&im&I z{}BwxIG&S9rTklz@*GYTXA2=Rww`}we5lZ818gt+ujbzY4bh_vN2bPDNB8 zb~7$DE-^4L^m3s900MMLL_t(YOYKzcPm)m_wY9d^mLFV}BN>Va(uN2R@A&8=>;W{C z_eUi~Ll6SQAV}mTn1s62v{G}^F_*4pt^5;DNVD}avQ;1Y!2NRfySu-0e&?Ls+t5&7 zbqDGW)E)TG9Eh!w$n24L@UkD7k5-(Imp!swUHaf`disfBXWvjr92${-YrhrW9l8=& z(O){d7kNF1;N}44RsLLfifDKc^7b?L+R^cD-=oXib*Qc=(D0 zla*ooi58Fdhp$DqjF+Qj1LoHhaLtQwFRT7F!Puf4V`&BAYjQ+N1Qy;6W1^s8ExmWP zJCYL2EGyt$)nYuOLPc4lD>Hr?WnP^tE>Xk9xhxd1vCyW`dmCX z;{-I;PFO-BPz)cTq7>0(8S)1M$n4ip;Ll4Ce5OUBJcQ7e4#6!7u}The>k=3|T^RE4 zpt7|?Nwc7v5P}}%z);zv>oSBlw8$LWQ95NXSs7&W)PnS(`FllEt7b^Yc-2FJsTndm z2gaBPq`L!5vK#toK3q#uc++A8&VnuypeA^5B$OD5%OPP{5Sp5*{c1bsM*75G+p=JB z1hl^gy|W_lO*dgnNZ~3FnA@R2&9HHIUJUhk8yt%gaLE?#5Y8aOOyuBGTUnt@ZA^&27+;9k|VHguIsxfw%=d-OYaw q{3Bs2yFwskN2bPDNB8 zb~7$DE-^4L^m3s900i$zL_t(oN9~pCQxj(t#?|VK<5W6Tt1XHk!~_%)vYQRLZODbN z2?@DhNF;zUkdQz^Xn+8LL?B=l1g)s`N|n*tj+amU_ny8ig-%tfZS@=Pmz_C#_MG2& z&N=(;*|U3g71&i^SAksxb`|(jfy=La$Un7W?u85CX%!O7EqGg;{;Mr}NAB77Pd;%T zEIjv=6@T#@nSR-Zsdd*^xrg>cgDc#D&YXJR`$X-(*^11KPGs-cFti$YCpQ00=}iEc zD=a4Ovgp6rjNU~ZCSN+Yok#Dt@5?`R9h~{idt~mFzasa%4f!WJWY;(pp1DtqKXx1* zzTI{pwqV@51u<~Pg7~r?g9~bSb2P$BP47>>@j-Oi#J`+)YJt7C61i1161ND*bsb{2 zwIBfdNwtTIFFdD49@!8ssxb5;3x8gQ;Ix`3=sH1s4y9JOFH(p0}fGR*lZ0s(j{G?-|dC6kRhaT$-07az%~c zqypNIa08;umtzoHG9a9-Lu5+ASAB6ovvcKd_l)a5$2)h7Q)r9UWBO+UMweCSE~#

0(ggMsGMhEjn~7GXn@Wy zL}Hdg;h_$xc^L{1^q9P_LH@pKXPDlC6k}@!#ILH6ebk1;3Xy%CLwrSt3>n11MJZBC z6q@Wpv~>xfaGilJAVQO=9EQ$1FfHG~)FXl1T8k6`PcEr3_NoPw>u!`@`w=G4Q_rke ze(k`-n(gl(m*2QaQVT|Zcf$XJ9R39c&QT3?$y&s&8__kdL?BP$;$;b9#d^NN=7=`=^NDqx0(i1bun#lf z67`V!%TZ@OvOS1Ocjd8(7rh^zi}Et%A){Uc8GO!r62zeb)GJo0Qq*ebW@gMOWgXWi^?TY{a002ovPDHLkV1kT4 Bd9DBe literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_fern_trunk_big_old2.png b/ferns/textures/old/ferns_fern_trunk_big_old2.png new file mode 100644 index 0000000000000000000000000000000000000000..a048ee0c4390ec74a039e5e8feae35a5c7f379ad GIT binary patch literal 669 zcmV;O0%HA%P)N2bPDNB8 zb~7$DE-^4L^m3s900J3FL_t(IPj!-gkD5Rj#Q7wb+VeaGQCPqQ1QrC5cd>%vo!*&K zuP;fHrcL_!JC^=wlL;YNcxLALEw>I?NXbH%V^jHkY2NE}pE^r-^8Hvn7r}CF1XO&j z(=xOoM|CGd?s>Jym>wF$Rfd-)-bU6oG?uRV<9&PDB~8H+S3YmkjA@R{>w}M+%73uN zeO>5Ur01(VW@omXyO3H(R?MV@DZwOW8q-D)XDh>2hjq+|z%&6LeSIwpj}%Oa9P-u_ zj{Hcao+fmw#OEy1C&Jw(n0`Wbs*+E>f$=c;%VDO^^wDJefaPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv00091Nkl3na`^}RV2*<$ zZU}lI1wlZ$fP&mqz*~?D3YZ&-d!vpflj4dFD3sesE{LRpmStn(H073CsZ%;cP5k=|oB^fL(8o{B4F=I)L7!rJqfHd`X zR9+er=Ta*O?!k1q#fTkFXuVx>YlHOjVsm4WP@00~NLW|`1&kmtE(Hz0!=t`?TDxIW zJL=QVUl`nGwcD&ZpRXKl%Di~fvu-WSNTG2VWU!5ZMLC;lAb6WYd8>WO`F`E+-O1Ok zzN^!f)FAQk{3fN!!@cQBgo>QMbV@$Rfn7HgD&0e*pj{>tq1ahqwy)$i`S|9!drUr5{MN(mMS8LV9j`z>O%-L+|K(#nugo1wra!AndoiUxgTIlI6`1xUU zYk6eARAV1$GdEawu{F8jv%U9p z&RevnbJhFfx^e|anTo;=5ZDFjR**Q6>}`{KOt{U!|2n0gZCA~j)n_vgtOowxaG|3b zm-1;cHWjvvz_!UDK`1!{G^H}e_Ncz!h+X&^ft$rBJeW1=ab`LvCRf5tqLH9S2=pm3 zJeVF8%BGOA*p#+>tVBkK=5=aQ^^!P~Mo3_EJekU8M2J~bXzH~9E|9`Fun4gL1>ghR l*F6`oASBoZBk&UH{U7KYJE$y2GSdJ6002ovPDHLkV1oHnq8|VN literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_fern_trunk_big_top_old2.png b/ferns/textures/old/ferns_fern_trunk_big_top_old2.png new file mode 100644 index 0000000000000000000000000000000000000000..4a4ee87235920043439a0e4359004f06874f3a4f GIT binary patch literal 820 zcmV-41Izr0P)N2bPDNB8 zb~7$DE-^4L^m3s900OW{L_t(IPaTq5i{wNYhVzTOSbGlLIdl%4R3%lZR8=aKRHf6E zp6Q+5(ZSJ028U5Egk2F9T-X(F78KSIR$T-|Sq2pm96>=v1jQ?ViiJPm``+h0ILijo z!mD6FfZLQI%JwPtHUqu2uC+*eo=Or)w#d_65bbE5IVJQc3TWMEIH7{&4IMloa3P7>2@P1ne#GMEbVIG z5a?MEZgpugwCHfC6knLG7@AbonT6?OI>>xnmKIo&*y-p(;Lt2F1bYN{nkMHj^1Em1 zmQDx0h};`A_hc2bd}dl;EjeR{`zB?0Zl!qc-@EAVT{Mp$9RK{qYhQkN%8D7vTzePnI$U0%;@rXRlNIVcYXEn>E-?3uRs6n(W^f^J#T5ICD@v(rlG78XVvBh zD_kRQXtIkF_V~dI-+leTM){_<9F?Dci#Yz@;*+Ka5Cu@T{K zS8x6E=QoF=K0R6g^~)#ky}dFrJzSPHG*vH-40V)PD4E&!Ee%@|KD#{o^wHVBe}DhS zPal8#g&r@Z1yCykoIZXs{>2-jU%wPu{qFU?dn-nJ3d#Uu@RQcDj!wHOc99yKQqBOYC37~j-uq3TWv`j5P-@y{@uT|dtKNbY074#f|qNYkfIN>-P y6+S*}D!9KCHaB2&fs(zpjO-eYMggJ;hrxg1)(25_40qrF0000!lvI6;>1s;*b z3=G^nAk1j*pmYK#$X?><>&kwIi;quN(An9q5GW*7;u=vBoS#-wo>-L15RjOeSEA?V z8lq5UtY@lcXkhTAXdzJ5UQZXt5DWk01PN9P=Y*=2_y50M&HaD=-0A=7%VJ;DPipdt zj{CEJW80s4_29Gr?Y6c3pL+D?|K=kdMk!~n1Z`lGRbBaiAD`O)wWU)JgC zd-8MU&4g%2Dcwa+{<&Y9-N?(d^Vzp!UWeEk{_q6xTw=NOX3i>3GoBO;4IhrG$ z8#`ZZI+W0>(CiS$P?_zRY>~+9VAjCIvxG54`-G_ib0?q64B_Wy#~T0ga7}JKd-2Fk fp9}SegBcl;Wm8g9EjYdcJ;LDW>gTe~DWM4fH*NS%G}c0*}aI z1_r)^Ak4U9V)k30pj3%#L`iUdT1k0gQ7S_~VrE{6o}X)oLYc9ish**M!Iz?iKvj!9 zT^vIq+>;X|SQjfANHL)iA}tR0oG$-Y@M#pBk|}GzuJZl$ANGfTW(v%?vY!3el*)FN zyUgzz_C!AW?`W~eL9(ZK+3ZF`&bkFYFB_~CN@ty`7touR&u}c$`0IfgM)?yLR3DI? zV0QC^J;&io4l&!m)eEQ{NS%G}c0*}aI z1_r)^Ak4U9V)k30pj3%#L`iUdT1k0gQ7S_~VrE{6o}X)oLYc9ish**M!Iz?iKvhRP zT^vIq+>?L&|8IZT;Su9jnI|6u*?Za!WN<(U22aHU4Q!vpX8mJNEGZ1iy1wvb!;`wX z{}tw3SBWk3=E8C*K?|RGXDem Ohr!d;&t;ucLK6TbD|rV1 literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_horsetail_03_old2.png b/ferns/textures/old/ferns_horsetail_03_old2.png new file mode 100644 index 0000000000000000000000000000000000000000..153f354a00c74a0da837f1fe920b16187a5d0e8d GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}c0*}aI z1_r)^Ak4U9V)k30pj3%#L`iUdT1k0gQ7S_~VrE{6o}X)oLYc9ish**M!Iz?iKvmB? zT^vIq+}}>!%XP>=#O=49-_fA0H-2gP@pT1m5NYS)Tj$p#yJYIFtMkv6?|F7ls3nJW za`%?T%_%3#_ZJAUGsyTw@Eh~Vb=HR%Ue?rb7^1!tN`b;$p=gXz;?~_%D0{WQ2)78&qol`;+ E09=iUy#N3J literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_horsetail_04_old2.png b/ferns/textures/old/ferns_horsetail_04_old2.png new file mode 100644 index 0000000000000000000000000000000000000000..bb12dc213c19d8f4627308dbc33da40f2e0bbd04 GIT binary patch literal 404 zcmV;F0c-w=P)N2bPDNB8 zb~7$DE-^4L^m3s9009t5L_t(oN9~nO3jt9ShW!_-X&4{*_$yWtW+=jfvaq$GC>o4x zeC_QjZ(U<_RFGGwa6OVf5m> zF)c38*%pB)_2Nu>U0~kGp!ce{fYKjd@<8at(U|_aK>v^e!d)epR*+%5z+w9P8ycBj zkBSQ@J#UGr5!Hh7)CR&>^6-bn1)|%6!7&F!W92aIAj^0@wg4HP3XHLTL0mv3Yx-Fr z9xbr21(vzw;Ug6nh;9qIy9^MnpJZAahjD$}4M=@yGsapVE^yxk3)}^WYC&aU17R%r y(=Lz}h;9qQS1~%Lf%w|p|D1qof!GOrLf{I*nn4iC{Xeb%0000<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900NasL_t(IPi<3OQ&LeBJqV~M>K~{X(=0zwGekkYVUR=^GOfh2 zGO{sJG(ScVM=eUrCWw$61jdS(#)o?9q3L%q&iLZ$?qi^4Yv$g2&fRD4z4qSgFsW3^ z#9}d%$z-em+E-OovDu6j({Uw=hQEuNnwsPDv>^wPNW@A@OW9ze8-|yS=!>@E{>Kgk zvVCU)P%=8tL5q@-5>{Sb&U##Z}`^(I%+< zb+ConvGLOh_gWKfXS5jJ(Lo}SaQk3FeauQOm$S;sN}hpOxZ@q%IG*l?|8p+_-|aB2 zG{O0*6~^!dZX=f7oE=m;qb62VRPX>JX#*^wdi2a(#Qy$13vBD*4J%<@Y=QP!19x_X zyI~B}!nEFex;GSH?3)e!n=0sLFToRRLMUp$bWqRNhlhup71?ejOmKd3X;$8hH2Yps`cQMQEQlpzlR2bKC9T?nJ@sKn|8W}b7aY}{RoP)C>!3`viWlaG{P)9ET z-rO}#jYc}UYldf6&+C2n`v&xLm(ev@3zB_xb#;+>QO^HLvT(8dITN0yZ5ZCRz_s26 zSF9bRLekEEK}tLczc4zY?-r<&aK^H>Q{pMG=RTB`ew@5G3rP*aKZbby1S+w>uJHW> XApJ{?{0(2|00000NkvXXu0mjf=MZMr literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_tree_fern_leave_big_end_old.png b/ferns/textures/old/ferns_tree_fern_leave_big_end_old.png new file mode 100644 index 0000000000000000000000000000000000000000..6af642fa2ad3133b4208f281bf0de36ffdb0bdb4 GIT binary patch literal 563 zcmV-30?hr1P)N2bPDNB8 zb~7$DE-^4L^m3s900FN_L_t(IPmR-CO9DXvhGBn31QBEu21#2)u9_$8U`fI<55#3Z8POMpICuM@?pWb6UJQjYBUmaruv+no z^S0xl77`I^sG^QaYN-|z0a#)$ZY*YP2%Pj{GTjCLagXuYhrK6NXM`H6sH3uJMFu$H zB`@YO3c?o(v}*;?f)laqu!wYI%7DCS^J4~wpBq?z_aODCiU>8osxG0VmTEDVZ{~=M z?bm)I)KEnomDI||uLrc84Zgi0_>X!JJnzQz=^$>uW_3oWp^Cc3$7vGqWTP5H>TL$$ zy9tDD?1(?8BGPIP>T-D?A0t`zAz=`;{1~x@uC6?Jm+S_j1o+eO5@2OS0SV!Y(Uim@^y z)KF#C{`nQm8@hb!5D{uxP3{=rMgEl;X*ZeQ{{X&;Hz002ovPDHLkV1kMF B^Me2Y literal 0 HcmV?d00001 diff --git a/ferns/textures/old/ferns_tree_fern_leave_big_old.png b/ferns/textures/old/ferns_tree_fern_leave_big_old.png new file mode 100644 index 0000000000000000000000000000000000000000..3c34ad9f1d903d81b7afde2b0521ccc16d5e2596 GIT binary patch literal 617 zcmV-v0+#)WP)<{98gxZibW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE-^4L^m3s900HGmL_t(IPnFZ}OH)xC$MO9cB1oWOEKxS4a&z9@`FknMV1&b6 zn>l?Z`oxSTpO)g<*v^x)oaQ(y%F}$8!O_C=Kc5S=8S9l7#^+)m*Kf&zPE4 z@}y6*`JfgGgWCHu)3{os>F8C=YE{Q3&F=Tg+3Jz|zDsil0eN5gt-@-I3LQ$cEkmy! zu9hD+P@qAD4kcRDO+zwOSBsUXnJ}nqDPk39P@zM~i>T52vh@kA{Gi6PTpKszloH2J z7606?wPHjlZsjhNpD3C4%iVmW*t-sme`wd_?n8MeA*(=x3f-+?|4%slJ>5Wo1{JzX z<(O5YzY&-{pVHf3%X;GLb#}9&NS{XZ{K&7-od+7(YEx{x!;GCuAN5%U8dT`+wFjHuLJbsXP@zMKwrNn>{M*Iv zql$j=YrY!Mn|j?lzTYGSuXbNR3`r2(O6$)=;| zEIN#dbR3;W2hxcs(4azx^3MA}C!#=u3LQ$cs0sQDQo2)Q$wuiF00000NkvXXu0mjf DoTD6M literal 0 HcmV?d00001 diff --git a/ferns/treefern.lua b/ferns/treefern.lua new file mode 100644 index 0000000..c92c445 --- /dev/null +++ b/ferns/treefern.lua @@ -0,0 +1,247 @@ +----------------------------------------------------------------------------------------------- +-- Ferns - Tree Fern 0.1.1 +----------------------------------------------------------------------------------------------- +-- by Mossmanikin +-- License (everything): WTFPL +-- Contains code from: plants_lib +-- Looked at code from: default , trees +----------------------------------------------------------------------------------------------- + +abstract_ferns.grow_tree_fern = function(pos) + local size = math.random(1,5) + local crown = math.random(1,2) + 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} + local pos_05 = {x = pos.x, y = pos.y + 5, z = pos.z} + + if minetest.env:get_node(pos_01).name == "air" -- instead of check_air = true, + or minetest.env:get_node(pos_01).name == "ferns:sapling_tree_fern" + or minetest.env:get_node(pos_01).name == "default:junglegrass" then + + if minetest.env:get_node(pos_02).name ~= "air" + or size == 1 then + minetest.env:add_node(pos_01, {name="ferns:tree_fern_leaves"}) + + elseif minetest.env:get_node(pos_03).name ~= "air" + or size == 2 then + minetest.env:add_node(pos_01, {name="ferns:fern_trunk"}) + if crown == 1 then + minetest.env:add_node(pos_02, {name="ferns:tree_fern_leaves"}) + else + minetest.env:add_node(pos_02, {name="ferns:tree_fern_leaves_02"}) + end + + elseif minetest.env:get_node(pos_04).name ~= "air" + or size == 3 then + minetest.env:add_node(pos_01, {name="ferns:fern_trunk"}) + minetest.env:add_node(pos_02, {name="ferns:fern_trunk"}) + if crown == 1 then + minetest.env:add_node(pos_03, {name="ferns:tree_fern_leaves"}) + else + minetest.env:add_node(pos_03, {name="ferns:tree_fern_leaves_02"}) + end + + elseif minetest.env:get_node(pos_05).name ~= "air" + or size == 4 then + minetest.env:add_node(pos_01, {name="ferns:fern_trunk"}) + minetest.env:add_node(pos_02, {name="ferns:fern_trunk"}) + minetest.env:add_node(pos_03, {name="ferns:fern_trunk"}) + if crown == 1 then + minetest.env:add_node(pos_04, {name="ferns:tree_fern_leaves"}) + else + minetest.env:add_node(pos_04, {name="ferns:tree_fern_leaves_02"}) + end + + elseif size == 5 then + minetest.env:add_node(pos_01, {name="ferns:fern_trunk"}) + minetest.env:add_node(pos_02, {name="ferns:fern_trunk"}) + minetest.env:add_node(pos_03, {name="ferns:fern_trunk"}) + minetest.env:add_node(pos_04, {name="ferns:fern_trunk"}) + if crown == 1 then + minetest.env:add_node(pos_05, {name="ferns:tree_fern_leaves"}) + else + minetest.env:add_node(pos_05, {name="ferns:tree_fern_leaves_02"}) + end + + end + end +end + +----------------------------------------------------------------------------------------------- +-- TREE FERN LEAVES +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:tree_fern_leaves", { + description = "Tree Fern Crown (Dicksonia)", + drawtype = "plantlike", + visual_scale = 2, + paramtype = "light", + paramtype2 = "facedir", + --tiles = {"[combine:32x32:0,0=top_left.png:0,16=bottom_left.png:16,0=top_right.png:16,16=bottom_right.png"}, + tiles = {"ferns_fern_tree.png"}, + inventory_image = "ferns_fern_tree_inv.png", + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1}, + drop = { + max_items = 1, + items = { + { + items = {"ferns:sapling_tree_fern"}, + rarity = 20, + }, + { + items = {"ferns:tree_fern_leaves"}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, + }, +}) +minetest.register_node("ferns:tree_fern_leaves_02", { + drawtype = "plantlike", + visual_scale = 2, + paramtype = "light", + tiles = {"ferns_fern_big.png"}, + walkable = false, + groups = {snappy=3,flammable=2,attached_node=1,not_in_creative_inventory=1}, + drop = { + max_items = 1, + items = { + { + items = {"ferns:sapling_tree_fern"}, + rarity = 20, + }, + { + items = {"ferns:tree_fern_leaves"}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, + }, +}) +----------------------------------------------------------------------------------------------- +-- FERN TRUNK +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:fern_trunk", { + description = "Fern Trunk (Dicksonia)", + drawtype = "nodebox", + paramtype = "light", + tiles = { + "ferns_fern_trunk_top.png", + "ferns_fern_trunk_top.png", + "ferns_fern_trunk.png" + }, + node_box = { + type = "fixed", + fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}, + }, + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood=1}, + sounds = default.node_sound_wood_defaults(), + after_destruct = function(pos,oldnode) + local node = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z}) + if node.name == "ferns:fern_trunk" then + minetest.dig_node({x=pos.x,y=pos.y+1,z=pos.z}) + minetest.add_item(pos,"ferns:fern_trunk") + end + end, +}) + +----------------------------------------------------------------------------------------------- +-- TREE FERN SAPLING +----------------------------------------------------------------------------------------------- +minetest.register_node("ferns:sapling_tree_fern", { + description = "Tree Fern Sapling (Dicksonia)", + drawtype = "plantlike", + paramtype = "light", + paramtype2 = "facedir", + tiles = {"ferns_sapling_tree_fern.png"}, + inventory_image = "ferns_sapling_tree_fern.png", + walkable = false, + groups = {snappy=3,flammable=2,flora=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-7/16, -1/2, -7/16, 7/16, 0, 7/16}, + }, +}) +-- abm +minetest.register_abm({ + nodenames = "ferns:sapling_tree_fern", + interval = 1000, + chance = 4, + action = function(pos, node, _, _) + abstract_ferns.grow_tree_fern({x = pos.x, y = pos.y-1, z = pos.z}) + end +}) + +----------------------------------------------------------------------------------------------- +-- GENERATE TREE FERN +----------------------------------------------------------------------------------------------- +-- in jungles +if Tree_Ferns_in_Jungle == true then +plantslib:register_generate_plant({ + surface = { + "default:dirt_with_grass", + "default:sand", + "default:desert_sand"--, + --"dryplants:grass_short" + }, + max_count = 35,--27, + avoid_nodes = {"default:tree"}, + avoid_radius = 4, + rarity = 50, + seed_diff = 329, + min_elevation = -10, + near_nodes = {"default:jungletree"}, + near_nodes_size = 6, + near_nodes_vertical = 2,--4, + near_nodes_count = 1, + plantlife_limit = -0.9, + humidity_max = -1.0, + humidity_min = 0.4, + temp_max = -0.5, + temp_min = 0.13, + check_air = false, + }, + "abstract_ferns.grow_tree_fern" +) +end + +-- for oases & tropical beaches +if Tree_Ferns_for_Oases == true then +plantslib:register_generate_plant({ + surface = { + "default:sand"--, + --"default:desert_sand" + }, + max_count = 35, + rarity = 50, + seed_diff = 329, + neighbors = {"default:desert_sand"}, + ncount = 1, + min_elevation = 1, + near_nodes = {"default:water_source"}, + near_nodes_size = 2, + near_nodes_vertical = 1, + near_nodes_count = 1, + plantlife_limit = -0.9, + humidity_max = -1.0, + humidity_min = 1.0, + temp_max = -1.0, + temp_min = 1.0, + check_air = false, + }, + "abstract_ferns.grow_tree_fern" +) +end diff --git a/modpack.txt b/modpack.txt new file mode 100644 index 0000000..e69de29