From e0837f30d1a8f7aede30182d2b14dc7b350b2a07 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Wed, 9 Jan 2013 21:35:50 -0500 Subject: [PATCH] first commit --- README.md | 0 crafts.lua | 32 ++ crafts.lua~ | 34 +++ depends.txt | 2 + depends.txt~ | 1 + init.lua | 403 ++++++++++++++++++++++++++ init.lua~ | 403 ++++++++++++++++++++++++++ textures/Thumbs.db | Bin 0 -> 6144 bytes textures/conifers_leaves.png | Bin 0 -> 333 bytes textures/conifers_leaves_special.png | Bin 0 -> 367 bytes textures/conifers_sapling.png | Bin 0 -> 454 bytes textures/conifers_trunk.png | Bin 0 -> 699 bytes textures/conifers_trunk_reversed.png | Bin 0 -> 721 bytes textures/conifers_trunktop.png | Bin 0 -> 768 bytes textures/jungletree_bark.png | Bin 0 -> 705 bytes textures/jungletree_leaves_green.png | Bin 0 -> 456 bytes textures/jungletree_leaves_red.png | Bin 0 -> 469 bytes textures/jungletree_leaves_yellow.png | Bin 0 -> 467 bytes textures/jungletree_sapling.png | Bin 0 -> 215 bytes 19 files changed, 875 insertions(+) create mode 100644 README.md create mode 100644 crafts.lua create mode 100644 crafts.lua~ create mode 100644 depends.txt create mode 100644 depends.txt~ create mode 100644 init.lua create mode 100644 init.lua~ create mode 100644 textures/Thumbs.db create mode 100644 textures/conifers_leaves.png create mode 100644 textures/conifers_leaves_special.png create mode 100644 textures/conifers_sapling.png create mode 100644 textures/conifers_trunk.png create mode 100644 textures/conifers_trunk_reversed.png create mode 100644 textures/conifers_trunktop.png create mode 100644 textures/jungletree_bark.png create mode 100644 textures/jungletree_leaves_green.png create mode 100644 textures/jungletree_leaves_red.png create mode 100644 textures/jungletree_leaves_yellow.png create mode 100644 textures/jungletree_sapling.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/crafts.lua b/crafts.lua new file mode 100644 index 0000000..46fc41d --- /dev/null +++ b/crafts.lua @@ -0,0 +1,32 @@ +-- +-- Conifers crafting definitions +-- +minetest.register_craft({ + output = 'node "conifers:trunk_reversed" 2', + recipe = { + {'node "conifers:trunk"', 'node "conifers:trunk"'}, + } +}) + +minetest.register_craft({ + output = 'node "conifers:trunk" 2', + recipe = { + {'node "conifers:trunk_reversed"'}, + {'node "conifers:trunk_reversed"'} + } +}) + +minetest.register_craft({ + output = 'default:wood 4', + recipe = { + {'conifers:trunk'} + } +}) + +minetest.register_craft({ + output = 'default:wood 4', + recipe = { + {'conifers:trunk_reversed'} + } +}) + diff --git a/crafts.lua~ b/crafts.lua~ new file mode 100644 index 0000000..4012996 --- /dev/null +++ b/crafts.lua~ @@ -0,0 +1,34 @@ + + +-- +-- Conifers crafting definitions +-- +minetest.register_craft({ + output = 'node "conifers:trunk_reversed" 2', + recipe = { + {'node "conifers:trunk"', 'node "conifers:trunk"'}, + } +}) + +minetest.register_craft({ + output = 'node "conifers:trunk" 2', + recipe = { + {'node "conifers:trunk_reversed"'}, + {'node "conifers:trunk_reversed"'} + } +}) + +minetest.register_craft({ + output = 'default:wood 4', + recipe = { + {'conifers:trunk'} + } +}) + +minetest.register_craft({ + output = 'default:wood 4', + recipe = { + {'conifers:trunk_reversed'} + } +}) + diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..d1473e1 --- /dev/null +++ b/depends.txt @@ -0,0 +1,2 @@ +default +plants_lib diff --git a/depends.txt~ b/depends.txt~ new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/depends.txt~ @@ -0,0 +1 @@ +default diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..1be7c1c --- /dev/null +++ b/init.lua @@ -0,0 +1,403 @@ +-- More trees! +-- +-- This mod adds more types of trees to the game +-- at present, they consist of jungle trees and conifers +-- +-- Much of the code here came from cisoun's conifers mod and bas080's +-- jungle trees mod. +-- +-- Brought together into one mod and made L-systems compatible by Vanessa +-- Ezekowitz. +-- +-- Jungle tree axioms/rules tweaked by RealBadAngel +-- + +local DEBUG = false + +-- Jungletree init stuff: + +local JT_SPAWN_INTERVAL = 100 +local JT_SPAWN_CHANCE = 10 + +local JT_GROW_INTERVAL = 1000 +local JT_GROW_CHANCE = 100 + +local JT_RADIUS = 8 +local JT_WATER_RADIUS = 25 +local JT_WATER_COUNT = 10 + +local jungletree_seed_diff = plantlife_seed_diff + +-- Conifers init stuff: + +local CONIFERS_SPAWN_SAPLING_CHANCE = 500 +local CONIFERS_SPAWN_SAPLING_INTERVAL = 3600 + +local CONIFERS_GROW_SAPLING_CHANCE = 100 +local CONIFERS_GROW_SAPLING_INTERVAL = 3600 + +--local CONIFERS_TRUNK_MINHEIGHT = 7 +--local CONIFERS_TRUNK_MAXHEIGHT = 25 + +--local CONIFERS_LEAVES_MINHEIGHT = 2 +--local CONIFERS_LEAVES_MAXHEIGHT = 6 +--local CONIFERS_LEAVES_MAXRADIUS = 5 +--local CONIFERS_LEAVES_NARROWRADIUS = 3 -- For narrow typed conifers. + +local CONIFERS_DISTANCE = 9 -- how far apart should conifer saplings spawn? +local CONIFERS_ALTITUDE = 25 + +local CONIFERS_REMOVE_TREES = false -- Remove trees above CONIFERS_ALTITUDE? +local CONIFERS_RTREES_INTERVAL = 360 +local CONIFERS_RTREES_CHANCE = 10 + +local conifers_seed_diff = plantlife_seed_diff+30 + +-- Spawning functions + +spawn_on_surfaces( + JT_SPAWN_INTERVAL, -- ABM interval parameter + "jungletree:sapling", -- We want to spawn a sapling + JT_RADIUS, -- Keep this much room around saplings + JT_SPAWN_CHANCE, -- ABM chance parameter + "default:dirt_with_grass", -- must grow on grass only + {"jungletree:sapling","default:jungletree"}, -- avoid spawning near these + jungletree_seed_diff, -- duh? :-) + 5, -- minimum light needed + nil, -- maximim (default, 14) + nil, -- ABM neighbors parameter... + nil, -- don't care what else is around + nil, -- we don't care about facedir + nil, -- or water depth + -5, -- must be 5m below sea level or higher + 15, -- but no higher than 15m + {"default:water_source"}, -- Jungle trees must be near water + JT_WATER_RADIUS, -- within this radius of it (default 25) + JT_WATER_COUNT -- with this many water nodes in the area +) + +spawn_on_surfaces( + CONIFERS_SPAWN_SAPLING_INTERVAL, + "conifers:sapling", + CONIFERS_DISTANCE, + CONIFERS_SPAWN_SAPLING_CHANCE, + "default:dirt_with_grass", + {"conifers:sapling", "conifers:trunk"}, + conifers_seed_diff, + nil, + nil, + {"default:dirt_with_grass"}, + 3, + nil, + nil, + CONIFERS_ALTITUDE, + nil +) + +-- growing functions + +grow_plants( + JT_GROW_INTERVAL, + JT_GROW_CHANCE, + "jungletree:sapling", + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + "grow_jungletree", + jungletree_seed_diff +) + +grow_plants( + CONIFERS_GROW_SAPLING_INTERVAL, + CONIFERS_GROW_SAPLING_CHANCE, + "conifers:sapling", + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + "grow_conifer", + conifers_seed_diff +) + +-- Code that actually spawns the trees! + +function grow_jungletree(pos, noise) + minetest.env:remove_node(pos) + if math.random(1, 2) > 1.5 then + minetest.env:spawn_tree(pos,jungle_tree1) + else + minetest.env:spawn_tree(pos,jungle_tree2) + end +end + +function grow_conifer(pos, noise) + minetest.env:remove_node(pos) + if math.random(1, 2) > 1.5 then + minetest.env:spawn_tree(pos,conifer_tree1) + else + minetest.env:spawn_tree(pos,conifer_tree2) + end +end + +-- Other stuff + +-- Should we remove all the trees above the conifers altitude? +if CONIFERS_REMOVE_TREES == true then + minetest.register_abm({ + nodenames = { + "default:tree", + "default:leaves" + }, + interval = CONIFERS_RTREES_INTERVAL, + chance = CONIFERS_RTREES_CHANCE, + + action = function(pos, node, _, _) + if minetest.env:get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" + and pos.y >= CONIFERS_ALTITUDE + then + minetest.env:add_node(pos , {name = "air"}) + end + end + }) +end + +-- L-System Tree definitions + +jungle_tree1={ + axiom="FFFFFA", + rules_a="FFFFF[&&-FFFBF[&&&FFf]^^^FFf][&&+FFFBFF[&&&FFf]^^^FFf][&&---FFFBFF[&&&FFf]^^^FFf][&&+++FFFBFF[&&&FFf]^^^FFf]FF/A", + rules_b="[-FFf&F][+FFf&F]B", + trunk="default:jungletree", + leaves="jungletree:leaves_green", + leaves2="jungletree:leaves_yellow", + leaves2_chance=50, + angle=45, + iterations=4, + random_level=2, + trunk_type="crossed", + thin_branches=true; + fruit_chance=15, + fruit="vines:vine" +} + +jungle_tree2={ + axiom="FFFFFA", + rules_a="FFFFF[&&-FFFBF[&&&FFf]^^^FFf][&&+FFFBFF[&&&FFf]^^^FFf][&&---FFFBFF[&&&FFf]^^^FFf][&&+++FFFBFF[&&&FFf]^^^FFf]FF/A", + rules_b="[-FFf&F][+FFf&F]B", + trunk="default:jungletree", + leaves="jungletree:leaves_green", + leaves2="jungletree:leaves_red", + leaves2_chance=50, + angle=45, + iterations=4, + random_level=2, + trunk_type="crossed", + thin_branches=true; + fruit_chance=15, + fruit="vines:vine" +} + + +conifer_tree1={ + axiom="FFFAF[&&-F][&&+F][&&---F][&&+++F]FF", + rules_a="FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A", + rules_b="[-FB][+FB]", + trunk="conifers:trunk", + leaves="conifers:leaves", + angle=45, + iterations=7, + random_level=4, + thin_trunks=true +} + +conifer_tree2={ + axiom="FFFAF[&&-F][&&+F][&&---F][&&+++F]FF", + rules_a="FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A", + rules_b="[-FB][+FB]", + trunk="conifers:trunk", + leaves="conifers:leaves_special", + angle=45, + iterations=7, + random_level=4, + thin_trunks=true +} + +-- Nodes for jungle trees + +minetest.register_node(":jungletree:sapling", { + description = "Jungle Tree Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"jungletree_sapling.png"}, + inventory_image = "jungletree_sapling.png", + wield_image = "default_sapling.png", + paramtype = "light", + walkable = false, + groups = {snappy=2,dig_immediate=3,flammable=2}, +}) + +local leaves = {"green","yellow","red"} +for color = 1, 3 do + local leave_name = ":jungletree:leaves_"..leaves[color] + minetest.register_node(leave_name, { + description = "Jungle Tree Leaves", + drawtype = "allfaces_optional", + tiles = {"jungletree_leaves_"..leaves[color]..".png"}, + paramtype = "light", + groups = {snappy=3, leafdecay=3, flammable=2}, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'jungletree:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {leave_name}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + }) +end + +-- Nodes for conifers + +minetest.register_node(":conifers:trunk", { + description = "Conifer trunk", + tile_images = { + "conifers_trunktop.png", + "conifers_trunktop.png", + "conifers_trunk.png", + "conifers_trunk.png", + "conifers_trunk.png", + "conifers_trunk.png" + }, + paramtype = "facedir_simple", + is_ground_content = true, + groups = { + tree = 1, + snappy = 2, + choppy = 2, + oddly_breakable_by_hand = 1, + flammable = 2 + }, + sounds = default.node_sound_wood_defaults() +}) + +minetest.register_node(":conifers:trunk_reversed", { + description = "Conifer reversed trunk", + tile_images = { + "conifers_trunk_reversed.png", + "conifers_trunk_reversed.png", + "conifers_trunktop.png", + "conifers_trunktop.png", + "conifers_trunk_reversed.png", + "conifers_trunk_reversed.png" + }, + --inventory_image = minetest.inventorycube( + --"conifers_trunk.png", + --"conifers_trunktop.png", + --"conifers_trunk.png" + --), + paramtype = "facedir_simple", + material = minetest.digprop_woodlike(1.0), + legacy_facedir_simple = true, + is_ground_content = true, + groups = { + tree = 1, + snappy = 2, + choppy = 2, + oddly_breakable_by_hand = 1, + flammable = 2 + }, + sounds = default.node_sound_wood_defaults() +}) + +minetest.register_node(":conifers:leaves", { + description = "Conifer leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tile_images = { "conifers_leaves.png" }, + paramtype = "light", + groups = { + snappy = 3, + leafdecay = 3, + flammable = 2 + }, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'conifers:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {'conifers:leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults() +}) + +minetest.register_node(":conifers:leaves_special", { + description = "Bright conifer leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tile_images = { "conifers_leaves_special.png" }, + paramtype = "light", + groups = { + snappy = 3, + leafdecay = 3, + flammable = 2 + }, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'conifers:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {'conifers:leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults() +}) + +minetest.register_node(":conifers:sapling", { + description = "Conifer sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tile_images = {"conifers_sapling.png"}, + inventory_image = "conifers_sapling.png", + wield_image = "conifers_sapling.png", + paramtype = "light", + walkable = false, + groups = { + snappy = 2, + dig_immediate = 3, + flammable = 2 + }, + sounds = default.node_sound_defaults(), +}) + diff --git a/init.lua~ b/init.lua~ new file mode 100644 index 0000000..ac0768b --- /dev/null +++ b/init.lua~ @@ -0,0 +1,403 @@ +-- More trees! +-- +-- This mod adds more types of trees to the game +-- at present, they consist of jungle trees and conifers +-- +-- Much of the code here came from cisoun's conifers mod and bas080's +-- jungle trees mod. +-- +-- Brought together into one mod and made L-systems compatible by Vanessa +-- Ezekowitz. +-- +-- Jungle tree axioms/rules tweaked by RealBadAngel +-- + +local DEBUG = true + +-- Jungletree init stuff: + +local JT_SPAWN_INTERVAL = 1 -- 100 +local JT_SPAWN_CHANCE = 2 -- 10 + +local JT_GROW_INTERVAL = 1 -- 1000 +local JT_GROW_CHANCE = 2 -- 100 + +local JT_RADIUS = 8 +local JT_WATER_RADIUS = 25 +local JT_WATER_COUNT = 10 + +local jungletree_seed_diff = plantlife_seed_diff + +-- Conifers init stuff: + +local CONIFERS_SPAWN_SAPLING_CHANCE = 1 -- 500 +local CONIFERS_SPAWN_SAPLING_INTERVAL = 2 -- 3600 + +local CONIFERS_GROW_SAPLING_CHANCE = 1 -- 100 +local CONIFERS_GROW_SAPLING_INTERVAL = 2 -- 3600 + +--local CONIFERS_TRUNK_MINHEIGHT = 7 +--local CONIFERS_TRUNK_MAXHEIGHT = 25 + +--local CONIFERS_LEAVES_MINHEIGHT = 2 +--local CONIFERS_LEAVES_MAXHEIGHT = 6 +--local CONIFERS_LEAVES_MAXRADIUS = 5 +--local CONIFERS_LEAVES_NARROWRADIUS = 3 -- For narrow typed conifers. + +local CONIFERS_DISTANCE = 9 -- how far apart should conifer saplings spawn? +local CONIFERS_ALTITUDE = 25 + +local CONIFERS_REMOVE_TREES = false -- Remove trees above CONIFERS_ALTITUDE? +local CONIFERS_RTREES_INTERVAL = 360 +local CONIFERS_RTREES_CHANCE = 10 + +local conifers_seed_diff = plantlife_seed_diff+30 + +-- Spawning functions + +spawn_on_surfaces( + JT_SPAWN_INTERVAL, -- ABM interval parameter + "jungletree:sapling", -- We want to spawn a sapling + JT_RADIUS, -- Keep this much room around saplings + JT_SPAWN_CHANCE, -- ABM chance parameter + "default:dirt_with_grass", -- must grow on grass only + {"jungletree:sapling","default:jungletree"}, -- avoid spawning near these + jungletree_seed_diff, -- duh? :-) + 5, -- minimum light needed + nil, -- maximim (default, 14) + nil, -- ABM neighbors parameter... + nil, -- don't care what else is around + nil, -- we don't care about facedir + nil, -- or water depth + -5, -- must be 5m below sea level or higher + 15, -- but no higher than 15m + {"default:water_source"}, -- Jungle trees must be near water + JT_WATER_RADIUS, -- within this radius of it (default 25) + JT_WATER_COUNT -- with this many water nodes in the area +) + +spawn_on_surfaces( + CONIFERS_SPAWN_SAPLING_INTERVAL, + "conifers:sapling", + CONIFERS_DISTANCE, + CONIFERS_SPAWN_SAPLING_CHANCE, + "default:dirt_with_grass", + {"conifers:sapling", "conifers:trunk"}, + conifers_seed_diff, + nil, + nil, + {"default:dirt_with_grass"}, + 3, + nil, + nil, + CONIFERS_ALTITUDE, + nil +) + +-- growing functions + +grow_plants( + JT_GROW_INTERVAL, + JT_GROW_CHANCE, + "jungletree:sapling", + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + "grow_jungletree", + jungletree_seed_diff +) + +grow_plants( + CONIFERS_GROW_SAPLING_INTERVAL, + CONIFERS_GROW_SAPLING_CHANCE, + "conifers:sapling", + nil, + nil, + nil, + nil, + nil, + nil, + nil, + nil, + "grow_conifer", + conifers_seed_diff +) + +-- Code that actually spawns the trees! + +function grow_jungletree(pos, noise) + minetest.env:remove_node(pos) + if math.random(1, 2) > 1.5 then + minetest.env:spawn_tree(pos,jungle_tree1) + else + minetest.env:spawn_tree(pos,jungle_tree2) + end +end + +function grow_conifer(pos, noise) + minetest.env:remove_node(pos) + if math.random(1, 2) > 1.5 then + minetest.env:spawn_tree(pos,conifer_tree1) + else + minetest.env:spawn_tree(pos,conifer_tree2) + end +end + +-- Other stuff + +-- Should we remove all the trees above the conifers altitude? +if CONIFERS_REMOVE_TREES == true then + minetest.register_abm({ + nodenames = { + "default:tree", + "default:leaves" + }, + interval = CONIFERS_RTREES_INTERVAL, + chance = CONIFERS_RTREES_CHANCE, + + action = function(pos, node, _, _) + if minetest.env:get_node({x = pos.x, y = pos.y + 1, z = pos.z}).name == "air" + and pos.y >= CONIFERS_ALTITUDE + then + minetest.env:add_node(pos , {name = "air"}) + end + end + }) +end + +-- L-System Tree definitions + +jungle_tree1={ + axiom="FFFFFA", + rules_a="FFFFF[&&-FFFBF[&&&FFf]^^^FFf][&&+FFFBFF[&&&FFf]^^^FFf][&&---FFFBFF[&&&FFf]^^^FFf][&&+++FFFBFF[&&&FFf]^^^FFf]FF/A", + rules_b="[-FFf&F][+FFf&F]B", + trunk="default:jungletree", + leaves="jungletree:leaves_green", + leaves2="jungletree:leaves_yellow", + leaves2_chance=50, + angle=45, + iterations=4, + random_level=2, + trunk_type="crossed", + thin_branches=true; + fruit_chance=15, + fruit="vines:vine" +} + +jungle_tree2={ + axiom="FFFFFA", + rules_a="FFFFF[&&-FFFBF[&&&FFf]^^^FFf][&&+FFFBFF[&&&FFf]^^^FFf][&&---FFFBFF[&&&FFf]^^^FFf][&&+++FFFBFF[&&&FFf]^^^FFf]FF/A", + rules_b="[-FFf&F][+FFf&F]B", + trunk="default:jungletree", + leaves="jungletree:leaves_green", + leaves2="jungletree:leaves_red", + leaves2_chance=50, + angle=45, + iterations=4, + random_level=2, + trunk_type="crossed", + thin_branches=true; + fruit_chance=15, + fruit="vines:vine" +} + + +conifer_tree1={ + axiom="FFFAF[&&-F][&&+F][&&---F][&&+++F]FF", + rules_a="FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A", + rules_b="[-FB][+FB]", + trunk="conifers:trunk", + leaves="conifers:leaves", + angle=45, + iterations=7, + random_level=4, + thin_trunks=true +} + +conifer_tree2={ + axiom="FFFAF[&&-F][&&+F][&&---F][&&+++F]FF", + rules_a="FF[FF][&&-FBF][&&+FBF][&&---FBF][&&+++FBF]F/A", + rules_b="[-FB][+FB]", + trunk="conifers:trunk", + leaves="conifers:leaves_special", + angle=45, + iterations=7, + random_level=4, + thin_trunks=true +} + +-- Nodes for jungle trees + +minetest.register_node(":jungletree:sapling", { + description = "Jungle Tree Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"jungletree_sapling.png"}, + inventory_image = "jungletree_sapling.png", + wield_image = "default_sapling.png", + paramtype = "light", + walkable = false, + groups = {snappy=2,dig_immediate=3,flammable=2}, +}) + +local leaves = {"green","yellow","red"} +for color = 1, 3 do + local leave_name = ":jungletree:leaves_"..leaves[color] + minetest.register_node(leave_name, { + description = "Jungle Tree Leaves", + drawtype = "allfaces_optional", + tiles = {"jungletree_leaves_"..leaves[color]..".png"}, + paramtype = "light", + groups = {snappy=3, leafdecay=3, flammable=2}, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'jungletree:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {leave_name}, + } + } + }, + sounds = default.node_sound_leaves_defaults(), + }) +end + +-- Nodes for conifers + +minetest.register_node(":conifers:trunk", { + description = "Conifer trunk", + tile_images = { + "conifers_trunktop.png", + "conifers_trunktop.png", + "conifers_trunk.png", + "conifers_trunk.png", + "conifers_trunk.png", + "conifers_trunk.png" + }, + paramtype = "facedir_simple", + is_ground_content = true, + groups = { + tree = 1, + snappy = 2, + choppy = 2, + oddly_breakable_by_hand = 1, + flammable = 2 + }, + sounds = default.node_sound_wood_defaults() +}) + +minetest.register_node(":conifers:trunk_reversed", { + description = "Conifer reversed trunk", + tile_images = { + "conifers_trunk_reversed.png", + "conifers_trunk_reversed.png", + "conifers_trunktop.png", + "conifers_trunktop.png", + "conifers_trunk_reversed.png", + "conifers_trunk_reversed.png" + }, + --inventory_image = minetest.inventorycube( + --"conifers_trunk.png", + --"conifers_trunktop.png", + --"conifers_trunk.png" + --), + paramtype = "facedir_simple", + material = minetest.digprop_woodlike(1.0), + legacy_facedir_simple = true, + is_ground_content = true, + groups = { + tree = 1, + snappy = 2, + choppy = 2, + oddly_breakable_by_hand = 1, + flammable = 2 + }, + sounds = default.node_sound_wood_defaults() +}) + +minetest.register_node(":conifers:leaves", { + description = "Conifer leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tile_images = { "conifers_leaves.png" }, + paramtype = "light", + groups = { + snappy = 3, + leafdecay = 3, + flammable = 2 + }, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'conifers:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {'conifers:leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults() +}) + +minetest.register_node(":conifers:leaves_special", { + description = "Bright conifer leaves", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tile_images = { "conifers_leaves_special.png" }, + paramtype = "light", + groups = { + snappy = 3, + leafdecay = 3, + flammable = 2 + }, + drop = { + max_items = 1, + items = { + { + -- player will get sapling with 1/20 chance + items = {'conifers:sapling'}, + rarity = 20, + }, + { + -- player will get leaves only if he get no saplings, + -- this is because max_items is 1 + items = {'conifers:leaves'}, + } + } + }, + sounds = default.node_sound_leaves_defaults() +}) + +minetest.register_node(":conifers:sapling", { + description = "Conifer sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tile_images = {"conifers_sapling.png"}, + inventory_image = "conifers_sapling.png", + wield_image = "conifers_sapling.png", + paramtype = "light", + walkable = false, + groups = { + snappy = 2, + dig_immediate = 3, + flammable = 2 + }, + sounds = default.node_sound_defaults(), +}) + diff --git a/textures/Thumbs.db b/textures/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..cce32de4c5e6cdff092fca38ed79da2950104670 GIT binary patch literal 6144 zcmeHLe>But6n`_{8S|57#>^P0gpg?S+p6sc3bkjmA=YjujUNe>ACq7GvT5~WYukfp z*wm1>Q{lmC9*{rsNdKW{C9Z%sqU8K4H30+zl#yetC=vvkpc>>29oij{4f}}Th6svyu{Yde(5qN=anw5pSXSM>E*rFXPvK~WK&3JSa`(donJ)n z+P!D*m$7jN;}Z^jlbCe)Na{~V(~kX|o|$#(^qK76&z{S_RB*ZQO3~G8)w_bWS%r7qZMW#>)3Jv>3B8LG8E`_RL zq`#q9ziJSh zAi?4hT(l7N3f3CsWzbQxS%bgpz-$|lqElG#k9ymKVs@00A8#7d;7>R8geD^Vh6!r+8g+_gXv zyFIT|wXdt9M?g}r++Lk__&BFIa8mIUo_&X5ntGFek$wLbb%^md(NO&Rzyo}ueoxfz z5g$zNCjK8uQSTz%&fS-Cd4B3Dr`@*Nb)GLsI&di6Ej%snH@k?ibicR{PTbVKTohe> zBzvb*c7lGwbzU7q@w~9kxqbb@EGb$SFwHjyRR$P@O!dhR^jpoUc&uNVQF^#`TWqoO z0pa=BwT2O!y+n*b7)^*99e0QsTE(>ONn#XqrJc+3asax1gJ8;rW zf4-X2uBws^!kTTibtwm0Y%9XkDopF^`c`}Fv8Kk-6YaYXuFO68pzQJ4r278aw7ZeR z@^L8t%*JW{;XU))5Ptsw*JbAhc$X>9SlYm3g@u4@kQm-N#b`aeh58J1jp-M5cVmA4 z!S7tWm)pfLsT+~`)!p@o4DYz}ZS+sFJ$=7F)#0S zx)7b1&@eUCI+1wlrJi_6A)v9w_=U|g!|=4iyw;Icy4S?*t}G8Vo{{jZ+u%{` z_Wllo6U)QQ>%Wa~X_2Calw_@}UU65Y{sw*9Y};F>>_aTS7yam;klbV*b10?gD+aOA z-eal3M-e}?v6@Q!x}Tiu3@-U)wP{#TD|gjm-8Hd=>+i;iKMr)=8g%B4r%_6wvuA#P zj^pHjQrswAy9S~gwO&2J_$k2de`T}Db>i5cpNbbg0c2QsJj3F literal 0 HcmV?d00001 diff --git a/textures/conifers_leaves.png b/textures/conifers_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..cfaaa1c58fd0521ec0699dc2f34f57be1258f853 GIT binary patch literal 333 zcmV-T0kZyyP)b>!3_P_%Wi=2=2p-}9TC&@J$p4q-56;pSE(!-qhlE{9g_adAl1>zPJRNNCjQ^m% z{mrKo&gsrCzQ$MqXmO9LDSSs^dlGP&OpGjTY2Xq zaZMvbeaFAw2>|f&)?hlGj1*{g8>Df@BJ>_vSeR(nt`hXVbfJDI4U7$*OU1=FX`HiRM174fLNloS ffcAwjvBC2nu%Gl14EWmO00000NkvXXu0mjfI^UYb literal 0 HcmV?d00001 diff --git a/textures/conifers_leaves_special.png b/textures/conifers_leaves_special.png new file mode 100644 index 0000000000000000000000000000000000000000..c5dca1ca656317717544d34f444bb441d872c76a GIT binary patch literal 367 zcmV-#0g(QQP)b>!3_ML4Y6K_@RPs;*2DHdiHVyfKUy-Nf75PDiY?+e9Kvt)KQJ`>!PVCZCX-CyU zla@}$;|Vr6!S8B2FS*D)jJj@Eczr9-p9ZYf2H#(jqK^*8{n@mgm&>6yZRcgYO{tEy z^J0UOI#vl?GqAx4<94@sW?+MpvME5+{xslz9nwu?QZ@xHhu+xWWVJSU4;IJ$*%%@b zgzc>5(@_;lJW>Z zX}Oa~$|Lct``bdQIN&!8X~}y5XfWyk2t||X*9D5PIzJ(sx7%zba@O1FwPtZ1HBvf$ z{2?Kd@<=Qk5T9B3qi(-x$inc60+?yKR3!kRWtS`l&lG?+-%UL07Qbmoa&AQ4UZ2@Y zIETdLYh-QCtk zJs^O_)@o}HG+kR4I)XLQ=jyWV+QzHg4Qam2rawhF!i8z?+(Z~ z(pJ~g%R4fTG~RqST1rQ-#&$#Tn}$Ru2PHZ=D0)kMQ}qI%Pg{I0@arKK2>@@0l;9;Ln%cI9U%m_^AMR8933BWHxJR!a6Oy#I-{y8dL19jG|_We;tLN| zD0;mPrr82uczj4%G;07!nj*7;ER}mUj%%SSrJ#m(#|LOU1M}Z^gwcu*?>`YnYvOoA zS(FIj((SY{41?|yA491vGEK>4K|dI-?Lk0t(*NT8c>!MyIl=v z42Ms-4`ZsTVzo}t4YNg(N-DL*_dS%_BD1`aC_F63!n6!*$7GXcEW?=D^#XugmgxL9 z!gp~!r}67LoS#py9g8AY1icRNI^pHT35IE)ltMQRlX#V2m@UF^xo1!mB~s>m|31YN z4oX!Fhkb%xw@J%tDx^EE#ptNdCd;^|!+36TnR*$SDnMAJ@VZ7SIbzG}qkff5bP|asjTYMoN9gde9M&kja hlL>9leE`^W;}25*J66ENot6Lq002ovPDHLkV1i7yIvfB1 literal 0 HcmV?d00001 diff --git a/textures/conifers_trunk_reversed.png b/textures/conifers_trunk_reversed.png new file mode 100644 index 0000000000000000000000000000000000000000..0730e3121a8c53559255540d945aafd26e36fe0e GIT binary patch literal 721 zcmV;?0xtcDP)fBAXPTC>RtW}%NXO>9RJ1wOv-P?R;IT=9#BoHH6#zuxl&_WT z3X;2fUS2!{;5d%=J@Ln%*GOryPIuV0jc$9YQqi?Nj%%S*!+d_k0q}mgBA!J&+`na= zW=vfNaXLRD%?b{uK3&@p1TLnS&^9e)USSw;mwYBKE8;lOW;JDJzpTEp~p1z z@I7zOT$Ckgnu7tVs%dM@$?+jgt$BBoV48xWQcRo&#PZ*dSeE3T4NcRc+flIfcE@)o zGXVOoN4Ex!YY}@P05KuyCPy3?2k5p#T9U&!B#Huj&*ir_zhl`JZPQ{|CeoH%T`jo2 zzNM|($7?|>F3te(J(r@axcl&Vtbx+rS8L#@dhA*IXk2pRamF~KpQq_3A zO*kEYVH8YRueUrsJHhwe(Vg{%qj<{c*$HWuBW`XIw0`87OfXH8%|pgC^jRjKxJ_1^ zrX`*3AM-FFuM|nLqHQ$7^=$?q3jIB^@3}C5Dochzvsj!{lnQ_}E4aKm2cRewA}WiD3B!gXsyw@XOk6dQ-v@mW0Zx-?fVtA8r}F0CGk41Tt#3S00000NkvXXu0mjf D&>Bz= literal 0 HcmV?d00001 diff --git a/textures/conifers_trunktop.png b/textures/conifers_trunktop.png new file mode 100644 index 0000000000000000000000000000000000000000..4f21401b50e5b59edef8fd46630adce7e91b462b GIT binary patch literal 768 zcmV+b1ONPqP)-cXxcjo@FZ~<|)M>>m7=M&$3^E8^up_7Ctz&Vfe0hLGqQkC#e>h~RhN+fwR zMR^zb;*&@G`tl8*4!YbK?cvjm;n4wRWeCEvd|U9_^OwXZm{$d}b%AcA6sAT+0jo{L zw_iV@eVSv73SVvzx+Xcv3C^Q+kI$c;BC`zLyT|1Gg71I$5l=(`De>1cgp#OM#x~I;IwdoL!Ew&$@Q~NjF)GAJqnQv$Sic(6eRzW2>q3ykkwv!$ zNZmq8MU0WvAI}i%^Z3z6Oy@I{6oT=x0B4CZ61-(`c}e%)3HEk@Glm3>_Z6+fQ-s{X zwMDgqDS@aI(FM%g4YISM-qh?xO@8_qArj2;FYIKFE9Zzrfbdj>p>`e_fWe@P-K=PR z*rPK%AWb#Sl#I`QVKceJF6Y>7i4X!`m-yOoci00!TIax8wrk7e&lS~rjmi?td_wS^ z$@%Y?Z9%9F0KTpWE)cS8Hvn)oo6&4aJ~+%t8%?&eB~l8qew)F`5lU(h4ZJl37l^?j z?e1jChsdI;5K`id#XCnZ8+?`FZY^d}QO;K!es-VeYwFdOR{wy?);ov@xZCLvoF%#% zXG*#s9}|Nh%Uh&9NB4dor4{A;mTc6A=rP-pZDmnJIJ=qhm3csW)W@z%78h3}du`Ho zj?fYrpk8cfk9y?CLsYlJyU8W3hDIqVsjTOxpRf7y$pOJfIwwO!q9F!^OwgSct)n{# zA~6JRp3k|sxu$mh{grjXi}@`)(+u}BvRu*WH$k^>n~Jb3saye4b30pc_UZ}|#g0MV yOaWM%n)B&|^XY%uszm-z=WS*GRT&^}ru+@aiE{V>a6CW&0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyo7 z1_msCPg;Bc000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}0006UNklXsjB6Jn| zZKEp5YGxK+&y(uHM47p8RpFe8n^7y7EWTbRs3Hw>UPu>@eemzs$#EotVBzq-&^Z?) zg3N`xan8cSIj_n7xKXPxcQTu8QMTMe7z4^6f;G-prNZlm2hFsiFT9gL+K{0YE-1DZmziqQ>wvD zdF(gB4Hp6UXzfP2$W^#1U4=?F2B-+n*NKSmI+JTo!i1`Yi1M*zY~hFsRRw@o7dajxbeCc-G!SH5p*{SsC`1z%n37UEzA@TV^y(jPK<$@u-^vv;jHz+UsZr0 zs%WkPRZ!);5*iRiOv#ya!~H&>n-&1U+)!0i6(8Z$THLmc+YrLw`94{>c+cb(LDfQ4 z5mC;Zh#FOmsi5kPxgs>-%6$vM_{>pdR#7b!aAmRI1L)5it56ll1*(G3^O|%w n;ZDv82-i%qn`|dQ00000NkvXXu0mjffD11U literal 0 HcmV?d00001 diff --git a/textures/jungletree_leaves_green.png b/textures/jungletree_leaves_green.png new file mode 100644 index 0000000000000000000000000000000000000000..00f2ddc321bc64055113b787e796795387ddbc98 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6T^Rm@ z;DWu&Cj&(|3p^r=85p>QL70(Y)*K0-AbW|YuPgfX{glB!H5I_qZ5R7#ieHc7JNvwem=%cCGmg&2uvz&9P!+uw+O$XwznBTguy& zEO9y8BuQdo;2Gn#Ld7(_;5mWw`t^M`?UU~LR=3-(=X2PrWkOL&axL3teq`e8{Z!)< zx7$i`qVi1$8h4m`~lHU7Q#=uQd4NX$jMXZ!<1h?J21L=ihkb znn*-NZm}Wjo`XQ&e7}C;Fk=|eOuHo&P@5`|D__!PC{xWt~$(698W(xDfyV literal 0 HcmV?d00001 diff --git a/textures/jungletree_leaves_red.png b/textures/jungletree_leaves_red.png new file mode 100644 index 0000000000000000000000000000000000000000..3f3ea190dfb216ebb18140a7879f0c406eb7b0ac GIT binary patch literal 469 zcmV;`0V@89P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyq( z5gakL$>+cT00C7=L_t(I%WYG!s)IlfoI3@JbSdo9i-JwCzpwCDu71CgudokkgeNH< z*jof%VIjoqE0Q_a<4q%s?Cj3$tpR|xDFh!}u6N_=Qu6GDX|c$&*N!_K65Jkwt{)5l zq~2AMq~`ha`%Ev_yMY2lysPB)c=s6R60DYzWs5; z^U>g|`!;P;2m>VN>QXGjpl^-y(FCv4Vn0@1f$RFgSOCx>o9E4r4pGCqNPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyq( z5gP_UHPi?I00C1;L_t(I%XL$+af3h*+#MC3*rC!O#JjiueY;4Kj7WPy_*1 zLg*P1laSDW%{h?nIo|dr%*0&35PmI1qc|{gUFO2Z{iJ&hy(R&@=LVOcqbeipx{s41C5MM5y^`ig)002ov JPDHLkV1jk^!T10G literal 0 HcmV?d00001 diff --git a/textures/jungletree_sapling.png b/textures/jungletree_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba0fd14588854eea77fe40933785cfba53fe3f9 GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`^E_P~Ln`JZ7nnRsT)^^pY7TF} zKmTovfd{!*OodGp)O=prD_(zKs&L0&ZXM@MgE?#sB8s;~9;yD7zZ+1p{$Z)vChY{N zi?K~tUwRt8`ahA^;X9unv%@*|n+!obMlCaD9MEL^RPQsv$kF-3tiIDXT_hPk@wu`c z*u%&ju!)D^*L-;?zMLmg3}uXV;R&KFw@&eVskc1Ay`hBRh|G;EObpI>d%E`=V8{Tv Ol)=;0&t;ucLK6TxyiG{} literal 0 HcmV?d00001