Added ongen for bamboo(did this in about 10 minutes, so tweak it to what you want):

https://github.com/SmallJoker/bamboo/pull/1
Code: Select all

```
@@ -213,3 +213,47 @@ minetest.register_abm({
end
end,
})
+
+--Mapgen Stuff
+function make_bamboo(pos, size)
+ for y=0,size-1 do
+ local p = {x=pos.x, y=pos.y+y, z=pos.z}
+ local nn = minetest.get_node(p).name
+ if minetest.registered_nodes[nn] and
+ minetest.registered_nodes[nn].buildable_to then
+ minetest.set_node(p, {name="bamboo:bamboo"})
+ else
+ return
+ end
+ end
+end
+
+minetest.register_on_generated(function(minp, maxp, seed)
+ if maxp.y >= 2 and minp.y <= 0 then
+ -- Generate Bamboo
+ local perlin1 = minetest.get_perlin(354, 3, 0.7, 100)
+ -- Assume X and Z lengths are equal
+ local divlen = 8
+ local divs = (maxp.x-minp.x)/divlen+1;
+ for divx=0,divs-1 do
+ for divz=0,divs-1 do
+ local x0 = minp.x + math.floor((divx+0)*divlen)
+ local z0 = minp.z + math.floor((divz+0)*divlen)
+ local x1 = minp.x + math.floor((divx+1)*divlen)
+ local z1 = minp.z + math.floor((divz+1)*divlen)
+ -- Determine bamboo amount from perlin noise
+ local bamboo_amount = math.floor(perlin1:get2d({x=x0, y=z0}) * 45 - 20)
+ -- Find random positions for Bamboo based on this random
+ local pr = PseudoRandom(seed+1)
+ for i=0,bamboo_amount do
+ local x = pr:next(x0, x1)
+ local z = pr:next(z0, z1)
+ if minetest.get_node({x=x,y=1,z=z}).name == "default:dirt_with_grass" and
+ minetest.find_node_near({x=x,y=1,z=z}, 1, "default:water_source") then
+ make_bamboo({x=x,y=2,z=z}, pr:next(2, 4))
+ end
+ end
+ end
+ end
+ end
+end)
```

Also, will make a pull request which adds support for 6d facedir, support for stairsplus(optional via settings.txt), and an abm to replace all the old horizontal bamboo with the new 6d bamboo(also optional via settings.txt).

**PS:**
Change the number 45 to something lower (rarer) or higher (less rare) in this piece of code:

Code: Select all

`local bamboo_amount = math.floor(perlin1:get2d({x=x0, y=z0}) * 45 - 20)`