Skip to content

Commit 0deb8aa

Browse files
Add grass layer
1 parent 9153481 commit 0deb8aa

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

src/server/terrain/util/generator.rs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ macro_rules! for_each_chunk_coordinate {
1010
#[cfg(feature = "skip_chunk_padding")]
1111
if x == 0
1212
|| x == CHUNK_SIZE + 1
13-
|| y == 0
14-
|| y == CHUNK_SIZE + 1
15-
|| z == 0
16-
|| z == CHUNK_SIZE + 1
13+
|| y == 0
14+
|| y == CHUNK_SIZE + 1
15+
|| z == 0
16+
|| z == CHUNK_SIZE + 1
1717
{
1818
continue;
1919
}
@@ -52,6 +52,24 @@ impl Generator {
5252
let block = self.generate_block(block_position);
5353
chunk.set_unpadded(x, y, z, block);
5454
});
55+
56+
for_each_chunk_coordinate!(chunk, |x, y, z, _| {
57+
let block = chunk.get_unpadded(x, y, z);
58+
59+
if block == BlockId::Stone {
60+
61+
let x = x as usize;
62+
let y = y as usize;
63+
let z = z as usize;
64+
65+
if Chunk::valid_unpadded(x,y + 1,z) {
66+
let top_block = chunk.get_unpadded(x, y + 1, z);
67+
if top_block == BlockId::Air {
68+
chunk.set_unpadded(x, y, z, BlockId::Grass);
69+
}
70+
}
71+
}
72+
});
5573
}
5674

5775
fn generate_block(&self, position: Vec3) -> BlockId {

src/shared/terrain.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,18 @@ impl Chunk {
2424
}
2525
}
2626

27+
pub fn valid_padded(x: usize, y: usize, z: usize) -> bool {
28+
(x >= 1 && x < CHUNK_SIZE) &&
29+
(y >= 1 && y < CHUNK_SIZE) &&
30+
(z >= 1 && z < CHUNK_SIZE)
31+
}
32+
33+
pub fn valid_unpadded(x: usize, y: usize, z: usize) -> bool {
34+
x < PADDED_CHUNK_SIZE &&
35+
y < PADDED_CHUNK_SIZE &&
36+
z < PADDED_CHUNK_SIZE
37+
}
38+
2739
pub fn get(&self, x: usize, y: usize, z: usize) -> BlockId {
2840
self.get_unpadded(x + 1, y + 1, z + 1)
2941
}

0 commit comments

Comments
 (0)