diff options
Diffstat (limited to 'Minecraft.World/Mushroom.cpp')
| -rw-r--r-- | Minecraft.World/Mushroom.cpp | 104 |
1 files changed, 49 insertions, 55 deletions
diff --git a/Minecraft.World/Mushroom.cpp b/Minecraft.World/Mushroom.cpp index 1056cdec..6b20e0d1 100644 --- a/Minecraft.World/Mushroom.cpp +++ b/Minecraft.World/Mushroom.cpp @@ -4,54 +4,53 @@ #include "net.minecraft.world.h" #include "Mushroom.h" -Mushroom::Mushroom(int id, const wstring &texture) : Bush(id) +Mushroom::Mushroom(int id) : Bush(id) { - this->updateDefaultShape(); - this->setTicking(true); - this->texture = texture; + this->updateDefaultShape(); + this->setTicking(true); } // 4J Added override void Mushroom::updateDefaultShape() { - float ss = 0.2f; - this->setShape(0.5f - ss, 0, 0.5f - ss, 0.5f + ss, ss * 2, 0.5f + ss); + float ss = 0.2f; + this->setShape(0.5f - ss, 0, 0.5f - ss, 0.5f + ss, ss * 2, 0.5f + ss); } void Mushroom::tick(Level *level, int x, int y, int z, Random *random) { - if (random->nextInt(25) == 0) + if (random->nextInt(25) == 0) { - int r = 4; - int max = 5; - for (int xx = x - r; xx <= x + r; xx++) - for (int zz = z - r; zz <= z + r; zz++) - for (int yy = y - 1; yy <= y + 1; yy++) + int r = 4; + int max = 5; + for (int xx = x - r; xx <= x + r; xx++) + for (int zz = z - r; zz <= z + r; zz++) + for (int yy = y - 1; yy <= y + 1; yy++) { - if (level->getTile(xx, yy, zz) == id && --max <= 0) return; - } + if (level->getTile(xx, yy, zz) == id && --max <= 0) return; + } - int x2 = x + random->nextInt(3) - 1; - int y2 = y + random->nextInt(2) - random->nextInt(2); - int z2 = z + random->nextInt(3) - 1; - for (int i = 0; i < 4; i++) - { - if (level->isEmptyTile(x2, y2, z2) && canSurvive(level, x2, y2, z2)) + int x2 = x + random->nextInt(3) - 1; + int y2 = y + random->nextInt(2) - random->nextInt(2); + int z2 = z + random->nextInt(3) - 1; + for (int i = 0; i < 4; i++) { - x = x2; - y = y2; - z = z2; - } - x2 = x + random->nextInt(3) - 1; - y2 = y + random->nextInt(2) - random->nextInt(2); - z2 = z + random->nextInt(3) - 1; - } + if (level->isEmptyTile(x2, y2, z2) && canSurvive(level, x2, y2, z2)) + { + x = x2; + y = y2; + z = z2; + } + x2 = x + random->nextInt(3) - 1; + y2 = y + random->nextInt(2) - random->nextInt(2); + z2 = z + random->nextInt(3) - 1; + } - if (level->isEmptyTile(x2, y2, z2) && canSurvive(level, x2, y2, z2)) - { - level->setTile(x2, y2, z2, id); - } - } + if (level->isEmptyTile(x2, y2, z2) && canSurvive(level, x2, y2, z2)) + { + level->setTileAndData(x2, y2, z2, id, 0, UPDATE_CLIENTS); + } + } } bool Mushroom::mayPlace(Level *level, int x, int y, int z) @@ -68,40 +67,35 @@ bool Mushroom::canSurvive(Level *level, int x, int y, int z) { if (y < 0 || y >= Level::maxBuildHeight) return false; - int below = level->getTile(x, y - 1, z); + int below = level->getTile(x, y - 1, z); - return below == Tile::mycel_Id || (level->getDaytimeRawBrightness(x, y, z) < 13 && mayPlaceOn(below)); + return below == Tile::mycel_Id || (level->getDaytimeRawBrightness(x, y, z) < 13 && mayPlaceOn(below)); } bool Mushroom::growTree(Level *level, int x, int y, int z, Random *random) { - int data = level->getData(x, y, z); + int data = level->getData(x, y, z); - level->setTileNoUpdate(x, y, z, 0); - Feature *f = NULL; + level->removeTile(x, y, z); + Feature *f = NULL; - if (id == Tile::mushroom1_Id) + if (id == Tile::mushroom_brown_Id) { - f = new HugeMushroomFeature(0); - } - else if (id == Tile::mushroom2_Id) + f = new HugeMushroomFeature(0); + } + else if (id == Tile::mushroom_red_Id) { - f = new HugeMushroomFeature(1); - } + f = new HugeMushroomFeature(1); + } - if (f == NULL || !f->place(level, random, x, y, z)) + if (f == NULL || !f->place(level, random, x, y, z)) { - level->setTileAndDataNoUpdate(x, y, z, this->id, data); + level->setTileAndData(x, y, z, id, data, Tile::UPDATE_ALL); if( f != NULL ) delete f; - return false; - } + return false; + } if( f != NULL ) delete f; - return true; -} - -void Mushroom::registerIcons(IconRegister *iconRegister) -{ - icon = iconRegister->registerIcon(texture); -} + return true; +}
\ No newline at end of file |
