forked from oerkki/voxelands
leaves falling on grass become either saplings or wild grass
This commit is contained in:
parent
864e0ddd0b
commit
ac1c050566
|
@ -148,7 +148,7 @@ void ItemSAO::step(float dtime, bool send_recommended)
|
||||||
// Apply gravity
|
// Apply gravity
|
||||||
m_speed_f += v3f(0, -dtime*9.81*BS, 0);
|
m_speed_f += v3f(0, -dtime*9.81*BS, 0);
|
||||||
// Maximum movement without glitches
|
// Maximum movement without glitches
|
||||||
f32 pos_max_d = BS*0.3;
|
f32 pos_max_d = BS*0.5;
|
||||||
// Limit speed
|
// Limit speed
|
||||||
if (m_speed_f.getLength()*dtime > pos_max_d)
|
if (m_speed_f.getLength()*dtime > pos_max_d)
|
||||||
m_speed_f *= pos_max_d / (m_speed_f.getLength()*dtime);
|
m_speed_f *= pos_max_d / (m_speed_f.getLength()*dtime);
|
||||||
|
@ -172,19 +172,43 @@ void ItemSAO::step(float dtime, bool send_recommended)
|
||||||
item
|
item
|
||||||
&& item->getCount() == 1
|
&& item->getCount() == 1
|
||||||
&& (
|
&& (
|
||||||
|
m_content == CONTENT_LEAVES
|
||||||
|
|| m_content == CONTENT_JUNGLELEAVES
|
||||||
|
|| m_content == CONTENT_APPLE_LEAVES
|
||||||
|
|| m_content == CONTENT_CONIFER_LEAVES
|
||||||
|
)
|
||||||
|
) { // leaves falling on grass become either saplings or wild grass
|
||||||
|
if (
|
||||||
un.getContent() == CONTENT_MUD
|
un.getContent() == CONTENT_MUD
|
||||||
|| un.getContent() == CONTENT_GRASS
|
|| un.getContent() == CONTENT_GRASS
|
||||||
|| un.getContent() == CONTENT_GRASS_FOOTSTEPS
|
|| un.getContent() == CONTENT_GRASS_FOOTSTEPS
|
||||||
) && (
|
|
||||||
m_content == CONTENT_SAPLING
|
|
||||||
|| m_content == CONTENT_JUNGLESAPLING
|
|
||||||
|| m_content == CONTENT_APPLE_SAPLING
|
|
||||||
|| m_content == CONTENT_CONIFER_SAPLING
|
|
||||||
)
|
|
||||||
) {
|
) {
|
||||||
delete item;
|
content_t c = CONTENT_SAPLING;
|
||||||
n.setContent(m_content);
|
std::vector<content_t> search;
|
||||||
|
search.push_back(CONTENT_SAPLING);
|
||||||
|
search.push_back(CONTENT_JUNGLESAPLING);
|
||||||
|
search.push_back(CONTENT_APPLE_SAPLING);
|
||||||
|
search.push_back(CONTENT_CONIFER_SAPLING);
|
||||||
|
if (m_env->searchNear(pos_i,v3s16(3,3,3),search,NULL)) {
|
||||||
|
c = CONTENT_WILDGRASS_SHORT;
|
||||||
|
}else{
|
||||||
|
switch (m_content) {
|
||||||
|
case CONTENT_JUNGLELEAVES:
|
||||||
|
c = CONTENT_JUNGLESAPLING;
|
||||||
|
break;
|
||||||
|
case CONTENT_APPLE_LEAVES:
|
||||||
|
c = CONTENT_APPLE_SAPLING;
|
||||||
|
break;
|
||||||
|
case CONTENT_CONIFER_LEAVES:
|
||||||
|
c = CONTENT_CONIFER_SAPLING;
|
||||||
|
break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
n.setContent(c);
|
||||||
m_env->getMap().addNodeWithEvent(pos_i,n);
|
m_env->getMap().addNodeWithEvent(pos_i,n);
|
||||||
|
}
|
||||||
|
delete item;
|
||||||
m_removed = true;
|
m_removed = true;
|
||||||
return;
|
return;
|
||||||
}else if (content_craftitem_features(m_content).edible == 0) {
|
}else if (content_craftitem_features(m_content).edible == 0) {
|
||||||
|
|
|
@ -1749,7 +1749,7 @@ void ServerEnvironment::step(float dtime)
|
||||||
case CONTENT_JUNGLELEAVES:
|
case CONTENT_JUNGLELEAVES:
|
||||||
case CONTENT_CONIFER_LEAVES:
|
case CONTENT_CONIFER_LEAVES:
|
||||||
{
|
{
|
||||||
if (myrand()%8 == 0) {
|
if (myrand()%4 == 0) {
|
||||||
v3s16 leaf_p = p;
|
v3s16 leaf_p = p;
|
||||||
std::vector<content_t> search;
|
std::vector<content_t> search;
|
||||||
search.push_back(CONTENT_TREE);
|
search.push_back(CONTENT_TREE);
|
||||||
|
@ -1763,22 +1763,10 @@ void ServerEnvironment::step(float dtime)
|
||||||
search.push_back(CONTENT_IGNORE);
|
search.push_back(CONTENT_IGNORE);
|
||||||
if (!searchNear(p,v3s16(3,3,3),search,NULL)) {
|
if (!searchNear(p,v3s16(3,3,3),search,NULL)) {
|
||||||
m_map->removeNodeWithEvent(leaf_p);
|
m_map->removeNodeWithEvent(leaf_p);
|
||||||
if (myrand()%20 == 0) {
|
if (myrand()%10 == 0) {
|
||||||
v3f sapling_pos = intToFloat(leaf_p, BS);
|
v3f sapling_pos = intToFloat(leaf_p, BS);
|
||||||
sapling_pos += v3f(myrand_range(-1500,1500)*1.0/1000, 0, myrand_range(-1500,1500)*1.0/1000);
|
sapling_pos += v3f(myrand_range(-1500,1500)*1.0/1000, 0, myrand_range(-1500,1500)*1.0/1000);
|
||||||
content_t c = CONTENT_SAPLING;
|
ServerActiveObject *obj = new ItemSAO(this, 0, sapling_pos, "MaterialItem2 " + itos(n.getContent()) + " 1");
|
||||||
switch(n.getContent()) {
|
|
||||||
case CONTENT_JUNGLELEAVES:
|
|
||||||
c = CONTENT_JUNGLESAPLING;
|
|
||||||
break;
|
|
||||||
case CONTENT_CONIFER_LEAVES:
|
|
||||||
c = CONTENT_CONIFER_SAPLING;
|
|
||||||
break;
|
|
||||||
case CONTENT_APPLE_LEAVES:
|
|
||||||
c = CONTENT_APPLE_SAPLING;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
ServerActiveObject *obj = new ItemSAO(this, 0, sapling_pos, "MaterialItem2 " + itos(c) + " 1");
|
|
||||||
addActiveObject(obj);
|
addActiveObject(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue