The lighting value of the node should be left as-is after changing
other values. This sets the lighting value to 0.
*/
-/*void Map::nodeAddedUpdate(v3s16 p, u8 lightwas,
- core::map<v3s16, MapBlock*> &modified_blocks)*/
void Map::addNodeAndUpdate(v3s16 p, MapNode n,
core::map<v3s16, MapBlock*> &modified_blocks)
{
/*PrintInfo(m_dout);
- m_dout<<DTIME<<"Map::nodeAddedUpdate(): p=("
+ m_dout<<DTIME<<"Map::addNodeAndUpdate(): p=("
<<p.X<<","<<p.Y<<","<<p.Z<<")"<<std::endl;*/
/*
{
}
- if(n.d != CONTENT_TORCH)
+ /*
+ If the new node doesn't propagate sunlight and there is
+ grass below, change it to mud
+ */
+ if(content_features(n.d).sunlight_propagates == false)
{
- /*
- If there is grass below, change it to mud
- */
try{
MapNode bottomnode = getNode(bottompos);
}
}
+ /*
+ If the new node is mud and it is under sunlight, change it
+ to grass
+ */
+ if(n.d == CONTENT_MUD && node_under_sunlight)
+ {
+ n.d = CONTENT_GRASS;
+ }
+
+ /*
+ Remove all light that has come out of this node
+ */
+
enum LightBank banks[] =
{
LIGHTBANK_DAY,
n.setLight(bank, 0);
}
+
+ /*
+ Set the node on the map
+ */
setNode(p, n);
if(n2.getLight(LIGHTBANK_DAY) == LIGHT_SUN)
{
- //m_dout<<DTIME<<"doing"<<std::endl;
unLightNeighbors(LIGHTBANK_DAY,
n2pos, n2.getLight(LIGHTBANK_DAY),
light_sources, modified_blocks);
/*
Spread light from all nodes that might be capable of doing so
- TODO: Convert to spreadLight
*/
spreadLight(bank, light_sources, modified_blocks);
}