Fixed saplings growing into trees (thanks so much, Kahrl!)
authorMark Holmquist <marktraceur@gmail.com>
Fri, 23 Sep 2011 14:27:57 +0000 (07:27 -0700)
committerMark Holmquist <marktraceur@gmail.com>
Sat, 24 Sep 2011 01:14:35 +0000 (18:14 -0700)
Put the random interval back to 1 in 50 chance. It's not as rare as rats, but rarer than grass.

src/environment.cpp

index 93f1627c5292c0f1a6acb8ee7c6194b9ae8f5687..71fceae28c7230ad7844c4ae969ab6d91f103564 100644 (file)
@@ -929,17 +929,30 @@ void ServerEnvironment::step(float dtime)
                                */
                                if(n.getContent() == CONTENT_SAPLING)
                                {
-                                       if(myrand()%2 == 0)
+                                       if(myrand()%50 == 0)
                                        {
                                                core::map<v3s16, MapBlock*> modified_blocks;
                                                v3s16 tree_p = p;
-                                               MapEditEvent event;
-                                               event.type = MEET_OTHER;
                                                ManualMapVoxelManipulator vmanip(m_map);
                                                v3s16 tree_blockp = getNodeBlockPos(tree_p);
                                                vmanip.initialEmerge(tree_blockp - v3s16(1,1,1), tree_blockp + v3s16(1,1,1));
                                                bool is_apple_tree = myrand()%4 == 0;
                                                mapgen::make_tree(vmanip, tree_p, is_apple_tree);
+                                               vmanip.blitBackAll(&modified_blocks);
+
+                                               // update lighting
+                                               core::map<v3s16, MapBlock*> lighting_modified_blocks;
+                                               for(core::map<v3s16, MapBlock*>::Iterator
+                                                     i = modified_blocks.getIterator();
+                                                     i.atEnd() == false; i++)
+                                               {
+                                                       lighting_modified_blocks.insert(i.getNode()->getKey(), i.getNode()->getValue());
+                                               }
+                                               m_map->updateLighting(lighting_modified_blocks, modified_blocks);
+
+                                               // Send a MEET_OTHER event
+                                               MapEditEvent event;
+                                               event.type = MEET_OTHER;
                                                for(core::map<v3s16, MapBlock*>::Iterator
                                                      i = modified_blocks.getIterator();
                                                      i.atEnd() == false; i++)