diff --git a/Minecraft.World/GrassTile.cpp b/Minecraft.World/GrassTile.cpp index 9be44d0eb..bcf103fda 100644 --- a/Minecraft.World/GrassTile.cpp +++ b/Minecraft.World/GrassTile.cpp @@ -113,6 +113,9 @@ void GrassTile::tick(Level *level, int x, int y, int z, Random *random) } } } + + Material* above = level->getMaterial(x, y + 1, z); + if (above->isSolid() || above->isLiquid()) level->setTileAndUpdate(x, y, z, Tile::dirt_Id); } int GrassTile::getResource(int data, Random *random, int playerBonusLevel) diff --git a/Minecraft.World/HoeItem.cpp b/Minecraft.World/HoeItem.cpp index 9714e5fcd..17bcb7538 100644 --- a/Minecraft.World/HoeItem.cpp +++ b/Minecraft.World/HoeItem.cpp @@ -12,7 +12,7 @@ HoeItem::HoeItem(int id, const Tier *tier) : Item(id) setMaxDamage(tier->getUses()); } -bool HoeItem::useOn(shared_ptr instance, shared_ptr player, Level *level, int x, int y, int z, int face, float clickX, float clickY, float clickZ, bool bTestUseOnOnly) +bool HoeItem::useOn(shared_ptr instance, shared_ptr player, Level* level, int x, int y, int z, int face, float clickX, float clickY, float clickZ, bool bTestUseOnOnly) { if (!player->mayUseItemAt(x, y, z, face, instance)) return false; @@ -21,7 +21,7 @@ bool HoeItem::useOn(shared_ptr instance, shared_ptr player int targetType = level->getTile(x, y, z); int above = level->getTile(x, y + 1, z); - if (face != 0 && above == 0 && (targetType == Tile::grass_Id || targetType == Tile::dirt_Id)) + if (face != 0 && above == 0 && (targetType == Tile::grass_Id || targetType == Tile::dirt_Id || targetType == Tile::mycel_Id)) { if(!bTestUseOnOnly) { diff --git a/Minecraft.World/MycelTile.cpp b/Minecraft.World/MycelTile.cpp index 76b742e34..6c4e7b952 100644 --- a/Minecraft.World/MycelTile.cpp +++ b/Minecraft.World/MycelTile.cpp @@ -59,6 +59,9 @@ void MycelTile::tick(Level *level, int x, int y, int z, Random *random) } } } + + Material* above = level->getMaterial(x, y + 1, z); + if (above->isSolid() || above->isLiquid()) level->setTileAndUpdate(x, y, z, Tile::dirt_Id); } void MycelTile::animateTick(Level *level, int x, int y, int z, Random *random) diff --git a/Minecraft.World/ReedTile.cpp b/Minecraft.World/ReedTile.cpp index dc60bfba6..3acbe76ce 100644 --- a/Minecraft.World/ReedTile.cpp +++ b/Minecraft.World/ReedTile.cpp @@ -48,7 +48,7 @@ bool ReedTile::mayPlace(Level *level, int x, int y, int z) { int below = level->getTile(x, y - 1, z); if (below == id) return true; - if (below != Tile::grass_Id && below != Tile::dirt_Id && below != Tile::sand_Id) return false; + if (below != Tile::grass_Id && below != Tile::dirt_Id && below != Tile::sand_Id && below != Tile::mycel_Id) return false; if (level->getMaterial(x - 1, y - 1, z) == Material::water) return true; if (level->getMaterial(x + 1, y - 1, z) == Material::water) return true; if (level->getMaterial(x, y - 1, z - 1) == Material::water) return true;