From 888b0ebfec8c2eff9015163549a7e47443cb8665 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Fri, 1 Apr 2016 21:00:20 -0400 Subject: "explode" all modpacks into their individual components (you can't have a modpack buried inside a modpack) --- ferns/crafting.lua | 104 +++++++ ferns/depends.txt | 2 + ferns/fern.lua | 196 ++++++++++++ ferns/gianttreefern.lua | 336 +++++++++++++++++++++ ferns/horsetail.lua | 156 ++++++++++ ferns/init.lua | 69 +++++ ferns/settings.lua | 43 +++ ferns/textures/ferns_5.png | Bin 0 -> 550 bytes ferns/textures/ferns_6.png | Bin 0 -> 666 bytes ferns/textures/ferns_7.png | Bin 0 -> 669 bytes ferns/textures/ferns_8.png | Bin 0 -> 510 bytes ferns/textures/ferns_fern.png | Bin 0 -> 362 bytes ferns/textures/ferns_fern_big.png | Bin 0 -> 1170 bytes ferns/textures/ferns_fern_mid.png | Bin 0 -> 699 bytes ferns/textures/ferns_fern_tree.png | Bin 0 -> 1339 bytes ferns/textures/ferns_fern_tree_giant.png | Bin 0 -> 3250 bytes ferns/textures/ferns_fern_tree_inv.png | Bin 0 -> 391 bytes ferns/textures/ferns_fern_tree_tl.png | Bin 0 -> 264 bytes ferns/textures/ferns_fern_tree_tr.png | Bin 0 -> 256 bytes ferns/textures/ferns_fern_trunk.png | Bin 0 -> 765 bytes ferns/textures/ferns_fern_trunk_big.png | Bin 0 -> 684 bytes ferns/textures/ferns_fern_trunk_big_top.png | Bin 0 -> 398 bytes ferns/textures/ferns_fern_trunk_top.png | Bin 0 -> 233 bytes ferns/textures/ferns_ferntuber.png | Bin 0 -> 438 bytes ferns/textures/ferns_ferntuber_roasted.png | Bin 0 -> 428 bytes ferns/textures/ferns_fiddlehead.png | Bin 0 -> 327 bytes ferns/textures/ferns_fiddlehead_roasted.png | Bin 0 -> 521 bytes ferns/textures/ferns_horsetail_01.png | Bin 0 -> 150 bytes ferns/textures/ferns_horsetail_02.png | Bin 0 -> 166 bytes ferns/textures/ferns_horsetail_03.png | Bin 0 -> 199 bytes ferns/textures/ferns_horsetail_04.png | Bin 0 -> 224 bytes ferns/textures/ferns_sapling_tree_fern.png | Bin 0 -> 168 bytes ferns/textures/ferns_sapling_tree_fern_giant.png | Bin 0 -> 224 bytes ferns/textures/ferns_tree_fern_leave_big.png | Bin 0 -> 560 bytes ferns/textures/ferns_tree_fern_leave_big_cross.png | Bin 0 -> 724 bytes ferns/textures/ferns_tree_fern_leave_big_end.png | Bin 0 -> 456 bytes .../not_in_use/archaeplantae_horsetails.png | Bin 0 -> 308 bytes ferns/textures/not_in_use/big picture 3.png | Bin 0 -> 1972 bytes ferns/textures/not_in_use/ferns_fern_big_left.png | Bin 0 -> 640 bytes ferns/textures/not_in_use/ferns_fern_big_right.png | Bin 0 -> 623 bytes ferns/textures/not_in_use/ferns_fern_mid_left.png | Bin 0 -> 393 bytes ferns/textures/not_in_use/ferns_fern_mid_right.png | Bin 0 -> 414 bytes ferns/textures/not_in_use/ferns_fern_tree_bl.png | Bin 0 -> 554 bytes ferns/textures/not_in_use/ferns_fern_tree_br.png | Bin 0 -> 544 bytes .../not_in_use/ferns_fern_trunk_big_crown.png | Bin 0 -> 681 bytes ferns/textures/old/archaeplantae_fern_old4.png | Bin 0 -> 368 bytes ferns/textures/old/comb.png | Bin 0 -> 112 bytes ferns/textures/old/ferns_5_old.png | Bin 0 -> 461 bytes ferns/textures/old/ferns_6_old.png | Bin 0 -> 700 bytes ferns/textures/old/ferns_7_old.png | Bin 0 -> 677 bytes ferns/textures/old/ferns_fern_big_old.png | Bin 0 -> 1147 bytes ferns/textures/old/ferns_fern_mid_old.png | Bin 0 -> 664 bytes ferns/textures/old/ferns_fern_tree_old.png | Bin 0 -> 1294 bytes ferns/textures/old/ferns_fern_trunk_big_old2.png | Bin 0 -> 669 bytes .../textures/old/ferns_fern_trunk_big_top_old.png | Bin 0 -> 814 bytes .../textures/old/ferns_fern_trunk_big_top_old2.png | Bin 0 -> 714 bytes ferns/textures/old/ferns_fern_trunk_top_old.png | Bin 0 -> 230 bytes ferns/textures/old/ferns_horsetail_01_old2.png | Bin 0 -> 177 bytes ferns/textures/old/ferns_horsetail_02_old2.png | Bin 0 -> 204 bytes ferns/textures/old/ferns_horsetail_03_old2.png | Bin 0 -> 251 bytes ferns/textures/old/ferns_horsetail_04_old2.png | Bin 0 -> 279 bytes .../old/ferns_tree_fern_leave_big_cross_old.png | Bin 0 -> 712 bytes .../old/ferns_tree_fern_leave_big_end_old.png | Bin 0 -> 457 bytes .../textures/old/ferns_tree_fern_leave_big_old.png | Bin 0 -> 522 bytes ferns/treefern.lua | 228 ++++++++++++++ 65 files changed, 1134 insertions(+) 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/settings.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 (limited to 'ferns') diff --git a/ferns/crafting.lua b/ferns/crafting.lua new file mode 100644 index 0000000..8d8b3ed --- /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..9d994c0 --- /dev/null +++ b/ferns/depends.txt @@ -0,0 +1,2 @@ +default +biome_lib \ No newline at end of file diff --git a/ferns/fern.lua b/ferns/fern.lua new file mode 100644 index 0000000..51cac8f --- /dev/null +++ b/ferns/fern.lua @@ -0,0 +1,196 @@ +----------------------------------------------------------------------------------------------- +-- Ferns - Fern 0.1.0 +----------------------------------------------------------------------------------------------- +-- by Mossmanikin +-- License (everything): WTFPL +-- Contains code from: biome_lib +-- Looked at code from: default, flowers, painting, trees +-- Dependencies: biome_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 +----------------------------------------------------------------------------------------------- + +assert(abstract_ferns.config.enable_lady_fern == true) + +-- Maintain backward compatibilty +minetest.register_alias("archaeplantae:fern", "ferns:fern_03") +minetest.register_alias("archaeplantae:fern_mid", "ferns:fern_02") +minetest.register_alias("archaeplantae:fern_small", "ferns:fern_01") +minetest.register_alias("ferns:fern_04", "ferns:fern_02") -- for placing + +local nodenames = {} + +local function create_nodes() + local images = { "ferns_fern.png", "ferns_fern_mid.png", "ferns_fern_big.png" } + local vscales = { 1, 2, 2.2 } + local descs = { "Lady-fern (Athyrium)", nil, nil } + + for i = 1, 3 do + local node_on_place = nil + if i == 1 then + node_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())) -- TODO FIXME? + end + end + nodenames[i] = "ferns:fern_"..string.format("%02d", i) + minetest.register_node(nodenames[i], { + description = descs[i] or ("Lady-fern (Athyrium) " .. string.format("%02d", i)), + inventory_image = "ferns_fern.png", + drawtype = "plantlike", + visual_scale = vscales[i], + paramtype = "light", + tiles = { images[i] }, + walkable = false, + buildable_to = true, + 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", + on_place = node_on_place + }) + end +end + +----------------------------------------------------------------------------------------------- +-- Init +----------------------------------------------------------------------------------------------- + +create_nodes() + +----------------------------------------------------------------------------------------------- +-- Spawning +----------------------------------------------------------------------------------------------- + +if abstract_ferns.config.lady_ferns_near_tree == true then + biome_lib: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 + random_facedir = { 0, 179 }, + }, + nodenames + ) +end + +if abstract_ferns.config.lady_ferns_near_rock == true then + biome_lib: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 + random_facedir = { 0, 179 }, + }, + nodenames + ) +end + +if abstract_ferns.config.lady_ferns_near_ores == true then -- this one causes a huge fps drop + biome_lib: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 + random_facedir = { 0, 179 }, + }, + nodenames + ) +end + +if abstract_ferns.config.lady_ferns_in_groups == true then -- this one is meant as a replacement of Ferns_near_Ores + biome_lib: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 + random_facedir = { 0, 179 }, + }, + nodenames + ) +end diff --git a/ferns/gianttreefern.lua b/ferns/gianttreefern.lua new file mode 100644 index 0000000..bc6516b --- /dev/null +++ b/ferns/gianttreefern.lua @@ -0,0 +1,336 @@ +----------------------------------------------------------------------------------------------- +-- Ferns - Giant Tree Fern 0.1.1 +----------------------------------------------------------------------------------------------- +-- by Mossmanikin +-- License (everything): WTFPL +-- Contains code from: biome_lib +-- Looked at code from: 4seasons, default +-- Supports: vines +----------------------------------------------------------------------------------------------- + +assert(abstract_ferns.config.enable_giant_treefern == true) + +-- lot of code, lot to load + +abstract_ferns.grow_giant_tree_fern = function(pos) + local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z} + if minetest.get_node(pos_01).name ~= "air" + and minetest.get_node(pos_01).name ~= "ferns:sapling_giant_tree_fern" + and minetest.get_node(pos_01).name ~= "default:junglegrass" then + return + end + + local size = math.random(12,16) -- min of range must be >= 4 + + local leafchecks = { + { + direction = 3, + positions = { + {x = pos.x + 1, y = pos.y + size - 1, z = pos.z }, + {x = pos.x + 2, y = pos.y + size , z = pos.z }, + {x = pos.x + 3, y = pos.y + size - 1, z = pos.z }, + {x = pos.x + 4, y = pos.y + size - 2, z = pos.z } + } + }, + { + direction = 1, + positions = { + {x = pos.x - 1, y = pos.y + size - 1, z = pos.z }, + {x = pos.x - 2, y = pos.y + size, z = pos.z }, + {x = pos.x - 3, y = pos.y + size - 1, z = pos.z }, + {x = pos.x - 4, y = pos.y + size - 2, z = pos.z } + } + }, + { + direction = 2, + positions = { + {x = pos.x , y = pos.y + size - 1, z = pos.z + 1}, + {x = pos.x , y = pos.y + size , z = pos.z + 2}, + {x = pos.x , y = pos.y + size - 1, z = pos.z + 3}, + {x = pos.x , y = pos.y + size - 2, z = pos.z + 4} + } + }, + { + direction = 0, + positions = { + {x = pos.x , y = pos.y + size - 1, z = pos.z - 1}, + {x = pos.x , y = pos.y + size , z = pos.z - 2}, + {x = pos.x , y = pos.y + size - 1, z = pos.z - 3}, + {x = pos.x , y = pos.y + size - 2, z = pos.z - 4} + } + } + } + + for i = 1, size-3 do + minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, {name="ferns:fern_trunk_big"}) + end + minetest.set_node({x = pos.x, y = pos.y + size-2, z = pos.z}, {name="ferns:fern_trunk_big_top"}) + minetest.set_node({x = pos.x, y = pos.y + size-1, z = pos.z}, {name="ferns:tree_fern_leaves_giant"}) + + -- 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 + + -- assert(#leafchecks == 4) + for i = 1, 4 do + local positions = leafchecks[i].positions + local rot = leafchecks[i].direction + local endpos = 4 -- If the loop below adds all intermediate leaves then the "terminating" leaf will be at positions[4] + -- assert(#positions == 4) + -- add leaves so long as the destination nodes are air + for j = 1, 3 do + if minetest.get_node(positions[j]).name == "air" then + minetest.set_node(positions[j], {name="ferns:tree_fern_leave_big"}) + else + endpos = j + break + end + end + -- add the terminating leaf if required and possible + if endpos == 4 and minetest.get_node(positions[endpos]).name == "air" then + minetest.set_node(positions[endpos], {name="ferns:tree_fern_leave_big_end", param2=rot}) + 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), + wield_scale = {x=0.175, y=0.175, z=0.175}, + paramtype = "light", + 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 = 2, + items = { + { + -- occasionally, drop a second sapling instead of leaves + -- (extra saplings can also be obtained by replanting and + -- reharvesting leaves) + items = {"ferns:sapling_giant_tree_fern"}, + rarity = 10, + }, + { + items = {"ferns:sapling_giant_tree_fern"}, + }, + { + items = {"ferns:tree_fern_leaves_giant"}, + } + } + }, + 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 Leaves", + 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 abstract_ferns.config.enable_giant_treeferns_in_jungle == true then + biome_lib: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, + }, + abstract_ferns.grow_giant_tree_fern + ) +end + +-- for oases & tropical beaches +if abstract_ferns.config.enable_giant_treeferns_in_oases == true then + biome_lib: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, + }, + abstract_ferns.grow_giant_tree_fern + ) +end diff --git a/ferns/horsetail.lua b/ferns/horsetail.lua new file mode 100644 index 0000000..b87f1f9 --- /dev/null +++ b/ferns/horsetail.lua @@ -0,0 +1,156 @@ +----------------------------------------------------------------------------------------------- +-- Archae Plantae - Horsetail 0.0.5 +----------------------------------------------------------------------------------------------- +-- by Mossmanikin +-- License (everything): WTFPL +-- Contains code from: biome_lib +-- Looked at code from: default, flowers, trees +-- Dependencies: biome_lib +-- Supports: dryplants, stoneage, sumpf +----------------------------------------------------------------------------------------------- + +assert(abstract_ferns.config.enable_horsetails == true) + +----------------------------------------------------------------------------------------------- +-- HORSETAIL (EQUISETUM) +----------------------------------------------------------------------------------------------- + +local node_names = {} + +local function create_nodes() + local selection_boxes = { + { -0.15, -1/2, -0.15, 0.15, -1/16, 0.15 }, + { -0.15, -1/2, -0.15, 0.15, 1/16, 0.15 }, + { -0.15, -1/2, -0.15, 0.15, 4/16, 0.15 }, + { -0.15, -1/2, -0.15, 0.15, 7/16, 0.15 }, + } + + for i = 1, 4 do + local node_name = "ferns:horsetail_" .. string.format("%02d", i) + local node_img = "ferns_horsetail_" .. string.format("%02d", i) .. ".png" + local node_desc + local node_on_use = nil + local node_drop = "ferns:horsetail_04" + + if i == 1 then + node_desc = "Young Horsetail (Equisetum)" + node_on_use = minetest.item_eat(1) -- young ones edible https://en.wikipedia.org/wiki/Equisetum + node_drop = node_name + elseif i == 4 then + node_desc = "Horsetail (Equisetum)" + else + node_desc = "Horsetail (Equisetum) ".. string.format("%02d", i) + end + + node_names[i] = node_name + + minetest.register_node(node_name, { + description = node_desc, + drawtype = "plantlike", + paramtype = "light", + tiles = { node_img }, + inventory_image = node_img, + walkable = false, + buildable_to = true, + groups = {snappy=3,flammable=2,attached_node=1,horsetail=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = selection_boxes[i], + }, + on_use = node_on_use, + drop = node_drop, + }) + end +end + +----------------------------------------------------------------------------------------------- +-- Init +----------------------------------------------------------------------------------------------- + +create_nodes() + +----------------------------------------------------------------------------------------------- +-- Spawning +----------------------------------------------------------------------------------------------- +if abstract_ferns.config.enable_horsetails_spawning == true then + biome_lib:spawn_on_surfaces({ + spawn_delay = 1200, + spawn_plants = node_names, + 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, + --random_facedir = { 0, 179 }, + }) +end + +----------------------------------------------------------------------------------------------- +-- Generating +----------------------------------------------------------------------------------------------- + +if abstract_ferns.config.enable_horsetails_on_grass == true then + biome_lib: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 + --random_facedir = { 0, 179 }, + }, + node_names + ) +end + +if abstract_ferns.config.enable_horsetails_on_stones == true then + biome_lib: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 + }, + 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 + --random_facedir = { 0, 179 }, + }, + node_names + ) +end diff --git a/ferns/init.lua b/ferns/init.lua new file mode 100644 index 0000000..b629d5d --- /dev/null +++ b/ferns/init.lua @@ -0,0 +1,69 @@ +----------------------------------------------------------------------------------------------- +local title = "Ferns" -- former "Archae Plantae" +local version = "0.2.0" +local mname = "ferns" -- former "archaeplantae" +----------------------------------------------------------------------------------------------- +-- (by Mossmanikin) +-- License (everything): WTFPL +----------------------------------------------------------------------------------------------- + +abstract_ferns = {} + +dofile(minetest.get_modpath("ferns").."/settings.lua") + +if abstract_ferns.config.enable_lady_fern == true then + dofile(minetest.get_modpath("ferns").."/fern.lua") +end + +if abstract_ferns.config.enable_horsetails == true then + dofile(minetest.get_modpath("ferns").."/horsetail.lua") +end + +if abstract_ferns.config.enable_treefern == true then + dofile(minetest.get_modpath("ferns").."/treefern.lua") +end + +if abstract_ferns.config.enable_giant_treefern == true then + dofile(minetest.get_modpath("ferns").."/gianttreefern.lua") +end + +dofile(minetest.get_modpath("ferns").."/crafting.lua") + + +----------------------------------------------------------------------------- +-- TESTS +----------------------------------------------------------------------------- +local run_tests = true -- set to false to skip + +if run_tests then + + -- These are, essentially, unit tests to make sure that all required item + -- strings are registered. The init sequence is not time critical so leaving + -- them here won't affect performance. + + -- Check node names + if abstract_ferns.config.enable_horsetails then + print("[Mod] " ..title.. " Checking horsetail item strings") + assert(minetest.registered_items["ferns:horsetail_01"] ~= nil) + assert(minetest.registered_items["ferns:horsetail_02"] ~= nil) + assert(minetest.registered_items["ferns:horsetail_03"] ~= nil) + assert(minetest.registered_items["ferns:horsetail_04"] ~= nil) + end + if abstract_ferns.config.enable_lady_fern then + print("[Mod] ".. title .." Checking lady fern item strings") + assert(minetest.registered_items["ferns:fern_01"] ~= nil) + assert(minetest.registered_items["ferns:fern_02"] ~= nil) + assert(minetest.registered_items["ferns:fern_03"] ~= nil) + end + if abstract_ferns.config.enable_treefern then + print("[Mod] ".. title .." Checking tree fern item strings") + assert(minetest.registered_items["ferns:tree_fern_leaves"] ~= nil) + assert(minetest.registered_items["ferns:tree_fern_leaves_02"] ~= nil) + assert(minetest.registered_items["ferns:fern_trunk"] ~= nil) + assert(minetest.registered_items["ferns:sapling_tree_fern"] ~= nil) + end +end + +----------------------------------------------------------------------------------------------- +print("[Mod] "..title.." ["..version.."] ["..mname.."] Loaded...") +----------------------------------------------------------------------------------------------- diff --git a/ferns/settings.lua b/ferns/settings.lua new file mode 100644 index 0000000..8254fcf --- /dev/null +++ b/ferns/settings.lua @@ -0,0 +1,43 @@ +-- 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 + +abstract_ferns.config = {} + +-- Which plants should generate/spawn? +abstract_ferns.config.enable_lady_fern = true +abstract_ferns.config.enable_horsetails = true +abstract_ferns.config.enable_treefern = true +abstract_ferns.config.enable_giant_treefern = true + +-- Where should they generate/spawn? (if they generate/spawn) +-- +-- Lady-Fern +abstract_ferns.config.lady_ferns_near_tree = true +abstract_ferns.config.lady_ferns_near_rock = true +abstract_ferns.config.lady_ferns_near_ores = true -- if there's a bunch of ferns there's ores nearby, this one causes a huge fps drop +abstract_ferns.config.lady_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 +abstract_ferns.config.enable_horsetails_spawning = false -- horsetails will grow in already explored areas, over time, near water or gravel +abstract_ferns.config.enable_horsetails_on_grass = true -- on dirt with grass and swamp (sumpf mod) +abstract_ferns.config.enable_horsetails_on_stones = true -- on gravel, mossy cobble and silex (stoneage mod) +-- +-- Tree_Fern +abstract_ferns.config.enable_treeferns_in_jungle = true +abstract_ferns.config.enable_treeferns_in_oases = true -- for oases and tropical beaches +-- +-- Giant_Tree_Fern +abstract_ferns.config.enable_giant_treeferns_in_jungle = true +abstract_ferns.config.enable_giant_treeferns_in_oases = true -- for oases and tropical beaches diff --git a/ferns/textures/ferns_5.png b/ferns/textures/ferns_5.png new file mode 100644 index 0000000..7e40665 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..107bbf6 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..b1ac1f5 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..db5510b 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..7884e5a 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..42deb95 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..3213308 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..8daeafd 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..2e3adb7 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..5417669 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..16b6e3a 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..768430f 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..24ede0a 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..3e3c829 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..8b259cc 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..2d6785d 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..f62a88d 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..0925c78 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..9f4943c 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..60d3ca6 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..3c7edf7 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..5d28a46 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..a8254ed 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..b459d48 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..e556016 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..09cc001 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..48f7e2c 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..d0064fe 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..6ba89c1 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..de344e6 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..0fdf515 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..d30def0 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..d146df3 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..e10460a 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..e2fdb67 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..eb547e8 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..7a12671 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..a3d403c 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..ea1e19f 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..5676278 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..36d6040 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..8aabe61 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..d17ed11 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..08513c2 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..4599672 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..d83151f 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..244ddfe 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..872fdab 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..7d55718 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..d0b5563 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..42cf76e 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..600ebe7 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..00ec9d8 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..ce1a87d 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..b568383 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..4ba502b --- /dev/null +++ b/ferns/treefern.lua @@ -0,0 +1,228 @@ +----------------------------------------------------------------------------------------------- +-- Ferns - Tree Fern 0.1.1 +----------------------------------------------------------------------------------------------- +-- by Mossmanikin +-- License (everything): WTFPL +-- Contains code from: biome_lib +-- Looked at code from: default , trees +----------------------------------------------------------------------------------------------- + +assert(abstract_ferns.config.enable_treefern == true) + +abstract_ferns.grow_tree_fern = function(pos) + + local pos_01 = {x = pos.x, y = pos.y + 1, z = pos.z} + if minetest.get_node(pos_01).name ~= "air" + and minetest.get_node(pos_01).name ~= "ferns:sapling_tree_fern" + and minetest.get_node(pos_01).name ~= "default:junglegrass" then + return + end + + local size = math.random(1, 4) + math.random(1, 4) + if (size > 5) then + size = 10 - size + end + size = size + 1 + local crown = ({ "ferns:tree_fern_leaves", "ferns:tree_fern_leaves_02" })[math.random(1, 2)] + + local i = 1 + while (i < size-1) do + if minetest.get_node({x = pos.x, y = pos.y + i + 1, z = pos.z}).name ~= "air" then + break + end + minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, { name = "ferns:fern_trunk" }) + i = i + 1 + end + + minetest.set_node({x = pos.x, y = pos.y + i, z = pos.z}, { name = crown }) +end + +----------------------------------------------------------------------------------------------- +-- TREE FERN LEAVES +----------------------------------------------------------------------------------------------- + +-- TODO: Both of these nodes look the same? + +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 = 2, + items = { + { + -- occasionally, drop a second sapling instead of leaves + -- (extra saplings can also be obtained by replanting and + -- reharvesting leaves) + items = {"ferns:sapling_tree_fern"}, + rarity = 10, + }, + { + items = {"ferns:sapling_tree_fern"}, + }, + { + 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 = 2, + items = { + { + -- occasionally, drop a second sapling instead of leaves + -- (extra saplings can also be obtained by replanting and + -- reharvesting leaves) + items = {"ferns:sapling_tree_fern"}, + rarity = 10, + }, + { + items = {"ferns:sapling_tree_fern"}, + }, + { + 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 abstract_ferns.config.enable_treeferns_in_jungle == true then + biome_lib:register_generate_plant({ + surface = { + "default:dirt_with_grass", + "default:sand", + "default:desert_sand", + }, + 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, + }, + abstract_ferns.grow_tree_fern + ) +end + +-- for oases & tropical beaches +if abstract_ferns.config.enable_treeferns_in_oases == true then + biome_lib: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, + }, + abstract_ferns.grow_tree_fern +) +end -- cgit v1.2.3