feat: Prevent tree seeds from spawning near water
This commit is contained in:
parent
9c49af57cb
commit
d34a695bb8
26
js/world.js
26
js/world.js
@ -211,10 +211,19 @@ function generateSpecialChunk(chunkData, chunkX, playerChunkX) {
|
|||||||
if (hasSeedNearby) break;
|
if (hasSeedNearby) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only place the seed if there are no other seeds nearby
|
// Check if there's water below or nearby
|
||||||
|
let hasWaterBelow = false;
|
||||||
|
for (let checkY = floorY - noiseHeight + 1; checkY < Math.min(CHUNK_SIZE, floorY - noiseHeight + 5); checkY++) {
|
||||||
|
if (chunkData[checkY * CHUNK_SIZE + x] === WATER) {
|
||||||
|
hasWaterBelow = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only place the seed if there are no other seeds nearby and no water below
|
||||||
// Place seed 3 pixels above the surface instead of just 1
|
// Place seed 3 pixels above the surface instead of just 1
|
||||||
const elevatedSeedY = floorY - noiseHeight - 3; // 3 pixels above the grass
|
const elevatedSeedY = floorY - noiseHeight - 3; // 3 pixels above the grass
|
||||||
if (!hasSeedNearby && elevatedSeedY >= 0 && chunkData[(floorY - noiseHeight) * CHUNK_SIZE + x] === GRASS) {
|
if (!hasSeedNearby && !hasWaterBelow && elevatedSeedY >= 0 && chunkData[(floorY - noiseHeight) * CHUNK_SIZE + x] === GRASS) {
|
||||||
chunkData[elevatedSeedY * CHUNK_SIZE + x] = TREE_SEED;
|
chunkData[elevatedSeedY * CHUNK_SIZE + x] = TREE_SEED;
|
||||||
// Add metadata for the tree seed
|
// Add metadata for the tree seed
|
||||||
const seedMetadata = {
|
const seedMetadata = {
|
||||||
@ -322,8 +331,17 @@ function generateSpecialChunk(chunkData, chunkX, playerChunkX) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Only place the seed if it's not too close to another seed
|
// Check if there's water below or nearby
|
||||||
if (!tooClose && seedY >= 0) {
|
let hasWaterBelow = false;
|
||||||
|
for (let checkY = surfaceY + 1; checkY < Math.min(CHUNK_SIZE, surfaceY + 5); checkY++) {
|
||||||
|
if (chunkData[checkY * CHUNK_SIZE + x] === WATER) {
|
||||||
|
hasWaterBelow = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only place the seed if it's not too close to another seed and no water below
|
||||||
|
if (!tooClose && !hasWaterBelow && seedY >= 0) {
|
||||||
chunkData[seedY * CHUNK_SIZE + x] = TREE_SEED;
|
chunkData[seedY * CHUNK_SIZE + x] = TREE_SEED;
|
||||||
treePositions.push({ x, y: seedY });
|
treePositions.push({ x, y: seedY });
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user