diff --git a/Minecraft.World/GrassTile.cpp b/Minecraft.World/GrassTile.cpp index 4411db9f..c42ea940 100644 --- a/Minecraft.World/GrassTile.cpp +++ b/Minecraft.World/GrassTile.cpp @@ -120,6 +120,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 9714e5fc..a160f486 100644 --- a/Minecraft.World/HoeItem.cpp +++ b/Minecraft.World/HoeItem.cpp @@ -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 76b742e3..d0619db1 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) @@ -71,4 +74,4 @@ void MycelTile::animateTick(Level *level, int x, int y, int z, Random *random) int MycelTile::getResource(int data, Random *random, int playerBonusLevel) { return Tile::dirt->getResource(0, random, playerBonusLevel); -} \ No newline at end of file +} diff --git a/Minecraft.World/ReedTile.cpp b/Minecraft.World/ReedTile.cpp index b67c4874..e28421a0 100644 --- a/Minecraft.World/ReedTile.cpp +++ b/Minecraft.World/ReedTile.cpp @@ -56,7 +56,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::podzol_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;