Files
mcpe/source/world/level/levelgen/feature/ReedsFeature.cpp
2023-08-05 15:34:07 +03:00

40 lines
1.2 KiB
C++

/********************************************************************
Minecraft: Pocket Edition - Decompilation Project
Copyright (C) 2023 iProgramInCpp
The following code is licensed under the BSD 1 clause license.
SPDX-License-Identifier: BSD-1-Clause
********************************************************************/
#include "Feature.hpp"
#include "world/level/Level.hpp"
bool ReedsFeature::place(Level* level, Random* random, int x, int y, int z)
{
for (int i = 0; i < 20; i++)
{
int newX = (x + random->nextInt(4)) - random->nextInt(4);
int newZ = (z + random->nextInt(4)) - random->nextInt(4);
if (!level->isEmptyTile(newX, y, newZ))
continue;
if (level->getMaterial(newX - 1, y - 1, newZ) == Material::water ||
level->getMaterial(newX + 1, y - 1, newZ) == Material::water ||
level->getMaterial(newX, y - 1, newZ - 1) == Material::water ||
level->getMaterial(newX, y - 1, newZ + 1) == Material::water)
{
int height = random->nextInt(random->nextInt(3) + 1) + 2;
for (int y1 = 0; y1 < height; y1++)
{
if (Tile::reeds->canSurvive(level, newX, y + y1, newZ))
{
level->setTileNoUpdate(newX, y + y1, newZ, Tile::reeds->m_ID);
}
}
}
}
return true;
}