mirror of
https://github.com/xtreme8000/CavEX.git
synced 2025-01-22 09:11:55 -05:00
Random tick: cacti growth
This commit is contained in:
parent
00f409871f
commit
2c3c59703a
1 changed files with 46 additions and 1 deletions
|
@ -67,6 +67,51 @@ static bool onItemPlace(struct server_local* s, struct item_data* it,
|
|||
return block_place_default(s, it, where, on, on_side);
|
||||
}
|
||||
|
||||
static void onRandomTick(struct server_local* s, struct block_info* this) {
|
||||
bool has_support = false;
|
||||
int height = 1;
|
||||
for(int k = 0; k < 2; k++) {
|
||||
struct block_data below;
|
||||
if(!server_world_get_block(&s->world, this->x, this->y - k - 1, this->z,
|
||||
&below))
|
||||
below.type = BLOCK_AIR;
|
||||
|
||||
if(below.type == BLOCK_CACTUS) {
|
||||
height++;
|
||||
has_support = true;
|
||||
} else {
|
||||
if(below.type == BLOCK_SAND)
|
||||
has_support = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!has_support) {
|
||||
server_world_set_block(&s->world, this->x, this->y, this->z,
|
||||
(struct block_data) {
|
||||
.type = BLOCK_AIR,
|
||||
.metadata = 0,
|
||||
});
|
||||
server_local_spawn_block_drops(s, this);
|
||||
} else if(height < 3) {
|
||||
if(this->block->metadata == 0xF) {
|
||||
struct block_data above;
|
||||
if(!server_world_get_block(&s->world, this->x, this->y + 1, this->z,
|
||||
&above)
|
||||
|| above.type == BLOCK_AIR)
|
||||
server_world_set_block(&s->world, this->x, this->y + 1, this->z,
|
||||
(struct block_data) {
|
||||
.type = BLOCK_CACTUS,
|
||||
.metadata = 0,
|
||||
});
|
||||
}
|
||||
|
||||
this->block->metadata++;
|
||||
server_world_set_block(&s->world, this->x, this->y, this->z,
|
||||
*this->block);
|
||||
}
|
||||
}
|
||||
|
||||
struct block block_cactus = {
|
||||
.name = "Cactus",
|
||||
.getSideMask = getSideMask,
|
||||
|
@ -74,7 +119,7 @@ struct block block_cactus = {
|
|||
.getMaterial = getMaterial,
|
||||
.getTextureIndex = getTextureIndex,
|
||||
.getDroppedItem = block_drop_default,
|
||||
.onRandomTick = NULL,
|
||||
.onRandomTick = onRandomTick,
|
||||
.transparent = false,
|
||||
.renderBlock = render_block_cactus,
|
||||
.renderBlockAlways = NULL,
|
||||
|
|
Loading…
Reference in a new issue