From 306b407a38b087b59c92d23c0c1f7c3e8fb7ce4e Mon Sep 17 00:00:00 2001
From: RealBadAngel <mk@realbadangel.pl>
Date: Thu, 08 Nov 2012 17:37:22 +0100
Subject: [PATCH] Added missing file

---
 rubber.lua |   97 +++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 95 insertions(+), 2 deletions(-)

diff --git a/rubber.lua b/rubber.lua
index da5def0..311f3af 100644
--- a/rubber.lua
+++ b/rubber.lua
@@ -1,3 +1,5 @@
+-- Code of rubber tree by PilzAdam
+
 minetest.register_node("technic:rubber_sapling", {
 	description = "Rubber Tree Sapling",
 	drawtype = "plantlike",
@@ -69,7 +71,7 @@
 	interval = 60,
 	chance = 20,
 	action = function(pos, node)
-		farming:generate_tree(pos, "technic:rubber_tree_full", "technic:rubber_leaves", {"default:dirt", "default:dirt_with_grass"})
+		generate_tree(pos, "technic:rubber_tree_full", "technic:rubber_leaves", {"default:dirt", "default:dirt_with_grass"})
 	end
 })
 
@@ -80,7 +82,7 @@
 	local tmp = {x=(maxp.x-minp.x)/2+minp.x, y=(maxp.y-minp.y)/2+minp.y, z=(maxp.z-minp.z)/2+minp.z}
 	local pos = minetest.env:find_node_near(tmp, maxp.x-minp.x, {"default:dirt_with_grass"})
 	if pos ~= nil then
-		farming:generate_tree({x=pos.x, y=pos.y+1, z=pos.z}, "technic:rubber_tree_full", "technic:rubber_leaves", {"default:dirt", "default:dirt_with_grass"})
+		generate_tree({x=pos.x, y=pos.y+1, z=pos.z}, "technic:rubber_tree_full", "technic:rubber_leaves", {"default:dirt", "default:dirt_with_grass"})
 	end
 end)
 
@@ -91,3 +93,94 @@
 	recipe = "technic:rubber_sapling",
 	burntime = 10
 })
+
+function generate_tree(pos, trunk, leaves, underground, replacements)
+	pos.y = pos.y-1
+	local nodename = minetest.env:get_node(pos).name
+	local ret = true
+	for _,name in ipairs(underground) do
+		if nodename == name then
+			ret = false
+			break
+		end
+	end
+	pos.y = pos.y+1
+	if ret or minetest.env:get_node_light(pos) < 8 then
+		return
+	end
+	
+	node = {name = ""}
+	for dy=1,4 do
+		pos.y = pos.y+dy
+		if minetest.env:get_node(pos).name ~= "air" then
+			return
+		end
+		pos.y = pos.y-dy
+	end
+	node.name = trunk
+	for dy=0,4 do
+		pos.y = pos.y+dy
+		minetest.env:set_node(pos, node)
+		pos.y = pos.y-dy
+	end
+	
+	if not replacements then
+		replacements = {}
+	end
+	
+	node.name = leaves
+	pos.y = pos.y+3
+	for dx=-2,2 do
+		for dz=-2,2 do
+			for dy=0,3 do
+				pos.x = pos.x+dx
+				pos.y = pos.y+dy
+				pos.z = pos.z+dz
+				
+				if dx == 0 and dz == 0 and dy==3 then
+					if minetest.env:get_node(pos).name == "air" and math.random(1, 5) <= 4 then
+						minetest.env:set_node(pos, node)
+						for name,rarity in pairs(replacements) do
+							if math.random(1, rarity) == 1 then
+								minetest.env:set_node(pos, {name=name})
+							end
+						end
+					end
+				elseif dx == 0 and dz == 0 and dy==4 then
+					if minetest.env:get_node(pos).name == "air" and math.random(1, 5) <= 4 then
+						minetest.env:set_node(pos, node)
+						for name,rarity in pairs(replacements) do
+							if math.random(1, rarity) == 1 then
+								minetest.env:set_node(pos, {name=name})
+							end
+						end
+					end
+				elseif math.abs(dx) ~= 2 and math.abs(dz) ~= 2 then
+					if minetest.env:get_node(pos).name == "air" then
+						minetest.env:set_node(pos, node)
+						for name,rarity in pairs(replacements) do
+							if math.random(1, rarity) == 1 then
+								minetest.env:set_node(pos, {name=name})
+							end
+						end
+					end
+				else
+					if math.abs(dx) ~= 2 or math.abs(dz) ~= 2 then
+						if minetest.env:get_node(pos).name == "air" and math.random(1, 5) <= 4 then
+							minetest.env:set_node(pos, node)
+							for name,rarity in pairs(replacements) do
+								if math.random(1, rarity) == 1 then
+								minetest.env:set_node(pos, {name=name})
+								end
+							end
+						end
+					end
+				end
+				
+				pos.x = pos.x-dx
+				pos.y = pos.y-dy
+				pos.z = pos.z-dz
+			end
+		end
+	end
+end

--
Gitblit v1.8.0