forked from oerkki/voxelands
fix the flashing snow, and snow appearing inside buildings
This commit is contained in:
parent
df27ac2cd1
commit
e49a78af2e
|
@ -1173,8 +1173,14 @@ void ServerEnvironment::step(float dtime)
|
||||||
MapNode n_top = m_map->getNodeNoEx(p+v3s16(0,1,0));
|
MapNode n_top = m_map->getNodeNoEx(p+v3s16(0,1,0));
|
||||||
if (content_features(n_top).air_equivalent) {
|
if (content_features(n_top).air_equivalent) {
|
||||||
if (p.Y > (coldzone+10) && p.Y < 1024) {
|
if (p.Y > (coldzone+10) && p.Y < 1024) {
|
||||||
n.setContent(CONTENT_MUDSNOW);
|
// should only change to snow if there's nothing above it
|
||||||
m_map->addNodeWithEvent(p, n);
|
std::vector<content_t> search;
|
||||||
|
search.push_back(CONTENT_SNOW);
|
||||||
|
search.push_back(CONTENT_AIR);
|
||||||
|
if (!searchNearInv(p,v3s16(0,0,0),v3s16(0,32,0),search,NULL)) {
|
||||||
|
n.setContent(CONTENT_MUDSNOW);
|
||||||
|
m_map->addNodeWithEvent(p, n);
|
||||||
|
}
|
||||||
}else if (n_top.getLightBlend(getDayNightRatio()) >= 13) {
|
}else if (n_top.getLightBlend(getDayNightRatio()) >= 13) {
|
||||||
if (season == ENV_SEASON_AUTUMN || season == ENV_SEASON_WINTER) {
|
if (season == ENV_SEASON_AUTUMN || season == ENV_SEASON_WINTER) {
|
||||||
n.setContent(CONTENT_GROWING_GRASS_AUTUMN);
|
n.setContent(CONTENT_GROWING_GRASS_AUTUMN);
|
||||||
|
@ -1424,8 +1430,14 @@ void ServerEnvironment::step(float dtime)
|
||||||
|| myrand_range(0,10) == 0
|
|| myrand_range(0,10) == 0
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
n.setContent(CONTENT_MUDSNOW);
|
// should only change to snow if there's nothing above it
|
||||||
m_map->addNodeWithEvent(p, n);
|
std::vector<content_t> search;
|
||||||
|
search.push_back(CONTENT_SNOW);
|
||||||
|
search.push_back(CONTENT_AIR);
|
||||||
|
if (!searchNearInv(p,v3s16(0,0,0),v3s16(0,32,0),search,NULL)) {
|
||||||
|
n.setContent(CONTENT_MUDSNOW);
|
||||||
|
m_map->addNodeWithEvent(p, n);
|
||||||
|
}
|
||||||
}else if (
|
}else if (
|
||||||
(
|
(
|
||||||
season == ENV_SEASON_WINTER
|
season == ENV_SEASON_WINTER
|
||||||
|
@ -1478,9 +1490,15 @@ void ServerEnvironment::step(float dtime)
|
||||||
if ((season == ENV_SEASON_SPRING && myrand_range(0,10) == 0) || season == ENV_SEASON_SUMMER) {
|
if ((season == ENV_SEASON_SPRING && myrand_range(0,10) == 0) || season == ENV_SEASON_SUMMER) {
|
||||||
n.setContent(CONTENT_GRASS);
|
n.setContent(CONTENT_GRASS);
|
||||||
m_map->addNodeWithEvent(p,n);
|
m_map->addNodeWithEvent(p,n);
|
||||||
}else if (season == ENV_SEASON_WINTER && (ch > 10 || myrand_range(0,5) == 0)) {
|
}else if (season == ENV_SEASON_WINTER && p.Y > (coldzone-10) && (ch > 10 || myrand_range(0,5) == 0)) {
|
||||||
n.setContent(CONTENT_MUDSNOW);
|
// should only change to snow if there's nothing above it
|
||||||
m_map->addNodeWithEvent(p,n);
|
std::vector<content_t> search;
|
||||||
|
search.push_back(CONTENT_SNOW);
|
||||||
|
search.push_back(CONTENT_AIR);
|
||||||
|
if (!searchNearInv(p,v3s16(0,0,0),v3s16(0,32,0),search,NULL)) {
|
||||||
|
n.setContent(CONTENT_MUDSNOW);
|
||||||
|
m_map->addNodeWithEvent(p, n);
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
int f = (700-(p.Y*2))+10;
|
int f = (700-(p.Y*2))+10;
|
||||||
if (p.Y > 1 && myrand()%f == 0) {
|
if (p.Y > 1 && myrand()%f == 0) {
|
||||||
|
|
Loading…
Reference in New Issue