commit 6efda7cfde22ce007d6ce689668185c23de3247b Author: Mossmanikin Date: Fri Dec 20 19:04:27 2013 +0100 Ferns 0.1.2 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 0000000..de87d3a Binary files /dev/null and b/ferns/textures/ferns_5.png differ diff --git a/ferns/textures/ferns_6.png b/ferns/textures/ferns_6.png new file mode 100644 index 0000000..7ca1c3f Binary files /dev/null and b/ferns/textures/ferns_6.png differ diff --git a/ferns/textures/ferns_7.png b/ferns/textures/ferns_7.png new file mode 100644 index 0000000..7165881 Binary files /dev/null and b/ferns/textures/ferns_7.png differ diff --git a/ferns/textures/ferns_8.png b/ferns/textures/ferns_8.png new file mode 100644 index 0000000..4a55895 Binary files /dev/null and b/ferns/textures/ferns_8.png differ diff --git a/ferns/textures/ferns_fern.png b/ferns/textures/ferns_fern.png new file mode 100644 index 0000000..36f50f9 Binary files /dev/null and b/ferns/textures/ferns_fern.png differ diff --git a/ferns/textures/ferns_fern_big.png b/ferns/textures/ferns_fern_big.png new file mode 100644 index 0000000..d8ec738 Binary files /dev/null and b/ferns/textures/ferns_fern_big.png differ diff --git a/ferns/textures/ferns_fern_mid.png b/ferns/textures/ferns_fern_mid.png new file mode 100644 index 0000000..4270e96 Binary files /dev/null and b/ferns/textures/ferns_fern_mid.png differ diff --git a/ferns/textures/ferns_fern_tree.png b/ferns/textures/ferns_fern_tree.png new file mode 100644 index 0000000..10c9f66 Binary files /dev/null and b/ferns/textures/ferns_fern_tree.png differ diff --git a/ferns/textures/ferns_fern_tree_giant.png b/ferns/textures/ferns_fern_tree_giant.png new file mode 100644 index 0000000..f8f1189 Binary files /dev/null and b/ferns/textures/ferns_fern_tree_giant.png differ diff --git a/ferns/textures/ferns_fern_tree_inv.png b/ferns/textures/ferns_fern_tree_inv.png new file mode 100644 index 0000000..1ea2e43 Binary files /dev/null and b/ferns/textures/ferns_fern_tree_inv.png differ diff --git a/ferns/textures/ferns_fern_tree_tl.png b/ferns/textures/ferns_fern_tree_tl.png new file mode 100644 index 0000000..6b2f286 Binary files /dev/null and b/ferns/textures/ferns_fern_tree_tl.png differ diff --git a/ferns/textures/ferns_fern_tree_tr.png b/ferns/textures/ferns_fern_tree_tr.png new file mode 100644 index 0000000..c00aeec Binary files /dev/null and b/ferns/textures/ferns_fern_tree_tr.png differ diff --git a/ferns/textures/ferns_fern_trunk.png b/ferns/textures/ferns_fern_trunk.png new file mode 100644 index 0000000..a8e1bf6 Binary files /dev/null and b/ferns/textures/ferns_fern_trunk.png differ diff --git a/ferns/textures/ferns_fern_trunk_big.png b/ferns/textures/ferns_fern_trunk_big.png new file mode 100644 index 0000000..057e5ec Binary files /dev/null and b/ferns/textures/ferns_fern_trunk_big.png differ diff --git a/ferns/textures/ferns_fern_trunk_big_top.png b/ferns/textures/ferns_fern_trunk_big_top.png new file mode 100644 index 0000000..22d5523 Binary files /dev/null and b/ferns/textures/ferns_fern_trunk_big_top.png differ diff --git a/ferns/textures/ferns_fern_trunk_top.png b/ferns/textures/ferns_fern_trunk_top.png new file mode 100644 index 0000000..03d789b Binary files /dev/null and b/ferns/textures/ferns_fern_trunk_top.png differ diff --git a/ferns/textures/ferns_ferntuber.png b/ferns/textures/ferns_ferntuber.png new file mode 100644 index 0000000..c745194 Binary files /dev/null and b/ferns/textures/ferns_ferntuber.png differ diff --git a/ferns/textures/ferns_ferntuber_roasted.png b/ferns/textures/ferns_ferntuber_roasted.png new file mode 100644 index 0000000..de610ae Binary files /dev/null and b/ferns/textures/ferns_ferntuber_roasted.png differ diff --git a/ferns/textures/ferns_fiddlehead.png b/ferns/textures/ferns_fiddlehead.png new file mode 100644 index 0000000..b1796b8 Binary files /dev/null and b/ferns/textures/ferns_fiddlehead.png differ diff --git a/ferns/textures/ferns_fiddlehead_roasted.png b/ferns/textures/ferns_fiddlehead_roasted.png new file mode 100644 index 0000000..3a3d72c Binary files /dev/null and b/ferns/textures/ferns_fiddlehead_roasted.png differ diff --git a/ferns/textures/ferns_horsetail_01.png b/ferns/textures/ferns_horsetail_01.png new file mode 100644 index 0000000..90aeada Binary files /dev/null and b/ferns/textures/ferns_horsetail_01.png differ diff --git a/ferns/textures/ferns_horsetail_02.png b/ferns/textures/ferns_horsetail_02.png new file mode 100644 index 0000000..7ceae5c Binary files /dev/null and b/ferns/textures/ferns_horsetail_02.png differ diff --git a/ferns/textures/ferns_horsetail_03.png b/ferns/textures/ferns_horsetail_03.png new file mode 100644 index 0000000..3ec3a1d Binary files /dev/null and b/ferns/textures/ferns_horsetail_03.png differ diff --git a/ferns/textures/ferns_horsetail_04.png b/ferns/textures/ferns_horsetail_04.png new file mode 100644 index 0000000..9cab02d Binary files /dev/null and b/ferns/textures/ferns_horsetail_04.png differ diff --git a/ferns/textures/ferns_sapling_tree_fern.png b/ferns/textures/ferns_sapling_tree_fern.png new file mode 100644 index 0000000..63d5d59 Binary files /dev/null and b/ferns/textures/ferns_sapling_tree_fern.png differ 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 0000000..6bccc99 Binary files /dev/null and b/ferns/textures/ferns_sapling_tree_fern_giant.png differ diff --git a/ferns/textures/ferns_tree_fern_leave_big.png b/ferns/textures/ferns_tree_fern_leave_big.png new file mode 100644 index 0000000..93cbebc Binary files /dev/null and b/ferns/textures/ferns_tree_fern_leave_big.png differ 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 0000000..b1c9600 Binary files /dev/null and b/ferns/textures/ferns_tree_fern_leave_big_cross.png differ 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 0000000..d850d3a Binary files /dev/null and b/ferns/textures/ferns_tree_fern_leave_big_end.png differ 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 0000000..f3558f7 Binary files /dev/null and b/ferns/textures/not_in_use/archaeplantae_horsetails.png differ diff --git a/ferns/textures/not_in_use/big picture 3.png b/ferns/textures/not_in_use/big picture 3.png new file mode 100644 index 0000000..d5d1c54 Binary files /dev/null and b/ferns/textures/not_in_use/big picture 3.png differ diff --git a/ferns/textures/not_in_use/ferns_fern_big_left.png b/ferns/textures/not_in_use/ferns_fern_big_left.png new file mode 100644 index 0000000..e7e747a Binary files /dev/null and b/ferns/textures/not_in_use/ferns_fern_big_left.png differ diff --git a/ferns/textures/not_in_use/ferns_fern_big_right.png b/ferns/textures/not_in_use/ferns_fern_big_right.png new file mode 100644 index 0000000..99b29ab Binary files /dev/null and b/ferns/textures/not_in_use/ferns_fern_big_right.png differ 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 0000000..64cc6a7 Binary files /dev/null and b/ferns/textures/not_in_use/ferns_fern_mid_left.png differ 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 0000000..3c6c4e8 Binary files /dev/null and b/ferns/textures/not_in_use/ferns_fern_mid_right.png differ 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 0000000..b96e4fa Binary files /dev/null and b/ferns/textures/not_in_use/ferns_fern_tree_bl.png differ diff --git a/ferns/textures/not_in_use/ferns_fern_tree_br.png b/ferns/textures/not_in_use/ferns_fern_tree_br.png new file mode 100644 index 0000000..efaf5db Binary files /dev/null and b/ferns/textures/not_in_use/ferns_fern_tree_br.png differ diff --git a/ferns/textures/not_in_use/ferns_fern_trunk_big_crown.png b/ferns/textures/not_in_use/ferns_fern_trunk_big_crown.png new file mode 100644 index 0000000..b4d18b3 Binary files /dev/null and b/ferns/textures/not_in_use/ferns_fern_trunk_big_crown.png differ diff --git a/ferns/textures/old/archaeplantae_fern_old4.png b/ferns/textures/old/archaeplantae_fern_old4.png new file mode 100644 index 0000000..4bd33e9 Binary files /dev/null and b/ferns/textures/old/archaeplantae_fern_old4.png differ diff --git a/ferns/textures/old/comb.png b/ferns/textures/old/comb.png new file mode 100644 index 0000000..dca2800 Binary files /dev/null and b/ferns/textures/old/comb.png differ diff --git a/ferns/textures/old/ferns_5_old.png b/ferns/textures/old/ferns_5_old.png new file mode 100644 index 0000000..d5ee89a Binary files /dev/null and b/ferns/textures/old/ferns_5_old.png differ diff --git a/ferns/textures/old/ferns_6_old.png b/ferns/textures/old/ferns_6_old.png new file mode 100644 index 0000000..3d65b2a Binary files /dev/null and b/ferns/textures/old/ferns_6_old.png differ diff --git a/ferns/textures/old/ferns_7_old.png b/ferns/textures/old/ferns_7_old.png new file mode 100644 index 0000000..b0ee0c6 Binary files /dev/null and b/ferns/textures/old/ferns_7_old.png differ 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 0000000..46445f0 Binary files /dev/null and b/ferns/textures/old/ferns_fern_big_old.png differ diff --git a/ferns/textures/old/ferns_fern_mid_old.png b/ferns/textures/old/ferns_fern_mid_old.png new file mode 100644 index 0000000..e21cc55 Binary files /dev/null and b/ferns/textures/old/ferns_fern_mid_old.png differ diff --git a/ferns/textures/old/ferns_fern_tree_old.png b/ferns/textures/old/ferns_fern_tree_old.png new file mode 100644 index 0000000..fb58d34 Binary files /dev/null and b/ferns/textures/old/ferns_fern_tree_old.png differ 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 0000000..a048ee0 Binary files /dev/null and b/ferns/textures/old/ferns_fern_trunk_big_old2.png differ diff --git a/ferns/textures/old/ferns_fern_trunk_big_top_old.png b/ferns/textures/old/ferns_fern_trunk_big_top_old.png new file mode 100644 index 0000000..1efdbd8 Binary files /dev/null and b/ferns/textures/old/ferns_fern_trunk_big_top_old.png differ 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 0000000..4a4ee87 Binary files /dev/null and b/ferns/textures/old/ferns_fern_trunk_big_top_old2.png differ diff --git a/ferns/textures/old/ferns_fern_trunk_top_old.png b/ferns/textures/old/ferns_fern_trunk_top_old.png new file mode 100644 index 0000000..f8fcc96 Binary files /dev/null and b/ferns/textures/old/ferns_fern_trunk_top_old.png differ diff --git a/ferns/textures/old/ferns_horsetail_01_old2.png b/ferns/textures/old/ferns_horsetail_01_old2.png new file mode 100644 index 0000000..9605412 Binary files /dev/null and b/ferns/textures/old/ferns_horsetail_01_old2.png differ diff --git a/ferns/textures/old/ferns_horsetail_02_old2.png b/ferns/textures/old/ferns_horsetail_02_old2.png new file mode 100644 index 0000000..46614ff Binary files /dev/null and b/ferns/textures/old/ferns_horsetail_02_old2.png differ 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 0000000..153f354 Binary files /dev/null and b/ferns/textures/old/ferns_horsetail_03_old2.png differ 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 0000000..bb12dc2 Binary files /dev/null and b/ferns/textures/old/ferns_horsetail_04_old2.png differ diff --git a/ferns/textures/old/ferns_tree_fern_leave_big_cross_old.png b/ferns/textures/old/ferns_tree_fern_leave_big_cross_old.png new file mode 100644 index 0000000..1e19292 Binary files /dev/null and b/ferns/textures/old/ferns_tree_fern_leave_big_cross_old.png differ 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 0000000..6af642f Binary files /dev/null and b/ferns/textures/old/ferns_tree_fern_leave_big_end_old.png differ 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 0000000..3c34ad9 Binary files /dev/null and b/ferns/textures/old/ferns_tree_fern_leave_big_old.png differ 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