forked from oerkki/voxelands
fix ice lighting, and don't freeze near fire or lava
This commit is contained in:
parent
1418225b48
commit
3c63d43a24
|
@ -981,7 +981,7 @@ void content_mapnode_init()
|
||||||
f->description = std::string("Ice");
|
f->description = std::string("Ice");
|
||||||
f->setAllTextures("ice.png");
|
f->setAllTextures("ice.png");
|
||||||
f->setInventoryTextureCube("ice.png", "ice.png", "ice.png");
|
f->setInventoryTextureCube("ice.png", "ice.png", "ice.png");
|
||||||
f->draw_type = CDT_GLASSLIKE;
|
f->draw_type = CDT_CUBELIKE;
|
||||||
f->light_propagates = true;
|
f->light_propagates = true;
|
||||||
f->sunlight_propagates = true;
|
f->sunlight_propagates = true;
|
||||||
f->param_type = CPT_LIGHT;
|
f->param_type = CPT_LIGHT;
|
||||||
|
|
|
@ -1002,8 +1002,25 @@ void ServerEnvironment::step(float dtime)
|
||||||
}
|
}
|
||||||
if (n.getContent() == CONTENT_WATERSOURCE || n.getContent() == CONTENT_WATER) {
|
if (n.getContent() == CONTENT_WATERSOURCE || n.getContent() == CONTENT_WATER) {
|
||||||
if (p.Y > 60 && p.Y < 200) {
|
if (p.Y > 60 && p.Y < 200) {
|
||||||
n.setContent(CONTENT_ICE);
|
bool found = false;
|
||||||
m_map->addNodeWithEvent(p, n);
|
s16 range = (p.Y > 60) ? 2 : 4;
|
||||||
|
for(s16 x=-range; !found && x<=range; x++) {
|
||||||
|
for(s16 y=-1; !found && y<=1; y++) {
|
||||||
|
for(s16 z=-range; !found && z<=range; z++) {
|
||||||
|
MapNode n_test = m_map->getNodeNoEx(p+v3s16(x,y,z));
|
||||||
|
if (
|
||||||
|
n_test.getContent() == CONTENT_LAVASOURCE
|
||||||
|
|| n_test.getContent() == CONTENT_LAVA
|
||||||
|
|| n_test.getContent() == CONTENT_FIRE
|
||||||
|
)
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found == false) {
|
||||||
|
n.setContent(CONTENT_ICE);
|
||||||
|
m_map->addNodeWithEvent(p, n);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}else if (n.getContent() == CONTENT_ICE) {
|
}else if (n.getContent() == CONTENT_ICE) {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
|
|
Loading…
Reference in New Issue