first commit
							
								
								
									
										32
									
								
								crafts.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -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'}
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										34
									
								
								crafts.lua~
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -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'}
 | 
			
		||||
	}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										2
									
								
								depends.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,2 @@
 | 
			
		||||
default
 | 
			
		||||
plants_lib
 | 
			
		||||
							
								
								
									
										1
									
								
								depends.txt~
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1 @@
 | 
			
		||||
default
 | 
			
		||||
							
								
								
									
										403
									
								
								init.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -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(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										403
									
								
								init.lua~
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -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(),
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								textures/Thumbs.db
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								textures/conifers_leaves.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 333 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/conifers_leaves_special.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 367 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/conifers_sapling.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 454 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/conifers_trunk.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 699 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/conifers_trunk_reversed.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 721 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/conifers_trunktop.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 768 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/jungletree_bark.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 705 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/jungletree_leaves_green.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 456 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/jungletree_leaves_red.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 469 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/jungletree_leaves_yellow.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 467 B  | 
							
								
								
									
										
											BIN
										
									
								
								textures/jungletree_sapling.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 215 B  |