fix: doubled grass upper block destroying (#104)

This commit is contained in:
NSDeathman 2026-05-22 15:07:06 +04:00 committed by GitHub
parent 2cc554c11b
commit d7d38d4f8f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -189,11 +189,12 @@ void TallGrass2::neighborChanged(Level* level, int x, int y, int z, int type)
if (!isUpper)
{
if (!canSurvive(level, x, y, z))
int upperTileId = level->getTile(x, y + 1, z);
if (!canSurvive(level, x, y, z) || (upperTileId != id))
{
spawnResources(level, x, y, z, data, 0);
level->setTileAndData(x, y, z, 0, 0, Tile::UPDATE_CLIENTS);
if (level->getTile(x, y + 1, z) == id)
if (upperTileId == id)
level->removeTile(x, y + 1, z);
}
}
@ -211,11 +212,12 @@ void TallGrass2::tick(Level* level, int x, int y, int z, Random* random)
if (!isUpper)
{
if (!canSurvive(level, x, y, z))
int upperTileId = level->getTile(x, y + 1, z);
if (!canSurvive(level, x, y, z) || (upperTileId != id))
{
spawnResources(level, x, y, z, data, 0);
level->setTileAndData(x, y, z, 0, 0, Tile::UPDATE_CLIENTS);
if (level->getTile(x, y + 1, z) == id)
if (upperTileId == id)
level->removeTile(x, y + 1, z);
}
}
@ -224,7 +226,6 @@ void TallGrass2::tick(Level* level, int x, int y, int z, Random* random)
int TallGrass2::getResource(int data, Random* random, int playerBonusLevel)
{
return -1;
}
@ -240,7 +241,6 @@ bool TallGrass2::isSilkTouchable()
shared_ptr<ItemInstance> TallGrass2::getSilkTouchItemInstance(int data)
{
if ((data & UPPER_BIT) != 0) return nullptr;
int variant = data & ~UPPER_BIT;
return std::make_shared<ItemInstance>(this, 1, variant);