commit before messing with water
authorPerttu Ahola <celeron55@gmail.com>
Mon, 17 Jan 2011 09:16:41 +0000 (11:16 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Mon, 17 Jan 2011 09:16:41 +0000 (11:16 +0200)
src/main.cpp
src/mapblock.cpp

index 51d94aba4a1155a080d7ce4c710b77e17c59bd0b..9f4ad61abb36dc1822ab881f90dd3bb31024eb95 100644 (file)
@@ -155,10 +155,6 @@ TODO: - Players to be saved on disk, with inventory
 TODO: Players to be saved as text in map/players/<name>\r
 TODO: Player inventory to be saved on disk\r
 \r
-TODO: Proper handling of spawning place (try to find something that\r
-      is not in the middle of an ocean (some land to stand on at\r
-         least) and save it in map config.\r
-\r
 TODO: Copy the text of the last picked sign to inventory in creative\r
       mode\r
 \r
@@ -168,24 +164,26 @@ TODO: Check what goes wrong with caching map to disk (Kray)
 TODO: When server sees that client is removing an inexistent block or\r
       adding a block to an existent position, resend the MapBlock.\r
 \r
-TODO: Generate map from the area the client is looking at\r
+TODO: Save players with inventories to disk\r
+\r
+TODO: Make water more like in minecraft\r
 \r
 Objects:\r
 \r
 TODO: Better handling of objects and mobs\r
       - Scripting?\r
-      - There has to be some way to do it with less spaghetti code\r
+      - There has to be some way to do it with less messy code\r
          - Make separate classes for client and server\r
            - Client should not discriminate between blocks, server should\r
            - Make other players utilize the same framework\r
                - This is also needed for objects that don't get sent to client\r
                  but are used for triggers etc\r
 \r
+TODO: There has to be some better way to handle static objects than to\r
+      send them all the time. This affects signs and item objects.\r
 SUGG: Signs could be done in the same way as torches. For this, blocks\r
       need an additional metadata field for the texts\r
          - This is also needed for item container chests\r
-TODO: There has to be some better way to handle static objects than to\r
-      send them all the time. This affects signs and item objects.\r
 \r
 Block object server side:\r
       - A "near blocks" buffer, in which some nearby blocks are stored.\r
@@ -200,12 +198,8 @@ Block object server side:
 \r
 Map generator:\r
 \r
-TODO: There are some lighting-related todos and fixmes in\r
-      ServerMap::emergeBlock\r
-\r
-TODO: When generating a block, check that there is no sunlight\r
-      below the block if the bottom of the block doesn't have\r
-         sunlight. If it has, add it to the invalid lighting list.\r
+NOTE: There are some lighting-related todos and fixmes in\r
+      ServerMap::emergeBlock. And there always will be. 8)\r
 \r
 TODO: Map generator version 2\r
        - Create surface areas based on central points; a given point's\r
index 252f123acf2a37c751ef747b5604389175b5bedf..9f91f0583d887ea0e50e8f913dde861accb0ff67 100644 (file)
@@ -858,7 +858,7 @@ void MapBlock::updateMesh(u32 daynight_ratio)
 
        If there is a block above, continues from it.
        If there is no block above, assumes there is sunlight, unless
-       is_underground is set.
+       is_underground is set or highest node is water.
 
        At the moment, all sunlighted nodes are added to light_sources.
        - SUGG: This could be optimized
@@ -903,7 +903,14 @@ bool MapBlock::propagateSunlight(core::map<v3s16, bool> & light_sources,
                                {
                                        no_sunlight = true;
                                }
-                               
+                               else
+                               {
+                                       MapNode n = getNode(v3s16(x, MAP_BLOCKSIZE-1, z));
+                                       if(n.d == CONTENT_WATER || n.d == CONTENT_OCEAN)
+                                       {
+                                               no_sunlight = true;
+                                       }
+                               }
                                // NOTE: As of now, it just would make everything dark.
                                // No sunlight here
                                //no_sunlight = true;